CI PyPI Python MIT

Ship an HTML file.
Get a real website.

Self-hosted, one-command HTML deployment. Publishing, versioned rollback, an in-browser editor, a database for static pages, security scanning and an light/dark admin workspace. v0.9.7 supports SQLite, PostgreSQL, MySQL 8.4+ and Supabase through one stable page API.

~/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

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

Everything below ships in the box β€” one install, no plugins to hunt down.

πŸš€

Publish & roll back

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

✏️

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.

πŸ—„οΈ

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.

πŸ›‘οΈ

Secrets scanning

Rule-based detection of API keys, tokens and personal data before anything goes live β€” with optional LLM second-pass review.

🎨

19 built-in styles

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

πŸ§‘β€πŸ’Ό

Admin console

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

πŸ”‘

Real authentication

Static token for quick setups, or OIDC with one-line presets for Google, Auth0, Okta, Azure AD, Keycloak and Authentik.

πŸ•ΈοΈ

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…

Verify MySQL with your agent

Pin v0.9.7, initialize a dedicated test database, then confirm real persistence through the browser and SQL.

python3 -m pip install 'html-golive[mysql]==0.9.7'
golive skill install --target .codebuddy/skills

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.