An improved implementation of the Ralph Wiggum technique for autonomous AI agent orchestration
  • Rust 79.4%
  • TypeScript 17.2%
  • Python 2.3%
  • Shell 0.8%
Find a file
Mikey O'Brien 557269c2df
docs(config): document global user config for hooks (#298)
Co-authored-by: Mikey O'Brien <rookopenclaw@gmail.com>
2026-04-14 21:40:59 -05:00
.agents Fix links in documentation summary table 2026-03-22 23:58:32 +01:00
.claude Package public Ralph Orchestrator skills 2026-03-09 22:13:19 -05:00
.claude-plugin Package public Ralph Orchestrator skills 2026-03-09 22:13:19 -05:00
.eval feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
.eval-sandbox feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
.github ci: add post-publish smoke test for cargo install 2026-04-04 12:22:22 -04:00
.hooks fix(ci): unify local and GitHub rust gates 2026-03-26 10:42:49 -05:00
.ralph feat: add Rust RPC v1 control plane and migrate web client (#181) 2026-02-24 17:45:05 -06:00
.sops feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
backend/ralph-web-server fix(web): create merge steering directory before retry 2026-03-09 20:55:25 -05:00
bench feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
cassettes feat(e2e): add mock adapter for cost-free E2E testing 2026-01-25 16:41:34 -06:00
crates docs(config): document global user config for hooks (#298) 2026-04-14 21:40:59 -05:00
docs docs(config): document global user config for hooks (#298) 2026-04-14 21:40:59 -05:00
examples feat: per-project orchestrator lifecycle hooks v1 (#215) 2026-03-01 14:16:34 -06:00
frontend/ralph-web Fix CI failures for MCP server PR 2026-03-07 15:48:31 -06:00
presets feat: improve rich TUI tool output and e2e harness (#276) 2026-03-26 19:49:37 -05:00
prompts Ralph checkpoint 5 2025-09-08 17:42:09 -05:00
scripts fix(ci): unify local and GitHub rust gates 2026-03-26 10:42:49 -05:00
skills feat(diagnostics): log full prompt to diagnostics session (#240) 2026-03-13 22:22:08 -05:00
specs feat: add agent waves for intra-loop parallel hat execution (#210) 2026-03-19 13:47:19 -05:00
tools feat: improve rich TUI tool output and e2e harness (#276) 2026-03-26 19:49:37 -05:00
.dockerignore Complete production documentation and deployment infrastructure 2025-09-07 21:34:52 -05:00
.gitignore Ignore Claude worktree state 2026-03-19 10:39:18 -05:00
.nvmrc fix(web): use tsc+node for backend dev, pin Node 22 2026-01-28 19:34:54 -06:00
AGENTS.md feat: add agent waves for intra-loop parallel hat execution (#210) 2026-03-19 13:47:19 -05:00
Cargo.lock release: prepare v2.9.2 2026-04-10 11:48:18 -05:00
Cargo.toml release: prepare v2.9.2 2026-04-10 11:48:18 -05:00
CHANGELOG.md fix(adapters): isolate child Claude settings sources (#294) 2026-04-10 20:18:24 -05:00
CLAUDE.md feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
code-base-summary.md feat(adapters): add roo-cli as a backend provider (#219) 2026-03-13 23:05:44 -05:00
CODE_OF_CONDUCT.md docs: reorganize documentation and add governance files 2026-01-26 21:22:00 -06:00
CONTRIBUTING.md Automate README coverage badge via Pages 2026-03-19 10:35:59 -05:00
DEVELOPMENT.md feat(cli): add shell completions support (#152) 2026-02-14 20:57:01 -06:00
devenv.lock feat: add Rust RPC v1 control plane and migrate web client (#181) 2026-02-24 17:45:05 -06:00
devenv.nix ci: shift left — merge clippy into test job, local coverage, pre-push hook 2026-03-13 23:03:21 -05:00
devenv.yaml feat(cli): add shell completions support (#152) 2026-02-14 20:57:01 -06:00
docker-compose.yml Update default passwords and fix auth verify endpoint method 2025-09-08 18:02:33 -05:00
Dockerfile Complete production documentation and deployment infrastructure 2025-09-07 21:34:52 -05:00
flake.lock feat: per-project orchestrator lifecycle hooks v1 (#215) 2026-03-01 14:16:34 -06:00
flake.nix feat(cli): add shell completions support (#152) 2026-02-14 20:57:01 -06:00
FUNDING.md web: harden tsx preflight + add funding metadata (#191) 2026-02-25 10:51:45 -06:00
Justfile Automate README coverage badge via Pages 2026-03-19 10:35:59 -05:00
LICENSE feat: add comprehensive documentation and static site 2025-09-07 20:41:01 -05:00
mise.toml fix(web): use tsc+node for backend dev, pin Node 22 2026-01-28 19:34:54 -06:00
mkdocs.yml feat: add agent waves for intra-loop parallel hat execution (#210) 2026-03-19 13:47:19 -05:00
package-lock.json release: prepare v2.9.2 2026-04-10 11:48:18 -05:00
package.json release: prepare v2.9.2 2026-04-10 11:48:18 -05:00
PROMPT-QA.md Merge pull request #138 from mikeyobrien/feature/bot-daemon 2026-01-30 11:38:02 -06:00
PROMPT.md Merge pull request #138 from mikeyobrien/feature/bot-daemon 2026-01-30 11:38:02 -06:00
ralph.bot.yml Package public Ralph Orchestrator skills 2026-03-09 22:13:19 -05:00
ralph.e2e.yml feat: web dashboard, parallel loops, REST API, and release fixes (#132) 2026-01-28 16:09:19 -06:00
ralph.m.yml chore: auto-commit before merge (loop primary) 2026-02-14 03:00:01 +00:00
ralph.pi.yml fix(tui): accumulate Pi text deltas for flowing paragraph rendering (#206) 2026-02-28 09:52:04 -06:00
ralph.qa.yml refactor(core,api,e2e,tui): replace deprecated Duration methods with from_secs (#205) 2026-02-26 16:39:32 -06:00
ralph.reviewer.yml fix(tui): accumulate Pi text deltas for flowing paragraph rendering (#206) 2026-02-28 09:52:04 -06:00
ralph.roo.yml feat(adapters): add roo-cli as a backend provider (#218) 2026-03-13 22:45:30 -05:00
ralph.yml Package public Ralph Orchestrator skills 2026-03-09 22:13:19 -05:00
README.md release: prepare v2.9.0 2026-04-03 09:33:12 -05:00
run_test.sh refactor: simplify round 1 — fix flaky tests, remove redundant clones, deduplicate now_ts (#216) 2026-03-01 15:35:13 -06:00
uv.lock feat: Ralph Orchestrator 2.0 - Rust rewrite with hat-based architecture 2026-01-16 10:50:59 -06:00
ux-findings.md feat: add Rust RPC v1 control plane and migrate web client (#181) 2026-02-24 17:45:05 -06:00

Ralph Orchestrator

License Rust Build Coverage Mentioned in Awesome Claude Code Docs Discord

A hat-based orchestration framework that keeps AI agents in a loop until the task is done.

"Me fail English? That's unpossible!" - Ralph Wiggum

Documentation | Getting Started | Presets

Installation

npm install -g @ralph-orchestrator/ralph-cli

Via GitHub Releases installer

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/mikeyobrien/ralph-orchestrator/releases/latest/download/ralph-cli-installer.sh | sh

Via Cargo

cargo install ralph-cli

Homebrew is not currently published from this repository's automated release flow. Prefer npm, Cargo, or the GitHub Releases installer.

Quick Start

# 1. Initialize Ralph with your preferred backend
ralph init --backend claude

# 2. Plan your feature (interactive PDD session)
ralph plan "Add user authentication with JWT"
# Creates: specs/user-authentication/requirements.md, design.md, implementation-plan.md

# 3. Implement the feature
ralph run -p "Implement the feature in specs/user-authentication/"

Ralph iterates until it outputs LOOP_COMPLETE or hits the iteration limit.

For simpler tasks, skip planning and run directly:

ralph run -p "Add input validation to the /users endpoint"

Web Dashboard (Alpha)

Alpha: The web dashboard is under active development. Expect rough edges and breaking changes.

image

Ralph includes a web dashboard for monitoring and managing orchestration loops.

ralph web                              # starts Rust RPC API + frontend + opens browser
ralph web --no-open                    # skip browser auto-open
ralph web --backend-port 4000          # custom RPC API port
ralph web --frontend-port 8080         # custom frontend port
ralph web --legacy-node-api            # opt into deprecated Node tRPC backend

MCP Server Workspace Scope

ralph mcp serve is scoped to a single workspace root per server instance.

ralph mcp serve --workspace-root /path/to/repo

Precedence is:

  1. --workspace-root
  2. RALPH_API_WORKSPACE_ROOT
  3. current working directory

For multi-repo use, run one MCP server instance per repo/workspace. Ralph's current control-plane APIs persist config, tasks, loops, planning sessions, and collections under a single workspace root, so server-per-workspace is the deterministic model.

Requirements:

  • Rust toolchain (for ralph-api)
  • Node.js >= 18 + npm (for the frontend)

On first run, ralph web auto-detects missing node_modules and runs npm install.

To set up Node.js:

# Option 1: nvm (recommended)
nvm install    # reads .nvmrc

# Option 2: direct install
# https://nodejs.org/

For development:

npm install              # install frontend + legacy backend deps
npm run dev:api          # Rust RPC API (port 3000)
npm run dev:web          # frontend (port 5173)
npm run dev              # frontend only (default)
npm run dev:legacy-server  # deprecated Node backend (optional)
npm run test             # all frontend/backend workspace tests

MCP Server Mode

Ralph can run as an MCP server over stdio for MCP-compatible clients:

ralph mcp serve

Use this mode from an MCP client configuration rather than an interactive terminal workflow.

What is Ralph?

Ralph implements the Ralph Wiggum technique — autonomous task completion through continuous iteration. It supports:

  • Multi-Backend Support — Claude Code, Kiro, Gemini CLI, Codex, Amp, Copilot CLI, OpenCode
  • Hat System — Specialized personas coordinating through events
  • Backpressure — Gates that reject incomplete work (tests, lint, typecheck)
  • Memories & Tasks — Persistent learning and runtime work tracking
  • 5 Supported Builtinscode-assist, debug, research, review, and pdd-to-code-assist, with more patterns documented as examples

RObot (Human-in-the-Loop)

Ralph supports human interaction during orchestration via Telegram. Agents can ask questions and block until answered; humans can send proactive guidance at any time.

Quick onboarding (Telegram):

ralph bot onboard --telegram   # guided setup (token + chat id)
ralph bot status               # verify config
ralph bot test                 # send a test message
ralph run -c ralph.bot.yml -p  "Help the human"
# ralph.yml
RObot:
  enabled: true
  telegram:
    bot_token: "your-token"  # Or RALPH_TELEGRAM_BOT_TOKEN env var
  • Agent questions — Agents emit human.interact events; the loop blocks until a response arrives or times out
  • Proactive guidance — Send messages anytime to steer the agent mid-loop
  • Parallel loop routing — Messages route via reply-to, @loop-id prefix, or default to primary
  • Telegram commands/status, /tasks, /restart for real-time loop visibility

See the Telegram guide for setup instructions.

Documentation

Full documentation is available at mikeyobrien.github.io/ralph-orchestrator:

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines and CODE_OF_CONDUCT.md for community standards.

License

MIT License — See LICENSE for details.

💬 Community & Support

Join the ralph-orchestrator community to discuss AI agent patterns, get help with your implementation, or contribute to the roadmap.

  • Discord: Join our server to chat with the maintainers and other users in real-time.
  • GitHub Issues: For bug reports and formal feature requests, please use the Issue Tracker.

Acknowledgments


"I'm learnding!" - Ralph Wiggum