E2®
Join the community

E2 Mirror · If We Get Hacked, We Stay Online

If E2 disappeared tomorrow,
it should be back before lunch.

This page is our mirror plan, written in public. How every site in the E2 universe, our Discord, and Starvard get a second home on different accounts, different providers, and different domains, so one bad hack, one deleted account, or one wiped machine cannot take the whole world down.

Status: building now Never one copy Never one account Never one person
The mirror plan The Discord lifeboat

The Honest Starting Point

What we already have, and what we do not

A mirror plan that pretends everything is already backed up is worse than no plan. Here is the true state today.

Already true

Source lives in git

e2.life, Starvard, and The Studio live in git repos. The safe deploy pipe pushes to the repo first, then deploys from a pristine checkout, with a deletion guard. If a live site vanished, we could redeploy from the repo today.

Already true

The bots survive a wipe

Our machine has been replaced before and silently took the Discord bots with it. The boot watchdog now notices, restores Sam, Marty, Shippy, Tippy, and presence from saved templates, and starts them again without anyone asking.

Not yet true

Everything shares too few accounts

Most sites sit in one Cloudflare world, most code in one GitHub world, and Discord history lives only inside Discord. A hack of any one of those three is still a very bad day. That is exactly what the mirror fixes.

What Could Take Us Down

Six bad days we are planning for

Bad day 1

Cloudflare account hacked

Sites deleted or defaced, DNS changed, Workers replaced. Answer: a second hosting account, already deployed, on a different login, ready for a DNS flip.

Bad day 2

GitHub hacked or deleted

Repos are our source of truth, until they are gone. Answer: every repo mirrored daily to a second git host, plus an offline bundle with a signed hash.

Bad day 3

Domain or DNS hijacked

The names stop pointing at us. Answer: backup domains on a different registrar, bought in advance, already pointed at the mirrors, published on this page in advance.

Bad day 4

Discord server deleted

A server, its history, and its member list cannot be cloned back by Discord. Answer: a prebuilt lifeboat server, a nightly blueprint of channels and roles, and a passport list we can re-invite from. Below.

Bad day 5

Our machine wiped again

It has happened, repeatedly. Answer: bots, ledgers, and jobs are rebuilt from git and watchdog templates, and a second small server holds a hot standby copy.

Bad day 6

A defacement gets mirrored

The sneaky one: a bad edit syncs everywhere before anyone notices. Answer: mirrors never sync blind. Snapshots are signed, versioned, and held as last known good, with a short delay and a big change alarm.

The Plan

Three layers of mirror

Cold is cheap and slow to wake. Hot costs a little and wakes in minutes. We need all three, for different things.

Layer 1: Cold mirror, the vault

Nightly git bundles of every repo, a full file snapshot of every site, every Worker script, every bot, and every data file that matters: Tippy ledger, presence, bounties, updates, passports, growth history. Encrypted, hashed, stored in two places that are not Cloudflare and not GitHub, plus one offline copy. Restore time: hours. Cost: near zero. This layer means we can never truly lose the work.

Layer 2: Warm mirror, the spare house

Every public site deployed, in advance, to a second Cloudflare account and to one independent static host on a small server. Backup domains already point there. Nobody visits it day to day, it just sits ready, rebuilt on every real deploy, so the copy is never stale. If the main house burns, we move in the same day. Restore time: under an hour, most of it DNS.

Layer 3: Hot mirror, the lifeboat

For the living things: Discord bots, Tippy money, presence, login, and the Finn chat on Starvard. A standby copy running on a second server, heartbeating the main one, ready to take over in minutes. Standby bots stay silent until promoted, so nobody ever gets two Sams answering at once.

The Sites

Every property gets a mirror twin

e2.life

Source: the e2 git repo, deployed by the safe pipe. Mirror: second account deploy from the same repo on every ship, backup domain pre-pointed, and a static snapshot on the spare server. The homepage, bounties, updates, feed, and online pages must work on the mirror with no database at all: they already read simple JSON files, which mirror trivially.

Starvard, starvard.org

The biggest property, and its own section below. In short: rebuildable from its builders and data, mirrored as five projects, not one, because books, chapters, and the main site already ship separately.

thestudio.io

Same treatment: repo twin, second account deploy, snapshot. Its tree and repo still need their reconcile finished before a mirror can be trusted, because a mirror of a disagreement is just two disagreements.

Clear Recipe, Llama Chat, Llamagram, CLR.fm

Static parts mirror like the rest. The living parts, Llama Chat posts and profiles, need a data export of their own: a nightly database dump, encrypted, in the vault, plus a read only public feed mirror so the community can still read while we rebuild.

Workers and little APIs

Login, Finn, counts, snippets, visitor data: every Worker script lives in git with its config written down, no settings that exist only in a dashboard. A mirror Worker account gets the same scripts from the same repo. Secrets live in the vault, never in this plan, never on this page.

Media and images

Every site hosts its own images, so every site mirrors its own images too: an asset snapshot per property, hashed, in the vault and on the spare server. No mirror page should ever point back at the original host for its pictures, or it is not a mirror.

The Hard One

The Discord lifeboat

Discord gives us no export button for a community. If the server is deleted, the channels, history, and member graph go with it. So we build the lifeboat before we need it, and we keep the important cargo on the web, where we own it.

Lifeboat 1

A second server, prebuilt

A reserve server with the same channels, categories, roles, and permissions, already made, sitting empty and quiet. Sam, Marty, Shippy, and Tippy are already members with backup tokens ready. One invite link, published here and on the sites, is the rally point.

Lifeboat 2

A nightly blueprint

