DevDev is two things at once, and we intend to ship them on different schedules:
devdev-workspace— a virtual workspace for agents, as a library. Reasonably usable on Linux and Windows today.devdev— the full agent-hosting product. Proof-of-concept on the critical path; several large pieces are still behind placeholders.
This document is an honest account of where each one stands.
Works end-to-end and is exercised by tests on every push.
Workspace layer (crates/devdev-workspace)
- In-memory POSIX-ish
Fswith rename, hardlink, symlink, seek, truncate,O_APPEND, mode bits, timestamps. - FUSE driver on Linux; WinFSP driver on Windows (requires WinFSP runtime installed).
Workspace::exec— run a real host binary inside the mount under a PTY, curated env.- Serializable snapshots (
bincode-stable).
Agent glue
- ACP backend: spawn Copilot CLI as
copilot --acp --allow-all-tools, observe viasession/update. - MCP tool injection: DevDev-specific tools (task queries, preferences) surface inside the ACP session. Proven end-to-end with a logged-in Copilot CLI.
- Daemon lifecycle:
devdev up/devdev down, TCP NDJSON IPC on127.0.0.1, checkpoint files in--data-dir. - Scenario harness: user-surface scenarios drive only the
devdevbinary + IPC + checkpoints + documented env vars.
Repo watch → event pipeline (cap 26 / cap 27)
devdev repo watch <owner>/<repo>polls GitHub, hashes PR state, consults an append-only NDJSON idempotency ledger, and emitsPrOpened/PrUpdated/PrClosedevents on an internalEventBus. Per-PRMonitorPrTasks subscribe and re-prompt the agent on update.devdev_askMCP tool: the universal approval seam. Agent calls it withkind={post_review,post_comment,request_token,question}; daemon routes throughApprovalGateand — on approval, for the external-action kinds — surfaces a host-derived short-livedGH_TOKENso the agent can runghitself. No typed adapter path.
Vibe Check (cap 25)
devdev initruns a scribe session that writes.devdev/*.mdpreference files in the user's voice (one topic per file, append## Revision <date>on revisits).devdev preferences listdiscovers preferences across repo / parents /~/.devdev/with repo-wins precedence;devdev preferences editopens$EDITOR.
Scenario catalog status
| ID | Status |
|---|---|
| S01 empty workspace up/down | ready |
| S05 teardown leaves nothing | ready |
| S06 checkpoint round-trip | ready |
| S03 agent uses the toolbelt | blocked (session backend) |
| S04 event arrives mid-session | blocked (session backend) |
What we're actively working on to close the DevDev-hosting loop.
- Scout routing. Pick the right model/agent per task class instead of one-size-fits-all.
- Full ACP session backend (S03/S04). Enough plumbing that the agent's tool calls and mid-session events are observable from the scenario surface.
- End-to-end PR shepherding scenario (S07). Drives
devdev init→devdev repo watch→ mock GH adapter → asserts the agent gets re-prompted with preference context on each PR update.
- A
devdev repocommand or--repoflag. The workspace is repo-unaware by design and stays that way. When a task needs a repo inside a workspace, the agent materialises it by runninggit clonethrough the workspace's process launcher — the same surface a human would use. Seespirit/02-workspace-contract.mdon what the workspace is unaware of, andspirit/04-tasks.mdfor how task-layer context (repo refs, PR numbers) reaches the agent.
Direction of travel. Not started, not scheduled, but on the record so nobody is surprised.
- Real containment. This is the single biggest gap. Today DevDev runs agent-driven processes as your user, with your network, against your filesystem — the virtual workspace is a friendly path, not a jail. Target: Linux namespaces + seccomp-bpf, Windows job objects / AppContainer, opt-in network policy.
- macOS support. Needs a third FS driver (macFUSE or a native FSKit implementation) plus a containment story.
- Published crates.
devdev-workspaceto crates.io once the API has stabilized and the containment story is honest enough that the description doesn't need a disclaimer. - Coverage gate. Coverage is measured non-gating today; once the DevDev-hosting loop closes, raise it to a threshold.
- Reusable checkpointing across machines. Snapshots are deterministic, but the DevDev checkpoint format is not yet a portable wire format.
- Not dated. We will not commit to calendar timelines at this stage.
- Not exhaustive for every bug or polish item — see issues for those.
- Not a promise. Priorities shift as we learn.