Skip to main content

Autonomous continuous development orchestrator for Claude Code

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

radioactive-ralph

Autonomous continuous development orchestrator for Claude Code.

Autonomous continuous development orchestrator for Claude Code.

PyPI CI Vulnerabilities Docs MIT License

What it is

radioactive-ralph drives Claude Code across a portfolio of git repos — continuously, without human intervention. It ships in two modes:

  1. As a Claude Code plugin — a family of ten /ralph variants you run directly inside a Claude Code session. No separate daemon, no API key setup, no subprocess orchestration.
  2. As a standalone Python daemonpip install radioactive-ralph and run ralph run to get a persistent loop that survives context resets, spawns claude --print subprocesses, and lives outside any Claude Code session.

The only time you should be engaged is to brainstorm the vision.

Ralph has many forms

radioactive-ralph is not one skill. It's a family of ten, each a genuinely distinct operating mode with its own model tiering, parallelism, tool allowlist, and termination condition. See the variants index for more details.

Variant One-liner Gate
/green-ralph The Classic. Unlimited loop, all repos, sensible model tiering.
/grey-ralph The First Form. Single repo, haiku only, file hygiene.
/red-ralph The Principal. Single cycle, CI failures + PR blockers, structured report.
/blue-ralph The Observer. Read-only — Write/Edit structurally excluded.
/professor-ralph The Integrated. Opus plan → sonnet execute → sonnet reflect.
/joe-fixit-ralph The Fixer. N cycles, single repo, ROI-scored, prints a bill.
/immortal-ralph The One Who Comes Back. Crash-resistant. Obsessive state persistence.
/savage-ralph The Mindless. 10 parallel, +1 tier escalation, zero sleep. --confirm-burn-budget
/old-man-ralph The Maestro. Force-resets branches, resolves conflicts -X ours. --confirm-no-mercy
/world-breaker-ralph The World Breaker. Every agent opus. All repos. Zero sleep. --confirm-burn-everything

Install as a Claude Code plugin

# Add this repo as a marketplace
claude plugins marketplace add github:jbcom/radioactive-ralph

# Install
claude plugin install radioactive-ralph@radioactive-ralph

# Then, inside Claude Code:
/green-ralph

All ten variants are installed at once. Use whichever you need per-session.

Install as a standalone daemon

# Run instantly — no install required
uvx radioactive-ralph run

# Or install permanently
pip install radioactive-ralph
ralph run

How the daemon mode works

┌─────────────────────────────────────────────────────┐
│                  radioactive-ralph                   │
│                   (Python daemon)                    │
│                                                      │
│  scan PRs → merge ready → review → address feedback  │
│       → discover work → spawn agents → loop          │
│                                                      │
│  State: ~/.radioactive-ralph/state.json              │
└──────────────┬──────────────────────────────────────┘
               │ spawns
               ▼
┌─────────────────────────────────────────────────────┐
│            claude CLI subprocesses                   │
│        (one per repo, run in parallel)               │
│                                                      │
│  Each agent: reads context, does work, opens PR      │
└─────────────────────────────────────────────────────┘

Model tiering

Task Model
Doc sweeps, frontmatter, bulk cleanup claude-haiku-4-5
Feature work, bug fixes, PR review claude-sonnet-4-6 (default)
Architecture, security, vision claude-opus-4-6

Each variant has its own model tiering policy — see the individual skill READMEs.

Configuration

Create ~/.radioactive-ralph/config.toml:

[orgs]
arcade-cabinet = "~/src/arcade-cabinet"
jbcom = "~/src/jbcom"

bulk_model = "claude-haiku-4-5-20251001"
default_model = "claude-sonnet-4-6"
deep_model = "claude-opus-4-6"
max_parallel_agents = 5

Set ANTHROPIC_API_KEY in your environment (daemon mode only — the plugin mode uses your existing Claude Code session).

Commands (daemon mode)

ralph run               # Start the daemon
ralph dashboard         # Open the live Rich terminal dashboard (reads state)
ralph status            # Show current state
ralph discover          # Show discovered work items
ralph pr list           # List all open PRs with classification
ralph pr merge          # Merge all MERGE_READY PRs
ralph doctor            # Run diagnostic health checks on the environment
ralph doctor --json     # Same checks, JSON output for CI/scripting
ralph stop              # Stop the running daemon
ralph install-skill     # Install a skill variant into ~/.claude/skills/

