Rust for the services, not Node
Long-running streaming connections, child process control, and WebSocket fan-out are exactly where Rust pays for itself. Node would have worked. It would also have cost more in steady-state CPU.
A version-control platform built around semantic merge and an embedded agent runtime.
Git merges text. That was the right call in 2005 and the wrong call in 2026. Agents write code now. They write a lot of it. They write it in parallel. They write it on top of each other. Text merge is the wrong primitive.
Semantic VCS is the experimental answer. A monorepo of three Rust services and a React frontend, built around a semantic merge engine and a streaming execution runtime that agents and humans share.
When two agents touch the same function in parallel, text merge cannot tell which intent should win. A semantic engine can. When an agent runs the result, the human needs to see the output stream as it happens. Existing Git platforms do not have that runtime.
Semantic VCS is the substrate for the next generation of agent-friendly developer tools, not a replacement for GitHub.
Three services. The API service handles project state and file operations. The collab service handles realtime cursors and document sync. The exec service is the most novel piece. POST a run spec, get back a run ID. GET the run ID over WebSocket, the service spawns the child process via sh -c and streams stdout, stderr, and exit as JSON frames. Disconnect kills the child.
The frontend is a Vite-built React app with xterm.js for terminals and a file-tree IDE. Catppuccin colour theme. The Run button on any project pops a RunDialog that auto-suggests commands from the project’s package.json, Cargo.toml, or go.mod.
Long-running streaming connections, child process control, and WebSocket fan-out are exactly where Rust pays for itself. Node would have worked. It would also have cost more in steady-state CPU.
v0 of any execution surface is the part teams want to see working first. Drop into sh -c, prove the WebSocket frame schema and the cleanup semantics, then bring Docker or Firecracker in when there is a real second user.