mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-11-06 08:15:35 +00:00
* feat(agents): recognise Muse Code and jcode Muse Code's `muse` launcher execs a versioned `muse-bin-<version>` binary, so detection also maps that name to Muse. Muse resumes with `muse resume <id>` (root options on either side of the subcommand); jcode with `jcode --resume <id>`. * feat(agents): install native Empryo and jcode hooks * feat(agents): add jcode lifecycle hooks * fix(agents): preserve jcode hooks and correct Empryo removal contract * feat(agents): install Muse native plugin hooks * docs(agents): list Empryo, Muse Code and jcode as hook-backed * fix(i18n): translate Empryo, Muse Code and jcode search keywords * fix(agents): read jcode hook payload from env, route its reports like Codex, bound muse CLI calls jcode runs hooks with stdin closed and puts session_id/cwd in JCODE_HOOK_PAYLOAD, so reports carried no session and resume never learned an id. Its shared server also runs every session's hooks with the first client's TTY7_PANE, so reports go through the same session/directory routing as Codex. muse plugins calls now time out after 30s and surface stderr. Adds ru strings for the new keys and reattaches Kimi's doc comment to KIMI_HOOK_EVENTS. * docs: count Muse Code and jcode in the README agent totals --------- Co-authored-by: kalpakprod <307643502+kalpakprod@users.noreply.github.com> Co-authored-by: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com>
155 lines
7.4 KiB
Markdown
155 lines
7.4 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)
|
||
[](https://github.com/l0ng-ai/tty7/releases)
|
||
[](LICENSE)
|
||
[](https://discord.gg/s3dethqz2V)
|
||
|
||
<sub>English · [简体中文](README.zh-CN.md)</sub>
|
||
|
||
<br />
|
||
|
||
<a href="assets/tour.mp4"><img src="assets/tour.webp" alt="One-minute tour of tty7: agents across repos, one agent driving another through the CLI, the prompt editor, diffs, dragging panes, and sessions that survive quitting the app" width="900" /></a>
|
||
|
||
<sub>▶ <a href="assets/tour.mp4">Watch in full quality</a></sub>
|
||
|
||
</div>
|
||
|
||
## Why
|
||
|
||
A background server owns your shells and panes — not the window. Everything
|
||
below follows from that.
|
||
|
||
- **Performance** — ~2× the throughput of Alacritty, Ghostty, or Kitty ([benchmarks](#benchmarks))
|
||
- **Persistent sessions** — quit the app and your shells keep running; after a reboot, layout, screen, and supported agent conversations come back. No tmux
|
||
- **Agent-aware** — Claude Code, Codex & co.: status, notifications, and git context for every repo at once
|
||
- **Scriptable by agents** — one agent opens a pane for another, hands off a task, waits, and reads the result, with or without the GUI running
|
||
- **Editor-grade input** — suggestions, completion, highlighting, history search, with no plugin to install
|
||
- **Remote development** — files, repos, panes, and git data stay on the remote machine, over a native SSH stack
|
||
|
||
## Install
|
||
|
||
Native builds for macOS, Windows, and Linux 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
|
||
|
||
| | |
|
||
|---|---|
|
||
| **Agent-aware** | per-pane detection (28 CLIs) · status dot · notifications · branch + diff · tray icon when input is needed · resume after reboot · reopen any past session from Search Everywhere · one-key launch · tab sidebar grouped by repository, with pinned groups |
|
||
| **CLI + Skills** | bundled `tty7` CLI · [agent skill](skills/tty7/SKILL.md) · `run` streams a command and exits with its code · `split` · `send` · `wait --until free` · `capture` |
|
||
| **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> Search Everywhere · <kbd>⌘ F</kbd> scrollback search · hibernate a tab to free its memory · IME |
|
||
| **Side panel** | <kbd>⌘ J</kbd> · process tree and listening ports · file tree · changes and diffs · find in files · GitHub issues and pull requests, read-only, signed in through `gh` |
|
||
| **Shell integration** | injected when a pane starts, nothing to install · prompt marks · working directory · exit codes · command-finished notifications · zsh, bash, fish, PowerShell, WSL, remote panes |
|
||
| **Remote workspaces** | remote files, repos, changes, diffs, worktrees, tabs, and panes · reconnect from any client and continue where you left off |
|
||
| **SSH** | native russh stack: profiles with keychain secrets · SFTP panel · port forwarding · jump hosts · one-time, unprivileged `tty7-server` install |
|
||
|
||
## Supported agents
|
||
|
||
**Detection** is free: brand avatar, branch + diff, tab title.
|
||
**Status** takes one click under Settings → Integrations to install that agent's hook,
|
||
and brings the status dot, notifications, the tray icon, `tty7 wait`, and resume
|
||
after a reboot. **Fork** needs both — the agent's own fork command, and the hook
|
||
that tells tty7 which session to fork. **Past sessions** are read from the agent's
|
||
own history files and listed in Search Everywhere, where <kbd>⏎</kbd> resumes one.
|
||
|
||
<details>
|
||
<summary>The full support matrix, all twenty-eight</summary>
|
||
|
||
| Agent | Detected | Status · resume | Fork | Past sessions |
|
||
|---|:-:|:-:|:-:|:-:|
|
||
| **Claude Code** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Codex** | ✓ | ✓ | ✓ | ✓ |
|
||
| **TraeCode** | ✓ | ✓ | ✓ | |
|
||
| **Grok** | ✓ | ✓ | ✓ | |
|
||
| **OpenCode** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Oh My Pi** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Prime Agent** | ✓ | ✓ | ✓ | |
|
||
| **Droid** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Qwen Code** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Goose** | ✓ | ✓ | ✓ | |
|
||
| **Qoder CLI** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Qoder CN CLI** | ✓ | ✓ | ✓ | ✓ |
|
||
| **CodeBuddy** | ✓ | ✓ | ✓ | ✓ |
|
||
| **Gemini** | ✓ | ✓ | | ✓ |
|
||
| **Copilot** | ✓ | ✓ | | ✓ |
|
||
| **Kimi Code** | ✓ | ✓ | | ✓ |
|
||
| **Pi** | ✓ | ✓ | | ✓ |
|
||
| **Crush** | ✓ | ✓ | | |
|
||
| **Antigravity** | ✓ | ✓ | | |
|
||
| **Cursor** | ✓ | ✓ | | ✓ |
|
||
| **Empryo** | ✓ | ✓ | | |
|
||
| **Muse Code** | ✓ | ✓ | | |
|
||
| **jcode** | ✓ | ✓ | | |
|
||
| Aider | ✓ | | | |
|
||
| Amp | ✓ | | | |
|
||
| Auggie | ✓ | | | |
|
||
| Hermes | ✓ | | | |
|
||
| Vibe | ✓ | | | |
|
||
|
||
</details>
|
||
|
||
None of them are wrapped or proxied — the agent you start is the agent you get,
|
||
in a normal PTY, with its own interface. An agent launched through a wrapper
|
||
script can be mapped to one by name with `agent_commands` in `config.json`.
|
||
Every agent on your `PATH` is also a row in Search Everywhere (**Agent: Claude Code**, …)
|
||
that opens it in a new tab, and the New Tab menu names the ones you have actually
|
||
run. `agent_launch` sets the command line it starts with.
|
||
|
||
## Documentation
|
||
|
||
Full documentation lives in [**`docs/`**](docs/) —
|
||
[keyboard shortcuts](docs/reference/keyboard-shortcuts.mdx) ·
|
||
[config.json](docs/reference/configuration.mdx) ·
|
||
[CLI reference](docs/cli/reference.mdx). The agent-facing CLI interface is also
|
||
documented in [skills/tty7/SKILL.md](skills/tty7/SKILL.md).
|
||
|
||
Install the skill with:
|
||
|
||
```sh
|
||
npx skills add l0ng-ai/tty7 # install
|
||
npx skills update tty7 # update later
|
||
```
|
||
|
||
## 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>
|