Skip to main content

crewship setup

The CLI-side counterpart to the browser onboarding wizard. After crewship login --pair --code=… you have an authenticated session but no crew yet — the wizard hasn’t run. crewship setup closes that gap so a user who prefers the terminal can complete onboarding without opening a browser. Hits the same POST /api/v1/onboarding/setup endpoint as the browser, so server-side validation, language injection, and template deploy behave identically across both surfaces.
Requires an authenticated session (crewship login). Errors with not logged in — run \crewship login —pair —code=…` first` when no token is present.

Flags

When --token is not passed, the command falls back to the adapter’s conventional env var (ANTHROPIC_API_KEY for CLAUDE_CODE/OPENCODE, GOOGLE_API_KEY for GEMINI_CLI, OPENAI_API_KEY for CODEX_CLI, CURSOR_API_KEY, FACTORY_API_KEY). Only when that’s empty does it prompt.

Crew templates

The list lives in the binary (not fetched from /api/v1/crew-templates) so crewship setup --help is usable on an air-gapped machine.

Examples

Each prompt has a sensible default; bare Enter accepts the first option. The telemetry prompt’s default follows the server’s current state (prerelease builds default yes, stable builds default no), and any explicit --telemetry flag skips it entirely.

Scripted / CI

In --yes mode the command fails fast if --crew, --adapter, or the token are missing. Errors:
  • --crew is required in non-interactive mode
  • --adapter is required in non-interactive mode
  • no token provided — pass --token=$(claude setup-token) (or the equivalent for <adapter>), or export <ENV_VAR> before running setup

Blank crew (single agent)

A blank template creates one crew named My Crew with a single agent named after the adapter (e.g. Gemini CLI (Google) #1).

Common errors

  • **unknown crew template "X" — see \crewship setup —help` for the list** — —crew` accepted only the five slugs above.
  • **unknown adapter "X" — see \crewship setup —help`** — adapter keys are uppercase with underscores; claude-codeis rejected,CLAUDE_CODE` is accepted.
  • token looks too short (need at least 8 characters) — quick guard against pasting a partial token.
  • **that looks like an Anthropic API key (sk-ant-api…). Crewship needs the CLI token from \claude setup-token` (sk-ant-oat… value) — run that command on your machine and paste the result** — surfaced when an Anthropic adapter is paired with what looks like a console API key. The CLI tokens start with sk-ant-oat, not sk-ant-api`.

What it prints on success

The link lands on the crew & agent roster rather than on the new agent directly. Every per-agent surface in the console is addressed by the agent’s slug/chat/<slug> for the conversation, /crews?agent=<slug> for the canvas — and the setup response returns ids only, so there is no slug to interpolate. The First agent ID line above identifies which agent on the roster is the new one. The server URL is whichever one this CLI invocation actually talked to (resolved from --server, then the active profile (--profile / CREWSHIP_PROFILE), then CREWSHIP_SERVER env, then ~/.crewship/cli-config.yaml), so the printed link always matches the workspace you just provisioned. The pre-send transport-security check runs against that same effective server, even when a stale CREWSHIP_SERVER is exported alongside an active profile.

See also

  • crewship login — pair the CLI before running setup.
  • crewship init — bootstrap the very first admin user on a fresh server (run before setup).
  • crewship seed — populate a dev/demo workspace with crews, agents, and integrations.
  • crewship crew — manage crews after the initial template lands.