-
Notifications
You must be signed in to change notification settings - Fork 1
Delegate to AI
🌐 English · 한국어
Hand your work to multiple AI coding agents (Claude Code · Codex · Gemini CLI) running in parallel, each in its own isolated git worktree.
Each TODO automatically gets its own git worktree. Claude / Gemini / Codex CLIs execute simultaneously in parallel.
- Dependency chains let you automatically trigger follow-up tasks and branch merges once prerequisites complete.
- Per-project worktree toggle plus a per-TODO tri-state override (inherit / force-worktree / force-main) give fine-grained control.
- Main-branch tasks are automatically serialized to avoid
.gitconflicts. - Drag-and-drop reordering and an iOS-style stack mode keep long task lists manageable.
| Mode | Behavior |
|---|---|
| Use worktree (default) | A dedicated worktree per TODO. Parallel execution + branch merge. |
| Run on main | Work directly on the main branch. Concurrency is forced to 1 to avoid conflicts; the CLI commits directly and no merge button appears. |
Off by default — CLITrigger is a language-agnostic orchestrator, so it won't run an install just because a package.json exists. Turn it on for npm projects where the agent needs to run tests/builds immediately.
Send additional instructions to a completed TODO to run a new round in the same worktree (via the CLI's native --continue). Multiple continues are supported with per-round log separation. If the worktree was cleaned up, Retry restarts from scratch.
Long-lived interactive CLI sessions as first-class entities — bring up a Claude / Gemini / Codex session in a floating draggable window. While TODOs run automatically from instructions, sessions are for direct, manual conversation with a CLI.
- Drag a tab onto another window for a 5-zone diamond (top/bottom/left/right/center) — side drops split into resizable panes, center merges as tabs
- Aero-style edge snapping, sticky window-to-window snapping, and minimize-to-dock-tray
- Splitter bars resize panes; all tabs stay mounted so PTY output never breaks
- Drag a tab >12px outside its group to detach it to a floating window (eager tab tearing)
- Docking works inside popped-out OS windows too — drag a tab onto a pane (including its own stack's edges) to split, center to merge
- Drag tabs between OS windows: drop a popout's tab onto another popout or onto a floating window in the main app. With overlapping windows the most recently focused one wins, and the tab only leaves its source after the receiver confirms — it can't get lost in transit
Pop a window out into a separate OS window. The session list flags it with a badge + a one-click "bring back to the main window" recall, and popped windows also appear as chips in the bottom dock tray. If a popout is unresponsive, a 1.5s fallback force-reclaims it. Re-docking while you're viewing a different project adopts the group into the workspace you're looking at — which also lets you dock terminals from different projects into one group.
- xterm.js shows ANSI colors, cursor control, and TUI box-drawing identically to a native terminal
- PTY spawns at the exact viewport dimensions; per-session font size via A−/A+ buttons,
Ctrl/Cmd ±, orCtrl/Cmd + scroll(8–28px) -
Tab cycling (
Ctrl+Tab/Ctrl+Shift+Tab) within a group; new raw-shell tab via+/Ctrl/Cmd+T -
Copy/paste via right-click context menu;
Ctrl/Cmd+Calways passes through to the PTY (^C= SIGINT) -
Image paste pushes a bitmap to the host clipboard and renders
[Image #N]in the CLI — no disk file in your project tree. A thumbnail preview appears at the terminal's bottom-left for a few seconds so you can see what got attached - 8 brand terminal themes + custom 5-color picker (per-session, persisted to localStorage)
When a session has wiki injection or a description, the initial prompt is held rather than auto-sent. A banner shows "Initial prompt ready · N chars" with Preview / Send / Skip so you review before it hits the model. Inline edit updates non-running sessions in place.
iOS Safari Hangul IME is composed via a client-side dubeolsik composer. Window geometry, group tree, and tab arrangement persist and survive tab navigation; small screens go fullscreen.
AI agents with different roles — architect, developer, reviewer — debate in rounds before implementation. The resulting design is far more robust than a single AI working in isolation.
- Create agents — define personas (name, role, system prompt, CLI tool)
- Create a discussion — pick 2+ agents, set a topic and max rounds
- Run — agents speak in turn each round, referencing prior turns
- Intervene — inject messages, skip turns, pause/resume mid-discussion
- Implement — a designated agent writes code from the consensus
- Merge — merge the implemented branch into the base branch
-
Implementers (
can_implement) can commit code during their regular turns (prompt relaxed to "minimal prototype"); a final implementation round stitches everything together. Shown with a hammer badge in the list. - Auto-implement triggers the code-writing round automatically on consensus.
-
Send to Planner distills a finished transcript into curated planner items via a one-shot LLM extraction — review and edit before persisting (each links back via
source_discussion_id). - Worktree isolation, real-time WebSocket streaming, message collapse/expand, and prompt-injection defense (
<user_task>isolation).
Discussions share the project's
max_concurrentlimit with TODOs.
Schedule tasks for off-peak hours to avoid rate limits. Supports:
-
Recurring cron schedules — e.g.
0 9 * * *(daily 9am),30 18 * * 1-5(weekdays 6:30pm) - One-time scheduled runs
- Auto-recovery scheduling on rate-limit events — if the CLI hits a token quota, CLITrigger schedules a retry for the exact reset time
Manage via the Schedules tab: enable/disable toggle, manual trigger, execution history (triggered / skipped / failed), and a Skip if running option.
Select Claude / Gemini / Codex per project, per TODO, or per discussion agent. Every run uses the CLI's default model — there is no per-run model picker to keep in sync with shifting model lineups — and a fallback chain can auto-retry on the next CLI when a context window or quota is exhausted.
Strict sandbox mode restricts CLI file access to the worktree directory using each CLI's native sandboxing:
| CLI | Strict-mode behavior |
|---|---|
| Claude | Auto-generated .claude/settings.json (dontAsk + directory-scoped permissions) |
| Codex |
--full-auto + --add-dir .git (workspace sandbox + git metadata access) |
| Gemini | Prompt-level path restriction (no native sandboxing) |
Keep strict mode unless you have a specific reason — permissive mode lets the CLI touch system-wide files. A warning dialog appears when switching to permissive.
Project Settings → Harness edits each CLI's project config without leaving CLITrigger: the instruction file under its real name (CLAUDE.md / GEMINI.md / AGENTS.md) in an expandable full-height editor, plus settings and MCP servers. For Claude it also covers:
-
CLAUDE.local.md— edited alongsideCLAUDE.md, created on first save if absent -
Hooks — the
hooksblock of.claude/settings.json, listed per event with matchers and commands, editable as raw JSON -
Skills —
.claude/skills/*/SKILL.mdlisted with their descriptions, editable inline
English
🗂 Plan & Organize 🤖 Delegate to AI 🔍 Review & Ship 🌐 Remote Access
한국어
🗂 계획 & 정리 🤖 AI에게 위임 🔍 리뷰 & 배포 🌐 원격 접속