File created, modified, or deleted. Color border = file type.
Default: expanded. Never collapsed.
Pragma wraps Claude Code and parses its output in real time.
Every action becomes a typed atom — color-coded, collapsible, searchable.
You see what the agent did, not what it said it did.
Pragma Symphony is open source under the MIT licence. You build it from the source: how.
Real screenshots, generated from the app with invented data. The repository has the full set, dark and light.
You run Claude Code. You get 400 lines scrolling at machine speed. 90% is noise. The 10% that matters — a file touched out of scope, a missing translation, an unexpected behavior — disappears in the scroll.
Pragma fixes this.
Pragma injects the Pragma Protocol into Claude Code via --append-system-prompt. The session starts.
Pragma reads the structured NDJSON stream line by line and atomizes every event: file touches, diffs, tool calls, errors, notes.
Atoms appear in a live feed — typed, color-coded, collapsible. The center panel tracks the current phase. You approve, confirm, or stop.
Pragma uses --output-format stream-json --verbose. Nothing is intercepted at the shell level — it’s Rust parsing a structured protocol.
Everything Claude does maps to one of these atom types. Each renders differently in the stream.
File created, modified, or deleted. Color border = file type.
Default: expanded. Never collapsed.
Structured patch of the change. Expandable inline.
Default: collapsed.
External tool call: Bash, Read, Glob, Grep…
Default: collapsed.
Execution error. Never collapsed — always foregrounded.
Sticky until dismissed.
Free-text output — fallback bucket for untyped content.
Default: collapsed.
User prompt or turn separator.
Default: expanded.
FILE_TOUCH and DIFF use the file type color, not the atom type color.
.ts .rs .py .vue .js .go
.json .toml .yaml .env
.html .md .xml
.css .scss
.lock .sh Dockerfile
.sql .csv .sqlite
Pragma doesn’t just stream atoms. It tracks where Claude is in the task and surfaces the right UI for each phase.
A session that says it is done is not done. When the work is finished, Pragma checks it.
Pragma does not save tokens: in a small three-round comparison against Claude Code alone, quality was the same (19/19 hidden tests every time) and cost was within noise. Method and numbers.
models key in
~/.pragma/settings.json maps each name in the interface to the id passed to Claude Code,
so a newly released model can be adopted without waiting for a new build.
pragmadocs/ in the working dir. Claude sees them via --add-dir.
pragma export <session-id>).
~/.pragma/pragma.db. The only thing that ever leaves your machine is what you choose to share on the web, through a relay; the privacy policy says exactly what.
Rust (Tauri v2) backend · Vue 3 + Pinia frontend · SQLite (WAL + FTS5) · NDJSON parser written in Rust.
Pragma Symphony is released under the MIT licence: read it, change it, fork it. It is not affiliated with Anthropic or with any other project called Symphony. It drives the Claude Code you already have installed.
View on GitHub →Everything in noema.tools is an atom — a minimal, typed, addressable unit of meaning. Pragma atomizes the actions an AI agent takes.
And the tools talk to each other: your Claude Code sessions in Pragma become project memory that Morphē reads back as a live map of the real code.
See how the ecosystem fits together →There are no prebuilt binaries: you build it from the source, which takes a few minutes. You need Rust, Node.js 22 and Claude Code installed (and, on Windows, the C++ Build Tools). Works on Windows and Linux. Local-first.
git clone https://github.com/lightwebit/pragma-symphony.git
cd pragma-symphony
npm install
npm run tauri:build
This site uses essential cookies to function. By continuing to browse, you agree to their use. Privacy Policy