MCPcopy Index your code
hub / github.com/cloudshipai/station

github.com/cloudshipai/station @v0.25.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.25.0 ↗ · + Follow
9,915 symbols 29,170 edges 706 files 3,095 documented · 31% updated 5mo agov0.25.0 · 2026-01-13★ 4267 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Station

Station - AI Agent Orchestration Platform

Test Coverage Go Tests

Build, test, and deploy intelligent agent teams. Self-hosted. Git-backed. Production-ready.

Quick Start | Real Example | Deploy | Documentation


Why Station?

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


Quick Start (2 minutes)

Prerequisites

  • Docker - Required for Jaeger (traces and observability)
  • AI Provider - Choose one:
  • CloudShip AI (Recommended) - STN_CLOUDSHIP_KEY or CLOUDSHIPAI_REGISTRATION_KEY
  • OPENAI_API_KEY - OpenAI (gpt-5-mini, gpt-5, etc.)
  • GEMINI_API_KEY - Google Gemini
  • ANTHROPIC_API_KEY - Anthropic (claude-sonnet-4-20250514, etc.)

1. Install Station

curl -fsSL https://raw.githubusercontent.com/cloudshipai/station/main/install.sh | bash

2. Initialize Station

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

3. Start Jaeger (Tracing)

Start the Jaeger tracing backend for observability:

stn jaeger up

This starts Jaeger UI at http://localhost:16686 for viewing agent execution traces.

4. Connect Your MCP Client

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"]

5. Install Editor Plugins (Optional)

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.

6. Start Building

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!

Running Station with stn up

The easiest way to run Station is with stn up - a single command that starts Station in a Docker container with everything configured.

Primary Use Case: Running Bundles

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.

Secondary Use Case: Testing Local Configurations

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.

Quick Commands

# 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

What 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.


AI Provider Authentication

Station supports multiple authentication methods for AI providers.

API Keys (Default)

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-..."

Anthropic OAuth (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.

Use these alternatives instead: - OPENAI_API_KEY for OpenAI models (recommended) - GEMINI_API_KEY for Google Gemini models - ANTHROPIC_API_KEY for 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

How You Interface: MCP-Driven Platform

Station is driven entirely through MCP tools in your AI assistant. Natural language requests use 41+ available MCP tools.

MCP Tool Categories

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

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 5,245
Function 2,897
Struct 1,406
Interface 278
TypeAlias 65
Class 16
FuncType 8

Languages

Go91%
TypeScript9%

Modules by API surface

internal/lighthouse/proto/lighthouse.pb.go1,003 symbols
internal/proto/lighthouse.pb.go870 symbols
internal/proto/data_ingestion.pb.go316 symbols
internal/lighthouse/proto/data_ingestion.pb.go316 symbols
internal/lighthouse/proto/lighthouse_grpc.pb.go122 symbols
internal/proto/lighthouse_grpc.pb.go91 symbols
internal/db/repositories/workflows.go79 symbols
ui/src/App.tsx74 symbols
ui/src/App-old.tsx68 symbols
internal/config/config.go61 symbols
internal/services/workflow_service.go55 symbols
internal/services/sandbox_fly_machines_backend.go47 symbols

Datastores touched

appDatabase · 1 repos
dbDatabase · 1 repos
mydbDatabase · 1 repos
dev_dbDatabase · 1 repos
productionDatabase · 1 repos
(mongodb)Database · 1 repos
mydbDatabase · 1 repos
(mysql)Database · 1 repos

For agents

$ claude mcp add station \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page