duolog makes Claude Code and Codex work as a pair in one project. You choose which agent and model does each kind of work. The sessions talk through a small file bus, so they do not paste large context at each other.
On macOS and Linux:
curl -fsSL https://github.com/lorem-dev/duolog/releases/latest/download/install.sh | shOn Windows, use Windows PowerShell 5.1 or PowerShell 7:
irm https://github.com/lorem-dev/duolog/releases/latest/download/install.ps1 | iexTo build from source instead, use Go:
go install github.com/lorem-dev/duolog/cmd/duolog@latestBoth installers verify SHA-256 and select amd64 or arm64. Run the same command
again to update. The default folder is ~/.local/bin on macOS/Linux and
$env:LOCALAPPDATA\Programs\duolog on Windows. The Windows installer adds that
folder to your user PATH (not the machine PATH) when it is missing; set
DUOLOG_NO_PATH=1 to skip that. The macOS/Linux installer never edits PATH:
add the printed directory yourself if needed. Open a new terminal afterwards.
From the release after 1.4.0 on, the installer attached to a release installs
that release: the releases/download/v<version>/install.sh and install.ps1
files default to that version, and the releases/latest/download links give
the newest release.
To pin a different version on macOS/Linux, or on Windows:
curl -fsSL https://github.com/lorem-dev/duolog/releases/latest/download/install.sh | sh -s -- --version v1.6.0$env:DUOLOG_VERSION = 'v1.6.0'
irm https://github.com/lorem-dev/duolog/releases/latest/download/install.ps1 | iexFor custom install folders, plugin updates and shared setup, see Getting started.
The plugins call the binary, so install it first. In Claude Code, run:
claude plugin marketplace add lorem-dev/duolog
claude plugin install duolog@duologIn Codex, run:
codex plugin marketplace add lorem-dev/duolog
codex plugin add duolog@duologInstall hooks for one project or for all your projects:
duolog install --scope project
duolog install --scope userCodex needs this step because marketplace plugins do not install its hooks.
It then needs one approval in /hooks (press t) and a trusted project
folder. Claude needs this step only if its plugin is not enabled.
After installing and approving the hooks, start a new Claude Code or Codex session in your project, so that the agent loads the plugin and the hooks. That session is the lead. Keep it open while you send tasks.
duolog doctorFollow the steps that doctor names. Local telemetry is on by default; turn it
off with duolog telemetry off (see Telemetry).
Getting started shows
the task format and what the result line means. Write a task file, such as
.duolog/task.md. Then, from the lead session, send it to a role:
duolog delegate review_intermediate --task .duolog/task.mdduolog uses the Apache License 2.0.
- Getting started: install, set up and send a task
- Configuration: roles, models, defaults and limits
- Learning mode: task classes and routing from local results
- Calibration: a starting order from past work, on request
- Sync: generate one agent's files from the other's
- Bus: messages and artifacts
- Permissions: how duolog decides for a worker
- Rex: a live second session
- Budgets: cost targets and what we measured
- Telemetry: the local history and how to turn it off
- Practices and models: the evidence behind the default rules
- Live verification: which agent behavior is OBSERVED and which is VERIFIED
- Architecture: the code tiers and the layers test
- How to write the documentation: the writing rules