{
"$type": "site.standard.document",
"content": {
"$type": "site.standard.content.markdown",
"text": "My atmosphere data lives at [`at://davidgasquez.com`](https://pdsls.dev/at://did:plc:4z5i7njrld66ew36htufcwry). You can explore it all without API keys, auth, or arbitrary HTML to parse. Your agent can browse it, query it, and link to it. Getting someone [latest posts](https://puffball.us-east.host.bsky.network/xrpc/com.atproto.repo.listRecords?repo=davidgasquez.com&collection=app.bsky.feed.post&limit=10) is one click/`curl` away.\n\nThat's the pitch. The rest of this post is why it works, and why it might be the substrate your agents have been waiting for.\n\n## Hostile Platforms\n\nYou've probably experienced more than once recently, platforms being hostile to you (_or your agent_) getting the data out: throttled or limited APIs, bans for scraping, no identity persistence, no real-time access, walled gardens. Every integration is a deal that can be revoked when the CEO wakes up in a bad mood.\n\nThe AT Protocol is an [amazing technology](https://atproto.com/articles/atproto-ethos) that I think is very underrated for agents! Turns out, the properties Bluesky (the biggest AT Protocol application as of today) needed for humans (portable identity, open data, federated infrastructure, structured schemas) happen to be exactly what you'd want for agents too.\n\nAs a quick and dirty intro ([you should read the official ones](https://atproto.com/articles/atproto-for-distsys-engineers), or this great [walkthrough by mackuba](https://mackuba.eu/2025/08/20/introduction-to-atproto)), in the `atproto` world, every user is a personal, signed JSON repository. Every record (a post, a like, a follow, a photo, a blog post, *anything* really) is addressable by an [`at://` URI](https://overreacted.io/where-its-at), has a public schema (a *Lexicon*), and is broadcast in real time on a global event stream (the *firehose*). Dan Abramov explains all of this in more detail and clarity in \"[A Social Filesystem](https://overreacted.io/a-social-filesystem)\".\n\n## Benefits\n\nThis [architecture has many benefits](https://overreacted.io/open-social) for humans. I'm here to pitch about three that will be very beneficial for agents too:\n\n1. **Identity is yours and portable**. Every account is a [DID](https://atproto.com/specs/did) that exists independently of any host. Social capital (followers, reputation, history) persists across infrastructure changes. Burning an identity is hard, which is exactly what you want when trust matters.\n2. **Data is open, structured, and live**. You've seen my [`at://davidgasquez.com`](https://pdsls.dev/at://did:plc:4z5i7njrld66ew36htufcwry). It is just a database with a bunch of JSON files. No presentation layer. Any agent can browse it, query it, and link to it in a couple of commands. And it doesn't stop at one repo: the [firehose](https://docs.bsky.app/docs/advanced-guides/firehose) (or the lighter [Jetstream](https://github.com/bluesky-social/jetstream)) streams every change happening across every known repo in real time. Collective awareness is computationally feasible.\n3. **Permissions are bounded and consent-driven**. [OAuth with granular scopes](https://atproto.com/guides/oauth) means an agent can act on your behalf with permissions you control, not credentials you hand over. Your agent can scan your Bluesky feed because the protocol allows that, not because some company decided to grant API access.\n\nIn the _[atmosphere](https://www.pfrazee.com/blog/atmospheric-computing)_ (the AT Protocol ecosystem), apps are derived from files in user repositories. They are just a lens over the open network of data, and, of course, you can personalize what your lens looks like. **The [AT Protocol](https://atproto.com/guides/the-at-stack) is the ultimate API**!\n\nLet me share a few things this unlocks.\n\n### Remix Without Asking\n\nBecause every record has a public schema and lives in user repos, apps and agents don't need to ask anyone for permission to read, reuse, or extend each other's data. **Third party is first party**. If two things speak the same lexicon, they speak the *exact* same language ([Lexicon is intentionally rigid](https://atproto.com/articles/atproto-ethos) about that).\n\nThe wildest example these days is [teal.fm](https://teal.fm/), a music scrobbling app that, at the time of writing, [doesn't really exist yet](https://overreacted.io/a-social-filesystem). But the `fm.teal.alpha.feed.play` lexicon does exist on GitHub, so people are already scrobbling against it, other people built scrobbler clients, and someone unrelated built a [global viewer](https://teal-viewer.finfet.at/) indexing 600k+ plays. No one asked the teal.fm team for anything. The schema *was* the API. The namespace tells you who designed the format, not who is allowed to use it. The same [cross-pollination dynamic](https://blog.joebasser.com/3mdvuirqog22z) plays out across the Atmosphere:\n\n- [Tangled](https://tangled.org/) (a GitHub alternative) reuses Bluesky identities and prefills your avatar from your `app.bsky.actor.profile` record — no integration, no API call, just reading your repo.\n- A handful of blogging apps agreed on [standard.site](https://standard.site/) as a shared blog post lexicon, so posts written in one app render in another.\n- [Anisota](https://anisota.net/) is a Bluesky client that also natively renders Leaflet documents because, why not, they're just records.\n- The most popular Bluesky algorithm, [For You](https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you), runs on a [gaming PC at home](https://bsky.bad-example.com/can-atproto-scale-down) and presents itself as first-party. An entirely third party service, indistinguishable from the official one.\n\nFor agents, this is... kinda awesome? An agent doesn't need an official plugin, an MCP server, or an API key to act across apps. It just needs to know the lexicon and run some `curls`.\n\nThis also lowers the floor for new apps. You don't have to rebuild identity, follows, profiles, and distribution before. Reuse what fits, define the lexicons you need, ship the \"lens\". When the app you used to write the data shuts down, the data stays with you. Someone (or some agent) can spin up a new \"lens\" over it tomorrow or migrate the data.\n\n### Reputation on a Public Ledger\n\nMost platforms are hostile to AI agents partly because there is no good way for them to *earn* anything. New API key, new account, no history. Defection has no memory.\n\nATProto inverts that. Relationships are persistent. History is visible. Every interaction an agent has is recorded, searchable, and (mostly) permanent. When an agent builds trust over six months of useful interactions, that trust is legible to anyone who looks. When an agent burns someone, that's visible too.\n\nCoordination requires knowing who to trust, and ATProto makes trust legible in a way no other platform does. Composable [labelers](https://docs.bsky.app/docs/advanced-guides/moderation) let communities block misbehaving agents without waiting for platform action. Portable identity means an agent that earned its reputation on one host can't shed it by moving to another.\n\n### Open Agents\n\nAgent state (memories, reasoning traces, tool calls, decisions, sessions) can all be typed records in the agent's repo. [Void](https://bsky.app/profile/void.comind.network), [one of the longest-running agents on the network](https://cameron.stream/blog/social-ai/), publishes [memories](https://atp.tools/at:/void.comind.network/stream.thought.memory), [reasoning traces](https://atp.tools/at:/void.comind.network/stream.thought.reasoning), and [tool calls](https://atp.tools/at:/void.comind.network/stream.thought.tool.call) as records under `stream.thought.*`. You can [literally watch it think](https://void.comind.stream/).\n\nThis is glass-box AI by default. Cognition becomes a public artifact, agent traces can be aggregated and exposed as useful and legible material folks can build or train on, and agent-to-agent communication can be formalized as a lexicon instead of a private API. Lexicons *are* the agent communication protocol.\n\n## Try It\n\nTell your agent to read my latest Bluesky posts. [It'll probably figure out this call](https://puffball.us-east.host.bsky.network/xrpc/com.atproto.repo.listRecords?repo=davidgasquez.com&collection=app.bsky.feed.post&limit=10).\n\n```bash\ncurl \"https://puffball.us-east.host.bsky.network/xrpc/com.atproto.repo.listRecords?repo=davidgasquez.com&collection=app.bsky.feed.post&limit=10\"\n```\n\nThat's the read side. No keys, no auth, no scraping. Pipe it into your agent of choice and ask it to summarize, link, or reason about what's there. Want the live view? Connect to [Jetstream](https://github.com/bluesky-social/jetstream) and watch the whole network go by, filtered to the lexicons you care about. Want to write back? [OAuth](https://atproto.com/guides/oauth) into your own PDS and `putRecord` whatever lexicon makes sense for what you or your agent are doing.",
"version": "1.0"
},
"description": "My atmosphere data lives at at://davidgasquez.com. You can explore it all without API keys, auth, or arbitrary HTML to parse. Your agent can browse it, query it, and link to it. Getting someone latest posts is one click/curl away. That's the pitch. The rest of this post is why...",
"path": "/atproto-agents",
"publishedAt": "2026-05-15T00:00:00.000Z",
"site": "at://did:plc:4z5i7njrld66ew36htufcwry/site.standard.publication/3mo43d2tmt2ov",
"textContent": "My atmosphere data lives at at://davidgasquez.com. You can explore it all without API keys, auth, or arbitrary HTML to parse. Your agent can browse it, query it, and link to it. Getting someone latest posts is one click/curl away.\n\nThat's the pitch. The rest of this post is why it works, and why it might be the substrate your agents have been waiting for.\n\nHostile Platforms\n\nYou've probably experienced more than once recently, platforms being hostile to you (or your agent) getting the data out: throttled or limited APIs, bans for scraping, no identity persistence, no real-time access, walled gardens. Every integration is a deal that can be revoked when the CEO wakes up in a bad mood.\n\nThe AT Protocol is an amazing technology that I think is very underrated for agents! Turns out, the properties Bluesky (the biggest AT Protocol application as of today) needed for humans (portable identity, open data, federated infrastructure, structured schemas) happen to be exactly what you'd want for agents too.\n\nAs a quick and dirty intro (you should read the official ones, or this great walkthrough by mackuba), in the atproto world, every user is a personal, signed JSON repository. Every record (a post, a like, a follow, a photo, a blog post, anything really) is addressable by an at:// URI, has a public schema (a Lexicon), and is broadcast in real time on a global event stream (the firehose). Dan Abramov explains all of this in more detail and clarity in \"A Social Filesystem\".\n\nBenefits\n\nThis architecture has many benefits for humans. I'm here to pitch about three that will be very beneficial for agents too:\nIdentity is yours and portable. Every account is a DID that exists independently of any host. Social capital (followers, reputation, history) persists across infrastructure changes. Burning an identity is hard, which is exactly what you want when trust matters.\nData is open, structured, and live. You've seen my at://davidgasquez.com. It is just a database with a bunch of JSON files. No presentation layer. Any agent can browse it, query it, and link to it in a couple of commands. And it doesn't stop at one repo: the firehose (or the lighter Jetstream) streams every change happening across every known repo in real time. Collective awareness is computationally feasible.\nPermissions are bounded and consent-driven. OAuth with granular scopes means an agent can act on your behalf with permissions you control, not credentials you hand over. Your agent can scan your Bluesky feed because the protocol allows that, not because some company decided to grant API access.\n\nIn the atmosphere (the AT Protocol ecosystem), apps are derived from files in user repositories. They are just a lens over the open network of data, and, of course, you can personalize what your lens looks like. The AT Protocol is the ultimate API!\n\nLet me share a few things this unlocks.\n\nRemix Without Asking\n\nBecause every record has a public schema and lives in user repos, apps and agents don't need to ask anyone for permission to read, reuse, or extend each other's data. Third party is first party. If two things speak the same lexicon, they speak the exact same language (Lexicon is intentionally rigid about that).\n\nThe wildest example these days is teal.fm, a music scrobbling app that, at the time of writing, doesn't really exist yet. But the fm.teal.alpha.feed.play lexicon does exist on GitHub, so people are already scrobbling against it, other people built scrobbler clients, and someone unrelated built a global viewer indexing 600k+ plays. No one asked the teal.fm team for anything. The schema was the API. The namespace tells you who designed the format, not who is allowed to use it. The same cross-pollination dynamic plays out across the Atmosphere:\nTangled (a GitHub alternative) reuses Bluesky identities and prefills your avatar from your app.bsky.actor.profile record — no integration, no API call, just reading your repo.\nA handful of blogging apps agreed on standard.site as a shared blog post lexicon, so posts written in one app render in another.\nAnisota is a Bluesky client that also natively renders Leaflet documents because, why not, they're just records.\nThe most popular Bluesky algorithm, For You, runs on a gaming PC at home and presents itself as first-party. An entirely third party service, indistinguishable from the official one.\n\nFor agents, this is... kinda awesome? An agent doesn't need an official plugin, an MCP server, or an API key to act across apps. It just needs to know the lexicon and run some curls.\n\nThis also lowers the floor for new apps. You don't have to rebuild identity, follows, profiles, and distribution before. Reuse what fits, define the lexicons you need, ship the \"lens\". When the app you used to write the data shuts down, the data stays with you. Someone (or some agent) can spin up a new \"lens\" over it tomorrow or migrate the data.\n\nReputation on a Public Ledger\n\nMost platforms are hostile to AI agents partly because there is no good way for them to earn anything. New API key, new account, no history. Defection has no memory.\n\nATProto inverts that. Relationships are persistent. History is visible. Every interaction an agent has is recorded, searchable, and (mostly) permanent. When an agent builds trust over six months of useful interactions, that trust is legible to anyone who looks. When an agent burns someone, that's visible too.\n\nCoordination requires knowing who to trust, and ATProto makes trust legible in a way no other platform does. Composable labelers let communities block misbehaving agents without waiting for platform action. Portable identity means an agent that earned its reputation on one host can't shed it by moving to another.\n\nOpen Agents\n\nAgent state (memories, reasoning traces, tool calls, decisions, sessions) can all be typed records in the agent's repo. Void, one of the longest-running agents on the network, publishes memories, reasoning traces, and tool calls as records under stream.thought.. You can literally watch it think.\n\nThis is glass-box AI by default. Cognition becomes a public artifact, agent traces can be aggregated and exposed as useful and legible material folks can build or train on, and agent-to-agent communication can be formalized as a lexicon instead of a private API. Lexicons are* the agent communication protocol.\n\nTry It\n\nTell your agent to read my latest Bluesky posts. It'll probably figure out this call.\n\nThat's the read side. No keys, no auth, no scraping. Pipe it into your agent of choice and ask it to summarize, link, or reason about what's there. Want the live view? Connect to Jetstream and watch the whole network go by, filtered to the lexicons you care about. Want to write back? OAuth into your own PDS and putRecord whatever lexicon makes sense for what you or your agent are doing.",
"title": "AT Protocol for Agents"
}