Pragma vs Emdash
Open-source agentic development environment (YC W26)
Apache-2.0 · Pragma is AGPL-3.0
Download PragmaEmdash is an Electron desktop app for running CLI coding agents — Claude Code, Codex, Cursor, OpenCode, and others — in parallel, each in its own git worktree and branch. It works with local projects and remote machines over SSH/SFTP, and can import tasks from a handful of project-management tools. It's Apache-2.0 licensed and keeps its state in a local SQLite database, with optional telemetry.
Reviewing several agents at once means switching between their separate terminal sessions. Pragma adds a public plugin API, interactive scratchpads, an agent board, and a fan-out compare view on top of the same worktree model.
Pragma is currently ahead on a few fronts: a public plugin API opens up third-party sidebar tabs and web views, agents write to interactive MDX scratchpads instead of just terminal output, a kanban-style board tracks work from prompt to pull request, a fan-out view lets you compare several attempts side by side, built-in AI handles inline edits and PR drafting, and there's a shipped mobile and web client.
Pragma vs Emdash, capability by capability
| Capability | Pragma | Emdash |
|---|---|---|
| Native shellRust host + the OS webview, not a bundled browser | Tauri + Rust | Electron |
| Agents as pluginsEach integration is its own versioned package with official branding | Yes | Partial |
| Public plugin APIThird-party sidebar tabs, cards, web views, and commands in the app itself | Yes | No |
| Programmable automationsYour own TypeScript running on host events, not just a schedule | Yes | Partial |
| Interactive agent scratchpadsAgents write MDX with live React components you can edit and comment on | Yes | No |
| Agent boardPrompt to review to pull request as tracked cards | Yes | No |
| Fan out + comparison viewOne prompt into N attempts, compared as terminals, diffs, and scratchpads | Yes | No |
| Editing suiteCode editor, markdown WYSIWYG, PDF, image, video, and audio viewers | Yes | Partial |
| Built-in AI, your keyInline ⌘K edits, one-click PR drafting, ask-anything from the palette | Yes | No |
| Mobile & web clientPlatforms it ships, and how you reach it off your LAN | iOS, Android, Web — own tunnel | No |
| Persistent host serverSessions, tunnels, and headless launches survive quitting the app | Yes | Partial |
| Remote projectsSSH hosts as first-class remote projects | SSH | SSH |
| User themesEditable colour tokens per project, not a fixed preset list | Yes | Partial |
| LicenseWhat you are allowed to do with the source | AGPL-3.0 | Apache-2.0 |
Checked against the generalaction/emdash, stablyai/orca, superset-sh/superset repositories (README, LICENSE, and linked docs) as of 2026-08-29, with the mobile row re-verified on 2026-09-05 after both projects shipped changes: Orca added a hosted "Orca Relay" tunnel option, and Superset's own pricing page now lists its mobile app as "Coming soon" rather than shipped. This space moves fast — if something here is out of date, open an issue on https://github.com/pragma-sh/pragma and we will correct it.
Migrating from Emdash to Pragma
No export step: Emdash and Pragma both run agents in plain git worktrees, so you can add each existing branch as a Pragma worktree in a couple clicks — nothing to convert.
Point Pragma at the same folder
Emdash's worktrees are plain git worktrees under your project's `.git`. Open the parent repo as a Pragma project, then add each branch Emdash already created as a Pragma worktree — same checkout on disk, nothing to export.
Your agent CLIs already work
Pragma launches Claude Code, Codex, Cursor, and OpenCode using the CLI you already have installed and logged in — the same one Emdash was driving. No new API keys.
Rebuild ticket-import wiring in the board
Emdash's Linear/Jira/GitHub-issue import is Emdash-specific and doesn't export. Pragma's agent board and GitHub panel cover the same job — turn a task into a card, open a PR, review it — without leaving the app.
Remove Emdash's agent hooks if you're not running both
Emdash installs marker-tagged lifecycle hooks in each agent's user-level config to track status. They no-op outside an Emdash session, so it's safe to leave them, but Emdash's own docs cover removing them if you'd rather not.