Not a dotfiles script. 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 — and turns it back into nothing when you’re done.
- editor
- code-server inside every workspace, on its own subdomain — a full VS Code in a browser tab
- terminal
- persistent: it survives a page reload, and it's the same shell an agent would be given
- projects
- devcontainer-style specs: base image, features, extensions, ports, postCreate/postStart
- versions
- editing a project bumps its version and pre-builds the image, so the next launch is warm
- your keys
- ~/.ssh mounted read-only and injected, so git push keeps your identity
- secrets
- per project and per user, stored encrypted, landing in the environment at boot
- storage
- SQLite in one volume — no database service to run alongside it
- routing
- the same process reverse-proxies worker-<id>.localhost and hosts the terminal socket
step 1
Run the container
One docker run with the Docker socket mounted — or the compose file above. Then open http://localhost. There is no account step, because there are no accounts.
step 2
Describe a project
Start from a template (Next.js, Vite, Astro, FastAPI, Express, docker-compose) or point it at your own repo and base image. Features, ports, hooks and secrets all live in the spec.
step 3
Launch a workspace
A sibling container boots from that spec, clones your repos, runs your hooks, and hands you an editor and a terminal on their own subdomain.
if you prefer a file
Or the compose version.
Same thing, easier to keep next to whatever else you already run. The data volume holds the SQLite file — back that up and you’ve backed up the whole installation.
services:
spunto-lite:
image: ghcr.io/spuntodotnet/spunto-lite:latest
ports: ["80:80"]
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $HOME/.ssh:/host-ssh:ro
- spunto-lite-data:/app/data
volumes:
spunto-lite-data:Three things it won’t do.
None of these are on a roadmap. They’re the line between a tool you run on your laptop and a platform a team depends on, and drawing it clearly is the only way Lite gets to stay this small.
- !No login screen. It holds your Docker socket, so keep it on localhost or a network you trust — never on the open internet.
- !One machine, one person. No organisations, no roles, no sharing a workspace with a teammate.
- !Dev environments only. No deploying to production, no fleet-wide logs — that’s Spunto Cloud.
lite or cloud — the whole difference
The spec you write in Lite — image, features, hooks, ports — is the same shape Cloud uses, so moving up is re-creating a project, not a migration.
Somewhere safe to let an agent run.
A coding agent needs a shell that can install things, a server it can start and a repo it can break. Giving it that on your laptop is how you end up with a mystery daemon and a corrupted database. Giving it a Lite workspace is just a container — its own network, its own ports, its own clone — that you delete when it’s done.
And because the whole thing is one container on your own machine, letting an agent try something costs nothing and reveals nothing.