Product Update

Cold-start cut from 141s to 66s on Starter

azmat2 min read

When a new Seaboss tenant signed up, the wait from "click checkout" to "agent answering Telegram" used to be 141 seconds on our Starter tier. As of RASF-276 Phase 3, that's 66 seconds. Pro tier dropped from 141s to 88s.

Where the time was going

Most of those 141 seconds were not the Hetzner VPS booting — that's the ~40-50s floor we can't move from the API side. The rest was Seaboss's own provisioner doing work that, on reflection, was happening at the wrong time:

  • Pulling the OpenClaw agent container.
  • Pulling the llm-proxy sidecar.
  • Pulling the n8n workflow engine.
  • Starting them, waiting for n8n's owner-setup, waiting for health probes.

Every tenant got the same containers. Every tenant waited for the same pulls. That's a textbook case for moving work into the snapshot.

Phase 3 baking

The fix is structural: when we cut a new Gold release, we provision a one-off VPS, install the containers, perform any expected first-boot configuration (n8n owner setup, llm-proxy env injection), then take a Hetzner snapshot of the running disk. Future tenants spawn from that snapshot, not from a clean Ubuntu image.

Per-tenant boot becomes: rsync the tenant's specific environment file into /opt/seaboss/.env, then docker start llm-proxy. The containers are already there. n8n is already initialized.

What it looks like now

TierHetzner spawnPhase 3 internalTotal wall-clockImprovement
Starter (cpx21)50s16s66s53% faster
Pro (cpx31)40s48s88s38% faster

Pro is slower than Starter on the internal-work side because the n8n owner setup and the optional browser-use-local install both run there but skip on Starter.

What it cost

Phase 3 baking added a one-time ~5 minutes of build time when we cut a new Gold release, plus snapshot storage on Hetzner (~15GB per tier × 3 tiers). At beta scale that's a rounding error against the wall-clock minutes we're saving per tenant.

What's next

The next big cut would be pre-acquiring a VPS during the customer's onboarding interview, so the ~40-50s Hetzner boot overlaps with conversation time rather than blocking it. Filed as RASF-749 and sitting in the backlog.