Skip to main content

Quick CLI do-it-all tool. Use natural language to spit out bash commands

Project description

Rubber Ducky

Turn natural language into bash commands without leaving your terminal.

Rubber Ducky is an inline terminal companion that transforms your prompts into runnable shell commands. Paste multi-line context, get smart suggestions, and execute commands instantly.


Quick Start

# Install globally (recommended)
uv tool install rubber-ducky

# Run interactively
ducky

# Quick one-shot
ducky "list all files larger than 10MB in current directory"

# From CLI with options
ducky --model qwen3
ducky --directory src
ducky --local

# Or use uvx (requires -- separator)
uvx rubber-ducky -- --model qwen3

Both ducky and rubber-ducky executables work identically.

Requirements

  • Ollama (running locally or using cloud models)
  • Python 3.10+

Features

  • Natural to Shell - Describe what you want, get the bash command
  • Model Flexibility - Switch between local Ollama models and cloud models
  • Crumbs - Save and reuse commands with argument substitution
  • Piped Input - Pipe output from other commands directly to ducky
  • Interactive REPL - Rich terminal experience with history and shortcuts
  • Code Context - Preload project code for AI awareness
  • Clipboard Support - Copy commands across macOS, Windows, and Linux

Key Concepts

REPL (Interactive Mode)

Launch ducky to start an inline session:

ducky

Key controls:

  • Enter - Submit prompt
  • Ctrl+J - Insert newline (for multi-line prompts)
  • Empty Enter - Rerun last command or explain shell output
  • Ctrl+R - Re-run last suggested command
  • Ctrl+S - Copy last command to clipboard
  • !<cmd> - Run shell command immediately
  • Arrow keys - Browse history
  • Ctrl+D - Exit

Models

Rubber Ducky supports both local and cloud models:

  • /model - Interactive model selection
  • /local - List local models (localhost:11434)
  • /cloud - List cloud models (ollama.com)
  • Last used model is saved automatically

Startup flags:

  • --local / -l - Use local Ollama with qwen3 default
  • --model <name> / -m - Specify model directly

Crumbs

Crumbs are saved command shortcuts. Store frequently-used commands or complex workflows:

>> How do I list all running Python processes?
...
Suggested: ps aux | grep python | grep -v grep
>> /crumb pyprocs
Saved crumb 'pyprocs'!

Invoke crumb:

>> pyprocs
Crumb: pyprocs
Command: ps aux | grep python | grep -v grep
...

With argument substitution:

# Crumb command: git worktree add "../$var-$other" -b $var3
ducky at feature backend develop
# Executes: git worktree add "../feature-backend" -b develop

Usage Guide

Interactive Mode

Default mode. Perfect for development sessions.

ducky

Load code context for better suggestions:

ducky --directory src

Single-Shot Mode

Get one command suggestion and exit.

ducky "find all TODO comments in src/"

Copy to clipboard automatically:

ducky "build and run tests"

Piped Input

Process text from other commands:

cat error.log | ducky "what's wrong here?"
git diff | ducky "summarize these changes"

Run Without Confirmation

Auto-execute suggested commands:

ducky --yolo "restart the nginx service"

Crumbs Quick Reference

Command Description
/crumbs List all saved crumbs
/crumb <name> Save last command as crumb
/crumb add <name> <cmd> Manually add crumb
/crumb del <name> Delete crumb
<name> Execute crumb
/crumb help Detailed crumb help

Argument Substitution:

Crumbs support ${VAR} and $var placeholder styles:

# Create crumb with placeholders
git worktree add "../$var-$other" -b $var3

# Invoke with arguments
ducky at feature backend develop

Both styles are interchangeable.


Command Reference

Inline Commands

Command Action
/help Show all commands
/clear / /reset Clear conversation history
/model Select model (interactive)
/local List local models
/cloud List cloud models
/run / :run Re-run last command
/expand Show full output of last shell command

CLI Flags

Flag Description
--directory <path> / -d Preload code from directory
--model <name> / -m Specify Ollama model
--local / -l Use local Ollama (qwen3 default)
--yolo / -y Auto-run without confirmation
<prompt> Single prompt mode (copied to clipboard)

Tips & Tricks

Efficient Workflows

# Preload project context
ducky --directory src

# Reuse complex commands with crumbs
docker ps | ducky "kill all containers"
>> /crumb killall

# Chain commands
!ls -la
ducksy "find large files"

# Use history
[] Recall previous prompts
[] Navigate command history

Keyboard Shortcuts Reference

Key Action
Enter Submit prompt
Ctrl+J Insert newline
Empty Enter Rerun last command or explain
Ctrl+R Re-run last suggested command
Ctrl+S Copy to clipboard
Ctrl+D Exit
!cmd Run shell command directly

Crumb Patterns

# Save after complex command
>> docker-compose up -d && wait && docker-compose logs
>> /crumb start-logs

# Manually add with arguments
>> /crumb add deploy-prod docker build -t app:latest && docker push app:latest

# Use for common workflows
>> ls -la
find . -type f -name "*.py" | xargs wc -l
>> /crumb count-py

Storage

Rubber Ducky stores data in ~/.ducky/:

File Purpose
prompt_history readline-compatible history
conversation.log JSON log of all interactions
config User preferences (last model)
crumbs.json Saved crumb shortcuts

Delete the entire directory for a fresh start.


Development

# Clone and setup
git clone <repo>
cd ducky
uv sync

# Run
uv run ducky --help
uv run ducky

# Lint
uv run ruff check .

License

MIT © 2023 Parth Sareen

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

rubber_ducky-1.6.5.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

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

rubber_ducky-1.6.5-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file rubber_ducky-1.6.5.tar.gz.

File metadata

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

File hashes

Hashes for rubber_ducky-1.6.5.tar.gz
Algorithm Hash digest
SHA256 a21ea5b0e46599e856624728fe8516cb841302e96ecc8ab7ff763c3c6aa9c938
MD5 08af1bdc88fc1f355e3e5e76b55760ec
BLAKE2b-256 2522b3ac48184ae40778add8ac05e7d3bac72c13b293163b00758317e80b8b14

See more details on using hashes here.

Provenance

The following attestation bundles were made for rubber_ducky-1.6.5.tar.gz:

Publisher: python-publish.yml on ParthSareen/ducky

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

File details

Details for the file rubber_ducky-1.6.5-py3-none-any.whl.

File metadata

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

File hashes

Hashes for rubber_ducky-1.6.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0d95693080068cc07518bad42f03f56193b15f649abf5d3690b7463b5ca98718
MD5 fb2c30fb9af6a918d09e47615cde4258
BLAKE2b-256 48107652a1b4e354ae89702f6398e2f168d65755ed395b8d7a6210513caa6d48

See more details on using hashes here.

Provenance

The following attestation bundles were made for rubber_ducky-1.6.5-py3-none-any.whl:

Publisher: python-publish.yml on ParthSareen/ducky

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