Ask for a change; Dely takes it through design approval, implementation, independent review, and a pull request you merge.
dely_demo.mp4
- Quickstart
- How Dely works
- Choose a harness for each role
- Install Orca
- Install Dely
- Configure a project
- Log
- Troubleshooting
- Install Orca.
- Install Dely in the harness you will talk to.
- Open that harness in your project. Run
dely:setupto choose which harness and model run each role, or use the project's existing pins. If no pin names a phase, it runs on Control's harness. - Ask for a change.
You ask. Control designs. You approve. The implementer builds. The reviewer checks. Control opens the pull request. You merge.
Control is the session you talk to. It writes the design, waits for your approval, starts the other two sessions, and opens the pull request. Install Dely here.
Implementer is a session Control starts to make the change.
Reviewer is a session Control starts to check the change independently before the pull request. The implementer and the reviewer are the workers.
A Spike investigates only — no delivery run. One that dispatches workers opens its own Orca Run and keeps their files in that Run's folder.
Before the first delivery in a project, open each harness you chose there once
and answer its trust question. Setup opens them for you. OMP has no trust
question; Pi asks only when the project or a parent folder has .pi/ or
.agents/skills.
✓ works · ⚠ works, read the note · ✗ not supported
| Harness | Control | Implementer | Reviewer | Watch out for |
|---|---|---|---|---|
| Claude Code | ✓ | ✓ | ✓ | Put @AGENTS.md in CLAUDE.md. |
| Codex CLI | ⚠ | ✓ | ✓ | Use Codex CLI 0.159.2 or newer with Orca 1.4.217 or newer. As Control, it can start the next Dely step before the last one finishes. |
| Grok Build | ⚠ | ⚠ | ⚠ | Answer the trust question once in every project. As a worker, you cannot choose the model. As Control, a free account ran out of usage mid-delivery. |
| Antigravity CLI | ✓ | ⚠ | ⚠ | Choose the effort through the model name. Avoid gemini-3-flash-preview. As a worker, the first launch in a new folder can lose the task and show 'not signed in' while signed in; Dely retries once, then asks you to open agy there. |
| Kiro CLI | ✗ | ✗ | ✗ | Workers never start in Orca. |
| Cursor Agent CLI | ✓ | ✓ | ✓ | Choose the effort through the model name, for example cursor-grok-4.6-high. |
| GitHub Copilot CLI | ✓ | ⚠ | ⚠ | At the first launch, answer No, thanks to the app prompt; until then a launch can leave the task unsent. Answer the folder trust question once in every project and choose to remember the folder; Orca does not see it, so a missed one shows as NO_ACK. As a worker, you cannot choose the model. |
| OMP | ✓ | ⚠ | ⚠ | It never asks for trust, so use it only in repositories you trust. As a worker, use Orca 1.4.224 or newer, which does not show OMP's status (stablyai/orca#24436), so Dely reports a working OMP worker as needing attention. |
| Pi | ⚠ | ⚠ | ⚠ | As Control, run Dely's commands with no time limit. As a worker, to pin a model, install Dely in Pi, then check the model in Pi's session log. |
Other agents Orca can launch may work too;
harnesses.json records what was measured.
Orca runs each session and launches the workers.
- Install the desktop app.
- Register the CLI: Settings → General → Orca CLI. See the CLI overview.
- Enable orchestration: Settings → Experimental. See orchestration.
- Check it:
orca open
orca status --json
orca orchestration run-list --jsonOn Linux, the binary is orca-ide.
Install Dely only in the harness you use as the Control session. A harness
used only as implementer or reviewer needs Orca and its own login. Workers
read no Dely skill. A pinned Pi worker also needs that harness's
Dely install below, which loads dely-pin.ts.
Have Node 18 or newer on PATH. Open Control in your project and ask for a
change using dely:delivery. To choose the implementer and reviewer, run
dely:setup first; see Configure a project. If no pin
names a phase, it runs on Control's harness with its default model and effort.
Use the invocation spelling listed below for your harness.
claude plugin marketplace add https://github.com/hieuphung97/dely.git
claude plugin install dely@dely
claude plugin list # verify
claude plugin update dely # update; restart to apply
claude plugin uninstall dely # removePut @AGENTS.md in CLAUDE.md so Claude reads the routing line setup adds.
Invoke /dely:delivery or /dely:setup.
codex plugin marketplace add https://github.com/hieuphung97/dely.git
codex plugin add dely@dely
codex plugin list # verify
codex plugin marketplace upgrade # update; open a new session
codex plugin remove dely@dely # removeIf add keeps a stale marketplace, remove the marketplace and plugin, then add
again. Pin a tag or full commit SHA with
codex plugin marketplace add --ref <ref> https://github.com/hieuphung97/dely.git.
Do not use codex plugin install.
Invoke $delivery (dely:delivery) or $setup (dely:setup).
cursor-agent plugin marketplace add https://github.com/hieuphung97/dely.git
cursor-agent plugin marketplace list # verify marketplace
cursor-agent plugin marketplace update dely # re-index only; does not fetch
cursor-agent plugin marketplace remove dely # remove marketplace onlyIn a session, open /plugin → Marketplace → dely → Install for you.
To update, remove and re-add the marketplace, then uninstall and reinstall
Dely in /plugin. To remove Dely, use /plugin → Installed → dely → Uninstall.
Type /dely to find /delivery and /setup. Local snapshot installs are
unavailable; Cursor can read the Claude plugin cache.
copilot plugin install https://github.com/hieuphung97/dely.git
copilot plugin install /path/to/dely # local alternative
copilot skill list # verify delivery and setup
copilot plugin update dely # update git or local install
copilot plugin uninstall dely # removeInvoke /dely:delivery or /dely:setup. Direct installs print a deprecation
warning. A same-named project or personal skill can hide the plugin skill.
agy plugin install https://github.com/hieuphung97/dely.git
agy plugin install /path/to/dely # local alternative
agy plugin list # verify dely with skills
agy plugin install https://github.com/hieuphung97/dely.git # update git install
agy plugin uninstall dely # removeThere is no plugin update subcommand. Re-run install with the same target to
update. Invoke /dely:delivery or /dely:setup.
grok plugin install https://github.com/hieuphung97/dely.git --trust
grok plugin install /path/to/dely --trust # local alternative
grok plugin details dely # verify
grok inspect # verify loaded delivery and setup
grok plugin update dely # update git install
grok plugin uninstall dely # removeFor a local install, uninstall then install again; update does not re-copy.
Invoke /delivery or /setup. Grok also loads Claude Code plugins; its own
copy wins. To stop loading Dely completely, remove both copies if present.
Use a dedicated clone or an unpacked snapshot; install links the source path.
git clone https://github.com/hieuphung97/dely.git
omp plugin install /path/to/dely
omp plugin list --json # verify the install (Control only; OMP workers need none)
omp skill list --json # verify loaded skills
omp plugin uninstall dely # remove; needs bun on PATH
omp plugin disable dely # disable skills and extensionUpdate by pulling the dedicated clone, then opening a new OMP session.
Without bun, disable Dely; delete ~/.omp/plugins/node_modules/dely, remove
the empty node_modules directory, and delete .plugins.dely from
~/.omp/plugins/omp-plugins.lock.json. Invoke delivery or setup without
namespacing. OMP has no workspace-trust gate; only use trusted repositories.
pi install git:github.com/hieuphung97/dely@v<version>
pi install /path/to/dely # local alternative
pi list # verify
pi --verbose # verify loaded paths at startup
pi remove git:github.com/hieuphung97/dely@v<version>
pi remove /path/to/dely # remove local installFind <version> in releases.
Update by installing the new tag. At startup, check that Skills names
delivery and setup, and Extensions names dely-pin.ts.
Invoke /skill:delivery or /skill:setup. Check a pinned worker's model in
~/.pi/agent/sessions/.
Checked versions (observations, not minimums): Orca 1.4.218, 1.4.220, 1.4.224 (OMP and Pi worker); Claude Code 2.1.286; Codex CLI 0.159.3; Cursor Agent CLI 2026.09.28-64d2043; Copilot CLI 1.0.89; Antigravity CLI 1.2.13 (install), 1.2.14 (worker, Control); Grok Build 1.0.44; OMP 18.4.8 (Control), 18.6.1 (worker); Pi 0.99.1, 1.0.2.
Pins say which harness, model and effort run the implementer and the reviewer.
Run dely:setup in Control. It asks whether the choice is for the team or only
for you, then writes one of two files:
.dely/pins.jsonholds team pins. Commit it..dely/local/pins.jsonholds your own pins. It is never committed.
Both files look like this:
{
"implement": { "harness": "claude", "model": "default", "effort": "default" },
"review": { "harness": "codex", "model": "default", "effort": "default" }
}harness is an id from harnesses.json, such as claude or
codex, not the display name. Use default to leave the model or effort to
the harness. A file can name just one phase.
Dely picks a pin for each phase on its own. Your file wins, then the team file,
then Control's own harness with its defaults. If your file pins only
review, Dely uses the team's implement pin when there is one. Otherwise it
uses Control's harness and defaults.
In another worktree of the same clone, Dely looks for your file in that worktree first, then in the main checkout.
.dely/local/ has its own .gitignore holding *, so nothing in it shows in
git status; dely dispatch writes it when absent and leaves an existing one alone.
git clean -fdx deletes it, personal pins included.
.dely/local/runs/<run>/ holds every prompt and handoff of one Orca Run;
dely dispatch refuses a prompt anywhere else. The files stay until the run
closes, when Control deletes the folder and dely log records anything left
there as residue; null with a residueError means part of the folder could
not be read.
To see what is in use, ask Control to run dely pins --repo <path>. It prints
each phase's harness, model, effort and source (local, team or control).
Version 0.23 kept the pins in a <!-- dely:begin --> block in AGENTS.md.
Dely now stops while that block is there. Run dely:setup. It offers to move
the table to .dely/pins.json and leave one routing line in AGENTS.md.
~/.dely/log.jsonl is machine-local JSON Lines, one object per line. It
is off unless ~/.dely/ exists; mkdir ~/.dely turns it on, and Dely
never creates that directory. A missing directory means nothing is
written and nothing is created.
The file may contain sensitive content. It quotes worker screen output in full, so it can hold repository contents, error text, and whatever a harness printed.
- Worker stays at startup: read its screen. Answer shell startup prompts such as an oh-my-zsh update, then retry.
- Orca disconnects: reopen Orca, check the commands under Install Orca,
and inspect workers with
orca orchestration worker-list --run <run>before retrying. - First launch stops at trust: open that harness in the same path and
answer its dialog, then retry. Copilot can report only
NO_ACK, and its first launch also shows an app promo: answer No, thanks once; Antigravity can lose the prompt on a new path; retry once. Pi asks when the path or an ancestor has.pi/resources or.agents/skills. - Worker tab stays open: Dely releases each worker when its
worker_donesettles and again at close. A tab you typed or pasted into is yours, so Orca keeps it (retained,user_takeover); close it yourself. Answer a harness dialog by opening that harness in the same path (as the trust bullet says), not in the worker tab. - Codex helper says "not inside an Orca terminal": ask Control to look up
its handle with
orca terminal list --worktree active --jsononly when that worktree has one agent terminal, then prefix helper andorcacommands withORCA_TERMINAL_HANDLE=<handle>. Otherwise, use another Control harness. Never use another pane's handle. - Old behavior after update: open a new Control session. Ask Control to run
its
scripts/delywith no arguments to identify the running copy. Compareskills/delivery/SKILL.mdby SHA-256 at every skill location, including~/.agents/skills, project and personal skills, plugin caches and marketplace sources; update or remove mismatched copies. Codex personal skills can shadow plugins; Cursor copies can override the Claude cache; Copilot project and personal skills can hide its plugin.
Workflow contract · Contributing · Code of conduct · Security · Decisions · MIT