Your First Subshell
Create the admin account, get an agent CLI detected, and launch a subshell from a folder.
The install ended with an address: http://localhost:3080/setup. Everything from there happens in the browser. A launch needs only an agent and a folder; no preset exists on a fresh instance, and none is needed.
The wizard: four screens
Create Your Account. The first account on an instance becomes its admin, and the setup endpoints are public only until it exists; on a shared network, open the URL before anyone else does. Sign-up is closed by default after that; an admin reopens it later under Registration & enrollment if they want more people.
Connect a Network. Optional, and skipping costs nothing: this screen offers mesh networks (Tailscale, Headscale, NetBird, Cloudflare Tunnel) so other devices can reach this server on an address that stays private or gets published behind an Access gate. Every act on it is repeatable at Settings → Networking; see Network plugins.
Add an Agent. One question, answered live: what is on this machine? A tmux row is pinned above the list because every local pane launches through it; nothing launches without one. If it is missing, the row installs it where the command needs no password (Homebrew on macOS); where sudo would be needed, the server has no terminal to type the password into, so you get the command to run yourself. Below it, one row per supported agent CLI (Claude Code, Codex, OpenCode, Hermes Agent, pi), each with a detected / not-found chip, and not-found rows carry an Install button that runs the vendor's own install command on this machine (the exact command is spelled out under the button before you press it). If nothing is installed yet, that is fine: a plain Terminal pane is always available with nothing to install, and you can add agents later under Settings.
Start Your First Subshell. The last screen embeds the launch form, already filled in: the server's own machine (its node row is named "Server" by default), an agent that was detected, and a starting directory. Change any of it or just press Start; you leave the wizard inside a running subshell. Left the wizard early? Reopen /setup and it resumes at the step you'd reached.
Launching from the app any other time
The same form is the dashboard's create-subshell dialog. Four fields: agent, optional preset (a fresh instance has none; the wizard drops the row entirely, and a presetless launch simply starts the agent bare), node (defaults to the server's own machine until you enroll others), and working directory: an in-app browser of the machine the subshell will start on, so launching on a remote node lets you pick a folder there. Nothing is remembered between launches; the form starts fresh every time, and that wizard pre-fill is a first-run convenience. Launching the same shape daily is what presets are for.
The terminal page
What opens is a live terminal into the pane, not a screenshot, not a log tail. You type, the agent responds; resize the window and the pane resizes. Close the tab and the agent keeps working: the pane is a tmux session on the machine running it, not a child of your browser, and reopening replays you back into the live screen. That's the whole point of the product: start something before dinner, finish it from the couch. Subshells covers statuses and restarts; Devices covers who else is watching the same pane.
When it's done: Terminate
Terminate kills the pane's tmux session and the harness with it, revokes that subshell's API token, and leaves the pane's log on disk; the row stays listed as terminated, and restarting it builds a fresh tmux session (a new conversation unless your agent supports resuming one). Delete removes the row too. Both are yours alone as owner; Sharing explains what edit grants do and do not include.
See also
- Agents: what Subshell can drive and how each one plugs in
- Installing agent CLIs: per-agent install and auth notes
- Subshells: the day-to-day lifecycle page
- Security model: what the trusted-network posture does and doesn't defend
Last updated on
