fix: Replace Codeberg dependency with local Forgejo instance (#611)
- Add setup_forge() to bin/disinto: provisions Forgejo via Docker, creates admin + bot users (dev-bot, review-bot), generates API tokens, creates repo, and pushes code — all automated - Rename env vars: CODEBERG_TOKEN→FORGE_TOKEN, REVIEW_BOT_TOKEN→ FORGE_REVIEW_TOKEN, CODEBERG_REPO→FORGE_REPO, CODEBERG_API→ FORGE_API, CODEBERG_WEB→FORGE_WEB, CODEBERG_BOT_USERNAMES→ FORGE_BOT_USERNAMES (with backwards-compat fallbacks) - Rename API helpers: codeberg_api()→forge_api(), codeberg_api_all() →forge_api_all() (with compat aliases) - Add forge_url field to project TOML; load-project.sh derives FORGE_API/FORGE_WEB from forge_url + repo - Update parse_repo_slug() to accept any host URL, not just codeberg - Forgejo data stored under ~/.disinto/forgejo/ (not in factory repo) - Update all 58 files: agent scripts, formulas, docs, site HTML Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
39d30faf45
commit
a66bd91721
58 changed files with 863 additions and 628 deletions
|
|
@ -365,7 +365,7 @@
|
|||
<!-- Eight Agents -->
|
||||
<div class="section">
|
||||
<h2>Eight agents</h2>
|
||||
<p>Each agent has a single responsibility. They communicate through git, the Codeberg API, and the filesystem.</p>
|
||||
<p>Each agent has a single responsibility. They communicate through git, the forge API, and the filesystem.</p>
|
||||
<div class="agents-grid">
|
||||
<div class="agent-card">
|
||||
<div class="name">dev-agent</div>
|
||||
|
|
@ -480,7 +480,7 @@
|
|||
<p><strong>Bash scripts</strong> — every agent is a shell script. No compiled binaries, no runtimes to install.</p>
|
||||
<p><strong>Claude CLI</strong> — AI is invoked via <code>claude -p</code> (one-shot) or <code>claude</code> (persistent tmux sessions).</p>
|
||||
<p><strong>Cron</strong> — agents are triggered by cron jobs, not a daemon. Pull-based, not push-based.</p>
|
||||
<p><strong>Codeberg + Woodpecker</strong> — git hosting and CI. All state lives in git and the issue tracker. No external databases.</p>
|
||||
<p><strong>Forgejo + Woodpecker</strong> — git hosting and CI. All state lives in git and the issue tracker. No external databases.</p>
|
||||
<p><strong>Single VPS</strong> — runs on an 8 GB server. Flat cost, no scaling surprises.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -538,7 +538,7 @@ disinto/
|
|||
<div class="footer">
|
||||
<a href="/">← disinto.ai</a> ·
|
||||
<a href="/docs/quickstart">Quickstart</a> ·
|
||||
<a href="https://codeberg.org/johba/disinto">Source</a>
|
||||
<a href="http://localhost:3000/johba/disinto">Source</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -328,8 +328,8 @@
|
|||
<div class="label">Prerequisites</div>
|
||||
<ul>
|
||||
<li><strong>A VPS or server</strong> — 8 GB RAM minimum (Ubuntu/Debian recommended)</li>
|
||||
<li><strong>A Codeberg account</strong> — with a repo and at least one issue</li>
|
||||
<li><strong>A second Codeberg account</strong> — for the review bot (branch protection requires a different reviewer)</li>
|
||||
<li><strong>A forge instance</strong> — with a repo and at least one issue</li>
|
||||
<li><strong>A second forge instance</strong> — for the review bot (branch protection requires a different reviewer)</li>
|
||||
<li><strong>Woodpecker CI</strong> — running and connected to your repo</li>
|
||||
<li><strong>An Anthropic API key</strong> — with the <code>claude</code> CLI installed and authenticated</li>
|
||||
<li><strong>tmux</strong> — for persistent dev sessions</li>
|
||||
|
|
@ -343,13 +343,13 @@
|
|||
Clone the factory
|
||||
</div>
|
||||
<p>Clone disinto onto your server. This is the factory — the code that runs your agents.</p>
|
||||
<pre><code>git clone https://codeberg.org/johba/disinto.git ~/disinto
|
||||
<pre><code>git clone http://localhost:3000/johba/disinto.git ~/disinto
|
||||
cd ~/disinto
|
||||
cp .env.example .env</code></pre>
|
||||
<p>Edit <code>.env</code> with your tokens:</p>
|
||||
<pre><code><span class="comment"># Required</span>
|
||||
CODEBERG_TOKEN=your_codeberg_token
|
||||
REVIEW_BOT_TOKEN=your_review_bot_token
|
||||
FORGE_TOKEN=your_codeberg_token
|
||||
FORGE_REVIEW_TOKEN=your_review_bot_token
|
||||
|
||||
<span class="comment"># Woodpecker CI</span>
|
||||
WOODPECKER_TOKEN=your_woodpecker_token
|
||||
|
|
@ -365,14 +365,14 @@ CLAUDE_TIMEOUT=7200</code></pre>
|
|||
<span class="step-num">2</span>
|
||||
Initialize your project
|
||||
</div>
|
||||
<p><code>disinto init</code> sets up everything: clones the repo, creates the project config, adds Codeberg labels, and installs cron jobs.</p>
|
||||
<pre><code>bin/disinto init https://codeberg.org/you/your-project</code></pre>
|
||||
<p><code>disinto init</code> provisions a local Forgejo instance, clones the repo, creates the project config, adds labels, and installs cron jobs.</p>
|
||||
<pre><code>bin/disinto init http://localhost:3000/you/your-project</code></pre>
|
||||
<div class="expected">
|
||||
<div class="label">Expected output</div>
|
||||
<code>=== disinto init ===
|
||||
Project: you/your-project
|
||||
Name: your-project
|
||||
Cloning: https://codeberg.org/you/your-project.git -> /home/you/your-project
|
||||
Cloning: http://localhost:3000/you/your-project.git -> /home/you/your-project
|
||||
Branch: main
|
||||
Created: /home/you/disinto/projects/your-project.toml
|
||||
Creating labels on you/your-project...
|
||||
|
|
@ -406,7 +406,7 @@ Done. Project your-project is ready.</code>
|
|||
<ol>
|
||||
<li><strong>A CI pipeline</strong> — at least one <code>.woodpecker/*.yml</code> file. Agents wait for CI before reviewing or merging.</li>
|
||||
<li><strong>A CLAUDE.md</strong> — 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> — on Codeberg, require PR reviews and add the review bot as a write collaborator.</li>
|
||||
<li><strong>Branch protection</strong> — on Forgejo, require PR reviews and add the review bot as a write collaborator.</li>
|
||||
</ol>
|
||||
<pre><code><span class="comment"># Create CLAUDE.md in your project</span>
|
||||
cat > ~/your-project/CLAUDE.md <<'EOF'
|
||||
|
|
@ -434,7 +434,7 @@ git push</code></pre>
|
|||
<span class="step-num">4</span>
|
||||
File your first issue
|
||||
</div>
|
||||
<p>Create an issue on Codeberg with the <code>backlog</code> label. Be specific — the dev-agent works best with clear acceptance criteria.</p>
|
||||
<p>Create an issue on the forge with the <code>backlog</code> label. Be specific — the dev-agent works best with clear acceptance criteria.</p>
|
||||
<pre><code><span class="comment"># Title: Add health check endpoint</span>
|
||||
<span class="comment"># Label: backlog</span>
|
||||
<span class="comment"># Body:</span>
|
||||
|
|
@ -523,7 +523,7 @@ git log --oneline -5</code></pre>
|
|||
<div class="footer">
|
||||
<a href="/">← disinto.ai</a> ·
|
||||
<a href="/docs/architecture">Architecture</a> ·
|
||||
<a href="https://codeberg.org/johba/disinto">Source</a>
|
||||
<a href="http://localhost:3000/johba/disinto">Source</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue