← / WorkDeveloper · Platform· 2026, R&D

Semantic VCS.

A version-control platform built around semantic merge and an embedded agent runtime.

Three Rust services. R&D.
Services
api · collab · exec (all Rust)
Frontend
React · xterm.js · Catppuccin
Stack
Rust · WebSocket · TypeScript · Vite
/ Intro

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.

/ What this fixes

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.

/ How it is built

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.

01Web
React · Vite · xterm.js · Catppuccin
02API service
Rust · file ops · project state
03Collab service
Rust · realtime cursors · doc sync
04Exec service
Rust · WebSocket · streaming child process
/ Key decisions

The trade-offs worth defending.

/ 01

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.

/ 02

Exec service starts as sh -c, hardens later

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.

/ Stack
RustWebSocketTypeScriptReactVitexterm.js