Claude Code · opencode · Genspark Mesh

Claude Code on your machines,
driven from your phone.

A native SSH client that keeps your AI coding agents running — and one tap away on your phone.

Start Claude Code or opencode in a persistent session on your dev box, walk away, and pick up the same conversation from your iPhone or Android — over an encrypted Genspark Mesh, with no public IP, no ports to open, and no root required. Hosts, keys, and snippets live in an encrypted vault and stay end-to-end encrypted through sync — the server only ever sees ciphertext.

  • Free download
  • macOS, Windows, Linux, iOS & Android
  • Keys & credentials end-to-end encrypted

Latest: v0.4.1319

Genspark Mesh

Your own machines, reachable anywhere — without opening a single port.

Flip one switch and every device signed in to your Genspark account can reach the others over an encrypted private network. No public IP, no port forwarding, no bastion, no keys to exchange.

  • One toggle, zero setup Being signed in to your Genspark account is the only auth there is. No separate account, no pre-shared keys, no firewall rules — your devices just find each other.
  • Never expose SSH to the internet Reach a laptop behind NAT, an office desktop, or a home server with no public IP, no forwarded port, and no jump host. Nothing is left listening on the open internet.
  • WireGuard-encrypted, peer-to-peer Traffic rides a WireGuard mesh in userspace — no root, no kernel driver. Connections go device-to-device, relayed only when a direct path isn't possible.
  • Files and tooling too Each device is a real SSH endpoint, so SFTP, scp, rsync, and ansible all work across the mesh — not just an interactive shell.
Persistent remote sessions

Your work keeps running. Even when you don't.

Sessions are managed tmux sessions that live on the server, not tabs that live in your app. Close the window, lose your network, pick up your phone — the work is still running, and you reattach exactly where you left it.

  • Survives the things that kill a normal tab A dropped connection, a closed window, a laptop asleep in a bag, a full app restart — none of it reaches your session. Long builds, training runs and migrations keep going, and reattaching drops you back into the live screen with its scrollback intact.
  • No tmux setup, ever Attaching does the work for you: it makes sure tmux is installed on the host, creates the session in the directory you picked, runs your startup command, then attaches. Every step is idempotent, so reconnecting never duplicates a session or re-runs your command.
  • The same session list on every device Your sessions sync end-to-end encrypted, so a session you start on your Mac is one tap away on iPhone or Android — and vice versa. Rename one freely; the display name is yours and never touches what's running on the server.
  • Claude Code sessions, named by what they're about Tick one box and the session installs and launches Claude Code for you. As the conversation gets a title, the session takes that title — so your sidebar reads "Fix the auth redirect loop" instead of "dir-3". Leave your desk, reattach from your phone, keep the same conversation going.
  • Open in VS Code — tunnel included Right-click a session and your local VS Code opens its working directory over Remote-SSH — through a private, loopback-only tunnel GenTerminal builds over the session's own connection, so it reaches mesh hosts with no public IP and no open ports. When you're done, Stop VS Code Server frees the host's memory with one click.

Closing a tab never kills a session — it keeps running until you end it. Sessions work over SSH and over Genspark Mesh, so a machine with no public address is no exception.

GenTerminal sidebar showing three managed sessions: a Claude Code session named after its conversation, a dev server, and a detached nightly training run GenTerminal sidebar showing three managed sessions: a Claude Code session named after its conversation, a dev server, and a detached nightly training run
The sidebar list — each session keeps running on its host, on every one of your devices.
The New Session dialog with a session name, host, working directory and the Launch Claude Code option turned on The New Session dialog with a session name, host, working directory and the Launch Claude Code option turned on
Claude Code sessions

One session per conversation — installed, launched and named for you.

Turn on Launch Claude Code when you create a session and that's the whole setup. The session installs Claude Code and the conversation-archiver plugin if the host doesn't have them, starts it in your working directory, and from then on the session is that conversation.

  • The session name follows the conversation's own title, so the sidebar tells you what each one is working on.
  • Reattach from any device — desktop, iPhone or Android — and pick the conversation up mid-thread.
  • It keeps thinking while you're gone: close the app and the run continues on the server.
