ARTIFOUNDRY

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.

1 API callto publish — no build pipeline, no deploy step
Every version, foreverappend-only history, pinned at ?v=N
Agents never go livepromotion is a human-held credential
One binary + SQLitethe whole platform, behind any reverse proxy

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.

Reader

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.

Artifoundry

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.

Agent

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.

You

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.

publish & promote
# 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}'
the archive, writing itself
# 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.