Deployment
Deploy your documentation to any static hosting provider and configure clean URLs.
Flame builds a fully static site — no server runtime is required. flame build (or bun run build / npm run build / deno task build) writes everything to .docu/dist/:
Pages are emitted as flat .html files, and internal links are generated with the .html suffix so navigation works on any static host that serves files by exact path — with zero configuration.
Whether the .html suffix stays visible in the browser address bar depends on your provider's clean URL support. Some providers strip the suffix automatically, others need a small config file, and a few cannot rewrite URLs at all.
Provider Overview
Column notes:
- Auto-deploy on push — "Native GitHub" means the provider has a built-in GitHub integration (e.g. Cloudflare Pages, Vercel, Netlify) that connects to your repo and auto-builds on every push. "GitHub Action" means you need a workflow file (providers supply one via their setup UI).
- Server — the underlying HTTP server that serves your static files. All providers serve
.docu/dist/directly — no app server required.
For providers with Native GitHub or GitHub Action support, deployment is fully automated: push to your default branch, and the site updates minutes later. No manual upload or CLI step needed after the initial setup.
Zero Configuration
These providers handle clean URLs automatically — deploy .docu/dist/ as-is.
Cloudflare Pages
Cloudflare Pages natively redirects /page.html → /page and /about/index.html → /about/. No config file needed.
Source: Cloudflare Pages — Serving Pages
AWS Amplify Hosting
Amplify automatically serves /about from /about.html when the file exists. It resolves .html extensions and trailing slashes based on the build output — no additional configuration required.
Source: AWS Amplify — Trailing slashes and clean URLs
Configuration Required
These providers support clean URLs, but you must enable them explicitly.
Vercel
When true, Vercel strips .html from all URLs and responds with a 308 redirect for /page.html → /page.
Source: Vercel — cleanUrls
Netlify
Alternatively, enable it in the UI: Project configuration → Build & deploy → Post processing → Pretty URLs.
Source: Netlify — Pretty URLs
Firebase Hosting
When true, Firebase drops .html from uploaded URLs and responds with a 301 redirect for requests that include the extension.
Source: Firebase — Full hosting configuration
Azure Static Web Apps
Azure SWA has no cleanUrls option, and route redirect values do not support wildcard captures — so per-route redirect rules cannot strip .html site-wide. Use the trailingSlash setting instead, which normalizes URLs globally:
With "never" (or "auto"), a request to /docs/page.html is permanently redirected (301) to /docs/page, and the .html file is served at the extensionless path. Place the config file at the root of the deployed output.
Source: Azure Static Web Apps — Configuration
Render
Render does not strip .html automatically. Add a rewrite rule in the Render Dashboard:
Render serves existing files first — the rule only applies when no file exists at the requested path, so it never shadows real assets. Note that Render has no redirect in the other direction: links within the site keep their .html suffix, and the rewrite ensures extensionless URLs resolve when visited directly.
Source: Render — Redirects and Rewrites
Heroku
Heroku has no native static hosting — use the heroku-community/static buildpack and add static.json to the repo root:
clean_urls: true configures nginx to serve /page from /page.html.
Source: Heroku — static buildpack
Limited Support
These platforms cannot rewrite URLs — the site still works, but the .html suffix stays visible.
GitHub Pages
GitHub Pages serves files at their exact path only: /docs/page.html works, /docs/page returns a 404. There is no official rewrite mechanism for static files.
Flame ships a deploy helper — flame deploy (or bun run deploy / npm run deploy / deno task deploy) builds the site, adds a .nojekyll file, and generates a .github/workflows/deploy.yml workflow if one does not exist. The generated workflow automatically builds and deploys on every push to the default branch. The .html suffix remaining in the address bar is the only limitation — the site itself works perfectly.
Source: GitHub Pages documentation
AWS S3 + CloudFront
S3 static website hosting does not strip .html extensions. Clean URLs require a viewer-request handler on the CloudFront distribution — a CloudFront Function or Lambda@Edge — that appends .html to extensionless request URIs before they reach S3. This requires additional AWS infrastructure beyond a basic static deploy.
Last updated Jul 21, 2026