Control Claude Code Without Losing the Thread

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.

See It

Real screenshots, generated from the app with invented data. The repository has the full set, dark and light.

A session with its phases and the review
A session with its phases and the review. The stream on the left, the Pragma panel on the right: analysis, plan, report, tests and the independent review.
Questions before the plan
Questions before the plan. When the task is ambiguous, Claude asks first. You answer in the composer and the session resumes.
The plan waits for you
The plan waits for you. Nothing runs until you approve the plan, or change it.
An independent review
An independent review. A fresh session reads the diff against your project rules. You choose Fix or Accept.
Security pass
Security pass. When the diff touches sensitive paths, the review adds a security hand-off.
The stream, diffs open
The stream, diffs open. Every action is a typed, colour-coded atom you can collapse or search.
The composer
The composer. Prompt, model, auto-approve, and a schedule if you want it later.
Pipeline and Live
Pipeline and Live. Run lint, build and tests before you commit, or watch a dev server, without leaving Pragma.
Share on the web
Share on the web. Follow a session from a browser or a phone while you share; off until you turn it on.

All screenshots on GitHub →

The Problem

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.

How It Works

  1. You write a prompt.

    Pragma injects the Pragma Protocol into Claude Code via --append-system-prompt. The session starts.

  2. Claude works.

    Pragma reads the structured NDJSON stream line by line and atomizes every event: file touches, diffs, tool calls, errors, notes.

  3. You navigate, not scroll.

    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.

Atom Types

Everything Claude does maps to one of these atom types. Each renders differently in the stream.

FILE_TOUCH

File created, modified, or deleted. Color border = file type.

Default: expanded. Never collapsed.

DIFF

Structured patch of the change. Expandable inline.

Default: collapsed.

TOOL_USE

External tool call: Bash, Read, Glob, Grep…

Default: collapsed.

ERROR

Execution error. Never collapsed — always foregrounded.

Sticky until dismissed.

AGENT_NOTE

Free-text output — fallback bucket for untyped content.

Default: collapsed.

USER_REPLY

User prompt or turn separator.

Default: expanded.

File type colors

FILE_TOUCH and DIFF use the file type color, not the atom type color.

Code .ts .rs .py .vue .js .go
Config .json .toml .yaml .env
Markup .html .md .xml
Style .css .scss
Build .lock .sh Dockerfile
Data .sql .csv .sqlite

Session Phases

Pragma doesn’t just stream atoms. It tracks where Claude is in the task and surfaces the right UI for each phase.

  1. Idle Configure prompt, working directory, model, attachments.
  2. Analyzing Claude processes the task. Analysis text builds in real time.
  3. Awaiting Answers optional Claude has blocking questions. You answer or skip.
  4. Awaiting Approval The plan (numbered steps) appears. Approve, modify, or switch to a stronger model — past five steps, Pragma proposes Opus and Fable.
  5. Running Steps execute. Step progress visible. Stop anytime.
  6. Awaiting Confirmation After each step: review, continue, or finalize early.
  7. Complete Report + test checklist + closing. Export as JSON or Markdown.

Tests and Review

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.

What Else

Built On

Rust (Tauri v2) backend · Vue 3 + Pinia frontend · SQLite (WAL + FTS5) · NDJSON parser written in Rust.

Open Source

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 →

Part of noema.tools

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 →

Build Pragma Symphony

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