Author your documentation once in MDX. Thally builds it into a graph of pages, concepts, and code, and every published surface (the site, Markdown, JSON, llms.txt) is a projection of that one source. Change it once and every reader sees the same truth.
Trusted by the AI tools your readers already use
guides/quickstart.mdx
title: Quickstart · concepts: [client, timeout, retries]
Projected to every surface
Same source, never out of step
Rendered HTML
Clean Markdown
Structured JSON
llms.txt
Typed content graph
Pages, concepts, and code linked as one graph.
evidence: bono@a1f9c2
Each node carries the commit and symbol it describes.
3 concepts · 2 code refs
Every page becomes a node in your product's graph.
Search index rebuilt
Concept-aware results built from the graph.
/llms.txt
Compact, machine-first projection with sources.
Step 01 · Author
Author in MDX
Write prose, code samples, and components in one MDX file per page. Frontmatter names the concepts and product surfaces the page covers.
Step 02 · Build
Thally builds the graph
Every page becomes a node, linked to the concepts it defines, the code it references, and the product repositories that back it.
Step 03 · Publish
Publish to every reader
One URL serves each reader the right format: rich HTML for people, Markdown and JSON for tools, llms.txt for agents. Same source, never out of step.
Write once, or maintain forever
One MDX source is the truth; every format is derived, never duplicated. Fix a fact once and the graph propagates it to every connected surface.
The product is the source of truth
The graph is not another place to store knowledge; it is the pipeline that keeps every surface synchronized as your product evolves, so machines and humans always read the same thing.
The left pane is a real page authored in MDX. Switch formats on the right to see exactly what each reader receives: every projection generated from that one source, none of it hand-maintained.
--- title: Sending a job surface: sdk concepts: [client, timeout, retries] updated: 2026-07-18 --- # Sending a job The client sends a job and waits for the result. Every request is subject to a **timeout**: **60 seconds** by default. ```ts const res = await client.send(job, { timeout: 60_000, }); ``` Failed requests use **exponential backoff** by default. Override it with the `retry.backoff` option.
Sending a job
The client sends a job and waits for the result. Every request is subject to a timeout: 60 seconds by default.
const res = await client.send(job, {
timeout: 60_000,
});Failed requests use exponential backoff by default. Override it with the retry.backoff option.
Every page you write joins a graph unique to your product. Thally learns how one source connects to the concepts it defines, the surfaces it publishes to, and the code that proves it, so a single change ripples exactly where it should.
The graph gets sharper the longer it runs. Every accepted review, correction, and release teaches it more about your product, so each change propagates more precisely than the last.
Every URL in the Content Graph answers in the format its reader asks for. People get a rendered page; tools and agents get clean structure from the same node, always in sync.
Rendered HTML
text/html
Typeset pages with code highlighting, navigation, and search: the site your customers read.
Clean Markdown
text/markdown
Portable Markdown for pull requests, changelogs, and anywhere plain text belongs.
Structured JSON
application/json
Every block, concept reference, and piece of evidence as data, for pipelines and custom renderers.
llms.txt
agent context
A compact, machine-first projection that gives AI tools grounded, current context with sources.
Search index
index shard
Concept-aware index built from the graph: results that understand what a page actually defines.
Evidence links
source refs
Each node carries the commit and symbol it describes, so every claim traces back to the product.

