by cristicretu
Native macOS orchestrator for coding agents — run Claude Code, Codex, Cursor, Gemini and shells in parallel across git worktrees and remote hosts
# Add to your Claude Code skills
git clone https://github.com/cristicretu/diridiri is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by cristicretu. Native macOS orchestrator for coding agents — run Claude Code, Codex, Cursor, Gemini and shells in parallel across git worktrees and remote hosts. It has 108 GitHub stars.
diri's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/cristicretu/diri" and add it to your Claude Code skills directory (see the Installation section above).
diri is primarily written in Rust. It is open-source under cristicretu on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh diri against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Native macOS orchestrator for coding agents. Run Claude Code, Codex, Cursor, Gemini, and plain shells in parallel — across git worktrees or on remote hosts — each with a live status (working / needs-you / done), tmux-like persistence (closing the app never kills a session; a daemon restart brings conversations back), a menu-bar rollup, and an MCP server so agents can spawn and orchestrate other agents.
Two processes, one wire protocol:
diri — the desktop app: Rust + GPUI. Owns the
window, sidebar, terminal renderer, command palette, and usage accounting. Lives in
diri/.dirijord — headless Swift daemon, launched by the app and outliving it. Owns PTYs and
child agent processes, an offset-addressed output log per session (for detach/replay), a
headless terminal emulator for status detection, the session registry and persistence,
worktrees, and the control socket.dirijor — small CLI: mcp-stdio (the MCP shim injected into agents), hook/notify
(fail-open forwarders wired into Claude hooks and Codex notify), and status/doctor.dirijord-holder is a tiny helper that owns the PTY master so sessions survive a daemon
crash or restart.
| Target | Role |
|---|---|
DirijorCore |
Domain models (SessionRecord, status, attention, titles) and agent manifests |
DirijorProtocol |
Control-channel NDJSON envelope + binary data-channel frame codec |
DirijorClient |
DaemonClient + SessionAttachment actors |
DirijorDetection |
JSON manifest engine + StatusReducer state machine |
DirijorGit / DirijorMCP / DirijorDaemonKit |
Worktrees, MCP server, PTY/log/registry/IPC |
DirijorHolderKit / CDirijorPTY |
PTY ownership that outlives the daemon |
The app needs both toolchains: Rust 1.95 (pinned in diri/rust-toolchain.toml) and Swift 6
with the Xcode command-line tools.
# Engine
swift build
swift test
# App
cd diri
cargo build
cargo run -p diri-app
# Full bundle (builds the daemon, holder, and CLI into diri.app)
diri/scripts/package.sh
diri/scripts/install-local.sh
See diri/PACKAGING.md for signing and notarization,
diri/NODE.md for running agents on a remote VPS node, and
diri/PERF.md for the rendering performance gates.
First-class status detection and resume: Claude Code and Codex. Cursor and Gemini run with
partial support (see the manifests for what each one wires up); everything else runs as a
generic terminal with running/exited status. Detection rules are data — they live in
Sources/DirijorCore/Resources/manifests/ and adding an agent is a JSON file, not code.