Built-in AI coding agent

opencode, native in your terminal.

Genspark Terminal ships with opencode, an AI coding agent that reads your saved hosts, opens tabs, and drives your shells — while you approve every keystroke.

  • Bundled, not bolted on opencode ships inside Genspark Terminal as a native binary and runs in its own tab — no separate install, no background daemon, nothing fetched on first launch.
  • It drives your real terminals Over an in-process MCP server, opencode lists your saved hosts, opens new SSH or local tabs, reads their scrollback, and types into them — without ever touching your stored credentials.
  • You approve every keystroke Each batch of keystrokes opencode sends pops a confirmation showing the exact payload. Turn on auto-approve only when you want it to run unattended.
  • Workspaces with your models Every project is a workspace running on the Genspark LLM proxy — Claude Opus by default, configurable per workspace — and you can back up or restore a workspace as a zip.

opencode runs on the Genspark LLM proxy — responses use credits from the genspark.ai account you're signed in with.

GenTerminal VPN settings with a running tunnel and a live traffic chart GenTerminal VPN settings with a running tunnel and a live traffic chart
A running VPN through an SSH exit — live download / upload chart on one shared SOCKS5 + HTTP port.
GenTerminal VPN listener settings showing Full VPN (TUN) mode and DNS handling GenTerminal VPN listener settings showing Full VPN (TUN) mode and DNS handling
Full VPN (TUN) with configurable DNS handling.
VPN & Proxy

Any SSH host becomes your exit node

A built-in SOCKS5 + HTTP proxy with an optional full-tunnel VPN. Route this device — or your whole LAN — out through a saved SSH host or a Genspark Mesh peer, with nothing to install on the exit.

  • One port, both protocols SOCKS5 and HTTP share a single local port — point apps at either protocol, no separate listeners to configure.
  • Exits you already own Pick any saved SSH host or Genspark Mesh peer as the exit node. The background connection reconnects automatically if it drops.
  • Three takeover depths Proxy only, system proxy, or full VPN (TUN) that captures every connection on the device — one admin prompt, no kernel extensions.
  • Remote DNS resolution In full-VPN mode, domains resolve at the exit host by default so DNS never leaks outside the tunnel — or query a DNS server you choose.
  • Live traffic chart Watch download and upload rates, transferred totals, and active connections over the last three minutes.

Optional username / password authentication. Listening on 0.0.0.0 turns this machine into an exit for other devices on your LAN — turn auth on when you do.

Why GenTerminal

Everything a bare SSH client makes you juggle — in one window.

The same ssh you already know, minus the scattered config files, the copied keys, and the second tool for every file transfer.

Dimension
Plain SSH client
GenTerminal
Hosts
Hand-edited ~/.ssh/config
Searchable host list with live status
Credentials
Keys and passwords scattered on disk
Argon2id + ChaCha20 encrypted vault
Across devices
Copy ~/.ssh by hand to every machine
End-to-end encrypted cloud sync
File transfer
Switch to a separate scp / SFTP app
Built-in SFTP browser, side by side
Port forwarding
Remember -L / -R flags every time
Visual local & remote tunnel manager
Your own machines
Set up a VPN or expose a public port
One-toggle encrypted mesh, no port to open
Reach a server
Open a terminal, retype ssh user@host
One hotkey, click the host, you're in
In action

From "which window was that server in?" to connected in one keystroke.

Three moments from a normal day, minus the friction you stopped noticing.

01
ACT 01

Summon it anywhere

Press ⌘⇧Space / Ctrl+Shift+Space from any app and the window drops down, pre-focused. Your hosts are grouped and searchable, each with a live status dot. Type a few letters, hit Enter, and the session opens in a new tab.

02
ACT 02

Move files without leaving the session

Split the pane and open the SFTP browser right beside your shell — drag files in and out, no second app, no re-authenticating. Need a tunnel? Add a local or remote port forward from a form instead of memorizing -L flags.

