Repository navigation
Overview
Use the CLI on a server or VM (#87)
stashbase ssh puts the CLI on a machine you reach over SSH and connects you to it, so agents can run there instead of on your laptop. You can check on them from anywhere, including an SSH app on your phone.
stashbase ssh install mybox # a host from ~/.ssh/config, or user@host
stashbase ssh setup mybox # the machine's own `stashbase setup`, then checks the key and Docker
stashbase ssh open mybox # connect and attach to the machine's `stashbase` tmux session
stashbase ssh uninstall mybox # remove the CLI, its config and stored keys- Your own
ssh: your SSH config, keys, agent and jump hosts apply. Nothing about the machine is stored on your laptop. ssh installchecks the machine's platform and any existing install, asks before installing or updating (--yesskips it), and updates the copy thatssh myboxactually runs. A password, security key or 2FA prompt comes once per command.ssh setupruns the machine's interactive setup, so you enter a key meant for that machine. The key on your laptop is never copied. Afterwards it checks that the key works and whether Docker is ready, and says how to fix anything missing.ssh openattaches to a tmux session namedstashbase, so agents keep running when you detach or the connection drops.--with screen|zellij|nonepicks another multiplexer or a plain shell.--port 3000makes a port on the machine, such as a dev server, reachable atlocalhost:3000while you're connected.ssh uninstalllists what it will delete and asks first. Revoke the machine's key in the dashboard too.- The CLI on the machine is the normal CLI, so everything else works there as usual. Agents aren't installed by these commands: install your agent on the machine, or use the Docker sandbox, whose image already includes Claude Code and Codex.
- Use one machine per developer. Users of a shared machine aren't kept apart: members of the
dockergroup are effectively root.
API keys on machines without a keyring (#84)
On a server you reach over SSH (no Secret Service), in a container, or on a Mac over SSH with a locked Keychain, the CLI had nowhere safe to keep the API key. Every command warned, and named profiles couldn't be created.
- Keys fall back to
credentials.tomlnext toconfig.toml, readable only by you. The CLI says so once, when it saves the key. - Agent runs with the native sandbox can't read that file, the same way
STASHBASE_API_KEYis kept out of their environment. The Docker sandbox never mounts the config directory. - No more warning on every command (#86).
stashbase doctornow shows where the key is stored (macOS Keychain, Secret Service, or the credentials file). - On such a machine, a key still in
config.tomlmoves into the credentials file with the next command.
Changes
- The Docker sandbox works again on Linux (#85). On a Linux machine with Docker Engine,
agent runwith the Docker backend failed before the agent started, withNo file descriptors available (os error 24)orproxy unreachable (curl exit 28). The sandbox's network check made the Agent Proxy forward a request to itself in a loop. Docker Desktop on macOS and Windows wasn't affected. agent docker doctorsays how to fix a failed check: install Docker, start the daemon (sudo systemctl enable --now docker), or add your user to thedockergroup. With--jsonit's infix_hint.agent runsuggests tmux when you start it over SSH outside a terminal multiplexer, since a dropped connection would end the agent.- Fixed: the command that moved a key out of
config.tomllost it for the rest of that command and failed with a missing API key (#84). - Telemetry now also records
ssh install(notsetup,openoruninstall). See docs/telemetry.md.
Compatibility
ssh installneeds an x86_64 Linux machine or an Apple Silicon Mac withbashandcurlorwget. ARM Linux machines are refused with a clear message until there's an ARM Linux build.- From Windows, the
sshcommands connect once per step, so a password prompt can come more than once. doctoroutput changed: theSecure storecheck is nowKey storage, and a key inconfig.tomlis no longer called "legacy".