Repository navigation
Open
Description
Follow-up to #13, #40 and #41. Agents can now edit .bup files with the benchup CLI. The next step is letting them edit the project open in the app, on both web and desktop, without a central server.
Approach
agent ──CLI / MCP──▶ benchup bridge (127.0.0.1) ◀──WebSocket── BenchUp (web or desktop)
A browser tab cannot listen on a port, so the app connects out to a local bridge. This reuses the bridge code from #3 (live.rs, protocol.rs, pairing.rs) on top of what is now on main.
Plan
- 1.
benchup bridge: a subcommand of the existing CLI, not a separatebenchup-mcpbinary.- It listens on 127.0.0.1 only, uses challenge-response pairing, has an Origin allowlist, and gives calls deadlines.
- It serves MCP, and also lets the existing commands target the open app, e.g.
benchup call --live create_board '{...}'andbenchup scene --live. CLI-first agents then work the same way, anddocs/agent-guide.mdcovers both modes.
- 2. Agent connection in the app, in its own PR.
- It is off by default, its setting persists, and pairing uses a one-time token shown in the app.
- Each call is one undo step (
Agent: …), and a--batchcounts as one step. - It respects the read-only state of shared projects and their leases.
- All text is translated and the dialogs use the shared modal.
- The generic add-on system from Add an MCP server and optional agent add-ons (Agent connection, Build with MIRA) #3 stays out unless we decide we want it.
- 3. Validation: rerun the 12 agent scenarios from Add benchup, a CLI and MCP server for editing .bup projects #41 against the live app, on desktop and on the web build in Chrome and Safari (local network access prompt).
- 4. Later, separate: MIRA and other in-app chat ideas, built on the same tool layer.
Open questions
- What should happen when an agent operation arrives while the user is in the middle of a tool: queue it, reject it, or apply it?
- How should agent edits interact with real-time collaboration on shared projects?
- Who takes what? @aarvee11 wrote the bridge. Would you like to port 1 and 2, or split them?
Meanwhile, #46 (reload on external change) gives desktop users a near-live loop with the CLI.
Metadata
Metadata
Assignees
Labels
No labels
Activity