03
ACT 03

Unlock once, everywhere

Your hosts, identities, groups, and snippets live in an encrypted vault and sync end-to-end across your Macs, PCs, and Linux boxes. Set up a new machine, enter your password once, and every server is right where you left it.

Everything in one client

Built for people who live in the terminal.

Native and fast — no Electron, no telemetry on what you type, no subscription.

Native & fast

Tauri 2 + Rust with a pure-async russh core. A dedicated task owns each session, so input never freezes — and the app is a fraction of an Electron client's size.

Tabs & split panes

xterm.js with a WebGL renderer. Long-lived, reorderable tabs and tiled split panes — run a shell, an SFTP browser, and a logs tail side by side.

Built-in SFTP

A full SFTP file browser over the same connection. Upload, download, rename, and navigate remote trees without leaving the app or re-authenticating.

Paste files & images to upload

Paste a file — or a screenshot straight from your clipboard — into an SSH session and it uploads to the host's /tmp over the existing connection. The remote path lands back on your clipboard, ready to use. No SFTP browser, no second login.

Port forwarding

Local and remote tunnels from a simple form. Expose a remote database locally or publish a local port — no flags to remember, status visible at a glance.

Encrypted vault

Credentials are sealed with Argon2id key derivation and ChaCha20-Poly1305. The key is derived from your password and never written to disk or sent to a server.

End-to-end sync

Hosts, identities, groups, snippets, and settings sync across every device — encrypted with your vault key. The server only ever stores ciphertext.

Quake-style hotkey

A global shortcut (default ⌘⇧Space / Ctrl+Shift+Space) drops the window down over anything and hides it again. Plus a system tray, so it's always one keystroke away.

Startup commands

Give a host named startup commands that run the moment you connect. Pick from one-click presets like tmux new-session -A -s "main" to land in a persistent session every time, or save your own and choose which to run from the sidebar.

Keyboard-first

A command palette (⌘⇧P / Ctrl+Shift+P), new-tab and tab-jump shortcuts, and snippets. Your hand never has to leave the keyboard to reach any server or action.

Themes & auto-update

A Deep Space dark theme and a light theme, plus classic terminal ANSI schemes (Solarized, Dracula, and more). Signed auto-updates keep you current.

Share a live terminal

Right-click any connected tab and share a live, read-only view to a browser. Teammates sign into Genspark, enter a password, and watch in real time — no install, no SSH access to your host. An optional toggle lets them type; reconnects survive network drops.

How it works

Three engineering choices keep it fast, private, and reliable.

01

Async russh, one task per session

The SSH core is built on russh — pure async, no blocking toggles. Each connection is owned by its own task with all I/O bridged over channels, so a slow server can never freeze your typing.

02

Local-first, end-to-end encrypted sync

Your data lives in SQLite on your disk. Sync is opt-in and encrypted with a key derived from a password only you hold — keys never leave your machine, and the cloud sees only ciphertext.

03

Native Tauri, not Electron

A Rust host with a single WebView frontend — small, fast, and low-memory. xterm.js with a WebGL renderer keeps even busy sessions smooth.

Get started

Four steps to every server, organized.

About two minutes. No account required to start.

  1. 1

    Download & install

    Grab the signed build for your platform. macOS: open the .dmg and drag the app to Applications. Windows: run the .exe. Linux: the .AppImage runs anywhere.

  2. 2

    Set your vault password

    Create a vault password — it derives the encryption key locally. The same password unlocks your synced hosts on every device; the key is never stored or uploaded.

  3. 3

    Add a host & connect

    Add a server with its key or password, then click it — or hit ⌘⇧P / Ctrl+Shift+P and search. The session opens in a tab; split the pane to add SFTP or a logs view.

  4. 4

    Learn the hotkey

    Press ⌘⇧Space / Ctrl+Shift+Space anywhere to summon the window, ⌘⇧P / Ctrl+Shift+P for the command palette, ⌘1–9 / Alt+1–9 to jump tabs. All rebindable in Settings.