Write plain-text .noma files. Noma parses them into a typed
document tree, validates the structure, renders useful outputs, and lets
agents patch named blocks without rewriting the whole file.
Noma is Markdown-like source with explicit blocks: claims, evidence, risks, decisions, datasets, plots, cards, sections, and agent tasks. Every important block can have a stable ID, so tools and agents can refer to it exactly.
# Roadmap Decision
::claim{id="wedge" confidence=0.74}
Research workflows are the best first wedge.
::
::evidence{for="wedge" source="interviews"}
Nine analyst teams asked for stale-source checks.
::
::risk{id="edit-risk" owner="andrea"}
Agents may rewrite too much unless edits target IDs.
::
::grid{columns=2}
:::card{title="Human artifact"}
Render to HTML, PDF, or a docs site.
:::
:::card{title="Agent surface"}
List IDs, validate, and patch blocks.
:::
::
The same source becomes a readable artifact and a structured editing surface.
.noma source becomes a typed AST.
IDs, refs, stale citations, plots, profiles.
HTML, site, PDF, JSON, LLM context.
Replace a block, body, heading, or attr.
CLI, GitHub Action, MCP server, SDK, VS Code.
What Noma does
The goal is not to replace every editor. It is to make source documents structured enough for validation and agent edits while staying readable in Git, terminal output, pull requests, and plain text.
| Capability | What it means | Why it matters | Where to start |
|---|---|---|---|
| Readable source | Markdown-style text plus explicit blocks such as ::claim, ::evidence, ::plot, and ::agent_task. |
People can review the source directly. Agents get semantic handles instead of guessing from prose. | Spec |
| Validation | noma check catches broken references, duplicate IDs, missing evidence, stale citations, unsafe escape hatches, and plot/data mismatch. |
Documents can fail CI before a bad artifact or stale memo ships. | Validate |
| Rendering | One source renders to standalone HTML, multi-page sites, PDF demos, JSON AST, LLM context, and roundtrip-safe .noma. |
The same document can serve readers, automation, and agents without duplicating content. | Examples |
| Block patches | noma patch applies operations like replace_body, update_heading, update_attribute, and rename_id. |
Agents can make surgical edits while unrelated bytes stay unchanged. | Agent guide |
| Agent integrations | The MCP server exposes read, ID listing, validation, and patching. The TypeScript SDK wraps that with safe patch workflows. | Agent tools can share one stable editing protocol instead of writing custom file rewrites. | MCP / SDK |
Try it
This path is the simplest proof: install the public npm package, create a starter file, check it, render it, and open the generated HTML.
npm install -g @ferax564/noma-cli noma --version noma init my-spec noma check my-spec/demo.noma noma render my-spec/demo.noma --to html --out my-spec/demo.html open my-spec/demo.html
ext install ferax564.noma-languageuses: ferax564/noma@v0.11.1npx -y @ferax564/noma-mcp-servernpm install @ferax564/noma-agent-sdkAgent editing
The protocol is deliberately boring: discover block IDs, choose the smallest patch operation, check a SHA if needed, apply the patch, then validate the result. That is the whole safety model.
{
"ops": [
{
"op": "update_attribute",
"id": "wedge",
"key": "confidence",
"value": 0.82
},
{
"op": "replace_body",
"id": "edit-risk",
"content": "Limit agent edits to ID-targeted patches."
}
],
"prevalidate": true,
"postvalidate": true
}
noma render file.noma --to llm.noma ids file.noma.noma patch --ops.noma check and render strict HTML for review.Examples
These are not screenshots. They are generated artifacts built from
checked-in .noma sources during the site build.
| Example | What it demonstrates | What to inspect | Links |
|---|---|---|---|
| Agent planning artifact | Decision matrix, claims, evidence, risks, timeline, agent tasks, and copy-as-prompt controls. | How a planning memo becomes a structured artifact and clean LLM context. | |
| Technical documentation | CLI reference, architecture diagram, warnings, code examples, tabs, and cross-links. | How docs stay plain text while rendering as a polished reference page. | |
| Investment thesis | Claims, evidence, counterevidence, risks, datasets, plots, and review tasks. | How research documents can be validated, rendered, and refreshed over time. | |
| Multi-file book | Book manifest, scoped chapter IDs, aliases, single-page render, site render, and LLM export. | How a project can grow past one file without losing references. | |
| Stale memo trace | An agent refreshes citations, updates confidence, adds evidence, and preserves unrelated bytes. | The before/after source and byte-preservation stats in the trace. | |
| Agent memory trace | A memory-profile file validates durable facts and renders stale-filtered LLM recall. | How Noma can store structured agent memory without dumping stale context forever. |
Documentation
Start with the workflow docs. Use the spec only when you need exact block syntax, validation rules, or compatibility boundaries.
| Task | Document | Use it for | Link |
|---|---|---|---|
| Start using Noma | Getting Started | Install, render, validate, patch, GitHub Actions, VS Code, MCP, and SDK setup. | Open |
| Understand the format | Spec | Block syntax, AST variants, render targets, validation rules, profiles, books, math, memory. | Open |
| Edit with agents | Agent Editing Guide | ID discovery, smallest patch operations, transactions, MCP host setup, and SDK workflow. | Open |
| Pick a use case | Case Studies | Research refreshes, decision artifacts, technical docs, and agent memory workflows. | Open |
| Compare alternatives | Comparison Guide | When to use Noma instead of Markdown, MDX, raw HTML, or collaborative docs. | Open |
| Copy a starting point | Starter Templates | Research memo, decision record, technical spec, and agent refresh pack templates. | Open |
Compare
Markdown is easy to write but structurally weak. HTML renders well but is noisy source. Noma keeps the source readable and moves rendering, validation, and agent edits into tools.
| Need | Markdown | Noma |
|---|---|---|
| Readable plain text | Strong | Strong |
| Rich blocks | Ad hoc | Native |
| Validation | Weak | Built in |
| Agent edits | Fragile | ID-based |
| LLM context | Basic | Structured |
| Need | HTML | Noma |
|---|---|---|
| Browser output | Strong | Strong |
| Readable source | Weak | Strong |
| Clean diffs | Weak | Strong |
| Agent edits | Fragile | Block ops |
| LLM export | Noisy | Clean |
Design test
Every feature has to justify itself against the source, artifact, and agent surfaces.