Speedrun any% destroy humanity.
Cloud Clicker is a free, browser-based MMO idle game in development. You begin in a 1995 garage and build an AI company toward a deliberately finite ending while the interface and institution around it gradually enshittify.
There are no ads, purchases, or real-money mechanics. The satire only works if the game is not selling the systems it mocks.
- An idle game with a designed ending, where prestige loops are routes through the story rather than a substitute for finishing it.
- Nine technology eras whose mechanics and interface change as the company grows from honest shareware to a world-consuming megacorp.
- Active and idle play as different builds, with generous offline progress available to everyone.
- Server-wide milestones, guilds, shared events, leaderboards, and minigames, each with an honest AI fallback when no other player is available.
- Server-authoritative simulation with published community formulas, visible hardcaps, and declarative balance data.
- Parodies of modern dark patterns with the curtain pulled all the way back—and a sincere pet who is never part of the joke.
Cloud Clicker is pre-1.0, currently integrating and hardening the Garage. The repository has an executable early-game loop and substantial server foundations, including:
- deterministic big-number arithmetic shared between Go and TypeScript;
- server-authoritative economy, production, offline progress, saves, and replay;
- account/session and WebSocket transport backends;
- declarative content, routes, achievements, guild, pet-care, and minigame infrastructure; and
- a production-built Svelte client tested through purchases, early endings, next-run continuation and recovery against real PostgreSQL and WebSocket services.
Tier 2 has candidate content and integration tests, not a completed release. Much of the world/MMO layer, combat, Tiers 3–8 and the final endings still needs construction. Natural pacing, account recovery/export/deletion workflows, accessibility, consolidated reviews and clean-host deployment proof also remain unfinished. Deployment and backup tooling exists; that is not yet a supported release. APIs, schemas, and content may change before 1.0.
Current status is maintained in the checked project artifacts rather than copied into this README:
- Current-state brief
- Capability map
- Execution queue
- Active RFC register
- Implemented-system documentation
Requirements:
- Go 1.26 or newer
- Node.js 22 or newer
- pnpm 11.15.1
- GNU Make
- Docker with Compose support for PostgreSQL and composed browser tests
Clone the repository and install the pinned client dependencies and browser versions:
git clone https://github.com/stronk-dev/destroy-humanity-any-percent.git cloud-clicker
cd cloud-clicker
make setupBuild the backend and client:
make build-gameserver
make build-clientBuild artifacts are written beneath .cache/ and client/dist/.
Deployment tooling and Compose/Caddy templates live in deployment/, but a supported release
has not yet passed its required clean-host install, restore and rollback rehearsal. The Compose
files at the repository root are test infrastructure. See Deployment for
the implemented tooling and its limits, and Gameserver Composition for
the backend's environment, startup, readiness and shutdown behavior.
Run the standard local aggregate from the repository root:
make verifyUse the Docker-backed lanes when claiming PostgreSQL or complete browser-to-server evidence:
make test-go-ci
make test-game-ui-composedSome balance-harness checks are intentionally long-running. A green unit package or ordinary host run does not prove that dependency-conditional and composed workflows executed. See Continuous Integration for the complete verification contract and focused commands.
| Layer | Stack |
|---|---|
| Server | Go, Chi, embedded Centrifuge, coder/websocket |
| Client | Svelte 5, TypeScript, Vite, Web Worker prediction loop |
| Persistence | PostgreSQL 16, Goose migrations |
| Numeric model | break_infinity.js 2.2.0 and a matching Go Decimal implementation |
| Testing | Go test, Vitest, Playwright, Docker Compose |
The server is authoritative. Clients submit intents and predict presentation state; they do not commit gameplay results. Production is calculated lazily from closed forms rather than by running a permanent server tick for every player.
| Path | Responsibility |
|---|---|
server/ |
Gameplay services, persistence, migrations, and commands |
client/ |
Svelte application, prediction worker, generated API types, and browser tests |
balance/ |
Declarative gameplay content, schemas, fixtures, and harness inputs |
copy/ |
Governed player-facing copy catalogs and generated artifacts |
testdata/ |
Shared cross-runtime vectors and fixtures |
docs/ |
Canonical documentation for implemented behavior |
design/ |
Product intent and research-backed design |
rfc/ |
Active implementation specifications and archived RFC history |
planning/ |
Per-RFC plans, append-only logs, and repository alignment records |
Cloud Clicker is not a conventional endless mobile tycoon with its purchases removed. It is a finite, replayable satire built around several non-negotiable boundaries:
- no real money, advertising, NFTs, or paid offline progress;
- no hidden softcaps or client-authored gameplay outcomes;
- no multiplayer system without a non-cheating, clearly identified bot fallback;
- no punishment for leaving an idle game idle; and
- no dark-pattern parody that conceals what it is doing.
The complete product thesis is documented in the vision.
The project uses an evidence-first, RFC-driven workflow. Before a substantial change, read AGENTS.md, the RFC process, and the relevant design and canonical documentation. Product implementation requires an accepted RFC; missing specification is recorded as a design gap rather than improvised in code.
Changes should include the smallest discriminating test, update canonical documentation when behavior changes, and pass the relevant verification gates. See the active RFC register for current work.
Cloud Clicker is available under the MIT License.