Skip to main content

HeyDucky — your AI rubber duck that actually talks back. Voice-controlled debugging assistant for your terminal.

Project description

HeyDucky 🦆

Your AI rubber duck that actually talks back.

HeyDucky is a voice-controlled AI debugging assistant that runs in your terminal. Press Space, describe your problem out loud, and the AI reads your code, sets breakpoints, steps through execution, and explains what it finds — all hands-free.

Think rubber duck debugging, except the duck is an AI that understands your codebase, controls your debugger, and talks back.

Built with Textual for the TUI, Claude for the AI, and faster-whisper for local speech-to-text.

Install

macOS (recommended):

curl -fsSL https://raw.githubusercontent.com/IdanG7/HeyDucky/master/install.sh | bash

Homebrew:

brew tap IdanG7/heyducky https://github.com/IdanG7/HeyDucky
brew install heyducky

pipx (if you already have portaudio):

pipx install heyducky[tts]

From source:

git clone https://github.com/IdanG7/HeyDucky.git
cd TalkToMe
pip install -e ".[tts,dev]"

Quick Start

# First-time setup — configure your Anthropic API key
ducky --setup

# Talk to the duck about a project
ducky --project /path/to/your/code

# Debug a Python script
ducky script.py

# Just launch in the current directory
ducky

How It Works

HeyDucky combines three things that make debugging less painful:

  1. Voice input — explain your bug out loud instead of typing. Local Whisper transcription keeps your audio private.
  2. AI understanding — Claude reads your code, understands the context, and drives the debugger for you.
  3. Real debugger control — not just chat. HeyDucky sets breakpoints, steps through code, inspects variables, and evaluates expressions via the Debug Adapter Protocol (DAP).

Usage

Chat Mode

ducky
ducky --project ~/myapp

Press Space to talk. The AI can read files, browse the project tree, run git commands, and discuss your code. No debugger attached — this is pure conversation with full tool access.

Debug Mode

ducky script.py
ducky --project ~/myapp src/main.py

Launches the script under a debug adapter. The AI can set breakpoints, step through code, inspect variables, and evaluate expressions — all via voice.

Remote Debug

# On the remote machine:
debugpy --listen 0.0.0.0:5678 --wait-for-client script.py

# On your machine:
ducky --attach 192.168.1.50:5678 --language python \
    --path-map /home/user/project=/Users/me/project

Connects to a debug adapter running on another machine. Use --path-map to map remote paths to local source.

Supported languages: Python, C/C++, Go, Rust

Keyboard Shortcuts

Key Action
Space Push-to-talk (hold or toggle)
1-5 Switch tabs (Source, Chat, Variables, Stack, Output)
t Toggle focus: file tree / source
o Open a different project
h Browse chat history
s Settings
e Export session to markdown
m Mute/unmute TTS
F5 Continue execution
F10 Step over
F11 Step into
q Quit

Configuration

Config lives at ~/.config/ducky/config.toml. Run ducky --setup to edit interactively, or edit the file directly:

[ai]
provider = "claude"
model = "claude-sonnet-4-5-20250929"
api_key = "sk-ant-..."
compaction_enabled = true

[voice]
whisper_model = "base.en"       # tiny.en | base.en | small.en
sample_rate = 16000
silence_threshold = 0.02
silence_duration = 1.5

[tts]
enabled = false
api_key = ""                    # ElevenLabs API key
voice_id = "UgBBYS2sOqTuMpoF3BR0"

[appearance]
theme = "textual-dark"

You can also set ANTHROPIC_API_KEY as an environment variable instead of putting it in the config file.

Requirements

  • macOS (primary platform)
  • Python 3.10+
  • portaudio (brew install portaudio) — for microphone access
  • Anthropic API key — for Claude
  • Microphone — for voice input

Optional:

  • ElevenLabs API key — for text-to-speech (the duck talks back!)
  • debugpy (included) — for Python debugging
  • lldb-dap — for C/C++ debugging
  • delve — for Go debugging
  • codelldb — for Rust debugging

Development

git clone https://github.com/IdanG7/HeyDucky.git
cd TalkToMe
make install    # editable install with dev deps
make test       # run tests
make lint       # run ruff
make check      # lint + format check + tests

See CONTRIBUTING.md for full development setup and guidelines.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heyducky-0.1.0.tar.gz (59.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

heyducky-0.1.0-py3-none-any.whl (79.9 kB view details)

Uploaded Python 3

File details

Details for the file heyducky-0.1.0.tar.gz.

File metadata

  • Download URL: heyducky-0.1.0.tar.gz
  • Upload date:
  • Size: 59.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for heyducky-0.1.0.tar.gz
Algorithm Hash digest
SHA256 268906cd4ce9f98e917f958ba70a05c2c257152270d4d71b3fd62f884281f51e
MD5 c57f65d40f1811f5134cb8c6d396c775
BLAKE2b-256 54ed0bff0181c6e4b3e0ef15fae9d9bf5d4536f85be022c2168e71017a5285d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for heyducky-0.1.0.tar.gz:

Publisher: publish.yml on IdanG7/HeyDucky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file heyducky-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: heyducky-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 79.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for heyducky-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 194b3793824c2dd2a9f086d09492b9ab16d7b97c9d56f9228010a0322fafa417
MD5 cb46d0691817c7d8606b502af213b634
BLAKE2b-256 54080ce42e8d0f6eab83b6b394d5e46dc6c903103826294b8ba34c4308769b9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for heyducky-0.1.0-py3-none-any.whl:

Publisher: publish.yml on IdanG7/HeyDucky

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page