fix: landing page still says bring-your-own Codeberg + CI — now containerized (#684)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
openhands 2026-03-25 16:52:05 +00:00
parent e036e1d5e7
commit dc22cb5f1e
2 changed files with 24 additions and 29 deletions

View file

@ -328,35 +328,23 @@
<div class="label">Prerequisites</div> <div class="label">Prerequisites</div>
<ul> <ul>
<li><strong>A VPS or server</strong> &mdash; 8 GB RAM minimum (Ubuntu/Debian recommended)</li> <li><strong>A VPS or server</strong> &mdash; 8 GB RAM minimum (Ubuntu/Debian recommended)</li>
<li><strong>A forge instance</strong> &mdash; with a repo and at least one issue</li> <li><strong>Docker + Docker Compose</strong> &mdash; the stack runs as containers (Forgejo + Woodpecker CI included)</li>
<li><strong>A second forge instance</strong> &mdash; for the review bot (branch protection requires a different reviewer)</li>
<li><strong>Woodpecker CI</strong> &mdash; running and connected to your repo</li>
<li><strong>An Anthropic API key</strong> &mdash; with the <code>claude</code> CLI installed and authenticated</li> <li><strong>An Anthropic API key</strong> &mdash; with the <code>claude</code> CLI installed and authenticated</li>
<li><strong>tmux</strong> &mdash; for persistent dev sessions</li> <li><strong>tmux</strong> &mdash; for persistent dev sessions</li>
</ul> </ul>
</div> </div>
<!-- Step 1: Clone disinto --> <!-- Step 1: Clone and start the stack -->
<div class="section"> <div class="section">
<div class="step-header"> <div class="step-header">
<span class="step-num">1</span> <span class="step-num">1</span>
Clone the factory Clone and start the stack
</div> </div>
<p>Clone disinto onto your server. This is the factory &mdash; the code that runs your agents.</p> <p>Clone disinto, then bring up the full stack &mdash; built-in Forgejo, Woodpecker CI, and agent runtime.</p>
<pre><code>git clone http://localhost:3000/johba/disinto.git ~/disinto <pre><code>git clone https://codeberg.org/johba/disinto.git ~/disinto
cd ~/disinto cd ~/disinto
cp .env.example .env</code></pre> cp .env.example .env
<p>Edit <code>.env</code> with your tokens:</p> <span class="comment"># Edit .env with your Anthropic API key</span></code></pre>
<pre><code><span class="comment"># Required</span>
FORGE_TOKEN=your_codeberg_token
FORGE_REVIEW_TOKEN=your_review_bot_token
<span class="comment"># Woodpecker CI</span>
WOODPECKER_TOKEN=your_woodpecker_token
WOODPECKER_SERVER=http://localhost:8000
<span class="comment"># Timeouts</span>
CLAUDE_TIMEOUT=7200</code></pre>
</div> </div>
<!-- Step 2: Initialize your project --> <!-- Step 2: Initialize your project -->
@ -365,8 +353,9 @@ CLAUDE_TIMEOUT=7200</code></pre>
<span class="step-num">2</span> <span class="step-num">2</span>
Initialize your project Initialize your project
</div> </div>
<p><code>disinto init</code> provisions a local Forgejo instance, clones the repo, creates the project config, adds labels, and installs cron jobs.</p> <p><code>disinto init</code> creates your repo on the built-in Forgejo, clones it, generates the project config, adds labels, and installs cron jobs. Then <code>disinto up</code> starts everything.</p>
<pre><code>bin/disinto init http://localhost:3000/you/your-project</code></pre> <pre><code>bin/disinto init user/your-project
bin/disinto up</code></pre>
<div class="expected"> <div class="expected">
<div class="label">Expected output</div> <div class="label">Expected output</div>
<code>=== disinto init === <code>=== disinto init ===
@ -402,12 +391,12 @@ Done. Project your-project is ready.</code>
<span class="step-num">3</span> <span class="step-num">3</span>
Prepare your repo Prepare your repo
</div> </div>
<p>Your project needs three things before agents can work on it:</p> <p>Your project needs two things before agents can work on it:</p>
<ol> <ol>
<li><strong>A CI pipeline</strong> &mdash; at least one <code>.woodpecker/*.yml</code> file. Agents wait for CI before reviewing or merging.</li> <li><strong>A CI pipeline</strong> &mdash; at least one <code>.woodpecker/*.yml</code> file. Agents wait for CI before reviewing or merging.</li>
<li><strong>A CLAUDE.md</strong> &mdash; project context that agents read before every task. Describe your tech stack, how to build/test, coding conventions, and directory layout.</li> <li><strong>A CLAUDE.md</strong> &mdash; project context that agents read before every task. Describe your tech stack, how to build/test, coding conventions, and directory layout.</li>
<li><strong>Branch protection</strong> &mdash; on Forgejo, require PR reviews and add the review bot as a write collaborator.</li>
</ol> </ol>
<p>Branch protection and the review bot are pre-configured on the built-in Forgejo. If you're connecting to an external forge, set those up manually.</p>
<pre><code><span class="comment"># Create CLAUDE.md in your project</span> <pre><code><span class="comment"># Create CLAUDE.md in your project</span>
cat > ~/your-project/CLAUDE.md &lt;&lt;'EOF' cat > ~/your-project/CLAUDE.md &lt;&lt;'EOF'
# Your Project # Your Project

View file

@ -657,12 +657,18 @@
</div> </div>
<div class="section"> <div class="section">
<h2>One VPS, one repo, one battery</h2> <h2>One command, one stack, one battery</h2>
<p> <p>
<strong>Bash scripts and Claude.</strong> No Kubernetes, no microservices, <strong>Built-in Forgejo + Woodpecker CI.</strong> No external forge,
no SaaS dependencies. Runs on an 8GB VPS. no CI setup, no SaaS dependencies. Two commands on an 8GB VPS:
Point it at a <strong>forge repo</strong> with a </p>
<strong>Woodpecker CI</strong> pipeline and it starts building. <p>
<code>disinto init user/repo</code> &rarr; <code>disinto up</code>
</p>
<p>
The stack ships with a <strong>local Forgejo</strong> git forge and
<strong>pre-configured Woodpecker CI</strong> — or connect to your
existing Codeberg repo if you prefer.
</p> </p>
<p> <p>
<strong>Built for web apps and crypto projects.</strong> <strong>Built for web apps and crypto projects.</strong>
@ -706,7 +712,7 @@
<a href="/dashboard">dashboard</a> <a href="/dashboard">dashboard</a>
</div> </div>
<div class="under-hood"> <div class="under-hood">
Under the hood: dev, review, planner, gardener, supervisor, predictor, action, vault — eight agents orchestrated by cron and bash. Under the hood: dev, review, planner, gardener, supervisor, predictor, action, vault, exec — nine agents orchestrated by cron and bash.
</div> </div>
</div> </div>