Anil-matcha/open-duet
AI EngineeringSelf-hosted workspace for building named AI agents with memory, routines, isolated computers, and human approval.
What it is
Open Duet is a self-hosted workspace for running named AI agents that behave like coworkers. Each agent gets a role, instructions, a workspace, memory, and approval settings; a lead agent can delegate tasks to specialists, and agents can recall notes and past conversations. Teams and memory are documented separately.
Work can be scheduled as routines (cron, webhook, or manual) and tracked through a task board and calendar. Every routine result and sensitive action can pause for your approval. Agents can also be given an isolated computer, connected to external services via Composio, and extended with skills and templates. The project itself does not ship a model: you bring an engine such as Claude Code, Codex CLI, Gemini CLI, Cursor, OpenRouter, or an OpenAI-compatible endpoint like Ollama. Engines and data flow are documented in the guides.
Quick start
The desktop app runs from a source checkout. You need Node.js 22+, uv, and at least one engine installed and signed in on the same machine (or an API-based engine configured in Settings).
git clone https://github.com/Anil-matcha/open-duet.git
cd open-duet/desktop
npm run app
On first launch, pick an engine, workspace, and approval mode. Then:
- Open Settings → Engines and confirm an engine is ready.
- Create an agent with a name, a clear job, and a workspace.
- Start a chat with Ask first enabled so actions pause for approval.
- Add teammates or create a routine when you want to split or repeat work.
Release installers are also available on the Releases page, though they are unsigned and experimental. For the live demo, see the demo video.
Ways to run it
| Mode | Best for | Main requirement |
|---|---|---|
| Desktop app | A personal workspace on your computer | Node.js 22+, uv, an engine |
| Self-hosted server | Keeping agents and routines on a server you control | Linux, HTTPS, Docker or Node.js, an engine |
| Hosted app | Using the separately operated Suparagent service | Account and AI provider account |
| Development checkout | Contributing or modifying the project | Node.js, uv, Docker if using PostgreSQL |
For self-hosting, follow the self-hosting guide. The hosted service is a separate product with its own pricing, and paid plans charge for Suparagent-operated compute while you still pay your AI provider for model usage.
Usage constraints
Open Duet is explicitly early-stage. The self-hosted server is intended for a single owner with paired devices, not a multi-user organization. Team delegation is new and requires Claude or Codex for the lead agent. Desktop installers are unsigned with limited platform verification, and the release-to-release update path has not been verified end to end. Docker-based agent computers, browser tools, and the macOS native desktop preview are experimental and opt-in. The phone app has only been tried on Android (no iOS), with no push notifications or store release. Connected apps route through Composio and were tested against a fake Composio service; only Claude and Codex agents can use them. The MCP Marketplace, hosted cloud computers, quiet routine results, and audio transcription have not been qualified against live services or packaged apps. Routines run in the backend, so the backend must stay running.
Data handling: for desktop and self-hosted use, conversations, notes, routines, and settings are stored locally or in your server database. API keys saved through Open Duet are encrypted there. When an agent answers, the selected engine receives the prompt and relevant context, so a hosted engine handles that data under its own terms. The project is Apache-2.0 licensed.
HotRepo's take
Open Duet entered the Python daily list on 2026-11-04 at position 10 with 105 stars gained that day, reaching 6,748 stars and 860 forks overall. There is no all-language daily rank and no star history curve in the available records, so this is a single-snapshot observation rather than a trend. The repository's positioning as a self-hosted alternative to several closed coworker products, combined with an explicit list of unfinished features, makes it useful to evaluate as an experimental stage-1 workspace rather than a stable production setup.
Further reading
Written by AI from the project's README, updated . The project's own docs are the source of truth.