Skip to main content

Overview

The crewship.toml file configures how your crew is built and deployed. Place it in your project root.

Minimal Example

crewship.toml
name = "my-crew"
framework = "crewai"

[build]
entrypoint = "src.my_crew.main:kickoff"

Full Example

crewship.toml
name = "research-crew"
framework = "crewai"

[build]
entrypoint = "src.research_crew.main:kickoff"
python = "3.11"
profile = "slim"

[build.install]
# Additional system packages
packages = ["ffmpeg", "imagemagick"]

[runtime]
timeout = 600
memory = 512

[metadata]
description = "A crew that researches topics and writes reports"
tags = ["research", "writing"]

Configuration Reference

Top-level

FieldTypeRequiredDescription
namestringProject name (lowercase, hyphens allowed)
frameworkstringFramework to use (crewai)

[build]

Build configuration options.
FieldTypeDefaultDescription
entrypointstringrequiredModule path to kickoff function
pythonstring"3.11"Python version (3.10, 3.11, 3.12)
profilestring"slim"Base image profile
dockerfilestringCustom Dockerfile path

Entrypoint Format

The entrypoint follows Python’s module path format:
module.path:function_name
Examples:
# Function in src/my_crew/main.py
entrypoint = "src.my_crew.main:kickoff"

# Function in crew.py at root
entrypoint = "crew:run"

# Nested module
entrypoint = "src.crews.research.main:kickoff"

Profile Options

ProfileDescriptionUse case
slimMinimal Python environmentMost crews
browserIncludes Playwright + ChromiumWeb scraping, screenshots

[build.install]

Additional system packages to install.
[build.install]
packages = ["ffmpeg", "poppler-utils", "tesseract-ocr"]
Only packages available in the base image’s package manager (apt) are supported.

[runtime]

Runtime configuration.
FieldTypeDefaultDescription
timeoutinteger300Max execution time in seconds
memoryinteger256Memory limit in MB
[runtime]
timeout = 900    # 15 minutes
memory = 1024    # 1 GB

[metadata]

Optional metadata for organization.
FieldTypeDescription
descriptionstringHuman-readable description
tagsarrayTags for filtering in Console
[metadata]
description = "Researches topics and generates blog posts"
tags = ["content", "blog", "research"]

Validation

The CLI validates your crewship.toml on deploy:
crewship deploy
Common validation errors:
❌ Error: Invalid crewship.toml
   - name: must be lowercase with hyphens only
   - build.entrypoint: required field missing

Environment-specific Config

For different environments, use separate projects:
# Production
crewship deploy --project my-crew

# Staging
crewship deploy --project my-crew-staging
Set different environment variables per project:
crewship env set OPENAI_API_KEY=sk-prod-... --project my-crew
crewship env set OPENAI_API_KEY=sk-test-... --project my-crew-staging

Example Configurations

Basic CrewAI

name = "simple-crew"
framework = "crewai"

[build]
entrypoint = "src.simple_crew.main:kickoff"

Web Scraping Crew

name = "scraper-crew"
framework = "crewai"

[build]
entrypoint = "src.scraper.main:kickoff"
profile = "browser"
python = "3.11"

[runtime]
timeout = 600
memory = 1024

Document Processing

name = "doc-processor"
framework = "crewai"

[build]
entrypoint = "src.processor.main:kickoff"
python = "3.11"

[build.install]
packages = ["poppler-utils", "tesseract-ocr"]

[runtime]
timeout = 900
memory = 2048