About these docs
PublicThese docs are the Glyph engineering wiki. They sit at glyph.naburis.cloud/docs, get built from the canonical product source files at every release, and are written so a new architect or engineer can become productive without your time being the bottleneck.
Two tiers, decided by URL prefix
Section titled “Two tiers, decided by URL prefix”| Prefix | Audience | Gate |
|---|---|---|
/docs/... | Anyone | None |
/docs/admin/... | Zitadel admin role | Caddy forward_auth → glyph-oauth2-proxy |
The path is the source of truth. The frontmatter audience field is validated against the path at astro check time, so a misplaced page fails the build instead of leaking.
Diátaxis discipline
Section titled “Diátaxis discipline”Every page is exactly one of:
- Tutorial — on-rails learning. No branching, no choices.
- How-to guide — a real-world goal. Imperative and numbered.
- Reference — facts. Declarative, scannable, no narrative.
- Explanation — understanding. Discursive, opinionated, no step lists.
Sidebar groups name the mode. Mixing modes on a page is a bug — open a PR to split it.
What is auto-rendered from canonical sources
Section titled “What is auto-rendered from canonical sources”The pages below read their content at build time from the product source. They cannot drift from the code:
- Operator catalog —
/opt/glyph/schemas/operators/*.json - Trigger catalog — same source, filtered to
trigger.* - SQL migrations —
/opt/glyph/migrations/*.sql - Cell manifest —
/opt/glyph/cell-manifest.yaml - Caddy route map —
/opt/glyph/glyph.caddy - DEPLOY.yaml mapping —
/opt/glyph/DEPLOY.yaml - Permission bits —
/opt/glyph/crates/glyph-shared/src/permissions.rs
Add a new operator? It appears in the catalog automatically. Change the Caddy site? The route map updates. This is the single biggest lever against doc rot.
Page actions
Section titled “Page actions”Every page has two actions next to its title:
- Copy page — fetches the raw Markdown and copies it to the clipboard, prefixed with the canonical URL. Paste into a chat with an LLM and the model has perfect context.
- Open in Cursor — opens the source page (
docs/src/content/docs/<slug>.mdx) in your local Cursor viacursor://URL. Only shown when the page declaresopen_in_cursorin frontmatter.
Frontmatter contract
Section titled “Frontmatter contract”title: Required.description: Optional but encouraged for SEO + LLM context.audience: public | admin # must match path prefixtier: tutorial | how-to | reference | explanation | operations | adrlayer: frontend | backend | platform | data | crdt | aicrate: glyph | glyph-shared | glyph-modellast_verified: 2026-04-19 # CI flags pages > 180 days untouchedrelated: ['/docs/explanation/what-glyph-is']stability: stable | beta | draftowner: platformkeywords: ['operator', 'dag']open_in_cursor: /opt/glyph/docs/src/content/docs/...Contributing
Section titled “Contributing”cd /opt/glyph/docsnpm install # first time onlynpm run dev # http://localhost:5184/docsnpm run check # type-check + content-collection schemanpm run lint # check + stale + operator-coverage + diataxis-lintnpm run build # static site → dist/Before opening a PR:
npm run lintis green.- The page has the right frontmatter.
- Anything new under
admin/is genuinely admin-only — public concepts go on top. - If you wrote something that “needs explaining,” create a phantom link to a (possibly empty) explanation page; that is how the explanation tree grows organically.
The build pipeline (make ship-docs) typechecks, builds, rsyncs dist/ to /srv/glyph-docs/, and verifies HTTPS 200. See Admin · Operations · Deployment.