How it works

One command in.
Zero-downtime out.

Enroll a server with a single line. From then on every deploy is built off-box, swapped blue-green, health-gated and switched atomically — while the agent dials home outbound-only and your data never leaves the box.

sproobo · enrolllive
curl -fsSL https://get.sproobo.com/agent | sh -s -- \ --token spb_1x8f••one-time•• --region fra
00:00agent connected · outbound WSS/443 · no inbound ports
00:02host facts observed · Ubuntu 24.04 · Docker 27.1
00:05Caddy installed · ACME on autopilot
00:06server ready · bring your first app
The deploy, step by step

Four moves. Nothing native to break.

Apps and backing services alike run as pinned containers. Here is exactly what happens between git push and live traffic.

01

Build off-box

Dockerfile-first, or auto-detected if you don't have one. The image is built on Sproobo's builders — your production server never thrashes compiling, and never runs a half-built state.

02

Blue-green swap

The new container starts alongside the running one. Both are healthy before anything shifts, so there is no window where the app is down by construction.

03

Health gate

The release only proceeds if it passes your health checks. Fail the gate and nothing ships — you're left on the last-known-good container, automatically, untouched.

04

Atomic proxy switch

Caddy flips traffic to the new container in a single move, with HTTPS and certificate renewal on ACME autopilot. Rollback stays armed if you need to reverse.

The mechanism

Reliability you can name.

Not adjectives — a pipeline. Every stage is observable and every stage can safely abort.

deploy #214 · sproobo-api
01 · build
Off-box build
Dockerfile-first, else auto-detect.
02 · swap
Blue-green
New starts beside old.
03 · gate
Health gate
Fails? Nothing ships.
04 · serve
Atomic switch
Proxy flips in one move.
The agent

A single static binary that only ever dials out.

The Sproobo agent is one Go binary with no runtime dependencies. It opens a persistent outbound WSS/443 connection to the control plane — so there is nothing to expose, no inbound firewall hole, and no SSH port for the platform to sit on.

  • outboundWSS/443 only — behaves like any HTTPS client.
  • staticNo interpreter, no package tree, no drift.
  • break-glassYour own SSH is never severed. Lock-out is impossible.
Read the security model
firewall · observed vs declared
:443 outbound · observed:22 inbound · you own
agentconnect wss://ctl.sproobo.com · 443
stateestablished · heartbeat 15s
portsinbound opened by agent: 0
scopereads live · stores nothing
What you get

Control without the caretaking.

Docker everything

Apps and services run as pinned, choosable containers. Nothing is coupled to the host OS, so nothing native can break underneath you.

Data on your box

App data lives on bind-mounted host paths you can open, back up and reason about. Survives volume prune.

Zero-downtime deploys

Blue-green swap, health gate, atomic switch and armed rollback on every release. No maintenance windows.

Outbound-only agent

One static Go binary over WSS/443. No inbound ports, nothing to expose to the internet.

AI-native, safely

Drive infra via AI/MCP through the same audited API a human uses. Destructive ops are plan-first and approval-gated.

Migrate incrementally

Bring servers one at a time from Forge, Ploi or a hand-rolled VPS. No big-bang cutover, no all-or-nothing bet.

Domains & TLS on autopilot

Apex + www on every cert, automatic HTTP→HTTPS, shared wildcard certs for subdomain apps — and DNS-01 issuance for servers that aren’t reachable from the internet at all.

*.yourdomain · one cert

When a deploy fails, you see why

The failing container’s log tail is captured and pinned to the deployment itself. No SSH archaeology at 2am — the reason is right there next to the red X.

diagnostics · on the deploy

Static sites too

Point Sproobo at a plain HTML repo and it’s served as-is — no Dockerfile, no build step, dotfiles hidden by default. The same certs, domains and deploys as any app.

Get started

Enroll a server and watch it bootstrap live.