crewship setup
The CLI-side counterpart to the browser onboarding wizard. Aftercrewship 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.
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
Interactive (recommended)
--telemetry
flag skips it entirely.
Scripted / CI
--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 modeno token provided — pass --token=$(claude setup-token) (or the equivalent for <adapter>), or export <ENV_VAR> before running setup
Blank crew (single agent)
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 withsk-ant-oat, notsk-ant-api`.
What it prints on success
/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 beforesetup).crewship seed— populate a dev/demo workspace with crews, agents, and integrations.crewship crew— manage crews after the initial template lands.