A macOS desktop app that orchestrates multiple CLI coding agents working in parallel on the same project. Each agent runs in its own git worktree, so agents can work on isolated branches simultaneously without conflicts.
Supports Claude Code, Codex, Copilot, and Gemini CLI — plus local models via Ollama.
Agents run in a native terminal — no wrapping, no abstractions. You get the full CLI experience exactly as if you ran the agent yourself.
Download the latest .dmg from GitHub Releases, open it, and drag Manifold to your Applications folder.
You need at least one agent CLI installed:
| Agent | Install |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| Codex | npm install -g @openai/codex |
| Copilot | npm install -g @githubnext/github-copilot-cli |
| Gemini CLI | npm install -g @anthropic-ai/gemini-cli |
Git must be installed. For creating PRs from within Manifold, install the GitHub CLI (gh).
Manifold ships with two UI modes you can switch between at any time.
The full multi-agent workspace for developers. A resizable panel layout with six panes, each toggleable via keyboard shortcuts (Cmd+1 through Cmd+6):
- Projects panel — Repository browser with multi-project support
- Agent terminal — Live PTY output from the agent CLI. Type into the terminal at any time to steer the agent mid-flight.
- Code viewer — File diffs or full file contents as the agent makes changes. Powered by Monaco Editor.
- File tree — Browse all files in the agent's worktree. Modified files are marked with a dot.
- Modified files — Quick access to git-tracked changes.
- Shell tabs — Multi-tab terminal for the agent's worktree or the project root.
- Web preview — Opens automatically when the agent starts a dev server.
Status badges show each agent's state: running, waiting (for user input), done, or error.
A streamlined mode for quickly building web apps through chat. Describe what you want, and an AI agent scaffolds a React + TypeScript + Vite app with IndexedDB persistence, then starts a dev server so you can preview it immediately.
- Dashboard — See all your apps in a grid. Click "New App" to start.
- Chat pane — Send messages to iterate on the app. Agent responses render as markdown.
- Live preview — An embedded webview shows the running app, auto-reloading when the agent finishes a change.
- Status banner — Visual feedback on the current state (building, previewing, error).
You can switch to developer view at any time to access the full terminal, file tree, and git tools for the same project.
On first launch, Manifold shows a welcome screen where you:
- Configure storage — Choose where agent worktrees are stored (defaults to
~/.manifold/) - Register a repository — Add a local git repository or clone one from GitHub
- Click New Agent in the sidebar
- Pick a runtime (Claude Code, Codex, Copilot, Gemini CLI, or a custom binary)
- Give the agent a prompt describing what to do
- Optionally edit the branch name (auto-generated, always prefixed
manifold/) - Click Launch
Each agent gets its own git worktree branched from the project's main branch. Agents work in fully isolated copies of the codebase, so they never step on each other.
- AI-assisted commits — Auto-generate commit messages from diffs, or write your own
- Create PR — When an agent finishes, open a pull request with an AI-generated title and description via the GitHub CLI
- Conflict detection — Real-time polling alerts you when merge conflicts appear, with AI-powered resolution suggestions
- Ahead/behind tracking — See sync status between worktree branches and the base branch
- Parallel agents — Run multiple agents on the same project simultaneously, each in an isolated worktree
- Agent-agnostic — Works with Claude Code, Codex, Copilot, Gemini CLI, Ollama, or any custom CLI binary
- Two UI modes — Full developer workspace or simplified app-builder chat
- Web preview — Embedded browser that auto-detects dev server URLs from agent output
- AI-assisted git — Auto-generated commit messages, PR descriptions, and branch names
- Conflict detection — Alerts and AI suggestions when merge conflicts appear
- Persistent sessions — Agent state, shell tabs, panel layout, and open files survive app restarts
- 50+ themes — Includes custom Manifold themes plus popular community themes like Dracula, Nord, Monokai, and Solarized
- Auto-updates — Checks for new versions on launch and installs automatically
Manifold ships with 50+ editor themes including two custom Manifold themes and popular community favorites like Dracula, Nord, Monokai, and Solarized. Browse themes with live preview, filter by dark/light, and search by name in Settings.
See CONTRIBUTING.md for setup instructions, project structure, code conventions, and pull request workflow.
Electron three-process model with strict context isolation:
- Main (
src/main/) — Node.js runtime. Owns PTY processes, git worktrees, file system, settings. - Preload (
src/preload/) — IPC bridge. Whitelisted channels only. - Renderer — Developer (
src/renderer/) — React UI for the developer view. No direct Node.js access. - Renderer — Simple (
src/renderer-simple/) — React UI for the simple app-builder view.
| Module | Role |
|---|---|
SessionManager |
Agent session lifecycle — create, resume, kill, discover dormant worktrees |
WorktreeManager |
Git worktree creation/removal under configurable storagePath |
PtyPool |
PTY process management via node-pty |
ProjectRegistry |
CRUD for registered projects (~/.manifold/projects.json) |
SettingsStore |
Config persistence (~/.manifold/config.json) |
StatusDetector |
Pattern-matches PTY output to detect agent status |
DiffProvider |
Git diff between worktree branch and base branch |
FileWatcher |
Watches worktree directories, pushes change events to renderer |
GitOperationsManager |
Commit, AI-generated commit messages, ahead/behind counts, conflict resolution |
PrCreator |
Creates GitHub PRs via gh CLI for agent worktree branches |
ShellTabStore |
Persists shell tab layout per worktree across app restarts |
ViewStateStore |
Persists per-session UI state (open files, active tab, code view mode) |
BranchNamer |
AI-generated branch name suggestions from task descriptions |
Runtimes |
Discovers available agent CLIs on the system |
DevServerManager |
Spawns dev servers and detects preview URLs for simple mode |
ModeSwitcher |
Handles transitions between developer and simple views |
| Layer | Technology |
|---|---|
| App framework | Electron |
| Frontend | React, TypeScript |
| Terminal | xterm.js + node-pty |
| Code viewer | Monaco Editor |
| Git operations | simple-git |
| Panel layout | Dockview |
| Build | electron-vite + electron-builder |
| Testing | Vitest |
