Skip to content

Commit 25d29ef

Browse files
romamoclaude
andcommitted
docs, site: reposition README and landing page on the operator's record
Cloudfall is the operator's record for a small fleet run by an AI agent. README opens with that definition, leads the Why list with the record and verification, and adds a Direction section pointing at the brownfield design as written but not built. Landing page gets the new headline, descriptions and why-cards, names the brownfield step under Not there yet, and a regenerated social card. Everything proven live stays as is. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 96813bb commit 25d29ef

4 files changed

Lines changed: 85 additions & 62 deletions

File tree

‎README.md‎

Lines changed: 51 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
# Cloudfall
22

3-
Cloudfall is an open-source control plane that moves your applications and
4-
databases off cloud PaaS onto one or two servers you own, plus an always-on
5-
AI operator that runs them there. Every action produces a receipt; Cloudfall
6-
never reports success it cannot prove. No Kubernetes.
7-
8-
It is built for founders and small teams at the scaling stage. The month
9-
your cloud bill crosses $1,000 you are paying roughly $12,000 a year for
10-
compute and managed databases that fit on one or two Hetzner-class servers
11-
at a tenth of the price. Cloudfall's job is to make leaving safe: the
12-
operational feel of a PaaS on hardware you own, with health-gated deploys,
13-
rollback, monitoring, and backups that provably restore.
14-
15-
The target workflow: take one fresh Debian host, run Cloudfall, and get a
16-
hardened baseline, firewall, monitoring, logging, PostgreSQL and Redis, and
17-
your application deployed with health checks and rollback. Then cut DNS and
18-
stop paying margins. The wedge use case is a migration from Render onto a
19-
Hetzner-class server; see the [roadmap](ROADMAP.md) for the milestone plan
20-
and the [manifesto](MANIFESTO.md) for the principles behind the project.
3+
Cloudfall is the operator's record for a small fleet run by an AI agent.
4+
The agent decides; Ansible executes; Cloudfall says what the agent may do,
5+
checks every result, and keeps the evidence. Every operation has a verify
6+
step and every decision an audit entry: what the fleet looked like, what
7+
was proposed, who approved, what verify reported. Cloudfall never reports
8+
success it cannot prove. Open source, plain Debian, no Kubernetes.
9+
10+
It is built for teams with one to twenty servers and no platform hire:
11+
founders leaving a PaaS whose bill crossed $1,000 a month, and anyone whose
12+
servers are already run by Claude Code, Codex or another agent. Today it
13+
moves your applications and databases onto one or two Hetzner-class servers
14+
you own (hardened baseline, monitoring, PostgreSQL and Redis with backups
15+
that provably restore, health-gated deploys with rollback, a real DNS
16+
cutover) and an always-on operator runs them there with a receipt for every
17+
action. The wedge use case is a migration from Render; see the
18+
[roadmap](ROADMAP.md) for the milestone plan and the
19+
[manifesto](MANIFESTO.md) for the principles behind the project.
20+
21+
Where it is going: your existing Ansible inventory and playbooks as the
22+
only config, with each playbook exposed to the agent as a declared tool.
23+
That design is written up and not yet built; see
24+
[Direction](#direction-your-ansible-not-ours) below.
2125

2226
> **Proven live, not promised.** Everything implemented has run on
2327
> disposable Hetzner Cloud Debian 13 servers: an application actually hosted
@@ -33,24 +37,30 @@ and the [manifesto](MANIFESTO.md) for the principles behind the project.
3337
3438
## Why Cloudfall
3539

40+
- **A record that answers "why did the agent do that".** Every deploy,
41+
remediation and drill leaves a receipt; every operator decision records
42+
the evidence it was based on, the proposal, the approval and the outcome.
43+
An agent's own log says a tool was called. This says what the fleet looked
44+
like when it was
45+
- **Verified, not just ran.** Status is derived from validated observations,
46+
`cloudfall audit` reports drift between declared config and observed
47+
servers with distinct exit codes, deploys are gated on health and rolled
48+
back when it fails. Cloudfall never reports success it cannot prove
49+
- **Autonomy earned from the record.** The always-on operator watches
50+
declared alerts and audited drift, remediates what its receipt history
51+
proves reversible under declared policy, and asks you only about what
52+
can't be undone
53+
- **AI-agent native.** Agents operate through a stable CLI and Python API
54+
with structured JSON results instead of inventing shell commands over SSH.
55+
The `cloudfall-mcp` server exposes read-only evidence tools freely and
56+
gates every server-changing tool behind an explicit confirmation handshake
3657
- **The bill buys computers, not margins.** A steady $1,000/mo cloud bill is
3758
mostly margin on commodity compute and managed databases. On servers you
3859
own, that difference becomes runway, every year
39-
- **Evidence over inference.** Deployments produce receipts; status is
40-
derived from validated observations, and `cloudfall audit` reports drift
41-
between the declared config and the observed servers with distinct exit
42-
codes. Cloudfall never reports success it cannot prove
4360
- **Good-enough databases, with proof.** Managed PostgreSQL is mostly
4461
insurance. Cloudfall keeps the coverage and drops the premium: loopback
4562
PostgreSQL and Redis with receipted backups and timer-driven restore
4663
drills that prove a real backup restorable instead of assuming it
47-
- **An operator, not a pager.** The always-on operator watches declared
48-
alerts and audited drift, remediates what its receipts prove reversible
49-
under declared policy, and asks you only about what can't be undone
50-
- **AI-agent native.** Agents operate through a stable CLI and Python API
51-
with structured JSON results instead of inventing shell commands over SSH.
52-
The `cloudfall-mcp` server exposes read-only evidence tools freely and
53-
gates every server-changing tool behind an explicit confirmation handshake
5464
- **Boring on purpose.** Applications run as native systemd services with
5565
artifact releases and symlink rollback, behind nginx, on stock Debian. Any
5666
Linux admin can take over the server without Cloudfall installed
@@ -110,6 +120,18 @@ application mobility with node drain, PostgreSQL point-in-time recovery, and
110120
the demand-gated failover formation, alongside broader catalog breadth. See
111121
the [roadmap](ROADMAP.md) for the milestone plan.
112122

123+
## Direction: your Ansible, not ours
124+
125+
Most teams that would use Cloudfall already run Ansible. The next step is
126+
to read their inventory as the only config instead of Cloudfall's own
127+
resource documents, keep Cloudfall's declarations under one `cloudfall` key
128+
in their `group_vars` and `host_vars`, and expose each of their playbooks to
129+
the agent as a declared operation with a risk level, a verify step and an
130+
audit entry. Ansible is the hand, the agent is the brain, Cloudfall is the
131+
conscience. The design, its build order and what it deliberately leaves out
132+
are in [docs/brownfield-design.md](docs/brownfield-design.md). None of it
133+
is implemented yet; everything below this line is.
134+
113135
## Quickstart
114136

115137
Cloudfall is not on PyPI yet; run it from a clone of this repository. The

‎site/public/index.html‎

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1">
6-
<title>Cloudfall — own your stack, keep the autopilot</title>
7-
<meta name="description" content="For founders whose cloud bill crossed $1,000/mo: Cloudfall moves your apps and databases onto one or two servers you own, and an always-on AI operator runs them there with a receipt for every action. Open source, no Kubernetes.">
6+
<title>Cloudfall — the record behind your AI operator</title>
7+
<meta name="description" content="Cloudfall is the operator's record for a small fleet run by an AI agent: it moves your apps and databases onto servers you own, an always-on operator runs them, and every decision leaves evidence that answers why. Open source, no Kubernetes.">
88
<link rel="canonical" href="https://cloudfall.dev/">
9-
<meta property="og:title" content="Cloudfall — own your stack, keep the autopilot">
10-
<meta property="og:description" content="Open-source control plane that moves your apps and databases onto servers you own, plus an always-on AI operator that can't fake success. No Kubernetes.">
9+
<meta property="og:title" content="Cloudfall — the record behind your AI operator">
10+
<meta property="og:description" content="The operator's record for a small fleet run by an AI agent: servers you own, an always-on operator, and evidence for every decision. Open source. No Kubernetes.">
1111
<meta property="og:url" content="https://cloudfall.dev/">
1212
<meta property="og:type" content="website">
1313
<meta property="og:site_name" content="Cloudfall">
1414
<meta property="og:locale" content="en_US">
1515
<meta property="og:image" content="https://cloudfall.dev/og.png">
1616
<meta property="og:image:width" content="1200">
1717
<meta property="og:image:height" content="630">
18-
<meta property="og:image:alt" content="Cloudfall — own your stack, keep the autopilot">
18+
<meta property="og:image:alt" content="Cloudfall — the record behind your AI operator">
1919
<meta name="twitter:card" content="summary_large_image">
20-
<meta name="twitter:title" content="Cloudfall — own your stack, keep the autopilot">
21-
<meta name="twitter:description" content="Open-source control plane that moves your apps and databases onto servers you own, plus an always-on AI operator that can't fake success. No Kubernetes.">
20+
<meta name="twitter:title" content="Cloudfall — the record behind your AI operator">
21+
<meta name="twitter:description" content="The operator's record for a small fleet run by an AI agent: servers you own, an always-on operator, and evidence for every decision. Open source. No Kubernetes.">
2222
<meta name="twitter:image" content="https://cloudfall.dev/og.png">
2323
<meta name="theme-color" content="#0b1017">
2424
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
@@ -216,7 +216,7 @@
216216
"@type": "SoftwareApplication",
217217
"name": "Cloudfall",
218218
"url": "https://cloudfall.dev/",
219-
"description": "Open-source control plane that moves a SaaS's applications and databases off cloud PaaS onto one or two Debian servers you own, plus an always-on AI operator that runs them there with a receipt for every action. No Kubernetes.",
219+
"description": "The operator's record for a small fleet run by an AI agent. Cloudfall moves a SaaS's applications and databases onto one or two Debian servers you own, an always-on operator runs them, and every decision leaves evidence that answers why. No Kubernetes.",
220220
"applicationCategory": "DeveloperApplication",
221221
"operatingSystem": "Linux",
222222
"license": "https://www.gnu.org/licenses/agpl-3.0.html",
@@ -251,14 +251,15 @@
251251
<div class="hero">
252252
<div class="wrap">
253253
<div class="badge"><span class="dot"></span>Migration and operator proven live · open source · AGPL-3.0</div>
254-
<h1>Own your stack.<br>Keep the <span class="accent">autopilot</span>.</h1>
254+
<h1>Your servers, run by an agent.<br>With a <span class="accent">record</span> that answers why.</h1>
255255
<p class="sub">
256-
Your cloud bill crossed $1,000 a month: that is $12,000 a year for
257-
compute and managed databases that fit on one or two servers you own.
258-
Cloudfall moves your applications and data there — hardened baseline,
259-
monitoring, health-gated deploys with rollback, a real DNS cutover —
260-
and an always-on operator runs them with a receipt for every action.
261-
Plain systemd and nginx. No Kubernetes.
256+
Cloudfall is the operator's record for a small fleet run by an AI
257+
agent. It moves your applications and data onto one or two servers
258+
you own — hardened baseline, monitoring, health-gated deploys with
259+
rollback, a real DNS cutover — and an always-on operator runs them
260+
there. Every operation is verified, every decision leaves evidence:
261+
what the fleet looked like, what was proposed, who approved, what
262+
happened. Plain systemd and nginx. No Kubernetes.
262263
</p>
263264
<div class="cta">
264265
<a class="btn btn-primary" href="https://github.com/romamo/cloudfall">View on GitHub</a>
@@ -312,23 +313,22 @@ <h1>Own your stack.<br>Keep the <span class="accent">autopilot</span>.</h1>
312313
<div class="kicker">Why Cloudfall</div>
313314
<h2>An operator that can't fake success</h2>
314315
<p class="section-sub">
315-
Leaving the cloud is a money decision blocked by a trust problem.
316-
Cloudfall answers both: every dollar stops buying margins, and every
317-
claim about your servers is backed by evidence collected from the
318-
servers themselves.
316+
Agents can already run your servers. What they lack is a record:
317+
what they may do, whether it worked, and why they did it. Cloudfall
318+
is that record, and it happens to make leaving the cloud safe too.
319319
</p>
320320
<div class="grid">
321321
<div class="card">
322-
<h3>The bill buys computers, not margins</h3>
322+
<h3>A record that answers why</h3>
323323
<p>
324-
A steady cloud bill is mostly margin on commodity compute and
325-
managed databases. The same workload runs on one or two
326-
Hetzner-class servers for a tenth of the price, and the
327-
difference is runway, every year.
324+
An agent's own log says a tool was called. Cloudfall's record
325+
says what the fleet looked like when it was, what was proposed,
326+
who approved, and what verify reported. After an incident, that
327+
is the page you open.
328328
</p>
329329
</div>
330330
<div class="card">
331-
<h3>Evidence over inference</h3>
331+
<h3>Verified, not just ran</h3>
332332
<p>
333333
Deployments produce receipts. Status is derived from validated
334334
observations, and <code>cloudfall audit</code> reports drift between
@@ -356,12 +356,12 @@ <h3>Autonomy earned, never assumed</h3>
356356
</p>
357357
</div>
358358
<div class="card">
359-
<h3>Typed state you own</h3>
359+
<h3>The bill buys computers, not margins</h3>
360360
<p>
361-
Servers, applications, and domains are declared in YAML validated
362-
against JSON Schemas: versionable, diffable, agent-readable. The
363-
config is the whole interface; no imperative dashboard holds your
364-
infrastructure hostage.
361+
A steady cloud bill is mostly margin on commodity compute and
362+
managed databases. The same workload runs on one or two
363+
Hetzner-class servers for a tenth of the price, and the
364+
difference is runway, every year.
365365
</p>
366366
</div>
367367
<div class="card">
@@ -410,8 +410,8 @@ <h3>Operate</h3>
410410
<p>
411411
Cut DNS and the bill starts buying computers. The always-on
412412
operator watches declared alerts and audited drift, remediates
413-
what its receipts prove reversible, and delivers a receipt for
414-
every action; you approve only what can't be undone.
413+
what its record proves reversible, and writes an audit entry for
414+
every decision; you approve only what can't be undone.
415415
</p>
416416
</div>
417417
</div>
@@ -448,6 +448,7 @@ <h3>Not there yet</h3>
448448
<li>Broader service catalog: MySQL, Elasticsearch, RabbitMQ, Node runtimes</li>
449449
<li>Enforced per-component resource limits for shared nodes</li>
450450
<li>Importers beyond Render</li>
451+
<li>Your existing Ansible inventory and playbooks as the config and the agent's tool list: <a href="https://github.com/romamo/cloudfall/blob/main/docs/brownfield-design.md">design written</a>, nothing built</li>
451452
</ul>
452453
</div>
453454
</div>

‎site/public/manifesto.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<meta property="og:image" content="https://cloudfall.dev/og.png">
1616
<meta property="og:image:width" content="1200">
1717
<meta property="og:image:height" content="630">
18-
<meta property="og:image:alt" content="Cloudfall — own your stack, keep the autopilot">
18+
<meta property="og:image:alt" content="Cloudfall — the record behind your AI operator">
1919
<meta name="twitter:card" content="summary_large_image">
2020
<meta name="twitter:title" content="The Cloudfall Manifesto — principles behind the project">
2121
<meta name="twitter:description" content="Constraints we accept, not aspirations we advertise: the eight principles behind Cloudfall.">

‎site/public/og.png‎

-115 KB
Loading

0 commit comments

Comments
 (0)