feat: add disinto.ai landing page to repo (#91)

## Summary
- Move the static landing page from the standalone `disinto-site` directory into `site/` so it lives in the repo
- Includes `index.html`, optimized images (`al76.jpg`, `al76.webp`), and the original magazine cover (`amazing-stories-1942.jpg`)
- Skipped the large `al76.png` (3MB) since the HTML only references the `.jpg` and `.webp` versions

## Test plan
- [ ] Verify `site/index.html` renders correctly when served
- [ ] Confirm images load properly with relative paths

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/disinto/pulls/91
Co-authored-by: review_bot <review_bot@noreply.codeberg.org>
Co-committed-by: review_bot <review_bot@noreply.codeberg.org>
This commit is contained in:
review_bot 2026-03-17 23:11:40 +01:00 committed by johba
parent afdcdeb78f
commit ee881086d3
6 changed files with 403 additions and 4 deletions

View file

@ -2,9 +2,10 @@
## What this repo is
Disinto is an autonomous code factory. It manages four agents (dev, review,
gardener, supervisor) that pick up issues from Codeberg, implement them,
review PRs, and keep the system healthy — all via cron and `claude -p`.
Disinto is an autonomous code factory. It manages five agents (dev, review,
gardener, supervisor, planner) that pick up issues from Codeberg, implement
them, review PRs, plan from the vision, and keep the system healthy — all
via cron and `claude -p`.
See `README.md` for the full architecture and `BOOTSTRAP.md` for setup.
@ -15,6 +16,7 @@ disinto/
├── dev/ dev-poll.sh, dev-agent.sh — issue implementation
├── review/ review-poll.sh, review-pr.sh — PR review
├── gardener/ gardener-poll.sh — backlog grooming
├── planner/ planner-poll.sh, planner-agent.sh — vision gap analysis
├── supervisor/ supervisor-poll.sh — health monitoring
├── lib/ env.sh, ci-debug.sh, matrix_listener.sh
├── projects/ *.toml — per-project config

View file

@ -1,5 +1,5 @@
<div align="center">
<img src="al76.png" alt="A tiny robot commanding a mountain-eating machine" width="600">
<img src="site/al76.jpg" alt="A tiny robot commanding a mountain-eating machine" width="600">
<br><br>
# Disinto

60
VISION.md Normal file
View file

@ -0,0 +1,60 @@
# Vision
Disinto is an opinionated, lightweight framework that lets **solo entrepreneurs** automate their software startup — from first commit to market fit.
## Who it's for
Solo founders and small teams building in the **software and crypto** space. People who want to ship a web app or launch a token without hiring a team of ten. Disinto is the team.
## What it does
A solo founder sets the vision and defines quality gates. Disinto derives the backlog and handles the rest:
- **Build**: dev-agent picks up backlog issues, implements in isolated worktrees, opens PRs
- **Review**: review-agent checks PRs against project conventions, approves or requests changes
- **Ship**: CI runs, PRs merge, deployments happen — the vault controls what needs your sign-off
- **Operate**: supervisor monitors health, fixes what it can, escalates what it can't
- **Plan**: planner compares project state against this vision, creates issues for gaps
- **Groom**: gardener maintains the backlog — closes duplicates, promotes tech debt, keeps things moving
## Target projects
- **Web applications** — SaaS, dashboards, APIs
- **Cryptocurrency projects** — smart contracts, DeFi protocols, token launches
- **Any repo with a CI pipeline** — if it has tests and builds, Disinto can work it
## Design principles
- **Opinionated over configurable** — good defaults, few knobs. Works out of the box for the common case.
- **Bash over frameworks** — if it can be a shell script, it is. Claude is the only dependency that matters.
- **Pull over push** — agents pull work when ready. No scheduler, no queue, no orchestrator daemon.
- **One PR at a time** — sequential pipeline. Saves compute, avoids merge conflicts, keeps the factory predictable.
- **Self-improving** — when an agent solves a new problem, the lesson is captured for next time.
## Growth goals
- **Attract developers** — the project should be easy to understand, easy to fork, easy to contribute to.
- **Stars and forks** — measure traction through Codeberg/GitHub engagement.
- **Contributors** — lower the barrier to entry. Good docs, clear architecture, working examples.
- **Reference deployments** — showcase real projects built and operated by Disinto.
- **Vault as differentiator** — the quality gate model (vision + vault) is what sets Disinto apart from generic CI/CD. Make it visible and easy to understand.
## Milestones
### Foundation (current)
- Core agent loop working: dev → CI → review → merge
- Supervisor health monitoring
- Planner gap analysis against this vision
- Single-project support with per-project config
### Adoption
- One-command bootstrap for new projects (`disinto init`)
- Documentation site with quickstart, tutorials, architecture guide
- Example project that demonstrates the full lifecycle
- Landing page that communicates the value proposition clearly
### Scale
- Multi-project support (multiple repos, one factory)
- Plugin system for custom agents
- Community-contributed formulas for common project types (Next.js, Solidity, Python)
- Hosted option for founders who don't want to run their own VPS

BIN
site/al76.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
site/al76.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

337
site/index.html Normal file
View file

@ -0,0 +1,337 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Disinto — Your AI Dev Team</title>
<meta name="description" content="Open-source autonomous code factory for solo founders. Write issues, set the vision — agents build, review, ship, and operate your startup.">
<style>
:root {
--bg: #0a0a0a;
--fg: #e0e0e0;
--dim: #707070;
--accent: #c8a46e;
--accent-dim: #8a7044;
--surface: #141414;
--border: #222;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'SF Mono', 'Cascadia Code', 'Fira Code', 'JetBrains Mono', monospace;
background: var(--bg);
color: var(--fg);
line-height: 1.7;
min-height: 100vh;
}
.container {
max-width: 720px;
margin: 0 auto;
padding: 4rem 2rem;
}
/* Hero */
.hero {
text-align: center;
margin-bottom: 4rem;
}
.hero h1 {
font-size: 3rem;
font-weight: 300;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 0.5rem;
}
.hero .tagline {
color: var(--dim);
font-size: 0.9rem;
letter-spacing: 0.1em;
}
/* Origin story */
.origin {
display: flex;
flex-direction: column;
gap: 1.5rem;
align-items: center;
margin-bottom: 4rem;
padding: 2rem;
border: 1px solid var(--border);
background: var(--surface);
}
.origin img {
width: 100%;
max-width: 600px;
opacity: 0.9;
border: 1px solid var(--border);
}
.origin blockquote {
color: var(--dim);
font-size: 0.85rem;
font-style: italic;
line-height: 1.8;
}
.origin blockquote strong {
color: var(--accent);
font-style: normal;
}
.origin .cite {
display: block;
margin-top: 1rem;
color: var(--accent-dim);
font-size: 0.75rem;
font-style: normal;
}
/* What it is */
.section {
margin-bottom: 3rem;
}
.section h2 {
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.2em;
text-transform: uppercase;
color: var(--accent-dim);
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid var(--border);
}
.section p {
color: var(--dim);
font-size: 0.85rem;
margin-bottom: 1rem;
}
.section p strong {
color: var(--fg);
}
/* Agent list */
.agents {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1px;
background: var(--border);
margin-bottom: 3rem;
}
.agent {
background: var(--surface);
padding: 1.5rem;
}
.agent .name {
font-size: 0.8rem;
color: var(--accent);
margin-bottom: 0.25rem;
}
.agent .role {
font-size: 0.75rem;
color: var(--dim);
}
/* Pipeline */
.pipeline {
font-size: 0.8rem;
color: var(--dim);
padding: 1.5rem;
background: var(--surface);
border: 1px solid var(--border);
margin-bottom: 3rem;
overflow-x: auto;
}
.pipeline .step {
color: var(--accent-dim);
}
.pipeline .arrow {
color: var(--border);
margin: 0 0.5rem;
}
/* Footer */
.footer {
text-align: center;
padding-top: 3rem;
border-top: 1px solid var(--border);
font-size: 0.75rem;
color: var(--dim);
}
.footer a {
color: var(--accent-dim);
text-decoration: none;
}
.footer a:hover {
color: var(--accent);
}
.footer .links {
margin-top: 0.75rem;
}
.footer .links a {
margin: 0 1rem;
}
/* Mobile */
@media (max-width: 600px) {
.hero h1 { font-size: 2rem; }
.origin { flex-direction: column; align-items: center; }
.origin img { max-width: 100%; }
.agents { grid-template-columns: 1fr; }
.container { padding: 2rem 1rem; }
}
</style>
</head>
<body>
<div class="container">
<div class="hero">
<h1>Disinto</h1>
<div class="tagline">your AI dev team</div>
</div>
<div class="origin">
<picture>
<source srcset="al76.webp" type="image/webp">
<img src="al76.jpg" alt="Robot AL-76 building a Disinto from scrap">
</picture>
<blockquote>
A mining robot, lost and confused, builds a <strong>Disinto</strong> from
scrap — a device so powerful it vaporizes three-quarters of a mountain
on a single battery. Nobody can figure out how it works.
When ordered to explain, it calmly dismantles the machine into
rubble and flinders.
<span class="cite">— Isaac Asimov, "Robot AL-76 Goes Astray" (1942)</span>
</blockquote>
</div>
<div class="section">
<h2>What it is</h2>
<p>
Disinto is an <strong>open-source framework for solo founders</strong>
who want to ship without hiring a team. Set the vision. Define
your quality gates. Agents derive the backlog, build, review, ship,
and operate — you're the founder, not the developer.
</p>
<p>
Built for <strong>web apps and crypto projects</strong>.
SaaS dashboards, DeFi protocols, token launches — if it has
a repo and a CI pipeline, Disinto can work it.
</p>
<p>
Like AL-76, it works with whatever's available. Point it at a repo,
give it a vision, and it starts building.
</p>
</div>
<div class="agents">
<div class="agent">
<div class="name">dev-agent</div>
<div class="role">Picks up backlog issues, implements in isolated worktrees, opens PRs. Handles CI failures and review feedback autonomously.</div>
</div>
<div class="agent">
<div class="name">review-agent</div>
<div class="role">Reviews PRs against project conventions. Approves, requests changes, or flags for discussion. JSON-structured verdicts.</div>
</div>
<div class="agent">
<div class="name">supervisor</div>
<div class="role">Monitors health — memory, disk, CI, stale processes. Auto-heals what it can, escalates what it can't.</div>
</div>
<div class="agent">
<div class="name">planner</div>
<div class="role">Maintains documentation tree. Compares project state against vision, creates backlog issues for gaps.</div>
</div>
<div class="agent">
<div class="name">gardener</div>
<div class="role">Grooms the backlog. Closes duplicates, promotes tech debt, escalates ambiguous items.</div>
</div>
<div class="agent">
<div class="name">you</div>
<div class="role">Set the vision. Define quality gates. Approve what matters, reject what doesn't. Find market fit.</div>
</div>
</div>
<div class="section">
<h2>The loop</h2>
<div class="pipeline">
<span class="step">vision</span>
<span class="arrow"></span>
<span class="step">backlog</span>
<span class="arrow"></span>
<span class="step">build</span>
<span class="arrow"></span>
<span class="step">review</span>
<span class="arrow"></span>
<span class="step">ship</span>
<span class="arrow"></span>
<span class="step">operate</span>
<span class="arrow"></span>
<span class="step">measure</span>
<span class="arrow"></span>
<span class="step">vision</span>
</div>
</div>
<div class="section">
<h2>How it works</h2>
<p>
Bash orchestration. <strong>Claude</strong> for implementation and review.
<strong>Woodpecker CI</strong> for build verification.
<strong>Codeberg</strong> for git hosting and issue tracking.
Cron jobs, shell scripts, and a lightweight listener daemon —
invoking an LLM only when thinking is needed.
</p>
<p>
Each agent is a pair of bash scripts — a cron-driven poller and an
implementation script. The supervisor runs every 10 minutes.
When something breaks, it fixes it. When it can't fix it, it asks.
</p>
</div>
<div class="section">
<h2>For solo founders</h2>
<p>
You don't need a team. You need a <strong>VISION.md</strong> and a vault.
Disinto turns your product vision into a running development operation.
The <strong>vault</strong> is where you define what gets auto-approved
and what needs your sign-off — deployments, pricing changes, public posts.
Everything else runs without you.
</p>
<p>
<strong>Opinionated over configurable.</strong> Good defaults, few knobs.
Works out of the box for web apps and crypto projects.
</p>
<p>
<strong>Bash over frameworks.</strong> If it can be a shell script, it should be.
Claude is the only dependency that matters.
</p>
</div>
<div class="footer">
<div>Your startup's dev team — built from scrap, powered by a single battery.</div>
<div class="links">
<a href="https://codeberg.org/johba/disinto">source</a>
<a href="https://codeberg.org/johba/disinto/issues">issues</a>
</div>
</div>
</div>
</body>
</html>