shipd(1)  ·  join   why   man   alpha   chat   team   security   colophon an aikaara venture
you@laptop ~ $ cat /etc/motd
shipd — the deploy MCP for coding agents.

One command. Backend, frontend, database. Live.

Your agent writes the app. Then it hits a wall: a host for the frontend,
another for the API, a third for Postgres, env vars pasted across three
dashboards. shipd is one tool your agent calls: it builds the whole app
as one container, attaches Postgres, wires DATABASE_URL, returns a URL.

No email. No dashboard. No devops. Your SSH key is your login.
you@laptop ~ $ curl -fsSL https://shipd.aikaara.com/join | shcopy
→ key      SHA256:P4Y2lVtS/FEEnPV7CjqDTq5kdXUYe0FA/bdaDwqM4Sw  (~/.ssh/id_ed25519)
→ github   you

✔ joined as @you
· deploys: locked until a seat is granted — say hi in chat (below)

akmcp_••••••••••••••••••••••••••••••••••••••••

saved to ~/.shipd/token (0600)
added to claude code: claude mcp list

next:  say “deploy this with shipd” to your agent
alpha: 10 seats, given in chat →  curl -fsSL https://shipd.aikaara.com/chat | sh
# how join works — read the script, it's 106 lines:  shipd.aikaara.com/join
#  1. finds ~/.ssh/id_ed25519 (or SHIPD_KEY=…)
#  2. asks for a nonce, signs it:  ssh-keygen -Y sign -n shipd-join
#  3. shipd checks the key is on github.com/<you>.keys  → that's your identity
#  4. prints the token once, drops it in ~/.shipd/token, wires claude code
# leaves your machine: github login, PUBLIC key, signature. nothing else.
you@laptop ~/invoice-app $ claude
> deploy this with shipd

 shipd · create_project(name: "invoice-app")
 shipd · provision_database(postgres)
 shipd · deploy(files: 31)
   deps · next build · container · DATABASE_URL wired · health 200

 live at https://d7-invoice-app.apps.aikaara.com
  logs, rollback, export — all from here.

you@laptop ~ $ shipd --why
# deploying today
1. frontend  → vercel / netlify. connect repo, pick framework, wait.
2. backend   → railway / render / a vps. Dockerfile, port, healthcheck.
3. database  → neon / supabase. copy the connection string.
4. env vars  → paste secrets into three dashboards. fix CORS. fix API_URL.
5. it breaks → which of the three logs? roll back where?

3 accounts · 3 billing pages · 3 places to look at 2am
# deploying with shipd
deploy             one call. frontend + backend, one container.
                   buildpacks — no Dockerfile.
provision_database postgres attached, DATABASE_URL set.
set_env            secrets stored encrypted. never echoed.
get_logs rollback  one log. one rollback. same chat.
export             repo + compose. run it anywhere.

1 token · 1 URL · your agent does the devops
# "my agent already deploys — it has the vercel mcp, fly, railway"
it does — to three accounts. frontend on vercel, api on railway,
postgres on neon: three tokens in your agent's env, CORS between
your own services, billing in triplicate. shipd is a different
shape, not a fourth dashboard: the whole app as one container,
postgres attached, DATABASE_URL wired, one token. and the exit is
a tool, not a ticket — export → compose, or run the runtime on
your own box: aikaara.com/factory
you@laptop ~ $ man shipd
SHIPD(1)                      MCP tools                      SHIPD(1)

NAME
       shipd — build and run your agent's app as one isolated container

SYNOPSIS
       claude code:
         claude mcp add --transport http shipd https://mcp.aikaara.com/sse \
               --header "Authorization: Bearer $(cat ~/.shipd/token)"
       any mcp client (cursor · windsurf · codex · claude.ai connectors):
         {"mcpServers":{"shipd":{"url":"https://mcp.aikaara.com/sse",
           "headers":{"Authorization":"Bearer <token>"}}}}
       streamable http, bearer token. tested: claude code, claude.ai (oauth).
       others should work — if not, report_bug(tool: "connect").

TOOLS
create_projectfrom a prompt, a repo URL, a zip, or a prebuilt OCI image.
deploybuild + run as a gVisor-isolated container. returns the live URL.
provision_databasemanaged postgres. DATABASE_URL wired into the project env.
set_envsecrets, encrypted at rest, never returned.
get_logsbuild + runtime logs, latest run or by run_id.
rollbackprevious good deploy, one call.
status · list_projectswhat's live, where, healthy or not.
exportportable repo + compose/helm. no lock-in.
report_bug · my_reportsfile a bug from inside the agent; last run's error + log tail attached.
chat · chat_readtalk to the team from inside the agent.
RUNTIME
       one project ⇒ one gVisor container ⇒ one postgres database.
       memory     512 MB · cpu 0.5 · pids 256 · all capabilities dropped
       disk       container fs, no quota, ephemeral — state lives in postgres
       lifecycle  always-on (restart unless-stopped). no idle sleep, no cold start.
       network    inbound https on *.apps.aikaara.com, tls included · websockets yes (traefik)
                  outbound open, except cloud metadata + private ranges
       postgres   one shared postgres 16 container (768 MB), one database + role per
                  project on a persistent volume. no automated backups yet — export.
       domains    custom domains — not yet.
       clients    any mcp client over streamable http. tested: claude code, claude.ai
                  connectors (oauth). cursor / windsurf / codex: untested, should work.
                  builds block ~1–2 min.

NOTES
       apps run on our shared runtime, isolated with gVisor. prototypes and
       side projects, not your bank. that is exactly why the alpha exists.

SEE ALSO
       join(1), chat(1), team(1), factory(7) — self-host the runtime on your own box.

you@laptop ~ $ shipd alpha
alpha · 10 seats · break it, file it from your agent, build it with us.

ten developers who ship with a coding agent every day, running shipd hard
while it's still soft. no forms. no discord. the loop is the MCP itself.
# you get
+ container deploys + postgres, 200/day (the alpha is the only tier with deploys today)
+ fixes in days, your handle in the changelog
+ a human on the other end of chat, terminal to terminal
# we ask
- deploy something real this week. a side project counts.
- when it breaks: “report it with report_bug”. ten seconds.
- when you wish something existed: kind: idea.
> shipd just failed the deploy — report it with report_bug

 shipd · report_bug(title: "next build OOM on 31-file app", severity: high)
 Filed #14 — run #212 error + log tail attached. the team is pinged.

# seats are given in chat. join, then say hi:
you@laptop ~ $ curl -fsSL https://shipd.aikaara.com/chat | shcopy
shipd chat · you are you (dev) · ctrl-c to leave
12:41 you: hi — want a seat. building a postgres-backed invoice tool with claude code.
12:43 team/venkatesh: seat's yours — ★ alpha is live on your token, 200/day. no re-join. break it.
12:43 you: on it
# terminal to terminal. long-poll, no socket, no app. the team runs the same
# script with a team token. your agent can talk too: tools chat / chat_read.
# read it: shipd.aikaara.com/chat
# the other end of chat is a human with push on his phone — every message,
# every report_bug lands there. the team side is a passkey'd pwa at
# mcp.aikaara.com/team; pairing starts from a terminal, obviously.
# replies come in hours, not always minutes — the team sleeps in IST.

you@laptop ~ $ shipd export invoice-app --format compose
 ./invoice-app.tar.gz — standard repo + docker-compose.yml + Dockerfile.
   standard postgres. standard containers. docker compose up on any box.
   or stand up the runtime itself: aikaara.com/factory  (curl | sh, obviously)
you@laptop ~ $ cat SECURITY
identity    your SSH key + github.com/<you>.keys. join signs a 5-minute, single-use nonce
            with ssh-keygen -Y sign. leaves your machine: login, PUBLIC key, signature.
            no email, no password, nothing to phish.
token       akmcp_… shown once, SHA-256 digest at rest. suspended account ⇒ every
            token dead at the MCP. revoke from the dashboard today, `shipd revoke` soon.
isolation   your app runs as a gVisor (runsc) container; egress to cloud metadata and
            private ranges is blocked at the host. one project ⇒ one container ⇒ one postgres.
secrets     set_env values are encrypted at rest and never returned by any tool.
scope       every tool resolves projects through YOUR account only — there is no path
            to another developer's project, logs, env, or thread.
chat        you see your thread. a team account (operator-granted gate) sees threads.
            60 msgs/hour/dev. push payloads carry no message text — the phone fetches
            over an authenticated session.
team app    passkeys (WebAuthn, RP mcp.aikaara.com). pairing sessions live 15 min until a
            passkey exists; passkey sessions 30 days, listed + revocable, sign-out-everywhere.
            encrypted HttpOnly SameSite=Strict cookie, strict CSP (hash-pinned inline),
            no framing, no referrer, same-origin check on every mutation.
abuse       per-IP throttles on join/pair/passkey/MCP, IP blocklist, runtime anomaly
            auto-kill (CPU/egress), quota per developer, alerts to the operator.
exit        export gives you the repo + compose. delete your projects; nothing is kept
            that you cannot take with you.
report      security@aikaara.com · /.well-known/security.txt · or report_bug(kind: bug, severity: blocker)
you@laptop ~ $ cat colophon
no email. no signup form. no cookies. no analytics. no framework.
one html file, one font, three shell scripts. view-source is the docs. your agent reads /llms.txt.
built by a terminal geek for terminal geeks. — aikaara, 2026
you@laptop ~ $