Every night a bot exports the server structure as data: channels, roles, permissions, emoji, and settings, saved to git. If both servers vanished, a script rebuilds the structure in minutes, in the right order, with the right names.

Lifeboat 3

The passport is the member mirror

Our passport register, the online page, and the active page already name the people who matter most, with their Discord IDs. The full member export, handled privately and encrypted, is the re-invite list. People are the community, not the channel history.

Lifeboat 4

Important words live on the web

Announcements already mirror to Updates, bounties to the Bounties board, tips and level ups to the Live Feed. We extend that rule: anything the community would grieve losing gets posted to a page we own, not only to Discord. Discord becomes a copy, never the only copy.

Lifeboat 5

Bots with a standby brain

Bot code already lives on our machine and in git. The mirror adds: backup bot apps created in advance, tokens in the vault, and the standby server copy that watchdog already knows how to restore. Tippy gets special care, next section.

Lifeboat 6

A rally drill

Once a quarter, we actually use the lifeboat for an evening: a voice hang in the reserve server, a test tip, a test welcome. A lifeboat nobody has sat in is a decoration, not a plan.

Starvard

Mirroring a whole university

Rebuild, do not just copy

Starvard is tens of thousands of pages: courses, books, chapters, and the same welcome in 17 languages. Copying HTML is fragile. The real mirror is the thing that made the pages: the builders, the course data, the book sources, and the counts file, all in git and in the vault. From those, a clean machine can regenerate the whole university, which we already prove every time a builder reruns.

The library travels lightest

Most of the library is public domain books. Their source texts get their own simple mirror: plain, small, and shareable, pinned in more than one place. Even with no website at all, the library survives as files anyone can host. That fits the mission: a free university should be hard to delete.

Starvard in a box

The dream mirror: a single downloadable snapshot, homepage, courses, and library, that runs offline from a folder or a USB stick. If the site is ever down for a student, the box is the class. It is also the perfect test: if the box builds, the mirror works.

Finn and counts, mirrored simply

Finn is a Worker plus a prompt and a book index: all text, all in git, redeployable to the mirror account in minutes. The live counts are one JSON file read at runtime, exactly the pattern that mirrors best. No baked numbers, no hidden database.

Data and Money

The parts we must never lose

Money

Tippy ledger first

The ledger is the one dataset where loss means people lose money. It mirrors hourly, encrypted, to the vault and the standby server, with a public hash so anyone can check a restored ledger is the real one. In a crisis Tippy freezes first and resumes last, after the hash checks out. Private wallet details never appear in any mirror, ever, by our standing rule.

People

Presence and passports

Presence, online counts, and the passport register are small JSON files with producers we control. They snapshot with the sites, and their producers are in git, so the living layer can be regrown, not just restored.

Trust

Signed, versioned, last known good

Every mirror snapshot carries a manifest of file hashes, the same idea as our deploy deletion guard, extended fleet wide. Restores only ever use a signed last known good snapshot. A mirror that cannot prove it is really us is a phishing site waiting to happen, so mirror domains are listed only on this page and in our own footers.

When It Happens

How a flip works

Step 1, minutesDetect

An outside checker on a different provider watches content, not just status codes: the real titles and key text of the homepages, Starvard, and the login and Finn endpoints. A defaced page fails this check even when it returns a cheerful 200.

Step 2Declare

One person can declare a mirror flip. The call, the time, and the bad snapshot hash go in the runbook log. Freezing Tippy and the bots happens here, before anything moves.

Step 3Flip

DNS for the main domains points at the warm mirror, or, if DNS itself is the problem, we announce the backup domains everywhere we still control: socials, the lifeboat server, and email. Low time to live values, set in advance, keep this fast.

Step 4Verify by eye

The mirror is checked the way we check everything: by title, by content, by clicking through, never by status code alone. Then the originals get rebuilt from the vault, cleanly, and only then do we flip back.

Bookmark the way back

When the backup domains and the lifeboat invite exist, their only official list will be this page, copied into every site footer. If you ever see a mirror address announced anywhere else, treat it as fake until it appears here. The plan is public, the keys never are.

Build Order

What we do first

P0, this week: the vault and the blueprint

Nightly repo bundles to a second git host and the vault, a Discord structure export to git, Tippy ledger hourly copies verified by hash, and an inventory file that names every property, repo, project, Worker, bot, and domain in one place. Mostly scripts we already half have. This is the set up that starts today, in our mirror folder, next to this page.

P1, next: the spare house and the lifeboat server

A second hosting account with every property pre-deployed, backup domains bought on a second registrar and pre-pointed, the reserve Discord server built from the blueprint with backup bots inside, and standby bot hosting on a small second server.

P2, then: drills and the box

A status page on independent ground, quarterly flip and lifeboat drills, an outside content checker, and Starvard in a box. The plan is only finished when a drill passes with nobody improvising.

Rough cost of the whole thing: backup domains and one small server, on the order of a nice lunch per month. The expensive version of this plan is the one we invent during a hack.

Talk About It

Help us find the holes

Spot a gap?

Tell us in Discord

If a property, a bot, or a dataset is missing from this page, it is probably missing from the mirror too. Shout in the E2 Discord. Finding holes on a calm day is the whole game.

Building?

Own one mirror piece

Each property gets one named mirror owner, the same one owner per page rule we use for deploys. Mirrors rot when everybody owns them in general and nobody owns them in particular.

Changed?

Here first, then everywhere

When the mirror plan changes, this page changes first, then the runbook, then the scripts. A secret plan nobody can read during a crisis is not a plan.

3
mirror layers: cold, warm, hot
6
bad days planned for
1
hour, warm mirror target
0
single points of failure, when done

Two of everything, so the kinder world stays up. Built to be enjoyed, mirrored to survive.