Application Settings
Access settings via:- Menu bar icon → Settings
- Global hotkey:
Option+Shift+D
API Key Configuration
Rubber Duck requires an OpenAI API key for the Realtime API and Pi agent.Get an API key
Visit platform.openai.com/api-keys to create an API key.
Enter the key in Settings
Open Settings and paste your API key in the “OpenAI API Key” field.The key is stored securely in the macOS Keychain, never in plain text files.
Voice Agent Settings
Voice Selection
Choose from OpenAI Realtime API voices:- Marin (default)
- Cedar
- Alloy
- Ash
- Ballad
- Coral
- Echo
- Sage
- Shimmer
- Verse
Model Selection
Currently supports:- GPT Realtime 1.5 (gpt-realtime-1.5)
Auto-Abort on Barge-In
Enabled by default. Controls what happens when you interrupt the assistant:Enabled (Default Behavior)
Enabled (Default Behavior)
When you start speaking while the assistant is talking:
- TTS stops immediately
- Current agent run is aborted
- Running bash commands are interrupted
- Your new speech starts a fresh conversation turn
Disabled (Steering Behavior)
Disabled (Steering Behavior)
When you interrupt:
- TTS stops immediately
- Your speech is sent as a steering message
- Current tool completes before handling your input
- Remaining planned tools are skipped
Safe Mode
Safe mode restricts the agent’s tool capabilities to prevent potentially destructive operations.When Enabled
- Write/edit tools are disabled: Agent cannot modify files
- Bash commands are restricted to a safe allowlist:
git(read-only operations)rg(ripgrep)sed,awk- Test runners (npm test, pytest, etc.)
- Read and search tools remain available
When to Use Safe Mode
Exploring unfamiliar codebases
Enable safe mode when asking questions about code you don’t want modified.
Session Storage Configuration
Rubber Duck manages Pi sessions in a dedicated directory by default.Default Storage Location
Sessions are stored at:- Full conversation history
- Tool call records
- Message tree structure (supports branching)
Global Pi Sessions (Advanced)
Using Global Pi Session Directory
Using Global Pi Session Directory
Advanced users can enable “Use global Pi sessions” to share sessions between Rubber Duck and Pi’s standalone CLI.Pros:
- Resume conversations started in Pi CLI via Rubber Duck voice
- Single session history across tools
- Potential conflicts if both tools access the same session
- Sessions from Pi CLI may not be optimized for voice output
~/.config/pi/sessions/)CLI Daemon Configuration
Theduck CLI daemon has additional configuration options:
Configuration File
Location:~/Library/Application Support/RubberDuck/config.json
Automatically created on first run with defaults.
Environment Variables
RUBBER_DUCK_PI_MODEL
RUBBER_DUCK_PI_MODEL
Override the default Pi model:Default:
gpt-4o-mini (when OPENAI_API_KEY is set)RUBBER_DUCK_PI_THINKING
RUBBER_DUCK_PI_THINKING
Set Pi’s thinking level (extended reasoning):Options:
off (default), minimal, low, medium, high, xhighNote: Higher thinking levels increase latency but may improve complex reasoning.RUBBER_DUCK_PI_BINARY
RUBBER_DUCK_PI_BINARY
Override the Pi binary path:Default resolution order:
RUBBER_DUCK_PI_BINARYenv var- Local
cli/node_modules/.bin/pi - Global
pifrom PATH
RUBBER_DUCK_PI_PROVIDER
RUBBER_DUCK_PI_PROVIDER
Force a specific provider:Options:
openai, anthropicKeyboard Shortcuts
Configure global hotkeys in Settings:Default Shortcuts
- Activate voice:
Option+D - Open Settings:
Option+Shift+D
Launch at Login
Enable “Launch at login” to start Rubber Duck automatically when you log in to macOS.Permissions
Microphone Access
Required for voice input. Grant permission when prompted on first use. If permission was denied:- Open Settings
- Click “Open Settings” next to Microphone
- Grant microphone access to Rubber Duck
Workspace Confinement
For security, all file operations and bash commands are:- Executed with
cwdset to the workspace root - Prevented from escaping via
..or absolute paths - Restricted to the attached workspace directory
Updates
Update Settings
- Automatically check for updates: Checks GitHub releases periodically
- Automatically download updates: Downloads but doesn’t install until you approve
Manual Updates
Click Check for Updates… in Settings or:Runtime Files
All Rubber Duck runtime files are stored in:metadata.json— Workspace and session metadataconfig.json— Daemon configurationduck-daemon.log— Daemon lifecycle logduck-daemon.pid— Running daemon process IDduck.sock— Unix domain socket for IPCpi-sessions/— Pi session JSONL filesduck— CLI binary (downloaded on first launch)
Viewing Logs
Click Show Logs in Settings to open the log file in your default text editor. Logs contain:- Daemon start/stop events
- Session creation/switching
- API errors and warnings
- Tool execution failures