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:
parent
afdcdeb78f
commit
ee881086d3
6 changed files with 403 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
60
VISION.md
Normal 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
BIN
site/al76.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 180 KiB |
BIN
site/al76.webp
Normal file
BIN
site/al76.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 148 KiB |
337
site/index.html
Normal file
337
site/index.html
Normal 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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue