- colibri.md: complete rewrite — was TypeScript "event fabric" with pi-centric ingestion modules, proof gates, Herdr evaluation. Now describes the actual v0.12 Rust control plane: crate map, agent model (zot/pi), mother MCP flow, links to wiki decision pages. - "broken" → "inconsistent" (docs-publishing), "compromised" (install), "not suitable" (sdk-deep-dive) - Zero remainders: no kill, smoke, fake, hacky, TODOs, stale pi patterns
5.4 KiB
| title | description |
|---|---|
| Docs and tenant-site publishing | Current operator workflow for Astro/Starlight docs deploys and manual tenant-site publishing from the cms jail. |
Docs and tenant-site publishing
Clawdie currently uses one Astro/Starlight project inside the Web Service (cms jail) for two related jobs:
- publishing the main docs site
- building tenant-site artifacts one site at a time
This page describes the current supported operator workflow.
Current model
The current deploy shape is:
- Host repo source:
/home/<agent>/clawdie-ai/ - Astro project in repo:
bootstrap/cms/clawdie-docs/ - Astro project in cms jail:
/usr/home/<tenant>/<tenant>-docs/ - Mounted host source in cms jail:
/usr/home/<tenant>/<tenant>-docs-host/ - Docs webroot in cms jail:
/usr/local/www/<tenant>/ - Tenant-site output root in cms jail:
/usr/local/www/<tenant>/sites/
The cms jail keeps its own node_modules/ and build output, but reads source from the host repo via nullfs mount.
Docs publishing
Source of truth
For docs content, the source of truth is:
docs/public/docs/public/sl/
The Astro tree under bootstrap/cms/clawdie-docs/src/content/docs/ is a generated consumer, not the editorial source of truth.
Day-to-day docs workflow
- Edit docs in
docs/public/on the host. - Pull or update the host repo if needed:
git pull
- Build and deploy from inside the cms jail project:
cd /usr/home/<tenant>/<tenant>-docs
npm run deploy
That deploy flow runs:
scripts/sync-host-config.mjsscripts/sync-public-docs.mjsscripts/generate-llms-files.tsfor/llms.txtand/llms-full.txtastro build- deploy into the cms jail webroot
npm run deploy protects /usr/local/www/<tenant>/sites/ by default, so a docs deploy does not wipe tenant-site output.
Machine-readable docs output
The docs build also emits two English-only root artifacts for external LLM consumers:
/llms.txt— a curated map of the public docs/llms-full.txt— one concatenated context file built from the same public docs source
These are generated from docs/public/ during the normal docs prebuild path.
Strapi editorial flow
When docs-related content changes in Strapi:
cd /usr/home/<tenant>/<tenant>-docs
npm run export-strapi
Then:
- review the exported snapshot on the host with
git diff - commit the changed snapshot
- deploy again with
npm run deploy
This keeps Strapi as an editorial input, not the only source of truth.
Tenant-site publishing
Tenant-site publishing is currently manual by design.
Run this command from the host repo root, not from inside the cms jail Astro project.
Supported command:
npm run publish-tenant-site -- --tenant <tenant> --site <site>
Example:
npm run publish-tenant-site -- --tenant atlas --site blog
What the command does
It currently:
- validates the tenant and site in
infra/tenants.yaml - rejects disabled sites
- prepares a site-specific content pack from:
- a committed Strapi snapshot when present, or
- generated registry content as fallback
- builds the Astro project inside the
cmsjail - syncs the built output into:
/usr/local/www/<tenant>/sites/<tenant>/<site>/
Current operator flow
- Declare or update the site in
infra/tenants.yaml - If Strapi content changed, run:
cd /usr/home/<tenant>/<tenant>-docs
npm run export-strapi
- Review and commit the snapshot diff on the host
- From the host repo root, publish the site:
npm run publish-tenant-site -- --tenant <tenant> --site <site>
- Verify:
- tenant home shows the site as available
- the site host serves real content
Publish state meanings
Tenant-site publishing has explicit states that show up in reports and verification output:
planned_onlyThe site is declared in the registry, but no served output exists yet. This is normal before the first manual publish.partialSome enabled sites have published output and some are still only declared. This is acceptable while publishing sites in batches.availableEvery enabled site currently has served output where the platform expects it.inconsistentThe live output and the publish manifest disagree. This is the state to treat as inconsistent.
What verify checks
just setup -- --step verify checks tenant-site publishing directly.
For tenant sites it checks:
- whether a served
index.htmlexists in the expected site webroot - whether a publish manifest exists for served output
- whether the manifest still matches the declared tenant, site, host, and target paths
This means:
planned_only,partial, andavailabledo not fail verify by themselvesinconsistentdoes fail verify, because it means runtime truth and publish bookkeeping drifted apart
Current limitations
Be explicit about what is not true yet:
- tenant-site publishing is not automatic
- it is not webhook-driven
- it is not a full per-site Astro app model yet
- docs publishing and tenant-site publishing still share one Astro/Starlight project
That shared-project design is acceptable for the current phase because it keeps the publish path inspectable and reversible.
Required local jail environment
Keep tokens and secrets in the cms jail .env, not in git.
Common values:
STRAPI_BASE_URLSTRAPI_API_TOKENCMS_WEBROOTCMS_DEPLOY_PROTECT