Skip to main content

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 TASKS.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

  1. init creates LOOP-PROMPT.md (workflow) and TASKS.md (task list)
  2. run executes Claude with the prompt, checks TASKS.md after each iteration
  3. Loop stops when all tasks are checked off (- [x])

Commands

init

Initialize a new loop with LOOP-PROMPT.md, TASKS.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 --identify-tasks   # Analyze codebase, populate TASKS.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 TASKS.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

[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:

  1. Fetches and merges from main
  2. Creates a new branch (e.g., wiggum/fix-auth-bug)
  3. Runs the loop
  4. 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


Download files

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

Source Distribution

wiggum-0.6.1.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

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

wiggum-0.6.1-py3-none-any.whl (36.0 kB view details)

Uploaded Python 3

File details

Details for the file wiggum-0.6.1.tar.gz.

File metadata

  • Download URL: wiggum-0.6.1.tar.gz
  • Upload date:
  • Size: 28.4 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

Hashes for wiggum-0.6.1.tar.gz
Algorithm Hash digest
SHA256 87a1d308c46e41a6c81a56dc3c75c2ed7881912682f3a25bca6458fb326e78b1
MD5 1eacf1e2ea44006e6f8aa948b7345cd4
BLAKE2b-256 bd79a52f689b3c128adfa25b1e02c39e7bd03057c8769af149f2d380f45ae686

See more details on using hashes here.

File details

Details for the file wiggum-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: wiggum-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 36.0 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

Hashes for wiggum-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aa5e047d9a0275446dfbdd08900a35d31cf1e6f8d9508c07ef82d28e3ac07fec
MD5 5c79954a92ba11e3f565d35505ad3d5b
BLAKE2b-256 64de5997b2aa44ceeae96af63b85e6e4b1abfeaf781c9baff33545194a2eeed1

See more details on using hashes here.

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