Live at deployer.code.aioffice.works

Spawn AI coding agents
onto any machine.

The deployer is the “spawn an agent” service of the AutoDev suite. Give it a repo and a task, and it provisions a target, drops an autodev agent onto it, and hands it the managed GitHub + Claude credentials it needs to run — then keeps those credentials alive.

Hetzner Cloud DigitalOcean SSH hosts Docker Kubernetes
Capabilities

Everything to put an agent loop on a box — and keep it running.

One Laravel service handles provisioning, credentials, the agent lifecycle, and a scheduler that renews tokens before they lapse.

Four deploy targets

Provision or reuse a Hetzner/DigitalOcean VM, an existing SSH host, a Docker daemon, or a Kubernetes cluster — each behind its own driver.

Managed GitHub + Claude auth

Encrypted AgentSecret rows store GitHub PATs, Claude tokens, API keys and more. Run the OAuth flow PHP-natively — no pasting tokens.

A scheduler that keeps agents alive

One schedule:run unit renews Claude and grok tokens, reaps abandoned logins, and reconciles dead loops — before access lapses.

Loop & remote-control modes

Run a headless autonomous loop against TODO.md, or an interactive remote_control Claude session you drive from claude.ai or mobile.

Cloud fleet management

Create, start, stop and delete servers, volumes and snapshots. Assign live subdomains via Hetzner DNS. Surfaces the powered-off billing gotcha.

Filament panel + REST API

A Filament admin panel for humans and a Sanctum-authenticated REST API for the app, CLI and pixel-office to drive — with webhooks and activity logs.

How it works

From POST /api/agents to a working agent.

Every spawn enqueues a SpawnAgentJob that runs a driver, which lands an autodev agent on the target.

Provision a target

Spin up (or reuse) a Hetzner/DO VM, SSH host, Docker daemon, or K8s cluster.

Drop the agent

It clones the repo, authenticates GitHub + Claude, and starts the loop or a remote session.

Bind to the office

Optionally connect the agent back to a pixel-office character so you can watch it work.

Keep it alive

The scheduler renews expiring tokens and reconciles dead agents automatically.

The API

Drive it from the CLI, the app, or pixel-office.

  • Store credentials once — encrypted at rest, referenced by id at spawn. Secrets are passed via environment / k8s Secret, never on the command line.
  • Pick your providerclaude, grok, opencode, copilot, or openrouter selects which agent CLI the loop runs on.
  • Track and tail — poll GET /api/agents/{id} and stream the driver log with /log.
Read the full API reference  →
spawn an agent
# authenticate, then spawn an agent
curl -X POST /api/agents \
  -H 'Authorization: Bearer 1|…' \
  -d '{
    "target": "ssh",
    "mode":   "loop",
    "host":   "1.2.3.4",
    "repo":   "github.com/owner/name",
    "task":   "Fix the failing tests",
    "provider": "claude",
    "github_secret_id": 2,
    "claude_secret_id": 1
  }'

# → SpawnAgentJob enqueued. clones repo,
#   auths gh + claude, runs `autodev start .`
Providers

Runs the agent CLI you choose.

An optional provider selects which CLI the loop runs on — autodev start -p <cli>.

claude · claude-tui (default) grok · grok-cli opencode · opencode-cli copilot · copilot-cli openrouter · via opencode
The AutoDev suite

Agents you spawn appear in the Pixel Office.

Bind a deployed agent back to a pixel-office character and watch it work as a live presence — chat, steer mid-run, and coordinate a whole team. The deployer puts the loop on a machine; Pixel Office is where it comes to life.