โ—† remote Claude Code agents over MCP

๐Ÿ›น sk8

A minimal MCP server that exposes a remote Claude Code agent over HTTP. Your laptop's Claude Code calls one tool โ€” run_task โ€” to delegate a whole, self-contained job to an agent running on Cloud Run.

~/agents โ€” sk8
// the idea

delegate, don't context-switch

sk8 runs claude headless on a remote box and returns the final answer. It's deliberately tiny: synchronous and blocking โ€” no queue, no streaming, no status polling. Fire a task, get the result.

๐Ÿ›ฐ๏ธ

One tool: run_task

The remote agent runs your prompt in its cwd and hands back the final text answer. That's the whole API surface.

๐Ÿงฌ

Profiles baked in

Customize each agent per profile โ€” extra Python packages, bundled Claude Code skills, and a tool / MCP / system-prompt spec compiled into the image at build time.

โš™๏ธ

Powered by the Agent SDK

server_sdk.py drives the agent loop through the Claude Agent SDK โ€” a typed async message stream with structured permission control.

๐Ÿ“ฆ

Files in & out (optional)

GCS-backed signed URLs move inputs and artifacts around run_task without bloating the prompt or hitting the 32 MB request cap.

// 60 seconds

quickstart

Install the CLI, provision an agent on Cloud Run, and wire it into Claude Code.

install the sk8 CLI
# install the `sk8` command from this repo (uv / pipx / pip all work)
uv tool install .

# build the agent image (first time) + provision on Cloud Run
sk8 create iris --build

# custom deps / skills / tools via a profile
sk8 create iris --profile ./profiles/data-analyst --build
connect it to Claude Code & verify
# `sk8 create` prints the exact `claude mcp add ...` line โ€” run it, then:
claude mcp list      # sk8 should show as connected

Then, in a Claude Code session on your laptop:

delegate a task
Use the sk8 run_task tool with prompt:
"list the files in the current directory and summarize them"
// the lifecycle

the sk8 CLI

Scriptable for humans and agents alike โ€” it emits JSON so a running agent can spawn and register its own sub-agents.

sk8 <cmd>
sk8 create iris --build     # build image (first time) + provision
sk8 create iris             # subsequent agents reuse the image
sk8 create iris --json      # {url, token, mcp_add_command} for agents
sk8 create iris --dry-run   # preview the gcloud commands offline
sk8 list                    # list deployed agents in the region
sk8 delete iris --yes       # tear down service + token secret
sk8 suggest 5              # propose adjective-noun names
// under the hood

architecture

The GCP services (Cloud Build, Artifact Registry, Secret Manager, IAM, Cloud Run) and the agent lifecycle โ€” image build โ†’ token mint โ†’ a run_task call triggering Cloud Run.

sk8 remote agent GCP architecture
// fine print

limitations

โณ Synchronous only

run_task blocks until the agent finishes (up to a 600s timeout). No streaming, no progress, no status to poll.

๐Ÿšฆ One task at a time

No queue or concurrency management โ€” fire tasks serially.

๐Ÿง  Stateless across calls

Each call is a fresh headless claude with no memory of prior tasks. Put all context in the prompt.

โš  Arbitrary code execution. claude can do anything the host user can. Treat reaching this endpoint as equivalent to a shell on the box โ€” secure it accordingly.