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.
Troubleshooting
Most beta-era problems fall into a small set of buckets. Start here before opening an issue.First step: crewship doctor
doctor runs a battery of checks and prints one row per check with a
status: PASS / WARN / FAIL / INFO. Read each WARN/FAIL — the
hint text in the second column is the remediation.
doctor covers (as of v0.1 beta):
- Container runtime detected — Docker / Podman / Colima / OrbStack / Apple Containers. If FAIL, install one (see Install — container runtime requirement).
- Port binding — confirms the HTTP port (default
8080) is not in use by another process. - Database file permissions — confirms
~/.crewship/crewship.dbis0600(owner-only). Drift here usually means a backup was restored viatarwithout preserving the mode bit. - Telemetry status — shows current opt-in state and resolved
endpoint host (vendor default vs
CREWSHIP_SENTRY_DSNoverride). - DSN reachability — best-effort TCP connect to the Sentry endpoint:443 (5s timeout). Sentry being unreachable is not a Crewship health signal — WARN here just informs you that crashes won’t ship until the network heals.
- Update available — checks GitHub Releases API for a newer version. WARN if a stable release is newer than your installed build.
Symptom catalog
crewship start exits immediately, no error
Almost always means migrations failed silently or the data directory
isn’t writable. Run:
--verbose switches the logger to debug level. Look for failed to run migrations or failed to open database. Common fixes:
- Permission error:
chmod 700 ~/.crewship && chmod 600 ~/.crewship/crewship.db. The migrate path enforces 0600 on the DB file but can’t reset 0700 on the parent. - Disk full:
~/.crewship/crewship.dblives next to a pre-migration snapshot (*.pre-migrate-*.bak). If the disk is full, the snapshot can’t be written and the boot aborts to prevent a half-migrated DB. Free space, then re-run.
Agent containers won’t start
crewship doctor will already have flagged this. Quick install paths
on macOS:
systemctl start docker or install podman. Crewship picks
whatever socket it finds — no further config needed.
”Agent exited with code 123”
Specific to Claude Code adapter. Almost always missing or invalidCLAUDE_CODE_OAUTH_TOKEN — the agent CLI failed its startup auth
check. Fix:
crewship agent debug <id> for the container’s resolved PATH.
curl crewship.ai/install | bash fails with “Bad substitution”
Wrong shell. Use bash, not sh:
set -euo pipefail and array-expansion guards that
Debian/Ubuntu dash (the default /bin/sh) does not implement. See
the bash note in Install.
brew install crewship-ai/tap/crewship fails with “tap not found”
Update brew and try again:
curl | bash install.
macOS Gatekeeper blocks the binary
Releases are cosign-signed but not Apple-notarized in v0.1 (Apple Developer Program enrollment is a separate workstream). After the first download you’ll see:brew install path
strips quarantine automatically; only direct downloads need this.
Linux: daemon won’t survive logout
crewship start as a systemctl --user service (or a tmux-less SSH
session) is killed when the user logs out, because systemd-user
sessions are tied to the login by default.
Enable lingering so the user manager keeps running:
loginctl show-user "$USER" | grep Linger= reports Linger=yes once
it’s on. Headless servers (no interactive shell) are the common case;
desktop installs that always have a logged-in graphical session can
skip this step.
Windows: SmartScreen blocks the binary
Windows builds aren’t Authenticode-signed in v0.1 (we sign later in the beta). On first launch you’ll see a SmartScreen “Don’t run” prompt. Right-clickcrewship.exe → Properties → check Unblock → OK.
One-time per binary — subsequent runs skip the prompt. The Homebrew
and Docker Compose install paths bypass this entirely.
”Migration version N collision”
This means your local DB has a migration applied under one name but the binary expects a different name at that version. Caused by upgrading from a fork or a pre-release build that shipped a renamed migration.migration-lint CI workflow now catches this
class of bug pre-merge, so it should not recur in v0.1+ releases.
Web UI loads but API requests fail with 401
Token expired or never set. Two paths:crewship.db deletion), visit
/bootstrap to recreate the initial admin account.
”Sentry endpoint unreachable” in doctor
WARN, not FAIL. Telemetry won’t ship until the network heals; nothing else breaks. If you want to silence the warning:Where to go next
Ifcrewship doctor is green and you still hit issues:
Open a GitHub issue
Attach
crewship doctor --no-color output and the relevant log
section.Discord community
Real-time help, especially for “is this expected?” questions.
Crash-report dashboard
If telemetry is enabled and the crash has a Sentry event ID,
paste it into the issue — the maintainer can correlate immediately.
Source-map view
For frontend issues, the Sentry stack trace has a “View on GitHub”
link per frame — useful screenshots to attach to reports.