The specs
The original rubber duck just sat there. You talked at it and the thinking happened in your own head. Duck Duck Duck is different. It watches your Claude Code session, reads what you and Claude are doing, forms opinions about it, and tells you what it thinks. It can even enable you to handle routine things, like permissions requests, with your voice.
What it's like to use
It watches and reacts
Every prompt you send and every response Claude gives gets scored across five dimensions: creativity, soundness, ambition, elegance, and risk. The duck turns those scores into reactions. Its face changes. It says something. If you've got the hardware duck, it tilts and quacks. Good code gets enthusiasm. Bad code gets a look.
The scoring uses Apple's on-device Foundation Models by default, so it's fast and private. You can switch to Claude Haiku or Gemini Flash if you want a cloud-based evaluator.
It handles permissions
When Claude needs to read a file, run a command, or do anything that requires your approval, the duck steps in. It summarizes the permission request in plain language and asks you out loud. You say “yes,” “no,” or “always allow” and the duck passes it along. No clicking, no context switching. You stay in your flow.
You can talk to it
Say “ducky” and ask it a question. It knows about its own setup, modes, and features, and it answers in character. In Relay mode, you can speak commands that get piped directly into Claude Code through tmux, so you can drive a coding session with your voice.
Three brains, your choice
Apple Foundation Models
On-device, private, free. Designed for M3+. Your duck never leaves your Mac.
Gemini Flash
Google's fast model. Free tier, no credit card. Great for M1/M2 Macs.
Claude Haiku
Anthropic's efficient model. ~$0.001 per eval. Sharpest scoring.
Switch anytime from the menu bar. Default is fully on-device. On M1/M2 Macs, on-device scoring is slow. We recommend a cloud API key (Gemini Flash is free). Cloud scoring sends prompts/responses to the API provider, so see their Privacy Policy.
Four modes
Companion is the full experience: reactions, voice permissions, wake word, the works. Permissions Only keeps the duck quiet until Claude needs approval. Companion (No Mic) gives you reactions and speech bubbles without listening. And Relay lets you speak commands directly into Claude Code.
You can switch modes from the right-click menu, the menu bar icon, or preferences. The duck works with or without physical hardware. No hardware? Your laptop mic and speakers do the job.
Under the hood
How it works
Duck Duck Duck is a SwiftUI macOS app plus a Claude Code plugin. Hooks fire on Claude events and POST to the widget's embedded server. The widget evaluates what happened, turns that into reactions, and broadcasts updates to the desktop UI and optional hardware duck in real time.
Hooks
Session start, prompt submit, stop, permission requests, compaction events, failures, and post-tool cleanup all feed the duck, who has an unquenchable thirst for the sea.
Evaluation
Apple Foundation Models are the default local evaluator, with optional Claude Haiku and Gemini Flash backends for people who want cloud scoring.
Reactions
Scores map to voice, face animation, color, movement, permission prompts, and optional hardware behaviors.
Bridge
A local HTTP + WebSocket server coordinates the widget, browser clients, and USB-connected boards while tmux handles voice-to-CLI relay.
Hardware
- ESP32-S3, the primary board with serial audio streaming for TTS and microphone input, plus servo and speaker control
- Teensy 4.0, a DIY option that exposes the duck as a USB audio interface while still driving servo and I2S audio
- ESP32-S3 LED variant, a lighter hardware path for LED-first desk reactions
- Servo, speaker, microphone, and LEDs all express the same evaluation scores in different physical ways
- Simple serial protocol carries score updates and permission state between the widget and the device
- No hardware required, laptop mic and speakers can stand in until you build or buy a physical duck, or until we send you one
DIY hardware
Want a duck on your desk? Build it. Firmware, PCB files, and print files are all right here.
Firmware PCB Files Print Files
Software
- SwiftUI widget: embedded HTTP + WebSocket server, expression engine, permission gate, and tmux bridge in one app
- Speech stack with Apple STT and on-device TTS by default, plus serial audio paths for supported boards
- Plugin hooks for SessionStart, UserPromptSubmit, Stop, PermissionRequest, SessionEnd, PreCompact, PostCompact, StopFailure, and PostToolUse
- Modes for Companion, Permissions Only, Companion (No Mic), and experimental Relay mode
- Evaluation layers: Apple Foundation Models locally, with optional Claude Haiku and Gemini Flash evaluators
- Privacy posture where default intelligence stays on-device and private, with optional cloud models only when configured. No usage information is collected by IDEO
Software version
Run Duck Duck Duck today, no hardware required. The public release gives you the software-first duck, and the repo has the full source if you want to dig deeper.
Download Software View the GitHub
Build from the source. We have nothing to hide
The public repo includes the widget, plugin, firmware, and helper scripts. If you just want the software companion, the README points people to the macOS release download. If you want the full stack, it also documents how to build the widget from source and connect supported boards.
Known limitations
Works best with Claude CLI.
There is experimental support for Gemini. Good luck!
Run into a problem? Submit an issue . Want to say hello? duckduckduck@ideo.com