Documentation Index
Fetch the complete documentation index at: https://docs.crewship.ai/llms.txt
Use this file to discover all available pages before exploring further.
Developer Installation
This page is for contributors and operators building from source. For end-user install paths (Homebrew,curl | sh, Docker Compose) see
the Install guide. For production deploy patterns
the quickstart is the shortest path.
Crewship ships as a single binary that embeds the Next.js frontend, SQLite database, and Go backend. There is no separate Node.js runtime required at deployment time.
Prerequisites
Go 1.22+
Required for building from source. The binary is statically compiled with
go:embed.Node.js 20+ & pnpm
Required only for development (frontend build). Not needed at runtime.
Docker or compatible runtime
Agent containers run on Docker, Podman, Colima, OrbStack, Rancher Desktop, or Apple Containers.
Encryption key
A 256-bit hex-encoded key for AES-256-GCM credential encryption.
Quick Start
Build the binary
pnpm build— builds the Next.js frontend as a static export intoout/- Copies
out/toweb/out/for Go embedding go buildwith version/commit ldflags into thecrewshipbinary
Start Crewship
http://localhost:8080 by default. The frontend is served from the embedded static files.crewship start auto-generates the secrets it needs on first
boot — ENCRYPTION_KEY, NEXTAUTH_SECRET, and
CREWSHIP_INTERNAL_TOKEN are all written to
~/.crewship/secrets.env (mode 0600) and reused on subsequent
starts. No manual env file is required. To bring your own
secrets (e.g. from a secret manager), export the matching env
vars before running crewship start and the auto-generation is
skipped for any that are already set.Open the web UI and complete onboarding
Open
http://localhost:8080 in a browser. With an empty database
you’ll be redirected to /onboarding, where the wizard creates the
first admin user, the initial workspace, and your first crew. No
CLI bootstrap (crewship init, manual DB seeding, etc.) is part
of the supported install flow.Development Setup
For local development, use thedev.sh script which manages both the Go backend and Next.js dev server:
./dev.sh deploy <ref> (PR #222)
The deploy subcommand is the safe way to flip a dev VM between branches, tags, SHAs, and PRs without losing in-flight work. It accepts four ref forms:
| Ref form | Example | Result |
|---|---|---|
| Branch name | ./dev.sh deploy main | Tracks origin/main, fast-forwards on next deploy. |
| Branch name | ./dev.sh deploy feat/my-thing | Tracks origin/feat/my-thing. |
| GitHub PR | ./dev.sh deploy pr/220 | Fetches refs/pull/220/head and checks it out. |
| Git tag | ./dev.sh deploy v1.4.0 | Detached HEAD on the tag. |
| Commit SHA | ./dev.sh deploy 404650b7 | Detached HEAD on the SHA. |
- Auto-stash — if the working tree, index, or untracked files are dirty, the script runs
git stash push --include-untracked -m "dev.sh deploy auto-stash @ <branch> (<UTC timestamp>)"so the deploy never destroys a WIP. Recover withgit stash listto find the entry, thengit stash apply <ref>(the script prints this hint as part of its output). Useapplyrather thanpopso a mistake doesn’t drop the entry from the stash list. - Fetch and checkout — resolves the ref, force-resets the working tree to it.
- Self-healing build —
ensure_web_build_fresh()compares mtimes of frontend sources against.web-build-marker. When stale, runs the fullpnpm build → cp -r out web/outsequence; when warm, the check completes in ~0.1s. This was added because skippingcp -r out web/outafterpnpm buildleavesweb/out/~100 files behind, which the Go embed FS then serves as 404 unpredictably. - Restart services — same path as
./dev.sh restart.
.web-build-marker keeps ./dev.sh start and ./dev.sh restart self-healing too. If you ever see “fresh pnpm build produces stale UI”, the marker file is the place to look.
If you run a production instance behind a systemd timer or similar polling deployer, push your release ref (e.g. main:release) and let the timer fast-forward — never run an ad-hoc deploy directly on the prod host.
Multi-Instance Support
Crewship supports running multiple instances from directories namedcrewship_N:
| Directory | Go Port | Next.js Port |
|---|---|---|
crewship (default) | 8080 | 3001 |
crewship_1 | 8081 | 3011 |
crewship_2 | 8082 | 3012 |
CREWSHIP_CONTAINER_PREFIX to isolate Docker container names between instances.
Build Architecture
Database Migrations
Verifying the Installation
After starting, verify everything is working:Seeding Demo Data
Theseed command creates demo crews, agents, skills, and sample issues:
- 4 crews: Engineering, Quality, DevOps, Research
- 12 agents: Each with unique personas, roles, and system prompts
- 5 skills: Network Probe, File Crafter, Web Scraper, Script Runner, System Inspector
- Credentials: Anthropic API key (or OAuth token if
sk-ant-oatprefix detected)