CrewCode can open a project that lives on another machine over SSH. The file tree, editor, git surfaces, terminals, and agents all operate on the remote host — the workspace behaves like a local one, with the differences noted below.
- Workspace drawer → Add project → Remote project ("ssh connected target").
- Enter a host — either a raw
user@host[:port]or an alias from your~/.ssh/config(CrewCode lists your config hosts as suggestions). - Connect, then browse the remote filesystem starting from the remote home directory and pick the project folder.
The workspace root is stored as an ssh:// URI:
ssh://[user@]host[:port]/absolute/posix/path
e.g. ssh://cj@build-box:22/home/cj/projects/apiSettings → SSH manages saved connections:
- Add a connection (name + address), test it, or remove it.
- Hosts from
~/.ssh/configare imported automatically and listed alongside saved connections; open config jumps to the file. - Saved connections and config aliases both appear as targets when adding a remote project.
- SSH agent first. If an agent socket is available, CrewCode authenticates through it — this transparently handles passphrase-protected keys. The SSH Keys modal can load keys into the agent for you.
- Identity files as fallback. Without an agent, CrewCode reads the
IdentityFilefrom your SSH config (or the default~/.sshkeys). Encrypted keys need the agent path.
The first host key seen for a server is pinned to
~/.crewcode/known-hosts.json. If the key later changes, CrewCode refuses
the connection (possible MITM or server rekey).
Warning
If a host legitimately rekeyed, remove its entry from
~/.crewcode/known-hosts.json to re-trust it on the next connection.
| Area | Behavior |
|---|---|
| File tree / editor | SFTP-backed reads and writes; the active saved file uses a bounded single-flight check for agent edits because remote filesystem events are unavailable |
| Git | git runs on the remote host (remote credentials/agent apply) |
| Terminals | remote shell sessions |
| Agents | agent CLIs run on the remote host |
| Code intelligence | the TypeScript language server is launched on the remote; the remote host must have typescript and typescript-language-server installed — CrewCode does not install them |
| Writer file watching | bounded polling (remote filesystem events are unavailable) |
CrewCode advertises ACP text-file methods for both local and remote CrewCoder sessions. Those methods do not make an SSH workspace virtual to CrewCoder: the agent process is launched on the remote workspace host, so provider-native tools and transports retain direct access to that same filesystem. ACP reads and writes can still traverse CrewCode's bounded SFTP helpers without disabling native Codex app-server operation.
- Plugins are denied access to remote workspaces (plugin API v0 is local-only).
- Commit signing passphrase handling is local-repo only for now.
- Connections are pooled and shared across workspaces on the same host; a slow or dropped link affects all of that host's workspaces until it reconnects.