A minimal, opinionated tool for running agent loops.
while true; do cat PROMPT.md | claude --print; doneThis is the "Ralph Wiggum loop" - the simplest possible agent loop. wiggum adds just enough guardrails to make it practical.
- 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)
# Run directly (no install needed)
uvx wiggum init
# Or install globally
uv tool install wiggum
# Upgrade to latest version
uv tool upgrade wiggum# Set up (Claude helps plan your tasks)
wiggum init
# Run the loop
wiggum run# Install dependencies
make sync
# Run tests
make test
# Clean stale build artifacts (dist/, dist.*, build/, *.egg-info)
make clean-build
# Build package
make build
# Publish to PyPI (expects PYPI_TOKEN in env, e.g. from ~/.zshrc.local)
make publishinitcreatesLOOP-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])
Initialize a new loop with LOOP-PROMPT.md, TODO.md, and .wiggum.toml.
wiggum init # Interactive setup with Claude
wiggum init --force # Overwrite existing filesExecute 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 iterationAdd tasks directly from the command line.
wiggum add "Fix the login bug"
wiggum add "Refactor auth module" -f my-tasks.mdShow all tasks grouped by status.
wiggum listUse Claude to discover and suggest tasks interactively.
wiggum suggest # Interactive prompts
wiggum suggest -y # Accept all suggestionsCreate detailed spec files for complex features.
wiggum spec user-auth # Creates specs/user-auth.mdTasks can reference specs: - [ ] Implement auth (see specs/user-auth.md)
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 changesRemove wiggum-managed files.
wiggum clean # Interactive removal
wiggum clean --keep-tasks # Remove config, keep TODO.md
wiggum clean --all # Remove everythingSettings 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 branchesCLI flags override config file settings.
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 PRThe --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
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 CLIwiggum 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 runMIT