mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 16:02:24 +00:00
Issue #376 asked for `omp`. Oh My Pi is a fork of Pi (can1357/oh-my-pi, descended from badlogic/pi-mono), but the fork is where the similarity stops for our purposes: it ships one binary of its own — `omp`, the only `bin` in `@oh-my-pi/pi-coding-agent`, and it never installs a `pi` — and it keeps its config under `~/.omp`. A pane running it was therefore not detected at all, and aliasing `omp` onto `CLIAgent::Pi` would have been worse than nothing: the status bridge would land in `~/.pi`, and Resume Session would offer `pi --session <id>` to a binary that spells that flag `--resume`. So it gets its own variant, wired the whole way through: | | | |---|---| | Detection | argv stem `omp`, distinct from `pi` in both directions | | Avatar | its own mark, normalized from the project's `assets/icon.svg` | | Resume | `omp --resume <id>`, opting out on `--no-session` | | Fork | `omp --fork <id>` — a verified fork command, so the menu item appears | | Hooks | Settings → Agents, at `~/.omp/agent/extensions/tty7/index.ts` | The status bridge is the one piece the fork did not change. Oh My Pi inherited Pi's extension contract intact — same default-exported factory, same `session_start` / `agent_start` / `agent_end` / `session_shutdown`, same `ctx.sessionManager.getSessionId()` — so `pi_extension_ts` now takes the agent and substitutes two things, the package it imports the type from and the slug it calls the emitter with. Pi's generated file is byte-identical to before, so no installed bridge goes stale. `--resume`, `-r` and `--session` are three spellings of one flag in Oh My Pi; all three shed when a session command is rebuilt, while `--session-dir` is a different flag and rides along. `fork_command` now honors the same `--no-session` opt-out `resume_command` already did — Oh My Pi rejects `--fork` outright under it, and no existing agent declares an opt-out. Co-authored-by: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com>
86 lines
3.8 KiB
Markdown
86 lines
3.8 KiB
Markdown
<div align="center">
|
||
|
||
<img src="assets/app-icon.svg" alt="tty7" width="88" height="88" />
|
||
|
||
### tty7
|
||
|
||
**A terminal workbench: persistent sessions, remote work, agents.**
|
||
|
||
<sub>Pure Rust · GPU rendering on Zed's gpui · VT core from Alacritty</sub>
|
||
|
||
<br />
|
||
|
||
[](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml)
|
||
[](https://github.com/l0ng-ai/tty7/releases)
|
||
[](LICENSE)
|
||
[](https://discord.gg/s3dethqz2V)
|
||
|
||
<sub>English · [简体中文](README.zh-CN.md)</sub>
|
||
|
||
</div>
|
||
|
||
## Why
|
||
|
||
- **Performance** — ~2× the throughput of Alacritty, Ghostty, or Kitty ([benchmarks](#benchmarks))
|
||
- **Persistent sessions** — quit or reboot; your shells and supported agent sessions keep running, no tmux
|
||
- **Editor-grade input** — suggestions, completion, highlighting, history search
|
||
- **Remote development** — files, repos, panes, and git data stay on the remote machine
|
||
- **Native SSH** — profiles, SFTP, port forwarding, and jump hosts
|
||
- **Agent-aware** — Claude Code, Codex & co.: status, notifications, git context
|
||
- **CLI + Skills** — agents create panes, run commands, and inspect output
|
||
|
||
## Install
|
||
|
||
Native builds for each platform on [**Releases**](https://github.com/l0ng-ai/tty7/releases):
|
||
|
||
| | | |
|
||
|---|---|---|
|
||
| **macOS** | `…-macos-arm64.dmg` · `…-x86_64.dmg` | drag into Applications |
|
||
| **Windows** | `…-setup.exe` · portable `….zip` | |
|
||
| **Linux** | `…-x86_64.AppImage` | `chmod +x` and run — X11/Wayland libraries bundled |
|
||
|
||
## What's inside
|
||
|
||
| | |
|
||
|---|---|
|
||
| **Editor-grade input** | ghost suggestions from history · explained tab completion · syntax highlighting · multi-line editing · click places the caret · <kbd>⌃ R</kbd> fuzzy history |
|
||
| **Window** | tabs & splits · <kbd>⌘ P</kbd> palette · <kbd>⌘ F</kbd> scrollback search · nine themes · IME |
|
||
| **Agent-aware** | per-pane detection (~18 CLIs): status dot · notifications · branch + diff · resume after reboot · tray icon when input is needed |
|
||
| **Remote workspaces** | remote files, repos, changes, diffs, worktrees, tabs, and panes · reconnect from any client and continue where you left off |
|
||
| **CLI + Skills** | bundled `tty7` CLI · [agent skill](skills/tty7/SKILL.md) · pane/workspace control · real PTY commands · output, process, port, and agent status |
|
||
| **SSH** | native russh stack: profiles with keychain secrets · SFTP panel · port forwarding · jump hosts · one-time, unprivileged `tty7-server` install |
|
||
|
||
Terminal and keybinding reference: [docs/features.md](docs/features.md). The agent-facing CLI
|
||
interface is documented in [skills/tty7/SKILL.md](skills/tty7/SKILL.md).
|
||
|
||
Install the skill with:
|
||
|
||
```sh
|
||
npx skills add l0ng-ai/tty7
|
||
```
|
||
|
||
## Benchmarks
|
||
|
||
Same machine, same day, same 155×40 grid — Apple M1 Pro, macOS 26.3.1,
|
||
five-run averages (2026-07-04):
|
||
|
||
| | **tty7** | Alacritty | Ghostty | Kitty |
|
||
|---|---:|---:|---:|---:|
|
||
| Plaintext I/O — 11 MB `cat` <sub>(lower = better)</sub> | **95 ms** | 239 ms | 179 ms | 185 ms |
|
||
| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) frame rate <sub>(higher = better)</sub> | **888 fps** | 485 fps | 552 fps | 617 fps |
|
||
| Cold-launch memory | 116 MB¹ | 105 MB | 128 MB | 130 MB |
|
||
|
||
<sub>¹ GUI 105 MB + the persistent server 11 MB.</sub>
|
||
|
||
Methodology and one-command reproduction: [`scripts/bench/`](scripts/bench/README.md).
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
<sub>
|
||
|
||
Built on [gpui](https://github.com/zed-industries/zed) and [`alacritty_terminal`](https://github.com/zed-industries/alacritty) · [Apache-2.0](LICENSE) · [Discord](https://discord.gg/s3dethqz2V) · [Changelog](CHANGELOG.md)
|
||
|
||
</sub>
|
||
</div>
|