Open-source mission control for coding agents.

OpenDucktor orchestrates your coding agents: OpenCode, Codex, and Claude Code. They write the spec and the plan, build each task in its own Git worktree, and pass a QA review before yours.

Free and open source under the Apache License 2.0. Read the code on GitHub

Download
npx @openducktor/web

For macOS, Windows, and Linux. The browser version needs Node.js 24.14 or later.

Install from a terminal

Workflow

From a one-line request to a merged pull request.

Each step has its own agent role and saves its work with the task. You start each step, or let Autopilot start it. You answer questions, approve commands, and review the diff.

Spec

The Spec agent reads the task and asks you what it needs to know. Then it writes the specification.

Plan

The Planner reads the spec and the code, and designs the change: a diagram of the flow, the modules and their contracts, and the requirement coverage.

Build

The Builder works in a Git worktree for this task. When the runtime asks, you approve a command once or for the session. Then the Builder commits.

QA

The QA agent checks the change against the spec and the plan. If it rejects the change, the Builder gets the QA report and fixes the cause.

Review

You comment on diff lines, and the Builder fixes them. Then you merge directly, or the Builder opens the pull request and waits for its checks.

Command palette

Press ⌘K. Run OpenDucktor from the keyboard.

Find any task or chat in all your workspaces. Start its next step, or answer its agent, without a click.

Kanban Board/Command palette

Runtimes

Use the coding agent that you already have.

OpenDucktor includes no model. It starts OpenCode, Codex, or Claude Code on your computer. In each repository, you choose a runtime and a model for each role.

  • OpenCodeChoose an agent profile, and a model from the providers that you set up in OpenCode. Add permission rules for each role.
  • CodexSet the sandbox mode, the approval prompts, and the network access of commands. Each role can use other values.
  • Claude CodeOpenDucktor uses your Claude Code installation and its sign-in. Set the permission mode, the Bash sandbox, and the Allow, Ask, and Deny rules.
Settings/Repositories/Agents

Autopilot

When a step ends, Autopilot starts the next agent.

Autopilot has one rule for each task event, and you turn on the rules that you want. When the spec is ready, the Planner starts. When the plan is ready, the Builder starts. When the build is done, QA starts. When QA rejects the build, the Builder gets the QA report. When QA approves, the Builder opens a pull request. Only you can approve a task.

Kanban Board/Autopilot rules on

Features

Plan in a chat, control every prompt, and run your commands in the worktree.

Chats and the MCP server use the same local task store as the board. A task that an agent creates in a chat or through MCP shows on the board at once.

Chats

Plan a feature in a chat, and get tasks on the board.

A chat works outside a task. Give it a custom role and a reusable prompt. The agent searches your tasks and creates the missing ones. Open a new task from the chat, and start its Builder without leaving the chat.

MCP

Use your tasks from any MCP client.

Add @openducktor/mcp to another agent. It can search, read, create, and update your tasks. It sends each call to the running app, so the board shows a new task at once.

Prompts

Read and replace every built-in prompt.

The settings show each built-in prompt that OpenDucktor sends to an agent. Replace a prompt for all repositories or for one repository. OpenDucktor checks the placeholders of each active override, and it does not save until they are valid.

Actions

Run your project commands in the task worktree.

An action is a named command of the repository, such as your dev server or your tests. Run it from the top bar of a session: each run opens a new terminal in the worktree of the task, or in the folder of the chat. An action can also run when OpenDucktor creates a worktree, and the agent can wait until it finishes.

Local

No account, no telemetry.

OpenDucktor runs on your computer. It starts the coding agents that you installed, in your own repositories. Your coding agent sends prompts and code to the model provider that you set up.

  • A SQLite file for each repositoryTasks, specs, plans, and QA reports stay in ~/.openducktor/task-stores.
  • Worktrees on your diskThe Builder works in ~/.openducktor/worktrees, or in another folder that you set for the repository.
  • Updates when you chooseThe app checks GitHub for a new release every 12 hours. It downloads and installs a release only when you tell it to.
  • Code that you can readThe source is on GitHub under the Apache License 2.0. Read it, change it, or build the app yourself.
