froglet.
CLI

Templates

The templates and builds command groups — the catalog plus the Docker → template pipeline.

templates

froglet templates ls
froglet templates publish <slug>      # make your template public to all workspaces
froglet templates unpublish <slug>    # back to workspace-private
froglet templates rm <slug>           # deletes DB row + R2 blob

Every workspace gets the stock public ubuntu-24.04 template for free. Custom templates come from builds new (below).

builds

Build a template from any Docker image. The build runs on the workspace's dedicated builder host.

froglet builds ls
froglet builds new <image> --name <n> [--slug <s>] [--user u --pass p]
froglet builds log-url <id>

Private registries: pass --user and --pass to builds new.

$ froglet builds new ghcr.io/acme/app:1.2 --name acme-app --slug acme-app
queued build acme-app (4f1708a9-…)
  state pending
  logs  froglet builds log-url 4f1708a9-…

The CLI doesn't stream logs itself — log-url returns the SSE URL you can hit with curl -N:

$ froglet builds log-url 4f1708a9-… | xargs curl -N -H "Authorization: Bearer $FROGLET_API_KEY"
# (SSE stream of build logs)

When the build finishes:

$ froglet builds ls
ID         NAME       STATE   SOURCE                      CREATED
4f1708a9   acme-app   ready   image:ghcr.io/acme/app:1.2  2026-05-17T13:38:04Z

$ froglet sb new --template acme-app --size s --name demo
✓ created demo · id …

Build states

StateMeaning
pendingQueued, waiting for the builder host.
buildingRunning inside the builder.
doneBuild finished, template row creation in progress. Usually transient.
readyTemplate is usable in sb new --template ….
errorBuild failed. Check log-url for the SSE history.

Gotchas

  • templates rm <slug> deletes the DB row and the R2 blob. There's no undo.
  • templates publish makes the template visible to every workspace on the platform. unpublish flips it back to workspace-private; existing sandboxes are unaffected either way.
  • builds new accepts public images (Docker Hub, GHCR, ECR public) without auth; for private registries, --user/--pass are required.