Skip to main content

Overview

The crewship.toml file configures how your crew is built and deployed. Place it in your project root. Crewship supports two formats:
  • Single deployment — one [deployment] section (default, created by crewship init)
  • Multi-deployment — multiple [deployments.<name>] sections for monorepos with several agents
Run crewship init to auto-generate this file with detected settings from your project.

Single Deployment (default)

crewship.toml

Multi-Deployment

For monorepos with multiple agents sharing the same codebase, use named [deployments.<name>] sections:
crewship.toml
Each named deployment gets its own deployment on Crewship with the name as the project name (e.g. research-agent). [apis] and [chat] can be set at the top level as global defaults, and overridden per deployment:
crewship.toml
[deployment] and [deployments.*] are mutually exclusive. Using both in the same file will produce an error.

Selecting a deployment

Use --name / -n on any command to target a specific deployment:
If --name is omitted:
  • One named deployment — auto-selected
  • Multiple named deployments — interactive prompt (or error in CI)
  • Single [deployment] format — used directly (no --name needed)

Deployment IDs

After the first deploy, deployment_id is saved into each section automatically:

Full Example

crewship.toml

Configuration Reference

[deployment] / [deployments.<name>]

Entrypoint Format

The entrypoint format depends on your framework: CrewAI and LangGraph (Python) — Python module path:
LangGraph.js — file path relative to project root:
Run crewship init to auto-detect your framework and entrypoint. For LangGraph projects, place a langgraph.json in your project root to enable auto-detection.

Profile Options

[build]

Build configuration options.

[build.install]

Additional system packages to install.
Only packages available in the base image’s package manager (apt) are supported.

[runtime]

Runtime configuration.

[apis]

Controls which APIs are enabled for the deployment. This affects both direct API access and which interaction modes are available in Slack. When omitted (or null), all APIs are enabled by default.
In Slack, the enabled APIs determine which interaction modes work:
  • Thread API@mention conversations use threads for multi-turn context
  • Run API/crewship run slash commands use single stateless runs
  • If both are enabled, @mention defaults to thread mode
Not sure which to use? Read Runs vs Threads: When to Use Which.

[chat]

Configures how chat messages (from Slack or other integrations) map to your crew’s input and output.
When a user sends a message in Slack (e.g. “Tell me about quantum computing”), it gets mapped to:
If output_key is set, the platform extracts that field from the run result to display as the response:
If your crew already accepts an input parameter, you can omit [chat] entirely — it defaults to input_key = "input".

[metadata]

Optional metadata for organization.

Validation

The CLI validates your crewship.toml on deploy:
Common validation errors:

Environment-specific Config

For different environments, use separate projects:
Set different environment variables per project:

Example Configurations

Basic CrewAI

Basic LangGraph

Basic LangGraph.js

Web Scraping Crew

Document Processing

Slack Chatbot

Multi-Agent Monorepo (mixed frameworks)

Deploy individual agents:

Deploy

Deploy your configured crew

Slack Integration

Connect your crew to Slack

Environment Variables

Configure secrets

Threads

Multi-turn conversations