Skip to main content

Manifest Schema

Flat reference for every field accepted under apiVersion: crewship/v1. For the narrative + examples, see Guides → Workspace Manifests. For CLI flags, see CLI → apply and CLI → export. The Go type definitions live at internal/manifest/schema.go; this page mirrors them.
Reference order: Top levelmetadata → the two kinds (Crew / Workspace) → the reusable building blocks (CrewSpec, Devcontainer, Credential, Skill, MCPServer, Agent, Service) → the cross-reference, shape, and size-cap rules the validator enforces.

Top level

Every manifest must start with these three keys:
Multi-document YAML is supported via --- separators — each document is independently typed by its own apiVersion + kind.
This page documents the two workspace-bundle kinds, Crew and Workspace. The apply pipeline also accepts additional declarative kinds — Project, Label, Milestone, WorkflowTemplate, TriageRule, RecurringIssue, SavedView, Routine, FeatureFlag, InstanceSetting, Recipe, CrewTemplate, Connector, Hook, Skill, and Issue — whose document types live under internal/manifest/kinds. They share the same apiVersion + metadata envelope but are out of scope for this schema reference.

metadata

Shared between both kinds. Only slug is load-bearing for apply (it’s the idempotency key); the rest is descriptive.

kind: Crew

spec: is a single CrewSpec (described below).

kind: Workspace

spec: wraps workspace-scope state and a list of nested crews:

CrewSpec

Devcontainer

Subset of devcontainer.json. Hand-written JSON can be passed through under raw: for fields not modelled here. Structured fields take precedence on conflict. See Configuration → Devcontainers for the full devcontainer field reference.

Credential

Slot declaration. Never carries values — those arrive at apply-time through --from-env or --secrets-file. Apply behaviour when a value is not supplied:
  • status set to PENDING on the server.
  • UI shows “Needs value” with a CTA.
  • Agent runs needing the credential fail with credential not configured.
  • Placeholder is never injected into the agent environment — the LLM can’t read or leak it.

Skill

Pick exactly one of path:, source:, or inline:. Path resolution uses the manifest’s directory as the root. .. escapes and absolute paths are rejected; symlinks are evaluated and their targets must also stay inside the manifest directory.

MCPServer

Crew-scoped MCP integration. Mirrors what POST /api/v1/crews/{id}/integrations accepts.

Agent

Service

Sidecar container that runs alongside the agent on the crew’s bridge network. Agents reach services by name (redis:6379, postgres:5432) on a private network — sidecars are never published to the host.

AutoCredential

ServiceVolume

ServiceHealthcheck

Mirrors docker-compose’s healthcheck shape.

Cross-reference rules

The validator runs the following cross-checks at validate time (no network, no DB). Every failure is collected into a single ValidationError so the author can fix all of them in one pass.

Shape rules

Size caps

The parser refuses oversized inputs to bound apply-time memory and prevent half-applied state from a malformed file.

Apply / sync semantics

For the full apply-mode matrix (default sync vs --strict vs --replace), see CLI → apply. In short: by default the manifest is the source of truth. Crews / agents / agent_skills / agent_credentials / mcp_servers that exist in the workspace but aren’t in the manifest get deleted with a confirmation prompt. Skills and credentials themselves are additive-only — delete those via UI or dedicated CLI commands.

See also