个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A robot duck that lives on your Mac. Unofficial desktop pet inspired by Pollen's Microduck. Free, open source.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A 25 cm robot duck walks along the bottom of your screen. It climbs your windows, falls over and gets back up, and talks back. Free and open source.
It is Pollen Robotics' Microduck in simulation: their MuJoCo model and their trained walking policies, from the open source Microduck simulator by Pollen Robotics and Hugging Face. Every step is a trained robot policy driving physics, not an animation.
It also talks back through Claude, keeps your Mac awake when you ask, naps, sulks when ignored, likes being petted and chases a beach ball.
Download the .dmg from Releases, drag Digital Duck to Applications, and open it. Apple Silicon and Intel builds are both there.
A 🦆 appears in the menu bar. That is the whole setup.
brew install media-control; volume works without it. It pauses the music while you talk to it and plays it again after its answer.Right-click the duck, or click 🦆 in the menu bar, for everything else. Settings… (⌘,) has every option in one window.
Chat needs a Claude brain. Either works:
claude CLI is installed and logged in, the duck uses it. Nothing to set up. Replies use your Claude account.Without either, the duck still walks, climbs and plays. It just can't talk back.
Settings → Model picks Haiku (quickest), Sonnet or Opus.
A new duck can only talk. Settings → What the duck can do has four levels (they need Claude Code; the API key brain only chats):
Advanced: flags in extraArgs in the config go to the claude CLI as they are.
Each of these is a switch in Settings:
Alt+D and talk. Needs brew install whisper.cpp and a speech model in models/ inside the config folder (ggml-base.en.bin from whisper.cpp). Transcribed on your Mac.{"message", "source"} object per line).gh CLI to tell you when checks go red or green, or a review lands.mcpServers in the config, so the duck can answer from them. Needs Claude Code.Everything is saved to ~/Library/Application Support/Digital Duck/config.json. Edit raw config… at the bottom of Settings opens it.
What it reads, all on your Mac:
media-control installed: the title, artist and play state of whatever the Mac shows as Now Playing. Without it: whether Music or Spotify is playing, and macOS asks first.gh, only with pull request watch on.What it sends:
No analytics, no telemetry, no accounts. Its notebook, reminders and chat history stay in the config folder. So does app.log, a log of what the app did, kept under about 4 MB. It can include reminder and nudge text, song titles and app names, and never leaves your Mac.
A see-through Electron window covers the screen. Inside, Pollen's MuJoCo model runs in WebAssembly and their trained policies run through ONNX Runtime, 50 times a second, drawn with three.js. A small Swift helper lists your windows, and the top edge of each becomes a ledge in the physics. Chat goes to Claude, and macOS say gives it a voice.
Needs Node 20+, macOS and Xcode command line tools.
git clone https://github.com/gurmundi7/digital-duck
cd digital-duck
npm install
npm start
npm test runs the tests. npm run dist builds the .dmg files into release/. Signing and notarizing use the Apple Developer ID in your Keychain and a notarytool profile set in APPLE_KEYCHAIN_PROFILE.
Debugging: kill -USR2 <pid> writes snap.png (the duck's own render) to the config folder and logs its pose. kill -USR1 <pid> runs debug.js from that folder inside the renderer (duck.sim, duck.behaviour, duck.bubble are global).
electron/ window, menu, brain, speech, helpers (Swift)
renderer/ physics and policy loop, behaviour, bubble, audio
sim/ Pollen's simulator source and assets, unchanged (Apache 2.0)
electron/winlist.swift, the window list that becomes ledges (CoreGraphics)electron/agenda.swift, meeting reminders (EventKit)electron/micwatch.swift, whether a microphone is in use, for call detection (CoreAudio)say voicesbrew install whisper.cppmedia-control, and the Mac volumeBug reports, "can it do X?" ideas and pull requests are welcome. See CONTRIBUTING.md.
The robot, its model, policies, meshes, voices and the simulator are by Pollen Robotics and Hugging Face, under Apache 2.0 (sim/LICENSE-pollen-simulator). The model and the walking policies come from pollen-robotics/microduck and pollen-robotics/microduck_rl. Physics by MuJoCo, rendering by three.js, policies run on ONNX Runtime Web, all inside Electron. Microduck is Pollen Robotics' robot. Digital Duck is not affiliated with or endorsed by Pollen Robotics or Hugging Face. If you like the duck, get the real one.
Digital Duck is Apache 2.0. See LICENSE and NOTICE.