-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
227 lines (207 loc) · 13 KB
/
Copy pathindex.html
File metadata and controls
227 lines (207 loc) · 13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>RalphTerm — Hand off the plan. Come back to a branch.</title>
<meta name="description" content="Write a markdown checkbox plan and walk away. RalphTerm has one AI agent implement it task by task, then a different agent cross-reviews the diff across multiple dimensions before merge. You read the result when you come back.">
<meta name="keywords" content="RalphTerm, Claude Code, Codex, multi-agent, cross-review, plan runner, unattended coding, AI coding, PTY">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://ralphterm.rayforcedb.com/">
<meta property="og:type" content="website">
<meta property="og:title" content="RalphTerm — Hand off the plan. Come back to a branch.">
<meta property="og:description" content="One agent implements task by task, a different agent cross-reviews the diff. You read the result when you come back.">
<meta property="og:url" content="https://ralphterm.rayforcedb.com/">
<meta property="og:image" content="https://ralphterm.rayforcedb.com/assets/social-preview-v0.4.16.png">
<meta property="og:image:secure_url" content="https://ralphterm.rayforcedb.com/assets/social-preview-v0.4.16.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="RalphTerm: Hand off the plan. Come back to a branch.">
<meta property="og:site_name" content="RalphTerm">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="RalphTerm — Hand off the plan. Come back to a branch.">
<meta name="twitter:description" content="Different agents implement and cross-review your plan. You walk away, come back to a finished branch.">
<meta name="twitter:image" content="https://ralphterm.rayforcedb.com/assets/social-preview-v0.4.16.png">
<meta name="twitter:image:alt" content="RalphTerm: Hand off the plan. Come back to a branch.">
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
<link rel="alternate icon" href="/assets/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="stylesheet" href="/assets/styles.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "RalphTerm",
"description": "Write a markdown plan and walk away. RalphTerm has one AI agent implement the plan task by task — picking the next checkbox, editing files, running validation, committing — and a different agent cross-review the resulting diff across multiple dimensions before merge.",
"url": "https://ralphterm.rayforcedb.com",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Linux, macOS",
"codeRepository": "https://github.com/RayforceDB/ralphterm",
"license": "https://opensource.org/licenses/MIT",
"offers": {"@type": "Offer", "price": "0", "priceCurrency": "USD"}
}
</script>
<script src="/assets/copy.js" defer></script>
</head>
<body>
<header class="rt-header">
<a class="rt-brand" href="/" aria-label="RalphTerm home">
<svg viewBox="0 0 96 96" aria-hidden="true">
<rect x="8" y="8" width="16" height="16" fill="currentColor"/>
<rect x="28" y="8" width="16" height="16" fill="currentColor"/>
<rect x="8" y="28" width="16" height="16" fill="currentColor"/>
<rect x="48" y="28" width="16" height="16" fill="currentColor"/>
<rect x="8" y="48" width="16" height="16" fill="currentColor"/>
<rect x="28" y="48" width="16" height="16" fill="currentColor"/>
<rect x="8" y="68" width="16" height="16" fill="currentColor"/>
<rect x="48" y="68" width="16" height="16" fill="currentColor"/>
<rect x="68" y="68" width="16" height="16" fill="currentColor"/>
</svg>
<span class="rt-brand-name">ralphterm</span>
</a>
<nav class="rt-nav" aria-label="Primary navigation">
<a href="#overview">Overview</a>
<a href="#cli">CLI</a>
<a href="/docs/">Docs</a>
<a href="https://github.com/RayforceDB/ralphterm">GitHub</a>
</nav>
</header>
<main class="rt-page">
<!-- Hero -->
<section class="rt-hero" id="overview">
<div class="rt-hero-copy">
<p class="rt-eyebrow is-tagline">RALPHTERM / v0.4.16 / MIT</p>
<h1 class="rt-display">Hand off the plan. Come back to a branch.</h1>
<p class="rt-lead">RalphTerm turns a markdown checkbox plan into an unattended engineering run. One agent implements task by task in a real terminal. A different agent cross-reviews the diff across quality, implementation, testing, simplification, and docs. The loop keeps going until the plan is done and the review is clean.</p>
<div class="rt-cta-row">
<a class="rt-btn is-primary" href="https://github.com/RayforceDB/ralphterm">GitHub</a>
<a class="rt-btn" href="/docs/">Docs</a>
</div>
</div>
<aside class="rt-hero-run" aria-label="RalphTerm run preview">
<div class="rt-terminal-bar">
<span></span><span></span><span></span>
<strong>ralphterm run</strong>
</div>
<pre class="rt-terminal"><code>$ ralphterm docs/plans/feature.md
starting task execution phase
[10:56:39] task 1 implement auth flow done
[10:59:12] task 2 add validation done
[11:02:44] phase 1 review findings
[11:07:18] implementer fixes review committed
[11:11:03] phase 3 review clean
branch ready: feature-plan</code></pre>
<dl class="rt-run-facts">
<div><dt>agents</dt><dd>implementer + reviewer</dd></div>
<div><dt>review</dt><dd>5 dimensions, one session</dd></div>
<div><dt>resume</dt><dd>Ctrl+C safe</dd></div>
</dl>
</aside>
</section>
<!-- Capabilities -->
<section class="rt-section">
<p class="rt-eyebrow">— capabilities</p>
<table class="rt-table">
<thead><tr><th>Surface</th><th class="rt-status">Status</th></tr></thead>
<tbody>
<tr><td>plan loop · per-task commits, auto-move on completion</td><td class="rt-status">supported</td></tr>
<tr><td>cross-review · different agent than implementer, 5-dimension single-session</td><td class="rt-status">supported</td></tr>
<tr><td>review retry · implementer fixes findings, then re-review, with patience / stalemate</td><td class="rt-status">supported</td></tr>
<tr><td>providers · claude, codex, copilot, gemini, opencode</td><td class="rt-status">supported</td></tr>
<tr><td>resume · Ctrl+C mid-iteration, rerun, pick up where you left off</td><td class="rt-status">supported</td></tr>
<tr><td>worktrees · branch flag, plan-slug auto-id, docker isolation</td><td class="rt-status">supported</td></tr>
<tr><td>notifications · telegram, slack, email, webhook</td><td class="rt-status">supported</td></tr>
<tr><td>dashboard · <code>ralphterm serve</code>, live transcripts + run history</td><td class="rt-status">supported</td></tr>
</tbody>
</table>
</section>
<!-- How it works -->
<section class="rt-section" id="cli">
<p class="rt-eyebrow">— how it works</p>
<p style="max-width:var(--rt-read-max);margin-bottom:12px"><strong>1. You write the plan.</strong> A markdown file. Each <code>- [ ]</code> is a task — one prompt's worth of work, with the validation command that proves it's done. That's the input; nothing else.</p>
<hr>
<p style="max-width:var(--rt-read-max);margin:12px 0"><strong>2. The implementer picks tasks.</strong> RalphTerm spawns your chosen agent (claude, codex, …) inside a real PTY and hands it the plan. The agent picks the next <code>- [ ]</code>, edits files, runs your validation command, commits, ticks the box. Repeats until the plan is done.</p>
<hr>
<p style="max-width:var(--rt-read-max);margin:12px 0"><strong>3. A different agent cross-reviews.</strong> When the implementer signals done, a separate reviewer session — different vendor, different model, your choice — walks the diff across five dimensions: quality, implementation, testing, simplification, documentation. Critical findings get sent back to the implementer with a retry budget. The branch only lands when the cross-review is clean.</p>
<hr>
<p style="max-width:var(--rt-read-max);margin-top:12px"><strong>4. You walk away.</strong> Per-task commits + transcripts let you read what happened. A web dashboard, notifications (Telegram, Slack, Email, Webhook), and clean Ctrl+C resume mean you don't have to babysit it. Come back to a finished branch — or a clear "here's what blocked" if the cross-review couldn't be satisfied.</p>
</section>
<!-- Trace -->
<section class="rt-section">
<p class="rt-eyebrow">— trace</p>
<div class="rt-trace">
<div>
<p class="rt-trace-label">input</p>
<pre><code># docs/plans/imports.md
## Validation Commands
- `cargo test --all`
### Task 1
- [ ] Replace ad hoc imports
- [ ] Run validation</code></pre>
</div>
<div>
<p class="rt-trace-label">run</p>
<pre><code>$ ralphterm docs/plans/imports.md
task 1: implementation committed
phase 1: reviewer found missing coverage
fixer: added regression test
phase 3: review clean</code></pre>
</div>
<div>
<p class="rt-trace-label">output</p>
<pre><code>branch: imports-plan
commits:
implement task 1
address review feedback
status: ready for human review</code></pre>
</div>
</div>
</section>
<!-- Invoke -->
<section class="rt-section">
<p class="rt-eyebrow">— invoke</p>
<pre class="rt-code-block">$ ralphterm docs/plans/feature.md # write plan, walk away (implement + cross-review)</pre>
<pre class="rt-code-block">$ ralphterm --tasks-only docs/plans/feature.md # implement only, no cross-review</pre>
<pre class="rt-code-block">$ ralphterm serve # web dashboard at 127.0.0.1:7878</pre>
<p style="margin-top:10px;font-size:12px;color:var(--rt-muted)">Implementer defaults to <code>claude</code>; reviewer defaults to <code>codex</code>. Override either with <code>--claude-command</code> / <code>--review-command</code> to mix any combination of agents.</p>
</section>
<!-- Install -->
<section class="rt-section">
<p class="rt-eyebrow">— install</p>
<pre class="rt-code-block">$ curl -sSf https://ralphterm.rayforcedb.com/install.sh | sh</pre>
<pre class="rt-code-block">$ brew tap RayforceDB/ralphterm https://github.com/RayforceDB/ralphterm && brew install ralphterm</pre>
<pre class="rt-code-block">PS> irm https://ralphterm.rayforcedb.com/install.ps1 | iex</pre>
<pre class="rt-code-block">$ cargo install ralphterm</pre>
<p style="margin-top:10px;font-size:12px;color:var(--rt-muted)">The shell and PowerShell installers land <code>ralphterm</code> in <code>~/.local/bin</code> and support <code>ralphterm update</code>. Homebrew manages upgrades through <code>brew upgrade ralphterm</code>.</p>
</section>
<!-- Features grid -->
<section class="rt-section" style="padding-bottom:0">
<p class="rt-eyebrow">— more</p>
</section>
<div class="rt-features">
<article><p class="rt-feature-label">Worktrees</p><p>Isolated git worktrees per plan; auto-derived branch slug from the plan filename.</p></article>
<article><p class="rt-feature-label">Notifications</p><p>Telegram, Slack, Email (SMTP), and Webhook deliveries on plan / task / review / rate-limit events.</p></article>
<article><p class="rt-feature-label">Docker</p><p>Optional containerized execution. Honors RALPHTERM_EXTRA_VOLUMES + EXTRA_ENV.</p></article>
<article><p class="rt-feature-label">Multi-provider</p><p>Bundled wrappers for Codex, Copilot, Gemini, and OpenCode CLIs.</p></article>
<article><p class="rt-feature-label">Review retry</p><p>Implementer + reviewer fixer loop with patience / stalemate detection.</p></article>
<article><p class="rt-feature-label">Plan auto-move</p><p>Successful plans relocate to docs/plans/completed/ on configurable opt-in.</p></article>
</div>
<!-- CTAs -->
<section class="rt-section">
<p class="rt-eyebrow">— next</p>
<div class="rt-cta-row">
<a class="rt-btn is-primary" href="https://github.com/RayforceDB/ralphterm">GitHub</a>
<a class="rt-btn" href="/docs/">Read the docs</a>
</div>
</section>
</main>
<footer class="rt-footer">
<span>MIT License</span>
<a href="https://github.com/RayforceDB/ralphterm">GitHub</a>
<a href="/docs/">Docs</a>
<a href="https://crates.io/crates/ralphterm">crates.io</a>
</footer>
</body>
</html>