Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
Persistent shells that outlive your connection. Native desktop app, coding-agent tools, a link that explains itself, over plain OpenSSH.
Developer toolsRust · PythonGitHub @zyvoraiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
TERYON: persistent remote shells over plain OpenSSH, with a TUI, a native desktop app, agent-aware panes, a file browser and an MCP server. Rust.
Taken from the repository README
Loading the full README.
Read the full README ↗Status: 0.24.0 engineering preview. Working code, integration tests, tutorials and release automation. It is not a claim of production maturity, universal terminal compatibility, or superiority over established tools. Read the verification report and known limits.
TERYON separates the life of your shell from the life of your connection. A per-user service on your Mac mini or Linux host owns the terminals; OpenSSH transports the interface. Disconnect, close the client, or put your laptop to sleep, then reconnect to the same live shells.
| Persistent | Real PTYs on the host. Reattach to the same shells from any client. |
| Plain OpenSSH | Your keys, ports, jump hosts and aliases. No new ports, no new accounts. |
| Native desktop | A GPU window with pane trees, a command palette, a Finder-like file browser with a syntax-colored Quick Look, and Ports and Host health windows. |
| Built for agents | Status chips for Claude Code, Codex, Gemini, aider, Cursor and OpenCode; Git worktrees; a sandbox; an MCP server. |
| A link that explains itself | When the connection drops you see the real reason and the next step. |
| 23 themes | Apple, Mac27, Tokyo Night, Catppuccin, Dracula, Nord and more, with a WezTerm export. |
One slim bar, and the command palette (⌘K) for everything else.
⌘B opens a file browser that follows cd, locally or over SSH. All captures are real macOS captures of a throwaway demo workspace.
teryon # pick a host and workspace (recents, config, ~/.ssh/config)
teryon setup # guided first run: tools, SSH hosts, reachability, theme
Signed and notarized TERYON-<version>.dmg and .pkg (macOS) and tar.gz archives (macOS arm64, Linux x86_64) are on the releases page. Checksums are in the SHA256SUMS-* files next to them.
Requires Rust (the repository pins 1.94.0 via rust-toolchain.toml), macOS or Linux, and a UTF-8 terminal.
cargo build --release --locked
./target/release/teryon connect local --workspace hello
Build the native desktop app:
cargo build --release --features desktop --locked
./target/release/teryon desktop local --workspace hello
The remote machine only needs the smaller default build. Both builds speak the same protocol. Press Ctrl+Space, release, then ? for help. Ctrl+Space → d detaches; your shells remain running. Open the same command again to reattach.
claude mcp add teryon -- teryon mcp --allow-write # durable panes for MCP clients
teryon sandbox -- claude # writes limited to this repository
export ANTHROPIC_API_KEY=…; teryon ai "open Calculator" # or ⌘J in the desktop app
See docs/MCP.md and docs/AI.md. The sandbox is a guard against mistakes and leaked credentials, not a boundary against a hostile program.
ssh first. TERYON requires a trusted host key and working noninteractive key/agent authentication.cargo build --release --locked
./scripts/install.sh ./target/release/teryon
teryon doctor [email protected]
teryon connect [email protected] --workspace fluxvm
# If your client was built with the desktop feature:
teryon desktop [email protected] --workspace fluxvm
Default remote executable: $HOME/.local/bin/teryon. Use global --remote-bin /absolute/path if necessary. SSH ports, identities, agents, jump hosts, VPN routing, and aliases stay in your existing OpenSSH configuration. TERYON does not bypass firewalls or NAT.
See the complete Mac mini tutorial, every command, and deployment.
A static landing page lives in site/ and deploys to GitHub Pages through .github/workflows/pages.yml (set Settings → Pages → Source to "GitHub Actions" once). Preview it with scripts/build-site.sh && open site/dist/index.html.
The full table of implemented behavior is in docs/FEATURES.md; desktop details are in docs/DESKTOP.md.
teryon sessions mini
teryon panes mini --workspace fluxvm
teryon connect mini --workspace fluxvm --readonly
teryon capture mini --workspace fluxvm --pane 1 > build-output.txt
teryon exec mini --workspace builds --wait -- /usr/bin/uname -a
teryon push mini ./project/ ./project/
teryon pull mini ./results/ ./results/
teryon forward mini 3000:3000 --reconnect
teryon themes --preview
teryon dashboard
teryon import-ssh --dry-run
teryon layout save mini --workspace fluxvm ./fluxvm-layout.json
teryon layout open mini --workspace fresh-fluxvm ./fluxvm-layout.json
mini can be an OpenSSH alias, or a TERYON config alias created with teryon init. Edit the generated config to match your username.
| Prefix: Ctrl+Space, then… | Action |
|---|---|
n | New shell pane |
Tab | Focus next pane |
s | Cycle layout: single, vertical, horizontal, grid |
z | Zoom / unzoom the focused pane |
w | Fuzzy pane switcher |
x | Close focused pane (asks to confirm) |
t | Cycle the built-in themes |
: | Command palette |
/ | Search retained output |
h | Retained-output viewer (y copies it via OSC 52) |
e | Offline draft editor |
? | Help |
d | Detach without killing shells |
| Ctrl+Space again | Send NUL to the remote program |
In the native desktop app, use the visible controls or ⌘K (macOS) / Ctrl+Shift+K (Linux) for the command palette. ⌘D creates a pane and ⌘F opens output search on macOS.
cargo fmt --all --check
cargo clippy --all-targets --all-features --locked -- -D warnings
cargo test --all-targets --all-features --locked
python3 -m pip install -r tests/requirements.txt
python3 scripts/e2e.py --binary target/debug/teryon
The Python fixture serves SSH only during tests. Production TERYON has no Python dependency. GitHub Actions runs Rust checks on Linux/macOS and SSH integration on Linux. These workflows are provided; their hosted runs occur after you push the repository.
Apache-2.0. See LICENSE.
Free under Apache-2.0. If it helps you, you can donate any amount you like: https://rzp.io/rzp/utwdYh3. A donation is voluntary and supports development and maintenance. It is not a purchase: it buys no support, SLA, features, priority or license, and it is not tax-deductible (Zyvor AI Labs Private Limited is a company, not a charity). Support contracts are separate: [email protected].