Orchestrate multiple AI coding sessions in parallel
Download Latest Release | macOS | Windows
Beta Releases — opt into pre-release builds via Settings > About > Updates
- About
- Screenshots
- Features
- Keyboard Shortcuts
- Requirements
- Quick Start
- Development
- Architecture
- Tech Stack
- Beta Releases
- Roadmap
- Contributing
- License
Omniscribe is a desktop application for managing multiple AI coding assistant sessions simultaneously. With a plugin-based architecture supporting Claude Code and OpenAI Codex CLI, you can run up to 12 sessions in parallel, each with its own GPU-accelerated terminal, optional git worktree isolation, and MCP server configuration.
| Feature | Description |
|---|---|
| Multi-Session Grid | Run up to 12 AI sessions in parallel with GPU-accelerated terminal views |
| Real-Time Status | Track session states: idle, working, planning, needs_input, finished |
| Session History | Browse, search, and filter past Claude Code sessions with branch filtering and sort controls |
| Resume & Fork | Resume any previous session or fork it into a new conversation branch |
| Continue Last | One-click button to continue the most recent Claude Code conversation |
| Drag & Drop | Rearrange terminals by dragging; resizable panels with drag dividers |
| Terminal Search | Ctrl+Shift+F search bar with regex and case-sensitive modes |
| 12 Terminal Themes | dracula, nord, gruvbox, and more |
| 10 UI Themes | Forge (default, dark), Carbon, Ember, Iceberg, Nord, Gruvbox, Dracula, Plum, Abyss, Paper (light) — plus plugin-contributed themes |
| Terminal Settings | Font family/size, cursor style, scrollback, theme — all applied live |
| Smart Copy/Paste | Ctrl+C copies selection or sends ^C; Ctrl+V pastes from clipboard |
| Quick Actions | AI-powered shortcuts for git workflows (commit, push, pull, resolve conflicts) and development tasks |
| Git Worktrees | Isolate each session in its own git worktree for parallel development |
| MCP Integration | Configure Model Context Protocol servers per session |
| Hooks Integration | Automatic Claude Code hooks for instant session detection via SessionStart/SessionEnd events |
| Project Tabs | Manage multiple projects with persistent recent history |
| Cross-Platform | Native support for Windows and macOS |
| Shortcut | Action |
|---|---|
N |
Add new session slot |
Shift + N |
Open launch presets modal |
L |
Launch all pending sessions |
1-9, 0, -, = |
Launch individual session (1-12) |
Ctrl/Cmd + K |
Stop all running sessions |
Ctrl/Cmd + , |
Toggle settings |
Ctrl/Cmd + Shift + H |
Toggle session history panel |
Ctrl/Cmd + W |
Close current project tab |
Ctrl/Cmd + 1-9 |
Switch project tab by index |
Ctrl/Cmd + L |
Clear focused terminal |
Ctrl/Cmd + F |
Toggle terminal search bar |
- Node.js >= 22.0.0
- pnpm >= 9.0.0
# Clone the repository
git clone https://github.com/Shironex/omniscribe.git
cd omniscribe
# Install dependencies
pnpm install
# Start development
pnpm dev
# Build for production
pnpm build
# Package for distribution
pnpm package # Current platform
pnpm package:win # Windows
pnpm package:mac # macOS# Run tests
pnpm test
# Run tests with coverage
pnpm test:cov
# Type checking
pnpm typecheck
# Lint code
pnpm lint
# Format code
pnpm format
# Check formatting
pnpm format:checkThe README screenshots are captured from the live app over the Chrome DevTools Protocol:
# Terminal 1 — launch the app with CDP exposed on 127.0.0.1:9222
pnpm dev:inspect
# Terminal 2 — attach via Playwright and write assets/screenshots/<view>.png
pnpm screenshotsdev:inspect mirrors pnpm dev but adds --remote-debugging-port=9222 --remote-allow-origins=* so a Playwright client can attach. The capture script forces a deterministic 1400×900 viewport, so docked DevTools never affects the output. Open a project and launch a few sessions before running it to capture the multi-session grid.
omniscribe/
├── apps/
│ ├── desktop/ # Electron + NestJS backend
│ ├── web/ # React frontend
│ └── mcp-server/ # MCP status server
└── packages/
├── plugin-api/ # Plugin API contracts and base classes
├── plugins/
│ ├── provider-claude/ # Claude Code provider plugin
│ └── provider-codex/ # OpenAI Codex CLI provider plugin
└── shared/ # Shared types and utilities
Communication Flow:
┌─────────────────────────────────┐
│ Electron Main Process │
│ ┌───────────────────────────┐ │
│ │ NestJS Backend │ │
│ │ Terminal │ Session │ Git │ │
│ │ MCP │ Workspace │ │
│ └───────────────────────────┘ │
│ │ WebSocket │
└──────────────┼──────────────────┘
│
┌──────────────┼──────────────────┐
│ Electron Renderer │
│ ┌───────────────────────────┐ │
│ │ React + Zustand │ │
│ │ Terminal Grid │ Stores │ │
│ └───────────────────────────┘ │
└─────────────────────────────────┘
| Layer | Technology |
|---|---|
| Desktop | Electron 41 |
| Backend | NestJS 10 |
| Frontend | React 18, Zustand 5 |
| Terminal | xterm.js (WebGL), node-pty |
| Styling | Tailwind CSS |
| Build | Vite, esbuild |
| IPC | Socket.io, Electron IPC |
Omniscribe supports a beta update channel for testing new features before stable release.
To opt in:
- Open Settings > About > Updates
- Click the Beta button to switch channels
- The app will automatically check for and offer beta updates
To opt out: Switch back to Stable in the same settings panel. If a stable version is older than your current beta, a downgrade will be offered.
Beta releases are tagged with a -beta suffix (e.g. v0.5.0-beta.1) and marked as pre-release on the Releases page.
Track active work on the public project board.
Omniscribe is a universal AI coding orchestrator built on a plugin architecture. The plugin system and multi-provider support have shipped — both Claude Code and OpenAI Codex CLI are available as first-class provider plugins, complete with slot-based UI injection, dynamic per-provider settings, and an in-app marketplace.
The one known gap: MCP server configuration for the Codex provider. Codex reads MCP servers from a TOML-based ~/.codex/config.toml rather than .mcp.json, and that bridge isn't wired up yet. Everything else — session management, usage tracking, hooks — works across both providers.
Want to add a provider? See the Creating a Provider guide and the API Reference.
Contributions are welcome! Feel free to:
- Submit an issue for bugs or feature requests
- Open a pull request with improvements
- Read the Creating a Provider guide to contribute a provider plugin
- Share feedback and suggestions
This project is licensed under the MIT License.



