run-lamp.com · Part of Just Every · MIT licensed
Watch the full demo · 51 seconds

Write the update from a brief of what you know, with the public page previewed as you type.

Customers see who is affected, what still works and when the next update is due.
Lamp is a self-hosted status page and incident communication desk for one business. The operator app manages components, incidents, maintenance and subscriber communication; its separate page host serves customer-facing status information.
npx -y @runeditrun/rer dev just-every/run-lampThat one line gets Lamp, installs everything, makes you the owner and prints a link
that opens Lamp signed in. To start it again later, run cd run-lamp && rer dev.
No Node? curl -fsSL https://runeditrun.com/install.sh | sh -s -- dev just-every/run-lamp
brings its own and does the same.
The app host serves Lamp's public documentation at /docs. Start with the
overview, then choose a task:
- Install or run Lamp locally.
- First-run setup, components and groups, incidents and updates, and maintenance.
- Public page, subscribers and notifications, monitoring alerts, AI assistance, and operators.
- Domains, move-in, backups and recovery, and updating.
The Run page's start line, npx -y @runeditrun/rer dev just-every/run-lamp, clones the default branch, main, not a release tag, into a run-lamp
folder and starts it; after that, run rer dev from that folder. main is Lamp's
development source and may hold changes not yet in a release; it pins
@runeditrun/rer 0.2.42. The latest tagged release is v1.7.0, which pins
@runeditrun/rer 0.2.42. To use that release instead, clone the tag and start it:
git clone --branch v1.7.0 https://github.com/just-every/run-lamp.git lamp
cd lamp && rer devThen follow the documentation inside that checkout, which matches its tools.
rer --version prints the rer you installed on its first line and the version
this checkout pins on its second. Inside the checkout every rer command runs the
pinned version once the checkout's dependencies are installed (rer dev and
rer install install them); the installed rer only starts it.
Node 22.20.0 and pnpm 10.12.4 are pinned. rer downloads and uses that Node
version when your shell has a different one, and says so when it starts. Every
command in the guides runs through rer, except
removing a deployment and
backing up or restoring a hosted one,
which need Node 22 or later on your PATH (no global pnpm).
- Free: you run Lamp's open source yourself in your own Cloudflare account, with no Run Edit Run charge. The commands in this guide are this path.
- Assisted: Run Edit Run installs and maintains Lamp for you, while it stays in your own Cloudflare account and GitHub repository (early access).
- Managed: Run Edit Run hosts and runs Lamp for you (waitlist only).
Compare them on Run Edit Run plans.
Managed hosting includes mail: you need no provider account or mail key. RER
fills and hides MAIL_PROVIDER=rer, MAIL_FROM, MAIL_RELAY_URL and the private
MAIL_API_KEY. Free and Assisted hosting keep your own Resend or SendGrid account,
authenticated sender and API key, using MAIL_FROM_ADDRESS, MAIL_DKIM_SELECTOR
and MAIL_PROVIDER_API_KEY. Every hosted installation needs working mail.
Deploy to Cloudflare is one guided page: it explains each input
in the order the dry run asks for it, including how to authenticate a sending
domain at SendGrid or Resend, and keeps them in a private
input file.
You can also export the input names in the calling shell. The
input reference distinguishes required owner
values from secrets that rer generates on a first deploy.
Use rer from the project root; the checkout pins @runeditrun/rer 0.2.42. Before a
command that builds or verifies the checkout,
stop a running development server with rer dev --stop or a production preview
with rer preview --stop.
rer deploy --dry-run --environment production --env-file "$HOME/.config/lamp/production.env"
rer deploy --environment production --env-file "$HOME/.config/lamp/production.env"The dry run validates and compiles locally without contacting Cloudflare. A
deployment validates owner inputs, provisions or reuses resources, applies
migrations, builds and uploads the Worker with secrets, and checks application health.
Run rer verify separately for the full source and browser checks; deployment does
not run the verifier. The deploy ends by naming the sign-in address (your
LAMP_APP_HOST). Use the same environment on later deploys.
For terminal entry to the hosted owner account, use
rer signin --environment production --env-file "$HOME/.config/lamp/production.env"
from the deploying checkout with the default lamp-<environment> resource prefix.
It prints a private, single-use link without sending email; see
terminal sign-in
for custom prefixes and other prerequisites.
To retire an installation, see the removal command and record limits.
Before rer verify, stop the active development server or production preview
with the corresponding command above. A passing source verifier does not
establish hosted readiness or provider delivery; record each installation's
acceptance evidence separately in ACCEPTANCE.md.
The public and operator hosts must be distinct. See Hostnames and your own domain for Cloudflare zone and DNS steps.
- CONTRACT.md defines Lamp's product behavior; BASELINE.md holds the shared security and data guarantees.
- OPERATIONS.md is the technical reference for Cloudflare provisioning, remote archives and recovery. Local data recovery uses the canonical local sequence.
- AUTHORING.md explains source selection and publication.
- CHANGELOG.md, RELEASE.json, and HANDOVER.md record release and adoption information.
Preserve applied migration history. Back up data and the source revision before an update, restore into an empty destination when needed, and verify the exact candidate before adoption.

