Manifest Schema
Flat reference for every field accepted underapiVersion: 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 level →
metadata → 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:
statusset toPENDINGon 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 singleValidationError 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
- Guides → Workspace Manifests — narrative
- CLI → apply
- CLI → export
- Configuration → Devcontainers — for
devcontainer.featuressemantics internal/manifest/schema.go— Go source of truth