You ship a Dockerfile. We run the fleet.
Hand us a Dockerfile and an agent.yaml. Stackbone builds, signs, versions and runs the image. Every install gets its own micro-VM — asleep at zero when idle, awake on demand, more machines when busy. You never manage a server.
- micro-VM per install
- scale to zero
- signed images
- Dockerfilethe image recipe
- agent.yamlthe manifest
stackbone owns everything past this line —
build · sign · version · run · scale
One install, one micro-VM. Idle machines scale to zero; you pay for awake time, not idle servers.
Each cell is one install's own micro-VM. We boot Fly Machines today; in-house Firecracker is being evaluated for later, not live. Scale-to-zero when idle, autoscale when busy, warm pools for popular templates — rag-search is shown as one such warm-pool install, so it stays healthy rather than dropping to zero.
From two files to a signed image every install runs — promote a build the way you promote a deploy.
- pending
CLI uploads a tarball; the API stores the build row pending.
- running
a builder Fly Machine runs buildctl and pushes the image to the internal registry.
- completed
image pushed; the row stores image_digest (sha256:…), size_mb and build_time_ms.
- live
the micro-VM boots and serves /invoke.
failed — the builder reports an error code; the row keeps its history, no image promotes.
size_mb and build_time_ms are recorded per build on completion.
promoteBuild validates the build is completed, then writes currentImageDigest — the image every install now runs.
Signing and versioning happen on the artifact when the image is published. The automatic security scan and grade are pending until Trivy lands post-MVP.
Whatever framework you ship, the image meets three endpoints. That is all the platform asks.
- GET /healthverb by convention
readiness — the platform won't route to it until it answers.
- POST /invoke
one entrypoint; capability actions discriminate on an action field, never new routes.
- GET /schemaverb by convention
the agent's typed input/output shape (chat agents accept { session_id, message }).
Golden path: Hono + Node 24 LTS. Bun is opt-in via runtime.engine: bun. Any framework that meets these three endpoints is valid. The platform spec lists the bare paths only: POST /invoke is confirmed by the embed-chat flow, while GET /health and GET /schema are marked by convention.
The running agent's URL is embedded in an iframe in the dashboard — the member never leaves Stackbone.
Ship the Dockerfile. We run the fleet.