What it is
StaticOwl ships four deploy targets, picked per-site:
| Target | What it does | When to use |
|---|---|---|
| static-paths | Writes files to S3 under /{site}/{env}/path. Default. |
Marketing sites, classic CDN deploys. |
| manifest-pointer | Content-addressed artifacts + a manifest pointer. Deploy = pointer flip. | Audit-grade deploys, atomic blue/green, replayable rollbacks. |
| github | Pushes the rendered tree to a Git repo branch. Customer can fork and self-host. | Open-source docs, customer-mirrorable archives. |
| both | static-paths + github simultaneously. | Hybrid setups during migration. |
Why manifest-pointer is the architectural moat
A deploy is one S3 PUT flipping a single current.json pointer. CloudFront resolves that pointer at the edge in <10ms via Lambda@Edge. The site is in exactly one state at any moment — there's no window where some readers see the new version and some see the old.
Rollback is the same operation in reverse: flip the pointer back. The old artifacts are still there (content-addressed, immutable), so rollback is instant.
Same Release can promote staging → prod with zero rebuild — the artifacts are already there, only the pointer differs.
What it gets you
- Atomic deploys — no half-rolled-out CDN
- Instant rollback — pointer flip backwards
- Replayable deploys — every Deployment is a graph fact; the deploy history is a query
- Reproducible builds — same Release → identical artifacts (SHA-256 dedup); unchanged paths never re-upload
- Incremental at scale — 1M-page site, change one article, rebuild = ~5–10 file uploads