Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dockingstation Cloud

Host dockingstation (25+ AI coding agents) as cloud instances on Contree.

Turn the local dockingstation container into a scalable cloud platform where teams can spin up isolated instances of all 25+ AI tools instantly. No local installation needed.

What is This?

Dockingstation is a Docker container bundling 22+ AI coding agents (Claude Code, GitHub Copilot, Gemini, Aider, etc.). This project makes it cloud-native:

Local dockingstation container
    ↓
Push to Docker registry
    ↓
dockingstation-cloud API (Cloudflare Workers)
    ↓
Spin up cloud instances via Contree
    ↓
Access dockingstation in browser

Features

  • βœ… Instant cloud instances β€” Create a dockingstation instance in <30s
  • βœ… Isolated environments β€” Each user gets their own VM sandbox
  • βœ… No setup β€” Access from browser, no local installation
  • βœ… 25+ AI tools β€” All bundled in one container
  • βœ… Team-ready β€” Share instances, manage permissions
  • βœ… Cost-effective β€” Pay only for running instances

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ User's Browser                  β”‚
β”‚ (http://dockingstation.cloud)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€v─────────────────┐
β”‚ Cloudflare Worker (Control Plane)β”‚
β”‚ β€’ Instance CRUD                  β”‚
β”‚ β€’ Auth + API keys                β”‚
β”‚ β€’ Contree orchestration          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€v─────────────────┐
β”‚ Contree (Compute)                β”‚
β”‚ β€’ Provisions MicroVMs            β”‚
β”‚ β€’ Manages snapshots              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€v─────────────────┐
β”‚ Dockingstation Container         β”‚
β”‚ β”œβ”€ Claude Code                   β”‚
β”‚ β”œβ”€ GitHub Copilot                β”‚
β”‚ β”œβ”€ Gemini CLI                    β”‚
β”‚ β”œβ”€ Aider                         β”‚
β”‚ β”œβ”€ 18 more AI agents             β”‚
β”‚ β”œβ”€ VS Code Web                   β”‚
β”‚ └─ Linux Desktop (noVNC)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Project Structure

dockingstation-cloud/
β”œβ”€β”€ apps/
β”‚   └── worker/              # Cloudflare Worker API
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ index.ts     # Hono app + routes
β”‚       β”‚   β”œβ”€β”€ routes/
β”‚       β”‚   β”‚   β”œβ”€β”€ instances.ts    # POST/GET/DELETE instances
β”‚       β”‚   β”‚   └── health.ts       # Health check
β”‚       β”‚   β”œβ”€β”€ middleware/
β”‚       β”‚   β”‚   └── auth.ts         # JWT/API key auth
β”‚       β”‚   β”œβ”€β”€ lib/
β”‚       β”‚   β”‚   β”œβ”€β”€ contree-client.ts # Contree API calls
β”‚       β”‚   β”‚   └── provisioner.ts    # Instance provisioning
β”‚       β”‚   └── globals.d.ts
β”‚       └── wrangler.toml
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ shared/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ instance.ts   # Instance types
β”‚   β”‚       β”œβ”€β”€ api.ts        # API response wrappers
β”‚   β”‚       └── index.ts
β”‚   β”œβ”€β”€ contree-client/
β”‚   β”‚   └── src/
β”‚   β”‚       β”œβ”€β”€ client.ts     # Contree API client
β”‚   β”‚       β”œβ”€β”€ types.ts
β”‚   β”‚       └── index.ts
β”‚   └── cli/
β”‚       └── src/
β”‚           β”œβ”€β”€ commands/
β”‚           β”‚   β”œβ”€β”€ create.ts # Create instance
β”‚           β”‚   β”œβ”€β”€ list.ts   # List instances
β”‚           β”‚   └── delete.ts # Delete instance
β”‚           β”œβ”€β”€ index.ts
β”‚           └── cli.ts
β”œβ”€β”€ Dockerfile.dockingstation  # Build dockingstation for Contree
β”œβ”€β”€ package.json
β”œβ”€β”€ pnpm-workspace.yaml
β”œβ”€β”€ turbo.json
β”œβ”€β”€ tsconfig.json
└── README.md

Quick Start

Prerequisites

  • Node.js 18+, pnpm
  • Contree account + API key
  • Docker (to build dockingstation image)

1. Clone

git clone https://github.com/opencolin/dockingstation-cloud.git
cd dockingstation-cloud
pnpm install

2. Build Dockingstation Image

# Build from source (or pull pre-built)
docker build -f Dockerfile.dockingstation -t dockingstation:cloud .

# Tag and push to registry
docker tag dockingstation:cloud docker.io/opencolin/dockingstation:cloud
docker push docker.io/opencolin/dockingstation:cloud

3. Configure Contree

cd apps/worker
echo "CONTREE_API_KEY=your_key_here" > .dev.vars
echo "CONTREE_BASE_URL=https://api.contree.co" >> .dev.vars

4. Start Dev Server

cd apps/worker
pnpm dev

Visit http://localhost:8787 (Worker API) and http://localhost:8787/api/health to test.

5. Create an Instance

curl -X POST http://localhost:8787/api/instances \
  -H 'Authorization: Bearer demo_token' \
  -H 'Content-Type: application/json' \
  -d '{}'

Response:

{
  "ok": true,
  "data": {
    "id": "instance_abc123",
    "status": "provisioning",
    "webUrl": "https://dockingstation.cloud/i/instance_abc123",
    "createdAt": "2026-04-19T10:30:45.123Z"
  }
}

Once status: "running", visit the web URL.

API Endpoints

Create Instance

POST /api/instances

curl -X POST http://localhost:8787/api/instances \
  -H 'Authorization: Bearer <token>'

List Instances

GET /api/instances

curl http://localhost:8787/api/instances \
  -H 'Authorization: Bearer <token>'

Get Instance

GET /api/instances/:id

curl http://localhost:8787/api/instances/instance_abc123 \
  -H 'Authorization: Bearer <token>'

Delete Instance

DELETE /api/instances/:id

curl -X DELETE http://localhost:8787/api/instances/instance_abc123 \
  -H 'Authorization: Bearer <token>'

CLI Tool

Manage instances from the terminal:

# Install globally (once built)
npm install -g @dockingstation-cloud/cli

# Create instance
dockingstation create

# List instances
dockingstation list

# Get instance details
dockingstation get instance_abc123

# Delete instance
dockingstation delete instance_abc123

# Open in browser
dockingstation open instance_abc123

Deployment

Development

cd apps/worker
pnpm dev

Production

# Build
pnpm turbo build

# Deploy to Cloudflare
cd apps/worker
wrangler deploy

Requires:

  • Cloudflare account + API token
  • Wrangler configured (wrangler login)
  • Contree API key set in Cloudflare secrets

Key Differences from opencode.cloud

Feature opencode.cloud dockingstation-cloud
Base image opencode server dockingstation container
Primary tool opencode (1 agent) 22+ AI agents
Use case AI-assisted coding Multi-tool evaluation
Branching Yes (explore approaches) Optional (future)
Architecture Sessions + CRDT collab Instances + isolated envs

File Structure Walkthrough

apps/worker/src/index.ts

Hono app setup:

import { Hono } from 'hono';
import { healthRoute } from './routes/health';
import { instancesRoute } from './routes/instances';

type Env = {
  CONTREE_API_KEY: string;
  CONTREE_BASE_URL: string;
  KV: KVNamespace;
};

const app = new Hono<{ Bindings: Env }>();

app.get('/api/health', healthRoute);
app.route('/api/instances', instancesRoute);

export default app;

packages/shared/src/instance.ts

Type definitions:

export interface Instance {
  id: string;
  userId: string;
  status: 'provisioning' | 'running' | 'paused' | 'destroyed';
  contreeInstanceId: string;
  webUrl: string;
  createdAt: string;
  updatedAt: string;
}

apps/worker/src/lib/provisioner.ts

Contree orchestration:

export async function provisionInstance(
  contreeClient: ContreeClient,
  userId: string
): Promise<Instance> {
  // 1. Import dockingstation image
  // 2. Spin up MicroVM
  // 3. Start dockingstation server
  // 4. Return instance metadata
}

Roadmap

M0 (Now)

  • βœ… Basic instance CRUD
  • βœ… Contree integration
  • βœ… API endpoints
  • ⏳ CLI tool

M1 (Next)

  • Web dashboard (list, create, delete instances)
  • User authentication (OAuth)
  • API keys management
  • Instance sharing

M2 (Later)

  • Branching/snapshots (per instance)
  • Collaborative instances
  • Team management
  • Billing/usage tracking

Security

All requests require authentication:

# JWT token
-H 'Authorization: Bearer eyJ...'

# API key
-H 'Authorization: Bearer ds_live_...'

Sandboxes are isolated per user via Contree MicroVM isolation.

Cost

Component Cost
Instance creation $0.10
Per hour running $0.50
Storage per GB/month $0.01

Billed only while running.

Contributing

See CONTRIBUTING.md (coming soon).

License

MIT


Questions? Open an issue on GitHub.

Want to contribute? Fork + submit PR.

Found a bug? Report it with steps to reproduce.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages