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 an IDE 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

01 — What 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 IDE 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
02 — Three 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:
03 — What 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 fleet-wide logs or stats — 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
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.

04 — Why 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