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:
- Static-site pipelines are ergonomically wrong for one-off documents, and hostile to agent publishers.
- SaaS hosting puts a third party in the data path — unacceptable for sovereignty-sensitive organizations.
- Object storage has no identity, no access control, and no front door.
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.