Skip to content

Run the Demo

This walkthrough runs the end-to-end DevCell workflow without requiring KVM: a real workspace directory, cell-agent, Docker/devcontainer execution, guest commands, ports, checkpoints, and forks. It uses the container backend, so the workspace shares the host kernel.

DevCell pins its toolchain with Nix:

Terminal window
nix develop
nix run .#check

You also need Docker running locally.

Terminal window
go build -o /tmp/cell-agent ./cmd/cell-agent
go build -o /tmp/celld ./cmd/celld
go build -o /tmp/devcell ./cmd/devcell
Terminal window
/tmp/celld \
--http-dev \
--listen 127.0.0.1:8080 \
--backend container \
--agent-bin /tmp/cell-agent \
--data-dir /tmp/devcell-demo

celld listens on local HTTP for this walkthrough and stores durable state in SQLite. Remove --http-dev to use the default HTTPS mode.

In another shell:

Terminal window
/tmp/devcell cell create \
--endpoint http://127.0.0.1:8080 \
--name golden-path \
--path examples/workspaces/devcontainer-basic

The response contains a cell ID and operation ID. Use them to inspect both sides of the lifecycle:

Terminal window
/tmp/devcell cell list \
--endpoint http://127.0.0.1:8080
/tmp/devcell cell inspect cell_... \
--endpoint http://127.0.0.1:8080
/tmp/devcell operation watch op_... \
--endpoint http://127.0.0.1:8080
/tmp/devcell cell start cell_... \
--endpoint http://127.0.0.1:8080

The start operation materializes the fixture, starts cell-agent, and launches the resolved workspace runtime.

Terminal window
/tmp/devcell cell exec cell_... \
--endpoint http://127.0.0.1:8080 -- pwd
/tmp/devcell cell exec cell_... \
--endpoint http://127.0.0.1:8080 -- sh -lc 'node --version || true'
/tmp/devcell cell list-ports cell_... \
--endpoint http://127.0.0.1:8080

On the appliance, the same running cell can be opened with Cursor or VS Code:

Terminal window
devcell cell open cell_... --ide cursor --open
Terminal window
/tmp/devcell snapshot create cell_... \
--endpoint http://127.0.0.1:8080 --name before-agent
/tmp/devcell cell fork cell_... \
--endpoint http://127.0.0.1:8080 \
--snapshot snap_... --name golden-path-fork
/tmp/devcell cell sleep cell_... \
--endpoint http://127.0.0.1:8080 \
--snapshot-name end-of-session
/tmp/devcell cell destroy cell_... \
--endpoint http://127.0.0.1:8080 --yes

On this backend, sleep means workspace checkpoint plus stop. Resume is a cold cell start, not a RAM restore.

Workspace planning turns a project’s devcontainer inputs into the deterministic contract consumed by CellOS:

Terminal window
/tmp/devcell workspace plan \
examples/workspaces/devcontainer-execution \
--execution --json

For the scripted public-repository path, see scripts/lattice-cell-e2e.sh. Continue with System Architecture for the appliance request path or Connect JSON API to call the control plane directly.