Overview of the architecture of the AT Protocol network, some examples of the projects I've built on it with Ruby, and a showcase of some other people's projects
:commit msg.operations.each do |op| if op.action == :create && op.collection == 'app.bsky.feed.post' Post.create!( did: op.repo, text: op.raw_record['text'], time: Time.parse(op.raw_record['createdAt']), ... ) end end end sky.connect
do |op| next unless op.type == :plc_operation handle = Handle.find_or_initialize_by(did: op.did) handle.name = op.handles.first handle.tld = handle.name.split('.').last handle.save! end end sleep 60 end
:commit msg.operations.each do |op| if op.action == :create && op.collection == 'app.bsky.feed.post' post = Post.create!(...) @feeds.each do |feed| if feed.post_matches?(post) post.feed_posts.create!(feed_id: feed.id, time: msg.time) end end end end end
= workers.detect { |w| w.pid == pid } workers.delete(worker) line = worker.pipe.gets next if line.nil? result = JSON.parse(line) puts "#{worker.host}: #{result.inspect}" if verbose end end
"at://did:plc:wshs7t2adsemcrrd4snkeqli/sh.tangled.label.definition/duplicate", ... ], "createdAt": "2026-03-01T23:32:57+02:00", "description": "A tool for measuring the coverage of Bluesky/ATProto relays" }
for $34 a Month", "content": "This is an update to a \ [Summer 2024 blog post](https://whtwnd.com/bnewbold.net/3kwzl7tye6u2y). At the time, atproto \ relays required a cache of the full network on local disk to validate data structures. With \ the [Sync v1.1](https://github.com/bluesky-social/proposals/tree/main/0006-sync-iteration) \ updates, relays don't need all that disk I/O. What impact does that have on hosting setup and \ operating costs?\n\n Turns out the dev community ......", "createdAt": "2025-08-27T19:41:13.094Z", "visibility": "public" }