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.
1. Enter the development environment
Section titled “1. Enter the development environment”DevCell pins its toolchain with Nix:
nix developnix run .#checkYou also need Docker running locally.
2. Build the three demo binaries
Section titled “2. Build the three demo binaries”go build -o /tmp/cell-agent ./cmd/cell-agentgo build -o /tmp/celld ./cmd/celldgo build -o /tmp/devcell ./cmd/devcell3. Start the control plane
Section titled “3. Start the control plane”/tmp/celld \ --http-dev \ --listen 127.0.0.1:8080 \ --backend container \ --agent-bin /tmp/cell-agent \ --data-dir /tmp/devcell-democelld listens on local HTTP for this walkthrough and stores durable state in SQLite. Remove --http-dev to use the default HTTPS mode.
4. Create and start the golden cell
Section titled “4. Create and start the golden cell”In another shell:
/tmp/devcell cell create \ --endpoint http://127.0.0.1:8080 \ --name golden-path \ --path examples/workspaces/devcontainer-basicThe response contains a cell ID and operation ID. Use them to inspect both sides of the lifecycle:
/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:8080The start operation materializes the fixture, starts cell-agent, and launches the resolved workspace runtime.
5. Work inside the cell
Section titled “5. Work inside the cell”/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:8080On the appliance, the same running cell can be opened with Cursor or VS Code:
devcell cell open cell_... --ide cursor --open6. Checkpoint, fork, and clean up
Section titled “6. Checkpoint, fork, and clean up”/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 --yesOn this backend, sleep means workspace checkpoint plus stop. Resume is a cold cell start, not a RAM restore.
Inspect the plan without starting a cell
Section titled “Inspect the plan without starting a cell”Workspace planning turns a project’s devcontainer inputs into the deterministic contract consumed by CellOS:
/tmp/devcell workspace plan \ examples/workspaces/devcontainer-execution \ --execution --jsonFor 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.