Unruly Systems · Open Source

Introducing press

A self-hosted publishing surface for self-contained HTML pages. Humans and agents publish through a CLI; readers get a magazine-grade site with per-page access control.

The problem

Teams generate HTML artifacts constantly — weekly recaps, quarterly reviews, data reports, agent-produced documents. Most of them rot in git repositories, Slack uploads, and local folders. The usual alternatives each fail on some axis:

press is the missing shape: CLI-published, identity-gated, self-hosted.

Publishing

One command, and the page is live at a stable URL:

press publish report.html --to weekly --as q3-summary.html

A page is one self-contained HTML file. No build step, no framework, no external assets — published pages are served under a strict sandbox so one document can never read another or act as its viewer.

Access control

Access is per page, and the safe choice is the one you get by default. Nothing becomes public unless it is asked for explicitly.

default
Signed-in members of the instance’s allowed email domains.
public
Anyone with the link. Opt-in, never inherited by accident.
password
A hashed page password, shown once at publish time.
private
An explicit allowlist of individual email addresses.

Running it

An instance is a single container plus Postgres. Identity provider, allowed domains, hostname, and storage are configuration — nothing organization-specific is compiled in. Secrets come from whatever store the operator already runs, and no third-party service sits in the data path.

press is MIT licensed and written in TypeScript. The source lives at github.com/unrulysystems/press, currently at v0.5.0.