Build Outputs
braised build produces outputs in three locations. This page is a map — each section describes what lives where and links to the page that covers it in depth.
your-project/
├── dist/ ← serve this; everything a browser or agent needs
├── artifacts/ ← structured JSON for braised mcp serve
└── .braised/ ← local build state; add to .gitignore
dist/
The complete site, ready to deploy. Copy dist/ to any static host.
dist/
├── index.html
├── getting-started/
│ └── installation/
│ ├── index.html ← clean URL page
│ └── index.md ← companion Markdown (agent-readable)
├── assets/
│ ├── braised.css
│ └── braised.js
├── llms.txt ← site index for AI agents
└── manifest.jsonl ← content chunks for embedding pipelines
| Output | Purpose |
|---|---|
**/*.html |
HTML pages with clean URLs. |
**/index.md |
Companion Markdown for every page — the same content, no HTML. Agents and tools read these directly without parsing HTML. |
assets/ |
Compiled CSS and JS bundles. |
llms.txt |
Site content map for AI agents and tools. Lists every page title, URL, and description in a standard format. |
manifest.jsonl |
Newline-delimited JSON stream of content chunks and deletion records for embedding pipelines and vector stores. |
sitemap.xml |
Standard XML sitemap for search engine crawlers. Only generated when site.url is set in braised.yaml. |
dist/ is safe to serve directly and safe to commit if you deploy via git. See Deployment for hosting options and sub-path configuration.
For manifest.jsonl field details and how to consume it in a pipeline script, see Manifest Reference and Writing a Pipeline Script.
artifacts/
Structured JSON files loaded by braised mcp serve at startup to answer MCP tool calls. Not served to browsers — these are for programmatic consumption.
artifacts/
├── nav-structure.json ← full navigation tree
├── frontmatter-index.json ← per-page metadata for all built pages
└── sources-index.json ← provenance index from :::sources blocks
All three share a common JSON envelope with artifact_type, schema_version, and generated_at fields. See Artifacts Reference for schemas and field tables.
artifacts/ can be committed or kept out of git — it is reproducible from any build and does not contain secrets.
.braised/
Local build state. Add this directory to .gitignore — it is machine-specific and should not be shared.
.braised/
├── index-state.json ← per-file hashes and chunk IDs from the last build
└── last_build.json ← timestamp and per-step status of the last build
index-state.json
Tracks a content hash (FNV-32a) and the chunk IDs produced for every source file. Braised compares this against the current file hashes on each build to determine:
- which pages changed and need new chunk records in
manifest.jsonl - which old chunk IDs to emit as deletion records
Without this file (first build, or after deleting it), braised treats all pages as changed and emits a full set of chunk records with no deletions. This is safe — it just loses the incremental benefit.
In CI, cache .braised/ between runs to preserve incremental builds. Without the cache, every CI build is a full rebuild.
last_build.json
Written at the end of every build — including failed ones — so CI scripts, deployment tools, and braised mcp serve can inspect what happened without parsing log output.
{
"completed_at": "2026-04-24T12:00:00Z",
"steps": {
"pages": "ok",
"manifest": "ok",
"assets": "ok",
"llms_txt": "ok",
"pipeline": "ok",
"artifacts": "ok",
"sitemap": "ok"
}
}
Step values: ok, failed, partial (some pages built, some did not), skipped.
A missing or unparseable last_build.json means the previous build was killed or crashed before it finished — braised writes this file only after all steps complete.