Recommended setup

Set up CARAPACE with one line.

Get the app, then say one line to the agent already running on your machine:

set this up: https://carapace.info/install

That's the whole paste. The instructions live at the URL, so your agent goes and gets them: it names its own runtime, downloads the matching setup document, checks what you have, shows you a plan, and asks before it changes anything — the installer script itself never prompts; it stops at a named checkpoint and hands the decision back to your agent, which asks you. Works on Mac, Linux, VPS, and Raspberry Pi.

1

Download the app

Install CARAPACE from the App Store. That's the whole phone side — the one line handles everything else.

2

Say one line

Give carapace.info/install to the agent on the machine you want to control — Claude Code, Codex, OpenClaw, or Hermes. Nothing to pick, nothing long to paste: it opens the URL, names its own runtime, and pulls the rest down itself.

3

Approve & pair

The agent shows a plan and asks before changing anything. At the end it prints a pairing QR — scan it with the app (or tap the link on your phone). Done.

Works with every runtime

Say this to your agent.

Reading this on your phone? You don’t need the clipboard — the line is short enough to type into your agent, or to say out loud. The instructions live at that URL, so the agent goes and gets them.

set this up: https://carapace.info/install

Paste it into Claude Code, Codex, OpenClaw, or Hermes on the machine you want to control. Nothing in it is a secret — every key is minted on your machine, for your phone only.

What your agent does next
  1. Opens the URL. It gets about 3 KB of plain text — no page to render, no buttons, just instructions written for an agent.
  2. Names its own runtime. Claude Code, Codex CLI, OpenClaw, or Hermes — the harness it runs inside, not the model behind it. If it isn't sure, it asks you instead of guessing.
  3. Downloads its setup document with curl. To a file on disk, because the document runs a few hundred KB and a web-fetch tool would truncate it. It checks the first line before following a word of it, so a mistyped filename can't pass a web page off as a setup document.
  4. Installs, then shows you the QR. Inventory first, plan, your approval, then the pairing QR at the end. Scan it with the app and you're paired.

Nothing hidden: read carapace.info/install yourself before you hand it over — it's the whole instruction sheet, in plain text. Every setup document also re-checks the runtime for itself before it changes anything, so an agent that grabbed the wrong file stops and fetches the right one.

Agent can't open links?

Some agents have no web tool, or sit behind a proxy that blocks the fetch. Paste the instructions inline instead — this says the same thing carapace.info/install says.

It still fetches the setup document (a few hundred KB) with curl, reads it from disk, and follows it.

Know your runtime already?

Skip the self-identification step and hand your agent its file directly. Same install, one less thing to get wrong.

Anthropic's coding agent. Paste the bootstrap into a Claude Code session on the target machine.

Names the file outright, so the agent never has to work out which one it is.
If the machine can't reach the internet, or you'd rather read every line first: view the raw file · curl -fsSL https://carapace.info/install/prompt/claude.md
⚠️ The pairing QR / link is a key, not a picture.

Anyone who scans or opens it controls your gateway — every session, every file it can reach. Never post it, screenshot it, or share it. If it ever leaks, setup shows a one-line re-key that mints a fresh one and invalidates the old.

Connect your way

Setup detects where your machine lives and picks the safest shape it can prove — telling you which and why. It only asks when the answer is genuinely yours to make. No networking knowledge needed.

Home network (LAN)

Phone and computer on the same Wi-Fi — pair directly, nothing to install. Pairs over plain http://, so the gateway key crosses that Wi-Fi unencrypted: fine on a trusted home network, wrong for office or café Wi-Fi — choose Tailscale there.

Tailscale (recommended)

Private, encrypted, works from anywhere, and nothing is exposed to the internet. Setup installs it only if you say yes.

Your own HTTPS setup

Already run a reverse proxy or port forwarding? Setup detects it and pairs through it — your configuration stays yours.

Public server (VPS)

On a public IP setup arranges automatic HTTPS with a real certificate — and tells you exactly which ports it opens, before it opens them.

On a VPS: how it’s secured (from the installer’s own header)
  • The gateway binds 127.0.0.1 only — never a public interface, never a wildcard.
  • Authorization is a 256-bit token (file mode 0600) that never leaves your machine. If it ever leaks: ~/.carapace/bin/carapace-pair --rotate kills it in seconds.
  • Public IP, no domain? It installs caddy, takes port 443, and serves https://<your-ip-with-dashes>.sslip.io with a real certificate — no DNS, no account, no cost. (That hostname derives from your IP, so it is public and appears in certificate-transparency logs.)
  • caddy is the only package it installs and the only step that needs root. A Caddyfile you wrote is refused, never overwritten — if a proxy already owns 443, it stops and asks for its URL instead.
  • It survives reboots and closed SSH sessions (systemd + linger), and plain HTTP across the internet is never chosen automatically.
  • Needs: node ≥ 18 (it installs it for you when it has root) and curl.
Windows?

Run it inside WSL2 with systemd enabled (systemd=true in /etc/wsl.conf, then wsl --shutdown once) — and use Tailscale inside the distro: WSL2’s NAT means the LAN address it finds isn’t reachable from your phone.

Non-destructive by design

Inventory first

It detects your OS, runtime, network shape, and ports before touching anything.

Plan + approval gate

It prints exactly what it will do — including anything network-facing — and waits for your approval before any change.

Backups + additive only

Timestamped backups before edits; it merges into config and never wholesale-replaces.

Fails closed

Missing prerequisite, busy port, unprovable network path → it stops and asks, never improvises.

Your data is preserved

Existing agent auth, memory, history, and identity are never reset, deleted, or overwritten.

Optional, after pairing: bring your own voice provider (OpenAI, xAI/Grok, or ElevenLabs) with your own API key — in the app under Settings → Voice. You approve the data-sharing before anything is sent.