bowline
Getting started

Connect remote hosts

Bring up a remote Linux host or agent box over SSH so it has the same ~/Code workspace, with one command.

bowline connect is the happy path for putting your workspace on a remote host. Over your existing SSH access, it installs Bowline, starts the daemon, completes device trust, and leaves the host as a normal authorized ~/Code device, ready for you or an agent to work in.

What bowline connect does

bowline connect <host> runs a Remote Bootstrap. It uses your SSH configuration as transport, then relies on Bowline device trust for decryption authority. In one command it:

  1. Installs Bowline and starts the daemon on the remote host.
  2. Raises a Device Approval Request from the remote host.
  3. Completes the approval as a Delegated Device Approval from your authorized local session.
  4. Mounts the workspace root and verifies sync is ready.

That's the whole job: connect is a trust step, nothing more. It doesn't start anything on your behalf beyond the daemon.

SSH is transport, not trust

A successful SSH connection, host login, or copied binary is never workspace trust on its own. The remote host becomes an Authorized Device only when the bootstrap completes the encrypted device grant, not because SSH reached the host.

Connect a host

Point connect at a host you can already reach over SSH. Use the same address you'd pass to ssh.

Terminal
bowline connect linux-server-1

By default the remote workspace root matches your local root. Override it with --root, and preview the run without changing anything with --dry-run:

Terminal
bowline connect linux-server-1 --root ~/Code --dry-run

bowline connect reports each bootstrap step (request, compare, approve, accept, sync) so you can see trust complete. Add --json for a structured result you can check in scripts. Treat the host as trusted only when the command finishes with no blocked steps and reports trusted: true.

Then point your agent at it

Once the bootstrap completes, the host has the same real ~/Code you do: source, config, .env files, and secrets rematerialized as ordinary local files. Running an agent there is your own step, with your own tools — SSH in and launch Claude Code, Codex, or Cursor in the project directory:

On the remote host
cd ~/Code/acme/web
codex

The agent works against the same workspace reality you'd have locally, and its edits sync back like any other device's. See work with coding agents for the full workflow, including holding remote work for review in a work view.

Headless hosts

Remote hosts are often headless. That's fine. The CLI and TUI are the source of truth. Use --headless during login flows, and manage the host with bowline status --root ~/Code, bowline tui --root ~/Code, and bowline device approve --root ~/Code --code <matching-code>. See Linux for service and notification details.

Next steps

On this page