Sidebar/Diagnostics

Install

Install the desktop app, or run it in your browser.

OpenDucktor runs the coding agent that you already use. Install and sign in to OpenCode, Codex, or Claude Code before the first start. Then open a local Git repository in OpenDucktor.

You need

  • Git
  • OpenCode, Codex, or Claude Code
  • GitHub CLI (gh) for pull requests on GitHub

Desktop app

For macOS, Windows, and Linux. The app checks GitHub for new releases and asks before it installs one.

macOS and Linux

curl -fsSL https://raw.githubusercontent.com/Maxsky5/openducktor/main/install.sh | sh

For macOS on Apple silicon or Intel, and for Linux x64.

Windows

irm https://raw.githubusercontent.com/Maxsky5/openducktor/main/install.ps1 | iex

For Windows x64, in Windows PowerShell 5.1 or PowerShell 7.

Homebrew

brew install --cask Maxsky5/openducktor/openducktor

Installs the signed and notarized macOS app from GitHub Releases.

Browser version

The same app in your browser. The command starts the OpenDucktor host and the web app on your computer. Then you open the Local address.

macOS, Windows, and Linux

npx @openducktor/web

2026-09-27T10:14:02.318+02:00 INFO Starting OpenDucktor frontend server...

2026-09-27T10:14:02.341+02:00 INFO Starting OpenDucktor TypeScript host...

2026-09-27T10:14:02.906+02:00 INFO Waiting for OpenDucktor TypeScript host readiness...

2026-09-27T10:14:04.117+02:00 INFO OpenDucktor web is ready:

2026-09-27T10:14:04.118+02:00 INFO ➜ Local: http://localhost:1420/

2026-09-27T10:14:04.118+02:00 INFO ➜ Local: http://127.0.0.1:1420/

2026-09-27T10:14:04.119+02:00 INFO ➜ Backend: http://127.0.0.1:14327

Needs Node.js 24.14 or later. By default, it accepts connections only from this computer.

Questions

Before you install.

More questions? Ask on GitHub
Is OpenDucktor free?

Yes. The source is on GitHub under the Apache License 2.0. You do not need an OpenDucktor account.

Does OpenDucktor include model access?

No. OpenDucktor runs the coding agent that you install: OpenCode, Codex, or Claude Code. The agent uses its own sign-in, and your provider charges you as usual.

Where do my tasks and code go?

Tasks and their documents stay in a SQLite database on your computer. Your coding agent sends prompts and code to the model provider that you set up. OpenDucktor has no analytics or telemetry. The app loads its fonts from Google Fonts. The desktop app checks GitHub for new releases. It asks before it downloads or installs one.

Can agents merge code without me?

The workflow cannot. A task goes to Done when you approve a direct merge, or when a pull request that was merged on GitHub or Azure DevOps closes it. Autopilot can start agents and open a pull request. It cannot approve or merge.

Must every task go through every step?

No. A feature needs a spec and a plan. A task or a bug can go straight to the Builder. The QA review is on by default, and you can turn it off for each task.

Which Git hosts work with pull requests?

GitHub, through the GitHub CLI, and Azure DevOps. Direct merges work in any local Git repository. GitLab and Bitbucket are not supported.

Which operating systems are supported?

macOS, Windows, and Linux. The desktop app is for macOS on Apple silicon or Intel, Windows x64, and Linux x64. The browser version runs on macOS, Windows, and Linux with Node.js 24.14 or later.

Can I use it from another device?

Yes, with the browser version. By default it accepts connections only from your computer. For remote use, bind it to a private network such as Tailscale. Do not expose it to the public internet.

Start with one small task.

Install OpenDucktor, open a Git repository, and create a task. The agent works in its own worktree, and OpenDucktor does not merge until you approve.