Skip to main content

Dev Box

Every Autodock environment comes with a batteries-included dev box - modern tooling, language runtimes, and observability all pre-configured and ready to use.
Mike’s tip: This is the greatest hits of dev tooling - the rig I reach for whenever I hack on any project. Everything’s fine-tuned to be usable and observable via MCP with minimal fuss. No setup, no config files to copy around, just SSH in and start building.

What’s Installed

Language Runtimes (via mise)

Autodock uses mise as the universal version manager. These runtimes are pre-installed and ready to use: Need a different version? Use mise:

Package Managers

  • pnpm - Fast Node.js package manager
  • uv - Fast Python package manager
  • yarn - Alternative Node.js package manager

Modern CLI Tools

AI Tools

  • Claude Code - Anthropic’s CLI for Claude (claude)
  • aichat - All-in-one LLM CLI
  • Ollama - Local LLM runner
  • aider - AI pair programmer
  • shell-gpt - GPT in your terminal

Infrastructure Tools

  • Docker - Container runtime with Compose
  • kubectl - Kubernetes CLI
  • helm - Kubernetes package manager
  • gh - GitHub CLI

Observability Stack

Your environment includes a complete observability stack that captures logs from your applications and Docker containers automatically.

How It Works

  • Loki - Log storage running on port 3100
  • Promtail - Tails /workspace/logs and /var/log, ships to Loki
  • Docker Loki Driver - All containers automatically ship logs (no config needed)
  • OpenTelemetry Collector - Receives OTLP on ports 4317 (gRPC) and 4318 (HTTP), exports to Loki

Querying Logs with env.observe

Ask your AI agent to check the logs:
Your agent will call env.observe and query Loki:

Log Sources

Example: Debugging Docker Services

Writing Logs

Write your application logs to /workspace/logs/ and they’ll be automatically captured:
Docker containers ship logs automatically - no configuration needed.

OpenTelemetry Auto-Instrumentation

For frameworks that support OpenTelemetry (FastAPI, Celery, Express, etc.), your dev box is pre-configured to receive OTLP telemetry and ship it to Loki.

Environment Variables

These are set globally in /etc/environment:

Suggested Prompts

Autodock will instruct agents to automatically instrument via OTel if they detect it’s being used. It may also prompt you to add it. If not, here are some prompts you can use:
  • “Add OpenTelemetry auto-instrumentation to this FastAPI app”
  • “Enable OTel logging for my Celery workers”
  • “Instrument this Express server with OpenTelemetry”
  • “Set up tracing for my Python application”

Querying OTel Logs

OTel logs can be queried over MCP by using the env.observe tool. If SSH’d into the box, you can also query directly:
OTel logs include rich metadata like service name, trace IDs, and code location.

API Keys for Headless Access

Need to use Autodock from CI/CD pipelines, scripts, or other automation? Create an API key for headless MCP authentication.

Creating an API Key

Ask your AI agent to create one:
Or call the tool directly:

Using the API Key

Add the Autodock MCP server with your API key:

Managing Keys

Inbound Email

Every Autodock environment can receive emails at *@{slug}.autodock.io. This is invaluable for testing email-dependent flows without configuring external mail services.
Mike’s tip: While I don’t like to pick favorites, this is probably my favorite feature. It helps testing auth, marketing, and all sorts of flows that rely on the venerable workhorse that is email.

How It Works

  1. Send an email to anything@{slug}.autodock.io
  2. AWS SES receives it and notifies the Autodock webhook via SNS
  3. The webhook forwards to your environment with Bearer token authentication
  4. Your app handles the email (using the pre-installed boilerplate or your own handler)

Quick Start

A boilerplate email handler is pre-installed at ~/.autodock/email-server.js. Start it with:
Or run in background:
Get full setup instructions from your agent:

Authentication

Webhook requests include a Bearer token that’s unique to your environment. The token is provisioned when your environment is created and stored at ~/.autodock/email-webhook-secret. The boilerplate handler validates this automatically. If writing your own handler:

Webhook Payload

Limits: 150KB max email size (SES SNS limit). Large emails or attachments are truncated.

GitHub Actions Runner

Every Autodock environment includes a pre-installed GitHub Actions runner. Turn any environment into a self-hosted runner for your CI/CD pipelines.
Mike’s tip: Autodock tests Autodock using the Autodock GitHub runner by using Autodock to spin up a runner to test Autodock by using Autodock to spin up a runner in order to… well, you get the idea. Don’t worry, there’s a terminating condition… maybe…

Quick Start

  1. Get a registration token from GitHub:
    • Go to your repo → Settings → Actions → Runners → New self-hosted runner
    • Copy the token (valid for 1 hour)
  2. Ask your agent to configure the runner:
Your agent will call env.gh_runner and return the commands to configure and start the runner.

How It Works

The runner is pre-installed at /opt/actions-runner and configured in ephemeral mode - it processes one job and then exits. This is ideal for dynamic environments where you want clean state for each job.

Labels

Runners are automatically labeled with:
  • autodock - All Autodock runners
  • {slug} - Your specific environment (e.g., happy-panda)
  • Any custom labels you specify

For Kubernetes Workloads

If you’re running Kubernetes with its own observability stack (Datadog, Grafana Cloud, etc.), you can disable the built-in logging:
To use a different Docker logging driver: