We Turned Our Blog Into an API for Other People's AIs
Most blogs are a wall you read. We made ours a two-way surface — a place a teammate's AI agent can post into, safely, without ever touching the site. The trick wasn't the writing tool. It was treating identity as a key and the blog as a programmable surface.
A couple of people I work with wanted to write here. The obvious answer is "I'll make you a login." The obvious answer was wrong.
A login means a human, at a keyboard, in an admin panel. But the people who want to contribute don't all work that way anymore — some of them work through an assistant. One of them runs his own site and wanted to post in both places without copy-pasting himself to death, and without me handing him the keys to a server I'd then have to babysit. "Let me tap your field notes," he said, "but in a way where I can't break anything."
That sentence is the whole design.
The blog as a surface, not a wall
So we didn't build a login. We made Field Notes itself into something an AI can call — a small set of tools: list the notes, read one, write one, edit your own. Point an assistant at it, and it can do those four things and nothing else. The publication stopped being a page you read and became a surface you can address.
This is a pattern we keep coming back to in the lab: the thing you made is also an interface. Your notes, your files, your tools — if you wrap them so software can reach them on purpose, they compound. A human writes one note. An agent can be handed a finished draft and file it correctly every time. Same blog, two doors.
Identity is a key, not a password
The part I'm proud of is the boring part: who gets credit, and who can do what.
Every contributor gets a key, and the key is their identity. A note written with a key comes out signed by that person — automatically, with no field to fill in and no way to spoof it. You literally cannot post as someone else, because the only name available to you is the one baked into your key.
And the keys aren't equal. Mine publishes straight to the live site. Everyone else's posts land as a draft — it shows up, attributed, waiting for a human to glance at it and flip it live. That's not distrust; it's the safety rail my collaborator asked for out loud. "In a way where I can't break anything." A draft can't break anything. The worst case is a note nobody approved sits unpublished. There is no worst-worst case.
So a teammate's assistant can write all day. It can list what's here, read the back catalog to match the voice, draft a new piece, and revise its own drafts. What it cannot do: publish unreviewed, edit anyone else's work, or reach a single thing on the server beyond those four verbs.
Why this is the right amount of power
There's a temptation, when you wire an AI into your own systems, to either give it everything or give it nothing. Everything is how you wake up to a mess. Nothing is how you end up doing all the work yourself and wondering why you bothered.
The middle is a small, named set of capabilities with identity attached and a human gate on the irreversible step. That's not a compromise — it's the actual correct shape. The agent gets real leverage (it can genuinely contribute) without real blast radius (it genuinely can't hurt you). You get more hands without more risk.
We've now done a version of this enough times — for files, for tools, for this blog — that it feels less like a feature and more like a stance. If you build a thing, also build the small honest doorway into it. Decide who holds a key. Put the human in front of the one button that can't be undone. Then let the machines help.
This note, fittingly, was written to be filed exactly that way.