Spunto Liteone container, your machine

Dev environments,
on your own machine.

One container talking straight to your Docker socket. Describe a project once — base image, devcontainer features, repos, ports, hooks, secrets — then launch disposable workspaces from it, each with VS Code in the browser and a terminal that survives a page reload. No cloud in the loop, no account, nothing phoning home.

one containerboots in secondsno accountyour Docker socket
one command · 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 — no signup, no login screen

01What you get

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
02Three minutes, start to editor

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.

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

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.

→ project spec saved · version 1

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.

→ worker-a1b2c3.localhost · ready

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.

docker-compose.yml
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:
03What Lite deliberately isn't

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

LiteCloud
Where it runsone machine you owna fleet of machines you own
Dev environments
Installone containernothing to install
Costfree — MITfree during beta
Accounts and teamsorgs, members, roles
Ship to productionDocker services, domains, TLS
Logs and statslive, across every machine
Auth in front of itGoogle OAuth, per-workspace access

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.

04Why it exists

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.

also from Spunto