The dashboard command is read-only — it tails ~/.radioactive-ralph/state.json every second and renders a live multi-panel view (PRs, work queue, active agents, recent Ralph events, and stats footer). Run it in a second terminal alongside ralph run. Theme it with any variant: ralph dashboard -v old-man-ralph.

Personality

radioactive-ralph logs in the voice of Ralph Wiggum. Every variant has its own color scheme and quote set. The messages are variant-aware, event-aware, and randomly selected — so Ralph stays surprising while you watch him do 400 cycles. Yes, really.

[green-ralph] I dressed myself! And now I'm running!
[green-ralph] Cycle 1! I'm doing cycle 1! That's where I'm a developer!
[green-ralph] Scanning 12 repos for pull requests. I can see them with my eyes!
[green-ralph] Found 18 open pull requests across 12 repos! I found them!
[green-ralph] Merging PR #142 in radioactive-ralph. Squash! Like the game!
[green-ralph] PR #142 merged! Everybody's hugging!
[green-ralph] Sleeping for 30 seconds. Oh boy, sleep! That's where I'm a Viking!

See src/radioactive_ralph/ralph_says.py for the full personality module.

Requirements

  • Python 3.12+
  • claude CLI installed and authenticated (claude login)
  • gh CLI installed and authenticated (gh auth login)
  • ANTHROPIC_API_KEY set in environment (daemon mode only)

Contributing

See AGENTS.md for agentic operating protocols, STANDARDS.md for code quality rules, and CONTRIBUTING.md for the contribution workflow.

git clone git@github.com:jbcom/radioactive-ralph.git
cd radioactive-ralph
uv sync --all-extras
uv run pytest

License

MIT. See LICENSE.

Launch notes (maintainers — uploading the social preview + demo assets)

Social preview image

GitHub shows a custom image when someone shares this repo on LinkedIn, HN, Slack, X, etc. The image file lives at assets/social-preview.png (1280x640 PNG). To upload or replace it:

  1. Generate or update assets/social-preview.png per the spec in assets/ASSETS.md
  2. Commit and push the file (so it's versioned and reviewable)
  3. Upload it to GitHub:
    • Go to Settings -> General -> Social preview
    • Click Edit -> Upload an image...
    • Select the PNG from your local checkout (assets/social-preview.png)
    • Save. GitHub caches the new card; force-refresh via opengraph.dev or LinkedIn's Post Inspector if the old one sticks

Demo GIF

The README can embed assets/demo.gif once it's recorded. To record (or re-record) it:

# Install vhs once
brew install vhs    # or: go install github.com/charmbracelet/vhs@latest

# Record — the tape file is the source of truth
./scripts/record-demo.sh

Edit scripts/demo.tape to change what the demo shows. The recording is fully deterministic — same tape + same ralph state ≈ same GIF.

Full asset checklist

See docs/LAUNCH.md for the full launch checklist and the LinkedIn / Hacker News draft copy.

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

radioactive_ralph-0.5.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

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

radioactive_ralph-0.5.0-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file radioactive_ralph-0.5.0.tar.gz.

File metadata

  • Download URL: radioactive_ralph-0.5.0.tar.gz
  • Upload date:
  • Size: 2.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for radioactive_ralph-0.5.0.tar.gz
Algorithm Hash digest
SHA256 6bbf7e8b44a21c9dc25179a30e83dec3581708aa2f6664bd78fa752c2ad252c8
MD5 803c4c6f3c48041e9b637c2421ce8831
BLAKE2b-256 a765f67c1117737d2b55b603c272bf45800a82639b960c54fbf4f03841f11f16

See more details on using hashes here.

Provenance

The following attestation bundles were made for radioactive_ralph-0.5.0.tar.gz:

Publisher: release.yml on jbcom/radioactive-ralph

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

File details

Details for the file radioactive_ralph-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for radioactive_ralph-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e128097be218d5ff6c5992a050001871ea330c353e43852a379ea6630b8e954e
MD5 65823cd668b82791882d91d0c91be08e
BLAKE2b-256 6c31503c8acdb9e6fd2b82f30b8b9e492477615fb532a6c93372d531486f2dd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for radioactive_ralph-0.5.0-py3-none-any.whl:

Publisher: release.yml on jbcom/radioactive-ralph

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