Projects
Projects define the development environment — image, features, extensions, repos, and lifecycle commands.
A project is a template for development environments. It defines everything that should be in a worker: the base Docker image, devcontainer features, VS Code extensions, repositories to clone, and lifecycle commands to run.
Every worker is spawned from a project. Multiple workers can share the same project — each user gets their own isolated container.
| Field | Description |
|---|---|
image | Base Docker image (e.g. mcr.microsoft.com/devcontainers/base:ubuntu-22.04) |
features | devcontainer features to install (Node.js, Docker-in-Docker, Python, etc.) |
vscodeExtensions | VS Code extension IDs to pre-install |
repositories | GitHub repos to clone into /workspace/ at first start |
postCreateCommand | Shell command run once after the container is created |
postStartCommand | Shell command run on every container start |
forwardPorts | Ports to expose (optional — on-demand port tunneling also works) |
Projects are compatible with the devcontainer spec. If your project already has a .devcontainer/devcontainer.json, you can import those settings directly into Spunto's project config.
Features are installed using the official OCI feature install scripts — the same mechanism used by VS Code Dev Containers and GitHub Codespaces.
Every change to a project creates an immutable version snapshot. The current version number is displayed in the sidebar as v{n}.
If a worker was spawned on an older project version, its card shows an amber "Rebuild now" banner. Rebuilding re-spawns the container using the latest project config.
You can view the full version history and restore any previous version from the project page. Restoring creates a new version — nothing is mutated in place.
If you connect a GitHub App, Spunto can:
- Clone private repositories into workers using per-project SSH deploy keys (read-only by default)
- Inject
GITHUB_TOKENand configure~/.git-credentialsfor HTTPS remotes - Write personal git credentials (SSH key registered on your GitHub account) for
git push
