SELF-HOSTED / OPEN SOURCE

Ship an HTML file.
Get a real website.

Publish reports, dashboards and internal tools with security scanning, site-level permissions and persistent data. Use the CLI or your agent, on infrastructure you control.

SQLite · PostgreSQL · MySQL · Supabase

~/reports
$ pip install html-golive
$ golive publish q3-report.html --slug q3-report

🔍 scanning for secrets… clean
🎨 style: minimal · assets bundled (4 → 1 file)
📦 published

   slug      q3-report
   url       http://localhost:8787/q3-report
   size      86 KB · snapshot #1 saved

HTML → URLYour server. Your data.

SMALL TOOL. REAL INFRASTRUCTURE. CI PyPI Python MIT

Why it exists

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.

Your data stays put

Runs entirely on your own machine or server. No account, no telemetry, no outbound calls by default — works airgapped.

Zero configuration to start

Start with local files and SQLite out of the box. No database service or object store to provision.

Grows with you

Choose SQLite, PostgreSQL, MySQL or Supabase in configuration. Store HTML separately on local files, Supabase Storage or S3-compatible storage.

What you get

Publishing, security scanning, role-based site permissions, four databases and an admin workspace — in one toolkit.

Publish & roll back

Every publish snapshots the previous version. golive rollback returns to any of them instantly.

Security scanning & publish protection

Detect API keys, private keys, database credentials and sensitive personal data before publishing. Strong credential hits block publication. Editor saves and imports run the same scanner, with extensible rules and optional LLM review.

Identity & site permissions

Token or OIDC authentication, with separate owner, maintainer and superadmin roles. Site management and permission changes are recorded in the audit log.

A database for static pages

A stable window.TemplateAPI provides CRUD. SQLite / PG / MySQL use a server proxy; Supabase uses public keys governed by RLS.

Edit in the browser

Owners and maintainers get an inline editor on the live page — fix a typo without touching the source file. Saves are scanned and snapshotted.

Admin console

A light/dark, bilingual workspace at /admin: editable global settings, sites, permissions, data and precise database diagnostics.

19 built-in styles

Turn an unstyled document into something presentable with --style. Fonts come from public CDNs or your own mirror.

Clone any page

golive clone <url> snapshots a public page, inlines its assets and republishes it as your own.

Docker ready

A Dockerfile and a compose file with an optional MinIO profile — from zero to a running server in one command.

Your admin workspace

Light/dark themes, English and Chinese, editable global settings and diagnostics for all four databases.

Your admin workspace

Quickstart

Three steps, about a minute. No configuration file needed to begin.

Install

Python 3.9+. Use html-golive[mysql] for MySQL or html-golive[postgres] for PostgreSQL.

$ pip install html-golive

Publish a page

Point it at any HTML file. It scans for secrets, applies a style, bundles assets and registers the site.

$ golive publish report.html --style minimal

Serve it

Use an explicit 127.0.0.1 listener for local checks. Saved configuration can change defaults; configure access control before sharing.

$ golive serve --host 127.0.0.1 --port 8787 🚀 http://localhost:8787/ · admin portal: /admin

Architecture

Three pluggable interfaces. Start on the left column, move to the right when you outgrow it — your commands and your pages don't change.

Storage

  • local filesystem (default)
  • supabase storage bucket
  • s3 MinIO / COS / OSS / TOS

Registry

  • sqlite single file (default)
  • postgres / mysql server-side DSN
  • supabase PostgREST table

Data

  • sqlite / postgres / mysql server proxy
  • supabase page-direct, GRANT + RLS
  • none optional data-layer disable

Identity

  • none loopback-only access
  • token shared bearer token
  • oidc Google, Okta, Keycloak…

Let your agent ship it

Use the CLI and bundled skill with an agent that can run commands. Publish, roll back, manage data and verify your setup; choose the skill directory for your agent.

python3 -m pip install html-golive
golive skill install
golive skill status

Command reference

Publishing, serving, data, migration and diagnostics for the full workflow.

CommandWhat it does
publishScan, style, bundle and deploy an HTML file
listShow every registered site with size and owner
rollbackRestore a previous snapshot
serveRun the HTTP server and the admin portal
previewServe a local file without registering it
cloneSnapshot a public page and republish it
maintainerGrant or revoke edit rights on a site
adminOpen the admin console
stylesList the 19 built-in visual styles
data / dbInspect and manage the data backend
migrate-checkFind environment-specific references in an HTML file
verifyReal HTTP, page injection and database self-checks
export / import / migrateBackup, restore and change backends
skillInstall and check the bundled AgentSkill
doctorDiagnose configuration and connectivity

Try it

MIT licensed. Real tests for all four backends; Linux / macOS CI on Python 3.9 / 3.11 / 3.12. Issues and pull requests welcome.