Docker Deployment

Station provides a containerized deployment option via stn up that bundles all services into a single command.

Quick Start

# Start Station in Docker
stn up

# Check status
stn status

# View logs
stn logs

# Stop Station
stn down

Exposed Ports

PortServiceDescription
8585Web UI / REST APIStation dashboard and HTTP API
8586MCP ServerModel Context Protocol endpoint
8587SSH TerminalTUI-based admin interface
16686Jaeger UIDistributed tracing dashboard

Environment Variables

Configure Station via environment variables:

# AI Provider (required)
export STN_AI_PROVIDER=anthropic  # or: openai, gemini
export STN_AI_MODEL=claude-sonnet-4-20250514

# For API key auth (alternative to Claude Max/Pro)
export ANTHROPIC_API_KEY=sk-ant-...
export OPENAI_API_KEY=sk-...
export GEMINI_API_KEY=...

# Start with config
stn up

With Docker Compose

For production deployments, use Docker Compose:

# docker-compose.yml
version: '3.8'

services:
  station:
    image: ghcr.io/cloudshipai/station:latest
    ports:
      - "8585:8585"  # Web UI
      - "8586:8586"  # MCP Server
      - "8587:8587"  # SSH Terminal
    volumes:
      - ./environments:/app/environments
      - ./config.yaml:/app/config.yaml
    environment:
      - STN_AI_PROVIDER=anthropic
      - STN_AI_MODEL=claude-sonnet-4-20250514
    restart: unless-stopped

  jaeger:
    image: jaegertracing/all-in-one:latest
    ports:
      - "16686:16686"  # Jaeger UI
      - "4318:4318"    # OTLP HTTP
    environment:
      - COLLECTOR_OTLP_ENABLED=true
docker compose up -d

Bundles in Docker

Install bundles before starting:

# Install bundles to local environments folder
stn bundle install devops-tools

# Then start Docker (mounts environments folder)
stn up

Or mount your existing workspace:

docker run -d \
  -v /path/to/your/workspace:/app/environments \
  -p 8585:8585 -p 8586:8586 \
  ghcr.io/cloudshipai/station:latest

Connecting MCP Clients

When running in Docker, MCP clients connect to localhost:8586:

Claude Desktop

{
  "mcpServers": {
    "station": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8586/sse"]
    }
  }
}

Cursor

{
  "mcpServers": {
    "station": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8586/sse"]
    }
  }
}

Health Checks

# Check all services
stn status

# Check specific endpoint
curl http://localhost:8585/health

# View Jaeger traces
open http://localhost:16686

Troubleshooting

Port Already in Use

# Find process using port
lsof -i :8585

# Use different ports
docker run -p 9585:8585 -p 9586:8586 ghcr.io/cloudshipai/station:latest

Container Won’t Start

# Check logs
docker logs station

# Run interactively for debugging
docker run -it --rm ghcr.io/cloudshipai/station:latest

MCP Connection Refused

Ensure the container is running and port 8586 is exposed:

docker ps
curl http://localhost:8586/health

Next Steps