ralphctl 0.13.1 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,10 +11,12 @@
11
11
  [![Built with Donuts](https://img.shields.io/badge/%F0%9F%8D%A9-Built_with_Donuts-ff6f00?style=flat)](https://github.com/lukas-grigis/ralphctl)
12
12
 
13
13
  <p align="center">
14
- <img src="./.github/assets/home.png" alt="ralphctl home screen — Ralph donut banner with 'The pointy kitty took it!' tagline, demo project tile, WORK / OBSERVE / SYSTEM menus with keybindings, bottom footer" width="900" />
14
+ <img src="./.github/assets/home.png" alt="ralphctl home screen — Ralph donut banner with 'The pointy kitty took it!' tagline, WORK / OBSERVE / SYSTEM menus with keybindings, bottom footer" width="900" />
15
15
  </p>
16
16
 
17
- **Agent harness for long-running AI coding tasks —
17
+ # ralphctl
18
+
19
+ **A ralph harness for long-running AI coding tasks — a hardened ralph loop that
18
20
  orchestrates [Claude Code](https://docs.anthropic.com/en/docs/claude-code) across repositories,
19
21
  with [GitHub Copilot](https://docs.github.com/en/copilot/github-copilot-in-the-cli) and
20
22
  [OpenAI Codex](https://github.com/openai/codex) available in preview.**
@@ -30,6 +32,17 @@ with [GitHub Copilot](https://docs.github.com/en/copilot/github-copilot-in-the-c
30
32
 
31
33
  ---
32
34
 
35
+ ## What is a ralph harness?
36
+
37
+ The "Ralph" technique comes from Geoffrey Huntley's [Ralph Wiggum as a software engineer](https://ghuntley.com/ralph/):
38
+ point a coding agent at a task and run it in a loop until the work is done. The bare version
39
+ (`while :; do cat PROMPT.md | claude-code; done`) loops blindly — it re-runs the same prompt and hopes each pass lands.
40
+ ralphctl is a ralph harness around that idea: instead of blind repetition it runs a generator-evaluator loop, where one
41
+ pass writes the change and a second independent pass reviews it against the task spec before the loop advances. Same
42
+ loop, with a verification gate on every step.
43
+
44
+ ---
45
+
33
46
  ## What is ralphctl?
34
47
 
35
48
  AI coding agents are powerful but lose context on long tasks, need babysitting when things break, and have no way to
@@ -49,8 +62,16 @@ You describe what to build. ralphctl handles the rest — or works alongside you
49
62
  npm install -g ralphctl
50
63
  ```
51
64
 
52
- Install [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (or a preview provider — see below), authenticate
53
- it, then:
65
+ > Needs [Node.js](https://nodejs.org/) ≥ 24 — `mise use node@24` or `nvm install 24`.
66
+
67
+ Install [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (or a preview provider — see below) and
68
+ authenticate it, then confirm ralphctl can see it:
69
+
70
+ ```bash
71
+ ralphctl doctor # verifies your provider CLI is installed + authenticated — the #1 first-run failure
72
+ ```
73
+
74
+ When `doctor` is green, launch:
54
75
 
55
76
  ```bash
56
77
  ralphctl
@@ -194,7 +215,11 @@ One-shot configuration for any provider: `ralphctl settings apply-preset <name>`
194
215
 
195
216
  Configure via the TUI `Settings` view or one-shot CLI commands.
196
217
 
197
- **Quickest path — apply a preset:**
218
+ **Quickest path — apply a preset.** Presets auto-seed from your detected CLIs on first run; override later with
219
+ `apply-preset`.
220
+
221
+ <details>
222
+ <summary>All 20 presets across five families</summary>
198
223
 
199
224
  ```bash
200
225
  # Standard — flagship model per flow
@@ -233,6 +258,8 @@ preset stamps the entire `ai` section plus `harness.escalateOnPlateau` in one tr
233
258
  `false` so a plateau settles; all others stamp it `true`). On a fresh install the welcome view silently
234
259
  auto-seeds a preset based on which provider CLIs it detects on `PATH`.
235
260
 
261
+ </details>
262
+
236
263
  **Per-flow settings.** Each flow carries its own `{provider, model, effort?}` row: `refine`, `plan`, `readiness`,
237
264
  `ideate`, and `createPr`. The `implement` flow instead splits into a nested `generator` / `evaluator` pair
238
265
  (`ai.implement.generator.*` and `ai.implement.evaluator.*`), each its own `{provider, model, effort?}` row. Edit
@@ -362,11 +389,11 @@ readiness / create sprint) stay TUI-only by design. The CLI exposes inspection +
362
389
 
363
390
  ### Export & PR
364
391
 
365
- | Command | Description |
366
- | ---------------------------------------------------------------------- | -------------------------------------------------------------- |
367
- | `ralphctl export-requirements --sprint <id> --output <path>` | Render approved-ticket requirements to markdown |
368
- | `ralphctl export-context --sprint <id> --project <id> --output <path>` | Render harness context (sprint + project + tasks) to markdown |
369
- | `ralphctl create-pr --sprint <id> [--base <branch>] [--draft]` | Open a PR/MR via `gh` or `glab`, persist the URL on the sprint |
392
+ | Command | Description |
393
+ | -------------------------------------------------------------------------- | -------------------------------------------------------------- |
394
+ | `ralphctl export-requirements [--sprint <id>] --output <path>` | Render approved-ticket requirements to markdown |
395
+ | `ralphctl export-context [--sprint <id>] [--project <id>] --output <path>` | Render harness context (sprint + project + tasks) to markdown |
396
+ | `ralphctl create-pr --sprint <id> [--base <branch>] [--draft]` | Open a PR/MR via `gh` or `glab`, persist the URL on the sprint |
370
397
 
371
398
  ### Maintenance
372
399
 
@@ -383,16 +410,17 @@ Run `ralphctl <command> --help` for flag-level detail.
383
410
 
384
411
  ## Documentation
385
412
 
386
- | Resource | Description |
387
- | ---------------------------------------------- | ------------------------------------------------- |
388
- | [Architecture](./.claude/docs/ARCHITECTURE.md) | Data models, file storage, error reference |
389
- | [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
390
- | [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
391
- | [Migration](./MIGRATION.md) | Per-version upgrade context for big version jumps |
392
- | [Changelog](./CHANGELOG.md) | Version history |
413
+ | Resource | Description |
414
+ | ------------------------------------------------ | -------------------------------------------------------- |
415
+ | [Architecture](./ARCHITECTURE.md) | Data models, harness loop, file storage, error reference |
416
+ | [Adding a provider](./docs/adding-a-provider.md) | Extension guide: wire a new AI CLI into the harness |
417
+ | [Requirements](./.claude/docs/REQUIREMENTS.md) | Acceptance criteria and feature checklist |
418
+ | [Contributing](./CONTRIBUTING.md) | Dev setup, code style, PR process |
419
+ | [Migration](./MIGRATION.md) | Per-version upgrade context for big version jumps |
420
+ | [Changelog](./CHANGELOG.md) | Version history |
393
421
 
394
422
  **Blog posts:** [Building ralphctl](https://lukasgrigis.dev/blog/building-ralphctl) (
395
- backstory) | [From task CLI to agent harness](https://lukasgrigis.dev/blog/ralphctl-agent-harness/) (evaluator
423
+ backstory) | [From task CLI to ralph harness](https://lukasgrigis.dev/blog/ralphctl-agent-harness/) (evaluator
396
424
  deep-dive)
397
425
 
398
426
  **Further reading: