Run iterative agent loops with task tracking
Project description
wiggum
A minimal, opinionated tool for running agent loops.
while true; do cat PROMPT.md | claude --print; done
This is the "Ralph Wiggum loop" - the simplest possible agent loop. wiggum adds just enough guardrails to make it practical.
Philosophy
- Simple - prefer simplicity whenever possible
- Minimal - does one thing well: run a prompt in a loop until tasks are done
- Opinionated - sensible defaults, few options
- Unobtrusive - infer what you can, don't ask obvious questions
- Task-driven - stops when TODO.md has no unchecked items
- Test-driven - write tests first for new behavior; skip tests for trivial changes (renames, constants, config)
Installation
# Run directly (no install needed)
uvx wiggum init
# Or install globally
uv tool install wiggum
# Upgrade to latest version
uv tool upgrade wiggum
Quick Start
# Set up (Claude helps plan your tasks)
wiggum init
# Run the loop
wiggum run
How It Works
initcreatesLOOP-PROMPT.md(workflow) andTODO.md(task list)runexecutes Claude with the prompt, checks TODO.md after each iteration- Loop stops when all tasks are checked off (
- [x])
Commands
init
Initialize a new loop with LOOP-PROMPT.md, TODO.md, and .wiggum.toml.
wiggum init # Interactive setup with Claude
wiggum init --force # Overwrite existing files
run
Execute the agent loop until all tasks are complete.
wiggum run # Run with defaults
wiggum run -n 5 # Max 5 iterations
wiggum run --continue # Keep context between iterations
wiggum run --keep-running # Continue when tasks complete (agent can add new)
wiggum run --timeout 900 # Kill hung agent calls after 15 minutes
wiggum run --identify-tasks # Analyze codebase, populate TODO.md, then exit
wiggum run --no-yolo # Ask for permissions
wiggum run -v # Show git status after each iteration
add
Add tasks directly from the command line.
wiggum add "Fix the login bug"
wiggum add "Refactor auth module" -f my-tasks.md
list
Show all tasks grouped by status.
wiggum list
suggest
Use Claude to discover and suggest tasks interactively.
wiggum suggest # Interactive prompts
wiggum suggest -y # Accept all suggestions
spec
Create detailed spec files for complex features.
wiggum spec user-auth # Creates specs/user-auth.md
Tasks can reference specs: - [ ] Implement auth (see specs/user-auth.md)
upgrade
Upgrade wiggum-managed files to the latest template versions.
wiggum upgrade # Upgrade all files
wiggum upgrade prompt # Only LOOP-PROMPT.md
wiggum upgrade config # Only .wiggum.toml
wiggum upgrade --dry-run # Preview changes
clean
Remove wiggum-managed files.
wiggum clean # Interactive removal
wiggum clean --keep-tasks # Remove config, keep TODO.md
wiggum clean --all # Remove everything
Configuration
Settings are stored in .wiggum.toml:
[security]
yolo = true # Skip permission prompts (default: true)
allow_paths = "" # Comma-separated paths to allow writing
[loop]
max_iterations = 10 # Default iteration limit
timeout = 1800 # Per-iteration agent timeout in seconds
[git]
enabled = false # Enable git workflow
branch_prefix = "wiggum" # Prefix for auto-generated branches
CLI flags override config file settings.
Git Workflow
Create branches and PRs automatically:
wiggum run --pr # Create branch, run loop, open PR when done
wiggum run --pr --no-branch # Use current branch, still create PR
The --pr flag:
- Fetches and merges from main
- Creates a new branch (e.g.,
wiggum/fix-auth-bug) - Runs the loop
- Opens a PR when complete
Multi-Agent Support
wiggum supports multiple coding agents:
wiggum run --agent claude # Claude Code (default)
wiggum run --agent codex # OpenAI Codex CLI
wiggum run --agent gemini # Google Gemini CLI
Learning Diary
wiggum automatically captures learnings during each session in .wiggum/session-diary.md. After the loop completes, it consolidates these into your CLAUDE.md for future sessions.
wiggum run --no-diary # Disable diary for this run
wiggum run --no-consolidate # Skip consolidation after run
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wiggum-0.10.3.tar.gz.
File metadata
- Download URL: wiggum-0.10.3.tar.gz
- Upload date:
- Size: 35.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3c404c6890ff85bd659755ed53d0149c33dc2ed570b190a1dc8222509174103
|
|
| MD5 |
bf1f893b481adcd2c1bcdd16f7913594
|
|
| BLAKE2b-256 |
88c3d88fe48b73e9ed2bf9d304743e32af59920d4397a8e0d03c9ff892c39803
|
File details
Details for the file wiggum-0.10.3-py3-none-any.whl.
File metadata
- Download URL: wiggum-0.10.3-py3-none-any.whl
- Upload date:
- Size: 44.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e4f3241f0533b9999bad7498b5aace7318d9c99199313d150e1f457356bea92
|
|
| MD5 |
a729488a6b3ebab228bc2c3ce90a1746
|
|
| BLAKE2b-256 |
25ae978356afe0c1e74a75a28689b8da318752a74878270f73641337dabdf431
|