// Spunto Lite · open source · one container

Dev environments,
on your own machine.

Spunto Lite is the Build pillar of Spunto in a single self-hostable container: create devcontainer-style projects, launch disposable Docker workers with VS Code in the browser, a persistent terminal, lifecycle hooks, secrets and your own SSH key. No cloud, no accounts — just your Docker socket.

MIT licensedOne containerRuns on your laptop
your machine
docker run -d --name spunto-lite -p 80:80 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME/.ssh:/host-ssh:ro" \
  -v spunto-lite-data:/app/data \
  ghcr.io/spuntodotnet/spunto-lite:latest

Then open http://localhost — workers appear at worker-<id>.localhost.

What you get

A control plane for throwaway environments.

Not another dotfiles script and not a hosted IDE. A small app that turns "spin me up a clean environment for this" into a button — on hardware you already pay for.

VS Code in the browser

Every worker boots with code-server inside it, on its own subdomain. Open a tab and you're in a full editor — plus a persistent terminal that survives a page reload.

Devcontainer-style projects

Declare a base image, devcontainer features, VS Code extensions, forwarded ports and postCreate / postStart hooks once. Every worker you launch from that project is identical.

Your SSH key, your secrets

Your ~/.ssh is mounted read-only and injected into each worker, so git push just works. Project and user secrets are stored encrypted and land in the environment.

No cloud in the loop

One Next.js process talking straight to your local Docker socket. No accounts, no tenants, no remote agents, no telemetry leaving the box.

Three minutes, start to editor

Run it, describe it, launch it.

01

Run the container

One docker run with the Docker socket mounted — or the docker-compose.yml from the repo. Then open http://localhost.

$ docker run … ghcr.io/spuntodotnet/spunto-lite
02

Describe a project

Pick a starter template (Next.js, Vite, Astro, FastAPI, Express, docker-compose) or point it at your own repo and base image.

→ project spec saved · version 1
03

Launch a worker

A sibling container boots from that spec, clones your repos, runs your hooks, and hands you an editor and a terminal.

→ worker-a1b2c3.localhost · ready

Deliberately boring inside

One process. Your daemon. That's it.

Every moving part you don't need is a part that can break at 2am. Lite drops all of them and keeps the two that matter: a web app, and Docker.

Sibling containers

dockerode straight to /var/run/docker.sock — workers are plain containers on your own daemon.

SQLite, in a volume

Projects, workers and secrets live in one file. No database service to run alongside it.

Versioned project specs

Editing a project bumps a version and pre-builds its image, so the next worker starts warm.

Subdomain routing built in

The same process reverse-proxies worker-<id>.localhost and hosts the terminal WebSocket.

Lite or hosted

Same idea, different blast radius.

Lite is one machine and one pillar. The platform is a fleet of machines you own, plus shipping to production and watching it run.

Spunto LiteSpunto platform
Where it runsOne machine you ownA fleet of nodes (BYOC)
Dev environments (Build)
InstallOne containerNothing to install
CostFree — MIT licensedFree during beta
Accounts & teamsOrgs, members, roles
Ship to productionDocker services, domains, TLS
Observability (Run)Logs, stats, job history
Auth in front of itGoogle OAuth, per-worker access

Start with Lite on your laptop. The project spec you write there — image, features, hooks, ports — is the same shape the hosted platform uses, so moving up is re-creating a project, not a migration.

Questions

Spunto Lite, answered.

Q.What exactly is Spunto Lite?

The Build pillar of Spunto — dev environments — collapsed into a single container you run on your own machine. Same idea as the hosted platform: projects describe an environment, workers are disposable containers built from that description. No cloud, no multi-tenancy, no remote agents.

Q.What's the license?

MIT. Fork it, run it at work, vendor a piece of it into something else — the only ask is that the copyright notice travels with it. The container image is public on GHCR too, so you don't have to build it yourself.

Q.How is it different from the hosted Spunto?

Lite is one machine and one pillar. The hosted platform orchestrates a fleet of nodes you own (BYOC), adds organizations and roles, and covers Ship (deploy Docker services with custom domains and TLS) and Run (logs, stats, job history) on top of Build.

Q.Is it safe to expose?

No — and it isn't meant to be. There's no authentication in front of the control plane, and it holds your Docker socket. Keep it on localhost or a network you trust. Anything internet-facing is what the hosted platform is for.

Q.Does it need my code to be on GitHub?

No. It clones from GitHub, GitLab, Bitbucket or any git remote, and can generate a per-project deploy key for you. Your own ~/.ssh is mounted read-only so pushes keep your identity.

Q.Can AI agents use it?

That's a large part of why it exists. Each worker is an isolated, disposable container with a real shell, a real editor and its own forwarded ports — a safe place to let a coding agent run, and cheap to throw away when it goes sideways.

Clone it. Break it. Keep it.

Spunto Lite is MIT-licensed on GitHub and the image is on GHCR — one command and it's running on your machine. When one machine stops being enough, the hosted platform picks up where it leaves off.

Read the build write-up · no credit card either way