# Deploying

Build locally, then publish the site root with GitHub Pages or any static file
host. The generated files live in:

```text
index.html
public/
.nojekyll
```

For GitHub Pages, commit those generated files on the branch Pages serves, or run
Onyx as part of your publishing workflow. Generated page and asset URLs are
relative, so the site works under GitHub Pages project paths such as `/repo/`.

## Output safety

Onyx is conservative about overwriting files:

- `index.html` at the site root is replaced only if it is blank or already marked as generated by Onyx.
- `public/` is deleted and rebuilt only when it contains `.onyx-generated`.
- `.nojekyll` is written so GitHub Pages serves the generated static files directly.

These guards mean Onyx will refuse to overwrite a hand-written `index.html` until
you remove it or let Onyx replace it once — after that, its generated marker lets
later builds update it in place.

## How this site ships

This site is committed to its repository's `master` branch and served from the
repository root by GitHub Pages at the `onyx.jwd.me` custom domain. Every change
to the Markdown under `docs/` is rebuilt with Onyx and the regenerated
`index.html` and `public/` are committed alongside it.

For the project's contributor workflow, see [[development|Development]].
