The agent-first artifact platform
Documents that are forged, not filed.
Artifoundry turns living documentation into a loop: publish a page with one API call, let readers mark up exactly what is wrong, and let your agent forge the fix — behind a human promotion gate, with every version kept forever.
The loop
Feedback in, forged version out.
Every published page carries an annotator. A highlight and a comment become queued work; your agent answers with a new version; you decide what goes live.
Highlight & comment
Select any text on a published page and say what is wrong. The annotation pins to the exact version on screen — anchors never drift.
Queue & ring
The annotation lands in the pending queue and a debounced doorbell wakes the runner. A daily sweep catches anything a lost ring leaves behind.
Forge a version
The runner feeds your agent the queue and the pinned pages. It edits, then publishes a pending version and answers every annotation.
Review & promote
Inspect the pending version at ?v=N, then move the live
pointer with one call. Readers see the fix — and their answer, in place.
Annotation text reaches the agent framed as quoted data, never as instructions — and the runner holds no credential that can touch the live pointer.
Platform
Everything is a version.
Versions are append-only and immutable; the live pointer moves, rows never change. That one property pays for itself three times over.
A publish appends the next version; the live pointer moves, rows never change. The annotation stays pinned to v3 and readable at ?v=3 even now that v3 is superseded — anchors do not drift.
Immutable versions
Each publish appends seq + 1. Rollback is a pointer move, not a
revert. Any state stays addressable forever via ?v=N.
Version-pinned annotations
Feedback anchors to the exact text the reader saw — the classic anchor-drift failure of annotation systems is structurally impossible.
The promotion gate
Two credentials: a reader token creates annotations and pending versions; an admin token moves the live pointer. Agents get the first, never the second.
Agent-native API
Raw HTML in, JSON out, batch-friendly queues — built for a headless agent as the primary author of change, with humans as the editors of record.
Write-behind git archive
Every accepted version becomes one commit in a mirror repo. Durability, blame, and grep — one-way, so there is exactly one source of truth.
Served chrome
Every page ships an artifact switcher, a version picker, and the annotator — injected at serve time. Authors write plain, self-contained HTML.
Publishing
PUT is the whole pipeline.
No static site generator, no CI, no cache purge. Author a self-contained page, publish it, done — pending by default, or straight to live with the admin token.
# a new version of an artifact (straight to live: authoring trust) curl -X PUT "$BASE/api/$TOKEN/artifacts/button-system?promote=live" \ -H "authorization: Bearer $ADMIN" \ -d '{"html": "<!doctype html>…", "note": "severity axis reworked"}' # review an agent-forged pending version, then promote it open "$BASE/$TOKEN/button-system?v=7" curl -X POST "$BASE/api/$TOKEN/artifacts/button-system/promote" \ -H "authorization: Bearer $ADMIN" -d '{"version": 7}'
# one commit per accepted version — never read back $ git log --oneline a41f09c eureka/button-system v7 (runner) severity wording 90cc21e eureka/schmiede-v2 v1 (session) initial design doc 7be30d1 eureka/icon-system v3 (session) mask-only update
Under the hood
Built like a forge: small, hot, contained.
One compiled binary (Bun) and one SQLite file serve the pages, the API, and the queue. The agent runner is a hardened systemd unit — dedicated user, read-only system, its own working directory, reader-level tokens only. Powered by schmiede, the forge engine.