About this project

Plumb is an MCP server, shipped as a single Go binary under the MIT licence, that gives coding agents an IDE-style intelligence layer inside guardrails. Its README states four pillars in priority order: write reliability, multi-agent coordination, semantic intelligence, and context efficiency. Write safety. Every write is staged in a temporary file and renamed into place, described as symlink-aware and CRLF-tolerant. A per-path lock in the daemon serialises concurrent writes to the same file across sessions and chat windows. Multi-file transactions apply edits across many files with atomic rollback if a step fails, and mtime/sha guards reject stale edits before they overwrite newer changes. The serve command is a reconnecting stdio proxy: if the daemon crashes or hangs it is respawned and the handshake replayed, and the README says in-flight writes are never silently re-run. Coordination. Because one daemon serves all agents, sessions can see and message each other. Peer awareness is on by default: workspace_sessions names active sessions and the writes the daemon recorded for them, distinguishing failed or refused writes. An agent-to-agent mailbox (leave_note, check_messages) is on by default within the same workspace, with messages delivered on ordinary tool results rather than by polling. Advisory intents (share_intent, opt-in under [collab] intents) flag when a peer's write touches a claimed path, and are explicitly labelled unverified claims that never block anything. Durable findings (share_findings, opt-in) turn session learnings into searchable, secret-scrubbed project memory. The README stresses that write safety does not depend on agents cooperating. Semantic intelligence. LSP-backed refactoring tools include rename_symbol, replace_symbol_body and safe_delete_symbol. Diagnostics from real language servers such as gopls and pyright are appended to every write. Symbol search is scoped to the project, excluding stdlib and dependency noise. Context controls let an agent read symbols or line ranges rather than whole files, and session_start bootstraps workspace, branch, recent commits, diagnostics and project memory in one round trip. Access is governed by a per-connection path allowlist with read-only and read-write roots plus tiered git gating; destructive and network git operations are off by default. The README publishes measured figures in docs/use-cases.md, regenerated by a script, and also documents a loss: read_multiple_files costs about 1.31x more payload than reading files natively. Language support is described in tiers rather than one number. Go (gopls) and Python (pyright) are first-class, CI-tested against real binaries with full LSP and write tools. Java, Rust, Swift, TypeScript/JavaScript, Zig, Kotlin and HTML are listed as validated provided their servers are on PATH; HTML is noted as having no filesystem access. A built-in tree-sitter index covers 31 or more languages for ranked search, outlines and topology graph exploration without a language server. Real-binary validation is stated for macOS and Linux; Windows is tracked but not yet supported because the daemon uses Unix sockets. Architecture. plumb serve proxies over plumb.sock to one shared background daemon that keeps language servers warm across chats. SQLite stores a global stats.db for tool stats and episodic summaries, plus per-project topology.db and memory.db under each workspace's .plumb/ directory. The README says 58 tools are exposed; the frequently used ones include session_start, workspace_symbols, get_definition, find_references, rename_symbol, edit_file, transaction_apply and diagnostics, with the rest covering filesystem access, LSP hierarchies, tiered git, an optional local Topology index and memory. Running plumb with no arguments opens a TUI dashboard showing tool calls, daemon health, per-tool stats and streamable logs. Installation and configuration. Install via Homebrew, go install, or prebuilt release binaries; prebuilt macOS binaries are noted as not yet notarised. plumb setup writes MCP configuration for clients such as claude-code, claude-desktop, codex, gemini and cursor. Configuration uses a global or per-project config.toml or environment variables, with plumb config show reporting resolved values and provenance; sample options include strict edits requiring a prior read and a per-minute rate limit for runaway loops. Status. Plumb is pre-1.0, with write safety, the resilient daemon, the topology index and project memory described as in daily use. The roadmap lists themed releases 0.10 through 0.19, with 0.19.x as the last 0.x before 1.0, and native Windows support deferred to 1.1. Contributing guidance, an AGENTS.md, a code of conduct and MIT licensing are referenced, and prose follows Australian English.