# OpenAIcrewship env set OPENAI_API_KEY=sk-proj-...# Anthropiccrewship env set ANTHROPIC_API_KEY=sk-ant-...# Google AIcrewship env set GOOGLE_API_KEY=...# Azure OpenAIcrewship env set AZURE_OPENAI_API_KEY=...crewship env set AZURE_OPENAI_ENDPOINT=https://...
# Web search (Serper)crewship env set SERPER_API_KEY=...# Browserlesscrewship env set BROWSERLESS_API_KEY=...# Firecrawlcrewship env set FIRECRAWL_API_KEY=...
Add .env to .gitignore. Use crewship env set instead.
Use specific keys
Create API keys specific to Crewship. Easier to rotate and audit.
Fail fast
Don’t use fallback values for required secrets:
Copy
# ❌ Bad - silently failsapi_key = os.environ.get("API_KEY", "")# ✅ Good - fails immediatelyapi_key = os.environ["API_KEY"]
Document requirements
List required variables in your README:
Copy
## Environment Variables- `OPENAI_API_KEY` - Required. OpenAI API key- `SERPER_API_KEY` - Required for web search- `LOG_LEVEL` - Optional. Default: info
Variables are scoped to projects, not deployments:
Copy
Project: my-crew├── OPENAI_API_KEY = sk-...├── SERPER_API_KEY = ...│├── Deployment: dep_abc (uses these vars)├── Deployment: dep_xyz (uses these vars)└── All runs use these vars
# Update a variablecrewship env set OPENAI_API_KEY=sk-new-key-...# Next run uses new value (no redeploy needed)crewship invoke --input '{"topic": "test"}'