
Build, test, and deploy intelligent agent teams. Self-hosted. Git-backed. Production-ready.
Quick Start | Real Example | Deploy | Documentation
Build multi-agent systems that coordinate like real teams. Test with realistic scenarios. Deploy on your infrastructure.
Station gives you:
- ✅ Multi-Agent Teams - Coordinate specialist agents under orchestrators
- ✅ Built-in Evaluation - LLM-as-judge tests every agent automatically
- ✅ Git-Backed Workflow - Version control agents like code
- ✅ One-Command Deploy - Push to production with stn deploy
- ✅ Full Observability - Jaeger traces for every execution
- ✅ Self-Hosted - Your data, your infrastructure, your control
STN_CLOUDSHIP_KEY or CLOUDSHIPAI_REGISTRATION_KEYOPENAI_API_KEY - OpenAI (gpt-5-mini, gpt-5, etc.)GEMINI_API_KEY - Google GeminiANTHROPIC_API_KEY - Anthropic (claude-sonnet-4-20250514, etc.)curl -fsSL https://raw.githubusercontent.com/cloudshipai/station/main/install.sh | bash
Choose your AI provider:
CloudShip AI (Recommended)
Use CloudShip AI for optimized inference with Llama and Qwen models. This is the default when a registration key is available.
# Set your CloudShip registration key
export CLOUDSHIPAI_REGISTRATION_KEY="csk-..."
# Or use: export STN_CLOUDSHIP_KEY="csk-..."
stn init --provider cloudshipai --ship # defaults to cloudship/llama-3.1-70b
Available models:
- cloudship/llama-3.1-70b (default) - Best balance of performance and cost
- cloudship/llama-3.1-8b - Faster, lower cost
- cloudship/qwen-72b - Alternative large model
Claude Max/Pro Subscription (⚠️ DEPRECATED)
⚠️ DEPRECATED: Anthropic OAuth is currently unavailable.
Anthropic has restricted third-party use of OAuth tokens. This authentication method is not working until further notice.
Please use one of the following alternatives: - OpenAI API Key (recommended) - Google Gemini API Key - Anthropic API Key (pay-per-token, not subscription-based)
~~Use your existing Claude Max or Claude Pro subscription - no API billing required.~~
# ❌ NOT WORKING - Anthropic OAuth disabled
# stn init --provider anthropic --ship
# stn auth anthropic login
OpenAI (API Key)
export OPENAI_API_KEY="sk-..."
stn init --provider openai --ship # defaults to gpt-5-mini
Google Gemini (API Key)
export GEMINI_API_KEY="..."
stn init --provider gemini --ship
This sets up:
- ✅ Your chosen AI provider
- ✅ Ship CLI for filesystem MCP tools
- ✅ Configuration at ~/.config/station/config.yaml
Start the Jaeger tracing backend for observability:
stn jaeger up
This starts Jaeger UI at http://localhost:16686 for viewing agent execution traces.
Choose your editor and add Station:
Claude Code CLI
claude mcp add station -e OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 --scope user -- stn stdio
Verify with claude mcp list.
OpenCode
Add to opencode.jsonc:
{
"mcp": {
"station": {
"enabled": true,
"type": "local",
"command": ["stn", "stdio"],
"environment": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global):
{
"mcpServers": {
"station": {
"command": "stn",
"args": ["stdio"],
"env": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
}
}
}
}
Claude Desktop
| OS | Config Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"station": {
"command": "stn",
"args": ["stdio"],
"env": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318"
}
}
}
}
Optional GitOps: Point to a Git-backed workspace:
"command": ["stn", "--config", "/path/to/my-agents/config.yaml", "stdio"]
Get skills, slash commands, and enhanced documentation for your AI editor:
Claude Code Plugin
Adds /station commands, skills for agent creation, and MCP server config.
# Add Station marketplace and install plugin
/plugin marketplace add cloudshipai/station
/plugin install station@cloudshipai-station
Or install from local clone:
/plugin install ./station/claude-code-plugin
OpenCode Skill
Adds Station CLI reference skill with agent, workflow, and deployment docs.
# Copy skill to your project
cp -r station/opencode-plugin/.opencode .
# Or install globally
cp -r station/opencode-plugin/.opencode ~/.config/opencode/
Restart OpenCode - skill auto-loads.
Restart your editor. Station provides:
- ✅ Web UI at http://localhost:8585 for configuration
- ✅ Jaeger UI at http://localhost:16686 for traces
- ✅ 41 MCP tools available in your AI assistant
Try your first command:
"Show me all Station MCP tools available"
Interactive Onboarding Guide (3-5 min tutorial)
Copy this prompt into your AI assistant for a hands-on tour:
You are my Station onboarding guide. Walk me through an interactive hands-on tutorial.
RULES:
1. Create a todo list to track progress through each section
2. At each section, STOP and let me engage before continuing
3. Use Station MCP tools to demonstrate - don't just explain, DO IT
4. Keep it fun and celebrate wins!
THE JOURNEY:
## 1. Hello World Agent
- Create a "hello-world" agent that greets users and tells a joke
- Call the agent and show the result
[STOP for me to try it]
## 2. Faker Tools & MCP Templates
- Explain Faker tools (AI-generated mock data for safe development)
- Note: Real MCP tools are added via Station UI or template.json
- Explain MCP templates - they keep credentials safe when deploying
- Create a "prometheus-metrics" faker for realistic metrics
[STOP to see the faker]
## 3. DevOps Investigation Agent
- Create a "metrics-investigator" agent using our prometheus faker
- Call it: "Check for performance issues in the last hour"
[STOP to review the investigation]
## 4. Multi-Agent Hierarchy
- Create an "incident-coordinator" that delegates to:
- metrics-investigator (existing)
- logs-investigator (new - create a logs faker)
- Show hierarchy structure in the .prompt file
- Call coordinator: "Investigate why the API is slow"
[STOP to see delegation]
## 5. Inspecting Runs
- Use inspect_run to show detailed execution
- Explain: tool calls, delegations, timing
[STOP to explore]
## 6. Workflow with Human-in-the-Loop
- Create a workflow: investigate → switch on severity → human_approval if high → report
- Make it complex (switch/parallel), not sequential
- Start the workflow
[STOP for me to approve/reject]
## 7. Evaluation & Reporting
- Run evals with evaluate_benchmark
- Generate a performance report
[STOP to review]
## 8. Grand Finale
- Direct me to http://localhost:8585 (Station UI)
- Quick tour: Agents, MCP servers, Runs, Workflows
- Celebrate!
## 9. Want More? (Optional)
Briefly explain these advanced features (no demo needed):
- **Schedules**: Cron-based agent scheduling
- **Sandboxes**: Isolated code execution (Python/Node/Bash)
- **Notify Webhooks**: Send alerts to Slack, ntfy, Discord
- **Bundles**: Package and share agent teams
- **Deploy**: `stn deploy` to Fly.io, Docker, K8s
- **CloudShip**: Centralized management and team OAuth
Start now with Section 1!
stn upThe easiest way to run Station is with stn up - a single command that starts Station in a Docker container with everything configured.
stn up is designed to make it trivial to run agent bundles from your CloudShip account or the community:
# Run a bundle from CloudShip (by ID or name)
stn up --bundle finops-cost-analyzer
# Run a bundle from URL
stn up --bundle https://example.com/my-bundle.tar.gz
# Run a local bundle file
stn up --bundle ./my-custom-agents.tar.gz
This is the recommended way for most users to get started - just pick a bundle and go.
Developers can also use stn up to test their local agent configurations in an isolated container environment:
# Test your local workspace in a container
stn up --workspace ~/my-agents
# Test with a specific environment
stn up --environment production
# Test with development tools enabled
stn up --develop
This lets you validate that your agents work correctly in the same containerized environment they'll run in production.
# Start Station (interactive setup on first run)
stn up
# Start with specific AI provider
stn up --provider openai --model gpt-5
# Check status
stn status
# View logs
stn logs -f
# Stop Station
stn down
# Stop and remove all data (fresh start)
stn down --remove-volume
stn up Provides| Service | Port | Description |
|---|---|---|
| Web UI | 8585 | Configuration interface |
| MCP Server | 8586 | Main MCP endpoint for tools |
| Agent MCP | 8587 | Dynamic agent execution |
| Jaeger UI | 16686 | Distributed tracing |
See Container Lifecycle for detailed architecture.
Station supports multiple authentication methods for AI providers.
The simplest way to authenticate - set your API key as an environment variable:
# CloudShip AI (Recommended - auto-detected when registration key is set)
export CLOUDSHIPAI_REGISTRATION_KEY="csk-..."
# Or: export STN_CLOUDSHIP_KEY="csk-..."
# OpenAI
export OPENAI_API_KEY="sk-..."
# Google Gemini
export GEMINI_API_KEY="..."
# Anthropic (API billing)
export ANTHROPIC_API_KEY="sk-ant-api03-..."
⚠️ DEPRECATED: Anthropic OAuth is currently unavailable.
Anthropic has restricted third-party use of OAuth tokens. This authentication method is not working until further notice.
Use these alternatives instead: -
OPENAI_API_KEYfor OpenAI models (recommended) -GEMINI_API_KEYfor Google Gemini models -ANTHROPIC_API_KEYfor Anthropic API (pay-per-token billing)
Previous OAuth documentation (for reference only)
~~Use your Claude Max or Claude Pro subscription instead of pay-per-token API billing.~~
Setup (NOT WORKING):
# ❌ DEPRECATED - Anthropic OAuth disabled
# stn auth anthropic login
Authentication Priority:
| Priority | Method | Description |
|----------|--------|-------------|
| 1 | STN_AI_AUTH_TYPE=api_key | Force API key mode (override) |
| ~~2~~ | ~~Station OAuth tokens~~ | ~~From stn auth anthropic login~~ DEPRECATED |
| ~~3~~ | ~~Claude Code credentials~~ | ~~From ~/.claude/.credentials.json~~ DEPRECATED |
| 4 | ANTHROPIC_API_KEY env var | Standard API key (USE THIS) |
For Anthropic models, use API key authentication:
# Set Anthropic API key
export ANTHROPIC_API_KEY="sk-ant-api03-..."
# Or in Docker
docker run \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e STN_AI_PROVIDER=anthropic \
station:latest
Station is driven entirely through MCP tools in your AI assistant. Natural language requests use 41+ available MCP tools.
| Category | Tools | Key Functions |
|---|---|---|
| Agent Management | 11 | create_agent, update_agent, add_agent_as_tool |
| Execution | 4 | call_agent, inspect_run, list_runs |
| Evaluation | 7 | evaluate_benchmark, batch_execute_agents |
| Reports | 4 | create_report, generate_report |
| Environments | 3 | create_environment, list_environments |
| MCP Servers | 5 | add_mcp_server_to_environment |
| Scheduling | 3 | set_schedule, remove_schedule |
| Faker/Bundles | 2 | faker_create_standalone, create_bundle |
Example interaction:
You: "Create a logs analysis agent that uses Datadog and Elasticsearch"
Claude: [Using create_agent tool...] ✅ Created logs_investigator
You: "Run the incident coordinator on the API timeout issue"
Claude: [Using call_agent...] [Full investigation with multi-agent delegation]
Discover all tools: Ask your AI assistant "Show me all Station M
$ claude mcp add station \
-- python -m otcore.mcp_server <graph>