Self-hosted, one-command HTML deployment. Publishing, versioned rollback, an in-browser editor, a database for static pages, security scanning and an admin console β all on infrastructure you own.
$ pip install html-golive $ golive publish q3-report.html π scanning for secretsβ¦ clean π¨ style: minimal Β· assets bundled (4 β 1 file) π¦ published slug q3-report url http://localhost:8787/s/q3-report size 86 KB Β· snapshot #1 saved
You have an HTML file β a report, a dashboard, an internal tool β and you need it on a URL your colleagues can open. The usual answers are a cloud platform that can't touch your data, or a bare nginx that gives you nothing but a file server. html-golive is the middle ground: run it yourself, keep everything inside your network, and still get the conveniences you expect.
Runs entirely on your own machine or server. No account, no telemetry, no outbound calls by default β works airgapped.
The core install is standard-library only. Local filesystem plus SQLite; no database or object store to provision.
Swap in Supabase or any S3-compatible store (MinIO, COS, OSS, TOS) with one yaml file. Same commands, bigger backend.
Everything below ships in the box β one install, no plugins to hunt down.
Every publish snapshots the previous version. golive rollback returns to any of them instantly.
Owners and maintainers get an inline editor on the live page β fix a typo without touching the source file. Saves are scanned and snapshotted.
window.TemplateAPI and window.SupabaseAPI are injected into your page, so plain HTML can read and write real rows.
Rule-based detection of API keys, tokens and personal data before anything goes live β with optional LLM second-pass review.
Turn an unstyled document into something presentable with --style. Fonts come from public CDNs or your own mirror.
A self-contained web portal at /admin: all sites, ownership transfer, maintainers, rollback, stats and an audit trail.
Static token for quick setups, or OIDC with one-line presets for Google, Auth0, Okta, Azure AD, Keycloak and Authentik.
golive clone <url> snapshots a public page, inlines its assets and republishes it as your own.
A Dockerfile and a compose file with an optional MinIO profile β from zero to a running server in one command.
Three steps, about a minute. No configuration file needed to begin.
Python 3.9 or newer. Optional extras add image compression and S3 support.
Point it at any HTML file. It scans for secrets, applies a style, bundles assets and registers the site.
Binds to localhost by default. Add --host 0.0.0.0 when you're ready to share β pair it with a token or OIDC.
Three pluggable interfaces. Start on the left column, move to the right when you outgrow it β your commands and your pages don't change.
Thirteen commands cover the whole lifecycle. Full detail lives in the user manual.
| Command | What it does |
|---|---|
publish | Scan, style, bundle and deploy an HTML file |
list | Show every registered site with size and owner |
rollback | Restore a previous snapshot |
serve | Run the HTTP server and the admin portal |
preview | Serve a local file without registering it |
clone | Snapshot a public page and republish it |
maintainer | Grant or revoke edit rights on a site |
admin | Open the admin console |
styles | List the 19 built-in visual styles |
data / db | Inspect and manage the data backend |
migrate-check | Find environment-specific references in an HTML file |
doctor | Diagnose configuration and connectivity |
MIT licensed. 413 tests, CI on Python 3.9 / 3.11 / 3.12. Issues and pull requests welcome.