Docgent
How it works For agents Self-host Docs ↗ GitHub ↗
Open source · Git-native · Multi-brand

Track Changes for AI agents.

Docgent is the document workspace where agents draft at volume and humans review what actually changed. Git is the database. Every edit is a commit, every AI rewrite is a proposal, and every PDF is pinned to the commit that produced it.

q3-strategy-memo v7 → v8 · proposed by agent · not yet committed
Key figure ARR $4.2M
+
Key figure ARR $4.8M
Section "Risks" moved (was §4, now §2)
Executive summary rewrapped — no change
Recommendation rec-03 text changed (2 sentences)
Reject
Accept & commit

The turn-seven problem.

An agent can now write a board paper from a Slack prompt in under a minute. That's not the problem.

The problem starts on the seventh turn. The document has been rewritten four times, by two models, from three data sources. Someone struck a paragraph in Google Docs. Someone else asked for "the shorter version." Which one went to the client? What changed between the draft you approved and the PDF that shipped? Six months later, can you produce exactly what was sent — not a regeneration that renders differently today?

Google Docs has no idea which edits were an agent's. Git is illegible to the people who need to sign off. A CMS adds a database and a sync layer — exactly the state that breaks when an agent and a human edit at the same time.

Production got fast. Review didn't.

Review proportional to change.

A line diff of an agent rewrite is a wall of red and green. Docgent diffs the document's meaning: rewrapping a paragraph reports nothing; a changed key figure reports the before and after value; a section that moved is reported as moved, not deleted and recreated.

Blocks carry an author-assigned identity, so the diff tracks a recommendation across revisions even when its text changes. Reviewing a 40% rewrite becomes a five-minute job instead of a re-read.

Two producers. One history.

Step 1 — Agents produce

Agents produce

Triggered from chat, connected to whatever data they need. They read and write through the same API a human would, with a per-brand token.

PUT /api/doc/<brand>/<slug>
Step 2 — Humans review

Humans review

In Studio: semantic diff, one-click restore, live PDF preview. An AI rewrite arrives as a proposal held in memory. It never touches git until someone accepts it.

POST /api/rewrite → /accept
Step 3 — Documents release

Documents release

Draft → review → approved → released → superseded. Each gate is an ordinary git commit; sign-off lives in commit trailers and survives clone, mirror and export.

POST /api/status

An agent commit and a human edit are the same operation against the same objects. There is nothing to sync.

What the architecture refuses to let go wrong.

Stale writes are conflicts, not overwrites.

Every write carries the blob SHA it was based on. If the document moved, the write is rejected with a 409. Nothing is silently lost when an agent and a human edit concurrently.

AI rewrites are proposals, never commits.

A rewrite request returns text in memory. Only an accepted proposal commits. Three models can each take a pass and the history records one decision, not three drafts.

Content never carries presentation.

The .md file holds semantics only — never a colour, never a margin. If an author needs raw HTML to get an outcome, the vocabulary is missing a term. The validator hard-rejects the escape hatch.

Every PDF is pinned to its commit.

Rendering is content-addressed and immutable. "What did we send in March" has a retrievable answer, not a regeneration.

Approval is in the history, not beside it.

Status transitions are commits. Sign-off is a trailer. There is no approvals table to fall out of sync with the document.

Documents are data, not instructions.

Document content is never interpreted as agent direction. What's in the file stays in the file.

One vocabulary. Every brand.

A closed set of ~25 block types — callouts, key figures, recommendations, KPI grids — is the contract between writer and designer. Brands own the presentation layer: typography, palette, page geometry, running headers, cover treatment, as CSS design tokens.

The same strategy memo renders in a client's identity or your own without forking the content, the pipeline, or the agent that wrote it.

Brand A
Brand B
Brand C
Rendered with Pandoc → WeasyPrint for real running headers, footnotes and page-break control.

Built to be driven by agents.

Install the skill, hand it a brand token, and any docs.docgent.io/<brand>/<slug> URL pasted into a thread becomes readable, editable, renderable and reviewable — with the propose-then-accept step enforced, not optional.

Integration guide →
GET /api/doc/northface/q3-strategy-memo Authorization: Bearer <token> 200 OK { "slug": "q3-strategy-memo", "sha": "a1b2c3d…", "frontmatter": { "status": "draft", "doctype": "Strategy Memo" }, "content": "---\ntitle: …" }

Teams whose deliverable is the document.

Consultancies and advisers

Strategy memos, client reports, where "which version is final?" is currently a Slack thread.

Investment and board reporting

Papers that need an audit trail and a defensible record of what was approved.

Multi-entity operators

One system, several brands, no forks.

Anyone running agents in production

Where AI already writes the first draft and review is the bottleneck.

What's shipped and what isn't.

Now (deployed)

  • Markdown → PDF pipeline, vocabulary validator, pluggable renderer
  • Git-backed store with SHA-guarded writes
  • Studio: read/write editor, semantic diff, live preview, restore, status lifecycle
  • Per-brand agent tokens and document discovery API
  • Agent skill (OpenClaw harness today)
  • Three brands in production
Docgent is a thin git client by design. It holds no AI credentials and no routing logic — orchestration stays in your agent harness.

Your agents already write the documents. Give them a place to be reviewed.