A desktop cockpit for Claude Code. Phased sessions, tests that really run, an independent review.
MIT
Pragma Symphony is open source. There are no prebuilt binaries: you build it from the repository, which
takes a few minutes and needs Rust, Node.js and Claude Code. The README lists the prerequisites for
Windows and Linux. Current version: v2.0.0.
Source, build instructions and screenshots — free to use, forever.
View on GitHub →
The license screen now has a "Buy a license" link that opens the pricing page, so a new user without a key has a clear way forward from the activation dialog
Changed
Minor network-policy hardening — dropped an unused local endpoint from the app's content-security policy
Pressing F1 to close the Help panel could immediately reopen it, due to a keyboard-listener conflict between the panel and the main window — it now closes reliably
Editing an atom, or creating a new blank atom, no longer crashes the canvas if the local database write fails — the error is now logged instead of interrupting the session
Changed
Various other under-the-hood reliability improvements
Browser extension pairing hardened for GDPR compliance — the hardcoded shared secret used by the extension to talk to the desktop app (readable inside the published extension code) is replaced with a per-install token generated on first launch and stored in the OS keychain; the local endpoint's CORS policy is also restricted to browser-extension origins only, so no arbitrary web page can read the token or reach the endpoint
License activation no longer fails with a "server unreachable" error in the installed app — license API calls now go through the native HTTP layer instead of the in-app webview, so they are not blocked by cross-origin (CORS) restrictions
Clock-rollback protection — a signed high-water timestamp in the OS keychain detects when the system clock is set backwards to extend a trial or grace period offline
Token budget warning banner — shown when the input bar is hidden (e.g. extension sessions) so the 80%+ budget alert is always visible
Fixed
Session import now validates the file shape (JSON, session, atoms, links) before writing to the database — malformed or untrusted .noema.json files are rejected instead of imported
AI requests now have a 120s timeout so a stalled connection no longer hangs the parse indefinitely
Changed
Faster session saves — atoms are persisted in chunked multi-row inserts and bulk deletes, instead of one query per atom
Open source under the MIT licence, built from source (github.com/lightwebit/pragma-symphony): there are no prebuilt binaries
Pragma on the web — follow the Pragma running on your PC from a browser or a phone. Off by default; it needs a personal access key, available on request
Commands from the web, separately switched on and protected by a PIN: start or resume a session, approve, answer, stop, Fix / Accept a review, edit to-dos and scheduled sessions
REVIEW now runs without a session branch: it reviews exactly what the session changed, from the commit the session started on. A Git and review setting switches it off
Fixed
Auto-approve could race a fresh turn against the tail of the one before it; it now waits for the turn to finish
Changed
MIT licence, replacing the proprietary licence of the 1.x line; the privacy policy now describes web sharing
Session branches are off by default
Removed
The install confirmation ping: Pragma no longer sends anything to noema.tools on first launch
The per-project briefing (Lexis v2), the Morphē handoff and the Save button
Parallel sessions — several sessions can run at the same time, each with its own state, on different projects. A working directory accepts one active session at a time
Session branches — in a git working directory each new session starts on its own pragma/<id> branch, so its changes never mix with yours. Can be turned off in Settings
Test and review after a session — when the project has a test command, Pragma runs it after the report and compares the result with the state before the session. If nothing regressed, a separate model reviews the diff and you choose to accept it or send it back for a fix. Large diffs and changes to sensitive paths are flagged
End-to-end button — run the project's end-to-end tests from a popup, with a catalogue of runners, a timeout, and a way to stop a run
Live and Pipeline — every project has a category and a stack. The Live button starts the project's own command on demand; the Pipeline popup runs a local, step-by-step pipeline that includes the test step
Scheduled sessions — write a prompt, pick a date and time, and the session starts by itself
Project checklist — a TODO list per project, from a button in the header
A sound at the end of a session (Settings) and the model used, shown for every session in the list
Per-project briefing, experimental and off by default — a short compiled summary of the project injected at the start of a session. It is switched on with briefingEnabled in ~/.pragma/settings.json
Fixed
Token counts and cost of a session that was resumed or continued now add up across all its turns, instead of showing only the last one
A finished session no longer blocks the next one in the same working directory
Auto-approve no longer switches itself off after the first session of a run, which left the following sessions waiting for a click
Changed
The command-line tool prints its help and messages in English, like the rest of the interface
Removed
The Lexis integration — the header button, its Settings section, and the retry queue. It was optional and off by default. With it gone, no session content is sent to any server: everything stays in the local database
The legal links in the application footer now point to the Pragma Symphony terms and privacy pages, instead of the pages of the earlier MIT-licensed Pragma
Projects — every session now belongs to a project (title, working directory, colour, optional Morphē reference). The session list, the full-text search, and export are scoped to the project you are in
Lexis integration, optional and off by default — when you enable it in Settings, Pragma asks a Lexis server for the context of earlier work before a run and sends the finished session back to it. Failed deliveries are retried from a queue. The server URL, the timeout, and a health check live in the Settings panel
Morphē handoff detection — a handoff file found in the working directory is offered as a ready-made prompt
Fable model — a third choice next to Sonnet and Opus in the composer's Advanced form. When a plan runs longer than five steps, the plan card proposes both Opus and Fable
Configurable model ids — the models key in ~/.pragma/settings.json maps each name in the interface to the id passed to Claude Code, so a new model can be adopted without waiting for a new build
Fixed
pragma run (the command-line entry point) no longer fails after the database migration: sessions started from the command line are recorded under a dedicated CLI project, created the first time it is needed
Changed
Opus now resolves to Claude Opus 4.8 (previously Opus 4.7)
The application is renamed from Pragma to Pragma Symphony, and is proprietary from this version on. The bundle identifier, the crate names, and the ~/.pragma data directory are unchanged, so an existing installation upgrades in place and keeps its sessions. The earlier open-source line stays available under the MIT licence on GitHub
This site uses essential cookies to function.
By continuing to browse, you agree to their use.
Privacy Policy