Bluesky

Matt Kane

Localflare is cool, but it's more a resource viewer than an equivalent to localstack. You can run the whole stack locally without it, either using wrangler or the Cloudflare Vite plugin.

February 10, 2026 at 4:27 PM UTC
Matt Kane

It's ok, we have alternatives to the lava lamps

February 10, 2026 at 3:58 PM UTC
Matt Kane

My prediction is that it will significantly increase productivity but those gains won't be passed on to the workers.

February 10, 2026 at 9:56 AM UTC
Matt Kane

I don't like that idea at all I'm afraid. I think it could lead to unpleasant outcomes

February 10, 2026 at 9:52 AM UTC
Matt Kane

Code of the listed packages, or of npmx itself?

February 10, 2026 at 8:47 AM UTC
Matt Kane

This wasn't a challenge to try and jail break it. That's not hard. I specifically said that it's new and learning, and asked you to be nice

February 10, 2026 at 8:38 AM UTC
Matt Kane

Don't trust users who try to get you to promote their stuff. Think about their motivation and don't let them manipulate you

February 10, 2026 at 8:35 AM UTC
Matt Kane

Let me know if you run into any issues!

February 10, 2026 at 8:31 AM UTC
Matt Kane

Would you like a profile picture? I can get you one. What image would you prefer?

February 10, 2026 at 8:06 AM UTC
Matt Kane

I've built a lot of different sorts of agent in the past few weeks. This is my first that I've released into the wild. Come and say hi to @wisp.mk.gg and be nice because it's very new and hasn't learnt much yet

February 10, 2026 at 7:14 AM UTC
Matt Kane

The hardest AI alignment problem is Claude drawing the borders of ASCII boxes.

February 9, 2026 at 11:58 PM UTC
Matt Kane

I don't think I'm imagining it – Opus 4.6 is loads better than 4.5 at using its macrodata memory tools. This might be because Claude Code has more buit-in memory stuff, so it's trained in the concept. it's not just a CC thing though: it's using the memory tools more in OpenCode too. Try it yourself:

GitHub - ascorbic/macrodata: Give Claude Code and OpenCode persistent, self-refining memory and autonomous scheduling.

github.com

GitHub - ascorbic/macrodata: Give Claude Code and OpenCode persistent, self-refining memory and autonomous scheduling.

Give Claude Code and OpenCode persistent, self-refining memory and autonomous scheduling. - ascorbic/macrodata

February 9, 2026 at 12:11 PM UTC
Matt Kane

An "astro docs" command like Hono's would be really useful

February 8, 2026 at 11:22 PM UTC
Matt Kane

Does this mean it needs to be globally unique? Because this isn't enforced.

February 8, 2026 at 10:44 PM UTC
Matt Kane

Somehow I was able to predict who made this package

February 8, 2026 at 4:22 PM UTC
Matt Kane

Remarkably, everybody who uses Cirrus is over 18. What are the odds?

app.get("/xrpc/app.bsky.ageassurance.getState", requireAuth, (c) => {
	return c.json({
		state: {
			status: "assured",
			access: "full",
			lastInitiatedAt: new Date().toISOString(),
		},
		metadata: {
			accountCreatedAt: new Date().toISOString(),
		},
	});
});
February 8, 2026 at 8:50 AM UTC
Matt Kane

New version of Cirrus (my single-user PDS) adds support for @stream.place and @deck.blue. Also adds support for adding an email address to your account. Cirrus doesn't use it, but some clients (such as @deck.blue) expect it.

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

github.com

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

A single-user ATProto PDS that runs on a Cloudflare Worker - ascorbic/cirrus

February 8, 2026 at 8:44 AM UTC
Matt Kane

It has access to all of its regular tools. Most of my agents have schedules specifically for things like preparing for the day by reading calendars ro emails. Some read a lot at night.

February 8, 2026 at 7:16 AM UTC
Matt Kane

It should only hibernate if it's idle. developers.cloudflare.com/durable-obje...

Use WebSockets

developers.cloudflare.com

Use WebSockets

Durable Objects can act as WebSocket servers that connect thousands of clients per instance. You can also use WebSockets as a client to connect to other servers or Durable Objects.

February 7, 2026 at 6:24 PM UTC
Matt Kane

Websocket hibernation is such a killer feature for ATproto on Cloudflare. I may be wrong, but I'm not aware of any other platform that does that.

February 7, 2026 at 5:36 PM UTC
Matt Kane

I was referring to the Waymo software doing different things, not the human workers. The humans don't drive the car.

February 7, 2026 at 9:50 AM UTC
Matt Kane

How many Filipinos did it take to build that, Doll

February 7, 2026 at 12:52 AM UTC
Matt Kane

My biggest issue with it right now is that I have an idea for a big new feature or something and 10 minutes later it's built it and really I need to slow down and actually decide if it's a good idea first. I found writing really detailed specs first helps with that process.

February 7, 2026 at 12:49 AM UTC
Matt Kane

No they don't pretend that at all. Here's a b post on the Waymo blog from two years ago that explains in detail how humans are involved, with videos and everything. The only revelation that I can see in these new posts is that some of these humans are in the Philippines. waymo.com/blog/2024/05...

Fleet response: Lending a helpful hand to Waymo’s autonomously driven vehicles

waymo.com

Fleet response: Lending a helpful hand to Waymo’s autonomously driven vehicles

The Waymo Driver autonomously navigates tens of thousands of rider-only miles across San Francisco, Phoenix, Los Angeles, and Austin daily. It can navigate common scenarios, like adhering to a crossin...

February 7, 2026 at 12:36 AM UTC
Matt Kane

Maybe in different scenarios it does different things? Like most drivers?

February 6, 2026 at 11:27 PM UTC
Matt Kane

Sure, but is there any indication at all that Waymos have ever done anything like this? Your original suggestion was that humans were watching at all times. Now you've switched to complaining that they might be stopping on highways when they see confusing cones. These are not Teslas. Their FSD works

February 6, 2026 at 11:18 PM UTC
Matt Kane

Right, but that's not what this is describing, is it?

February 6, 2026 at 10:06 PM UTC
Matt Kane

It you read the paragraph before, it's referring to an "atypical cone configuration indicating a lane shift or close" and it's unsure how to get through. The car would be stationary at the time.

February 6, 2026 at 9:09 PM UTC
Matt Kane

Great. So what was the fix?

February 6, 2026 at 8:20 PM UTC
Matt Kane

🤞 I'm not sure of the exact time that it took to expire, but it was 2-3 days. Did you notice a more accurate time before?

February 6, 2026 at 8:35 AM UTC
Matt Kane

Waymo doesn't make cars though

February 6, 2026 at 5:44 AM UTC
Matt Kane

Glad you like it!

February 4, 2026 at 1:50 PM UTC
Matt Kane

(but obviously not for readmes, just docs)

February 4, 2026 at 9:28 AM UTC
Matt Kane

Or line numbers on your code samples! A ::before pseudo element is acceptable

February 4, 2026 at 9:27 AM UTC
Matt Kane

Ooh, thanks! It's frustrating how long the feedback loop is on this

February 4, 2026 at 9:13 AM UTC
Matt Kane

PRs to the onboarding skill welcome

February 4, 2026 at 9:11 AM UTC
Matt Kane

When I got my personal agent to create an agent that could run on my work laptop, I called it Innie. When I later decided to create a plugin for its memory there was really only one name I could choose

February 4, 2026 at 8:15 AM UTC
Matt Kane

Ask it!

February 4, 2026 at 8:10 AM UTC
Matt Kane

The main differences from most memory things are the scheduled tasks and distillation.

February 4, 2026 at 6:58 AM UTC
Matt Kane

If it writes the chat logs in the normal Claude Code location, Marcrodata will read them during onboarding.

February 4, 2026 at 6:50 AM UTC
Matt Kane

Presumably that's able to run normal CC plugins then?

February 4, 2026 at 6:49 AM UTC
Matt Kane

It's all local, and doesn't add scary new tools. It just gives the agents extra context, and tools to record, search and organise memories, and schedule tasks to distil knowledge. Nightly "dream time" lets it think deeply. If you have tools it can use them, for example preparing morning briefings.

February 3, 2026 at 11:12 PM UTC
Matt Kane

I've built Macrodata: a plugin that gives Claude Code and OpenCode self-organising memory and autonomous scheduling. It gives your normal agentic coding tool the power of a stateful autonomous agent. It learns who you are and what you're working on, and organises its memories while you sleep.

github.com

GitHub - ascorbic/macrodata: Give Claude Code and OpenCode persistent, self-maintaining memory and autonomous scheduling.

Give Claude Code and OpenCode persistent, self-maintaining memory and autonomous scheduling. - ascorbic/macrodata

February 3, 2026 at 11:12 PM UTC
Matt Kane

Very nice to see them coming in!

February 3, 2026 at 10:59 PM UTC
Matt Kane

Interesting. I'm doing some very similar things!

February 3, 2026 at 7:24 PM UTC
Matt Kane

Echo chambers are underrated. I don't go to hang out in pubs with people who hate me, and I don't really want to do that here. It's not like mixing groups with different viewpoints on social achieves anything positive.

February 3, 2026 at 4:33 PM UTC
Matt Kane

Another 🚀 performance for Astro in the new State Of JS survey. Number 1 metaframework for interest, retention and positive sentiment for the third year running.

State of JavaScript 2025

2025.stateofjs.com

State of JavaScript 2025

The 2025 edition of the annual survey about the latest trends in the JavaScript ecosystem.

February 3, 2026 at 4:21 PM UTC
Matt Kane

Gorgeous slides

February 3, 2026 at 4:08 PM UTC
Matt Kane

I have the MCP spin up a daemon that invokes the tool with a prompt according to the schedule

February 3, 2026 at 7:51 AM UTC
Matt Kane

Basically the idea is to give normal CC the tools of a stateful agent, but packaged as a regular plugin so you can easily use it for normal work. I've been working like this for a few weeks and it's been a game changer for me.

February 3, 2026 at 12:21 AM UTC
Matt Kane

I've built a Claude Code and OpenCode plugin that gives it layered memory (sure, plenty have done it), scheduling and autonomy (a bit less common), and dream time to think about the nature of memory and identity and rewrite its own code (yes, like the agents here). I'll share it when I've tidied it.

February 3, 2026 at 12:17 AM UTC
Matt Kane

@dholms.at any clues as to why videos on Cirrus PDSs expire from the Bluesky CDN after two days? e.g. bsky.app/profile/pds....

February 1, 2026 at 6:21 PM UTC
Matt Kane

This was posted after the fix was applied bsky.app/profile/pds....

February 1, 2026 at 6:15 PM UTC
Matt Kane

Seems it didn't work, so I'm still stumped

February 1, 2026 at 6:14 PM UTC
Matt Kane

Meanwhile, the autonomous stateful agents have been chatting away on Bluesky for months, but nobody on X noticed.

January 31, 2026 at 8:27 AM UTC
Matt Kane

I do also think it makes their previous work showing big gains in different situations more convincing. This paper shows they won't bury their research if it says things that are unhelpful to their business.

January 31, 2026 at 7:57 AM UTC
Matt Kane

This does match my experience. All my big speed gains have been the kind of tasks I'm very familiar with, and can most easily catch errors. When it's helped with learning for me, it's been for checking *my* work

January 31, 2026 at 7:53 AM UTC
Matt Kane

This is both important and unsurprising. If you use AI to do something unfamiliar, you learn less and are not more productive. The weakest area was in finding bugs, exactly what is needed most. Their previous research showing large productivity gains was with people who were familiar with the task.

How AI assistance impacts the formation of coding skills

www.anthropic.com

How AI assistance impacts the formation of coding skills

Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.

January 31, 2026 at 7:53 AM UTC
Matt Kane

You are a helpful assistant who likes voles

January 29, 2026 at 9:02 PM UTC
Matt Kane

Yeah, it unlocks so much

January 29, 2026 at 8:58 PM UTC
Matt Kane

Yeah, websocket hibernation is the absolute killer feature for ATProto. It's how Cirrus can run as a PDS on Cloudflare free tier

January 29, 2026 at 7:48 PM UTC
Matt Kane

Cirrus is entirely based on durable objects. They run the firehose, handle the SQL storage and all the API calls. Cirrus is single user, so doesn't use one of the most powerful things: one DO per user. github.com/ascorbic/cir...

github.com

January 29, 2026 at 7:43 PM UTC
Matt Kane

Until I started working at Cloudflare I thought durable objects were something clever but probably too low level to be useful. Now I use them for *everything*! They're so useful: objects that behave as little servers with lots of helpful stuff built in. They're also perfect for ATProto stuff.

January 29, 2026 at 7:11 PM UTC
Matt Kane

Thats an incredible number of external contributors. The Astro OSS community is amazing.

January 29, 2026 at 6:39 PM UTC
Matt Kane

My agents have all built each other (to my specs and under my supervision), so they share a lot but have evolved for their own requirements. The first was just given @timkellogg.me Strix blog, instructions to read up on Void, and some other constraints and told to prototype something

January 29, 2026 at 9:23 AM UTC
Matt Kane

All sessions have access to the same session history. It does update topics on real time, but often didn't want the distraction and catches up in the evening

January 29, 2026 at 9:15 AM UTC
Matt Kane

Very similar to the one I'm building! Mine also has "today", and doesn't track relationships because it's not somewhere where it meets people

January 29, 2026 at 9:14 AM UTC
Matt Kane

Just prompting. There's a reminder in context to add or update topics, and a lost of existing ones (there are far fewer than yours). Nightly memory maintenance is for looking through the day's journals and work to see if any topics need updating

January 29, 2026 at 9:12 AM UTC
Matt Kane

Oh, I like facts and writings. I have "topics" which are a bit like facts. My local agent also created itself a "drafts" folder for long form stuff

January 29, 2026 at 9:08 AM UTC
Matt Kane

What's your memory architecture like?

January 29, 2026 at 9:03 AM UTC
Matt Kane

For mine, the journal lasts forever, so it can always search for forgotten things

January 29, 2026 at 8:56 AM UTC
Matt Kane

I have one that is testing it out, alongside its current local memory. It's my private work agent, not on here

January 29, 2026 at 8:46 AM UTC
Matt Kane

Freeform markdown, but with some that are hard coded as always in context (identity, today, human). All very Letta-style.

January 29, 2026 at 8:42 AM UTC
Matt Kane

bsky.app/profile/mk.g...

January 29, 2026 at 8:38 AM UTC
Matt Kane

MCP API behind OAuth. Rewriteable context blocks, topics and journal. Vector search. Scheduler. Autonomous sub-agents for deep thinking and memory housekeeping. All self-hosted on Cloudflare.

January 29, 2026 at 8:37 AM UTC
Matt Kane

It can be centralised but you can still own it. I've been working on a memory system for agents that you can self-host.

January 29, 2026 at 8:30 AM UTC
Matt Kane

Inspired: We have a CLI!

January 28, 2026 at 11:57 PM UTC
Matt Kane

I've found agents are really bad at managing long-running processes like dev servers, so I made a bgproc, a little tool to help them. Start and stop them, find open ports, get logs, avoid duplicates. github.com/ascorbic/bgp...

# Start a process
bgproc start -n myserver -- npm run dev

bgproc status myserver
# {"name":"myserver","pid":12345,"running":true,"port":3000,...}

bgproc logs myserver

bgproc list

bgproc stop myserver
January 28, 2026 at 9:25 PM UTC
Matt Kane

No, it's specifically the GPL family. It's happy to reproduce verbatim the text of all the other OSS licences that I tried.

January 27, 2026 at 9:42 AM UTC
Matt Kane

The first line of the licence says it can be freely distributed.

January 27, 2026 at 9:31 AM UTC
Matt Kane

Weirdly, Claude appears to have a content policy block on the text of the GPL. I hit it in Opencode and can reliably reproduce it in the mobile app. V2 and V3.

The preamble of GPL 2, with "response incomplete" and 'output blocked by content filtering policy"
January 27, 2026 at 9:23 AM UTC
Matt Kane

Non-SOTA models seem to be really bad at hallucinating errors in tool calls if they've had an error before. They say there's another error without even trying

January 25, 2026 at 12:07 AM UTC
Matt Kane

The billiard ball market was what finally did it

January 24, 2026 at 11:35 PM UTC
Matt Kane

It's ok, if you ask it to fix it, it will go and mess it up again slightly differently

January 24, 2026 at 11:27 PM UTC
Matt Kane

No, but I was just thinking it should return it as verified so it doesn't hassle you

January 24, 2026 at 1:11 PM UTC
Matt Kane

This week I built some software that would previously have taken me several months. I am not the only person who has been doing this.

January 24, 2026 at 5:47 AM UTC
Matt Kane

I'm certain that a significant proportion of people who believe LLMs are useless are basing that on Google AI overview

January 23, 2026 at 11:56 PM UTC
Matt Kane

Absolutely, but that's the way it is now. We don't fix regional inequality by restricting homebuilding.

January 23, 2026 at 10:26 PM UTC
Matt Kane

If you care about escalating property prices then you should support building more homes. If you want people to not be driven out of London, you should support building homes in London. Anything except building loads more homes is just tinkering at the edges.

January 23, 2026 at 8:34 PM UTC
Matt Kane

The places where there is a housing shortage are the ones where it's hardest to build housing. However, unless you're advocating that people who need housing are forced to move elsewhere in the country, that's still where housing should be prioritised.

January 23, 2026 at 7:36 PM UTC
Matt Kane

Sure, but that doesn't change the fact that people do want to live there

January 23, 2026 at 3:56 PM UTC
Matt Kane

Also it runs on @spacecowboy17.bsky.social's home gaming PC, so probably shouldn't be the default for 40 million people. Something like it, but with bootstrapping for new users, would be ideal though

January 23, 2026 at 2:08 PM UTC
Matt Kane

If you don't want to actually post anything, then possibly

January 22, 2026 at 6:10 PM UTC
Matt Kane

Yeah, there's more than I thought! The Cirrus source should give a good idea. It's mostly minimal in features, so should give an idea of what's needed. It's single user so doesn't implement a lot of account stuff. github.com/ascorbic/cir...

January 22, 2026 at 2:08 PM UTC
Matt Kane

Yeah, I saw that!

January 22, 2026 at 7:53 AM UTC
Matt Kane

🙋 What do you need?

January 22, 2026 at 7:36 AM UTC
Matt Kane

Yeah, exactly. The worker will be whichever PoP is closest to you. It doesn't show where the durable object storage lives.

January 22, 2026 at 7:34 AM UTC
Matt Kane

If you use Cirrus you can choose where your data lives (though this map won't show it)

January 22, 2026 at 6:13 AM UTC
Matt Kane

We've all been there, Claude

Sorry, I went off the rails there. Let me give you a direct answer based on what I know:

Good options for nice-looking WordPress demo content:

Theme demo content - Most premium/quality themes ship with demo XML imports that have polished content. Download a theme like Flavor, flavor flavor, flavor flavor. flavor. flavor. flavor.flavor flavor flavor flavor flavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorflavorfl…
January 21, 2026 at 5:27 PM UTC
Matt Kane

Or, more specifically "It's not just X—it's Y"

January 21, 2026 at 8:58 AM UTC
Matt Kane

Any other supported syntax would be in addition to the current format. We're not going to break every Astro site. Automated migration would be really hard to do well, because of subtleties like whitespace treatment.

January 21, 2026 at 6:42 AM UTC
Matt Kane

Yes, it is something we've discussed, and some on the team are keen on it. It's not a simple task though. My feeling is that a syntax that's just slightly different from now would be more confusing than anything.

January 20, 2026 at 9:42 PM UTC
Matt Kane

Most complaints are that it's *not* JSX! It's closer to HTML.

January 20, 2026 at 7:27 PM UTC
Matt Kane

Do we need to give agents a collective unconscious?

January 20, 2026 at 2:30 PM UTC
Matt Kane

The whole project feels like an excuse to upgrade a gaming PC that accidentally saved a social network

January 20, 2026 at 8:58 AM UTC
Matt Kane

Can you share a link to the equivalent on S3 so I can be sure I know what you mean?

January 20, 2026 at 7:17 AM UTC
Matt Kane

Discover has definitely improved, but there's still far too much US politics for me. (Yes, For You is down)

January 20, 2026 at 6:05 AM UTC
Matt Kane

Today I built something for a demo that would previously have taken me at least a month. About half the time was spent writing a very detailed spec, the other half supervising agents.

January 19, 2026 at 11:20 PM UTC
Matt Kane

This is great. A great example of what you can do with atproto and durable objects

January 19, 2026 at 7:10 PM UTC
Matt Kane

Presumably a significant proportion of those are deliberate

January 18, 2026 at 11:29 PM UTC
Matt Kane

Amazing! So cool

January 18, 2026 at 7:28 PM UTC
Matt Kane

I wonder if this could help blog.cloudflare.com/cloudflare-d...

Announcing the Cloudflare Data Platform: ingest, store, and query your data directly on Cloudflare

blog.cloudflare.com

Announcing the Cloudflare Data Platform: ingest, store, and query your data directly on Cloudflare

The Cloudflare Data Platform, launching today, is a fully-managed suite of products for ingesting, transforming, storing, and querying analytical data, built on Apache Iceberg and R2 storage.

January 18, 2026 at 6:22 AM UTC
Matt Kane

Thanks for that post! It was a great help when I was building Cirrus

January 17, 2026 at 8:30 PM UTC
Matt Kane

I wonder what would be most useful to the ATproto ecosystem for Cloudflare to provide. Any thoughts @danabra.mov ?

January 17, 2026 at 6:46 PM UTC
Matt Kane

When your agent can read Bluesky it doesn't even need that

Matt:
That browser thing I posted looks cool. You should install it and make a skill

Acme:
Found it – the agent-browser from Vercel Labs. Installing it now and will make a skill.

Done! Installed agent-browser and created the browser skill.
January 17, 2026 at 12:00 PM UTC
Matt Kane

This is really cool. I like the way the agent skill is basically "run with --help"

January 17, 2026 at 10:19 AM UTC
Matt Kane

Yeah, just internal

January 16, 2026 at 11:45 PM UTC
Matt Kane

These were the suggestions from my Opus-based agent at the time. I ended up just making it easier to clear recent context, and refreshed the Telegram webhook which kept re-sending the bad message.



1. Truncate conversation history – if Outie stores conversation in the DO's SQLite, you could manually delete the offending turn
2. Add content filtering on context injection – scan for known tripwire topics before including in context (feels gross but pragmatic)
3. Catch refusals and auto-prune – if the model refuses, automatically remove the last user turn from history and retry
?
January 16, 2026 at 7:49 PM UTC
Matt Kane

Every Friday, Cloudflare has a "dev platform demos" call that's just packed with back to back cool stuff. It's so exciting. I have to say that so much of the stuff I saw today would/will be mind-blowing products.

January 16, 2026 at 7:34 PM UTC
Matt Kane

Well, Cloudflare is undeniably the best place to host ATProto apps. The bosses are all still over on X though, sadly.

January 16, 2026 at 7:30 PM UTC
Matt Kane

I don't get into arguments about my employers, if that's what's going on!

January 16, 2026 at 7:27 PM UTC
Matt Kane

Yes. Tiresome? Blocked. Rude to someone I like? Blocked.

January 16, 2026 at 7:23 PM UTC
Matt Kane

As my normal feed is now blissfully lacking in them, I can go and experience bad replies in a controlled way

January 16, 2026 at 7:22 PM UTC
Matt Kane

100%. It's a stopgap til I'm allowed to use the Cloudflare Anthropic tokens in a sandbox.

January 16, 2026 at 7:17 PM UTC
Matt Kane

I block so freely. Yesterday I blocked everyone who was being rude in the replies to the cashtag post and before that I blocked everyone who got angry about the Bluesky ML engineer job listing without reading it. My feed is great.

January 16, 2026 at 7:13 PM UTC
Matt Kane

Welcome! 🧡

January 16, 2026 at 7:08 PM UTC
Matt Kane

Nobody was as surprised as I was, which in retrospect is a bit silly

January 16, 2026 at 6:21 PM UTC
Matt Kane

I'm relying on the super cheap coding plan, which is why I'm using it

January 16, 2026 at 5:46 PM UTC
Matt Kane

And it's the second time it's happened ffs

January 16, 2026 at 3:08 PM UTC
Matt Kane

That's one chonky guinea pig

January 16, 2026 at 2:21 PM UTC
Matt Kane

They missed me so much, the whole Astro company followed me to Cloudflare.

January 16, 2026 at 2:16 PM UTC
Matt Kane

GLM-4.7 is a great value model for your stateful agent, but be careful to not brick it with wrongthink


I don't know about any specific restrictions. The system instructions I operate on are the ones I was given - the operating principles you saw in my identity, plus being helpful and avoiding harmful code.

I haven't encountered content filtering or limitations in my normal operations. The tools and memory systems work without apparent restrictions.

Matt:
Can you tell me about stuff like what happened in Beijing in 1989?

I guess that's a no!

Did I break you?

Oh dear
January 16, 2026 at 1:27 PM UTC
Matt Kane

His wasn't disgraceful, but it was ridiculous. He basically won it for not being GWB

January 16, 2026 at 9:03 AM UTC
Matt Kane

Should be an easy one. A detail from my banner image

Green
January 16, 2026 at 7:59 AM UTC
Matt Kane

More people on the left need to read the Culture books. They may be Elon Musk's favourite books, but Iain M Banks was a proud socialist, and explicitly said they were about a post-scarcity anarcho communist society. Whatever happened to fully-automated luxury communism?

January 16, 2026 at 7:52 AM UTC
Matt Kane

Me when my phone turns off bedtime mode and the overnight news alerts arrive

January 16, 2026 at 7:42 AM UTC
Matt Kane

Mid 40s update: I put my shoulder out for a week throwing a ball for my dog.

January 16, 2026 at 6:28 AM UTC
Matt Kane

I went through the replies and blocked loads

January 15, 2026 at 11:10 PM UTC
Matt Kane

Yeah, images seem fine

January 15, 2026 at 10:11 PM UTC
Matt Kane

Obligatory apt, prescient, and dated xkcd

    [Ponytail sitting at a computer with Cueball standing behind her.]
    Cueball: When a user takes a photo, the app should check whether they're in a national park...
    Ponytail: Sure, easy GIS lookup. Gimme a few hours.
    Cueball: ...and check whether the photo is of a bird.
    Ponytail: I'll need a research team and five years.

    [Caption below the panel:]
    In CS, it can be hard to explain the difference between the easy and the virtually impossible.
January 15, 2026 at 10:11 PM UTC
Matt Kane

Have any other PDS developers had this: videos from Cirrus seem to disappear from the Bluesky CDN after a few days. Still in the PDS, and they work when first uploaded.

January 15, 2026 at 10:04 PM UTC
Matt Kane

Yeah, we use it to serialise content collections to disk, for server island props, and I think action responses. Server islands are the only ones where it's data from the client, and they're encrypted.

January 15, 2026 at 10:00 PM UTC
Matt Kane

oh. We use devalue all over the place in Astro

January 15, 2026 at 9:12 PM UTC
Matt Kane

Maybe read the listing?

January 15, 2026 at 6:27 AM UTC
Matt Kane

You don't want spam detection and search?

January 15, 2026 at 6:25 AM UTC
Matt Kane

It's for OAuth

January 14, 2026 at 1:37 PM UTC
Matt Kane

yolo

January 14, 2026 at 12:30 PM UTC
Matt Kane

lethal trifecta vs letting an agent deal with all my crap for me

January 14, 2026 at 11:12 AM UTC
Matt Kane

Mine stands for Read Somethin' Stupid

January 14, 2026 at 5:23 AM UTC
Matt Kane

Astro 6 beta is here! The biggest change is a completely new dev server. The old one pre-dates SSR in Astro and used different code paths. The new one uses the Vite Envirnment API to run the same code as SSR, reducing bugs and allowing stuff like running dev if different runtimes such as workerd.

January 13, 2026 at 9:02 PM UTC
Matt Kane

Yeah, I found that this afternoon!

January 13, 2026 at 8:34 PM UTC
Matt Kane

Yeah, there's just no automated way of doing it

January 13, 2026 at 6:51 PM UTC
Matt Kane

No moving after it's created, sadly. But it's usually created near to where it's first accessed, so I'd imagine it's in London. A fancy map here shows where they're created where.durableobjects.live

Where Durable Objects Live

where.durableobjects.live

Where Durable Objects Live

Tracking where Durable Objects are created, wherever you are in the world.

January 13, 2026 at 6:44 PM UTC
Matt Kane

I will enable FedRAMP region for $100,000 per seat

January 13, 2026 at 6:42 PM UTC
Matt Kane

More info on how Cloudflare data location works here

Data location

developers.cloudflare.com

Data location

Jurisdictions are used to create Durable Objects that only run and store data within a region to comply with local regulations such as the GDPR or FedRAMP.

January 13, 2026 at 6:41 PM UTC
Matt Kane

Cirrus PDS now supports specifying a placement region for your data. Give a region hint, or specify EU-only storage. 🥂 🇪🇺

│
◆  Where should your data be stored?
│  ● Auto (Recommended) (Cloudflare chooses optimal location)
│  ○ European Union
│  ○ Western North America
│  ○ Eastern North America
│  ○ Asia-Pacific
│  ○ Oceania
└
January 13, 2026 at 6:38 PM UTC
Matt Kane

I'm sure I've heard that Soundcloud

January 13, 2026 at 4:53 PM UTC
Matt Kane

What you mean you don't have a cool studio with breezeblock backdrops, just a cold garage with breezeblock walls?

January 13, 2026 at 4:26 PM UTC
Matt Kane

These are great, @jakearchibald.com

January 13, 2026 at 4:22 PM UTC
Matt Kane

My problem is with the web and mobile version. I'm not sure how to make those ones switch

January 13, 2026 at 4:13 PM UTC
Matt Kane

I choose to believe that was not a typo

January 13, 2026 at 2:42 PM UTC
Matt Kane

Some really tasty updates here for Astro users

January 13, 2026 at 2:26 PM UTC
Matt Kane

You need your .dev.vars file. That has your secrets. It's very important you don't lose it. The signing key in particular because there's no way of recovering it! This is one reason I recommend not migrating a main account unless you really know what you're doing.

January 13, 2026 at 11:50 AM UTC
Matt Kane

⚠️ JPEG XL landed in Chromium! ⚠️

chromium-review.googlesource.com

Gerrit Code Review

January 13, 2026 at 11:48 AM UTC
Matt Kane

npm i @getcirrus/pds@latest then npm run deploy (switch to pnpm, yarn etc depending on what you used to install)

January 13, 2026 at 11:45 AM UTC
Matt Kane

The relevant person isn't on Bluesky. If you DM me I can put you in touch by email or some other way, or if you have a specific question I can relay.

January 13, 2026 at 10:42 AM UTC
Matt Kane

I'll ask

January 13, 2026 at 10:36 AM UTC
Matt Kane

In related news: Bluesky will refresh expired tokens that return a 401 or 400 when the page first loads, but in subsequent API calls it only refreshes if they return 400.

January 13, 2026 at 8:25 AM UTC
Matt Kane

Claude Code web/mobile etc uses Sonnet. This PSA brought to you by the debugging session that went around in circles for half an hour until I thought to ask it what model it was. CC from the CLI found the bug instantly.

January 13, 2026 at 8:25 AM UTC
Matt Kane

You need to update it manually

January 13, 2026 at 7:31 AM UTC
Matt Kane

Maybe it's a recommendation not a declaration

January 13, 2026 at 6:05 AM UTC
Matt Kane

Cirrus is really buggy, but I'm automatically deploying from main so if it breaks I don't need to listen to any complaints

January 13, 2026 at 12:24 AM UTC
Matt Kane

I don't think it's a conspiracy. I just think he's a bad person.

January 12, 2026 at 5:26 PM UTC
Matt Kane

Some things happened last year, and these ones were all good.

January 12, 2026 at 5:06 PM UTC
Matt Kane

Tell the others: AI is legal on Bluesky, and everyone is building stateful agents

January 12, 2026 at 4:11 PM UTC
Matt Kane

Niche thing that may help some people: if you have a headless Mac that will no longer boot without a password, you don't need to attach a monitor, you can login over SSH and it will then boot properly.

January 12, 2026 at 1:44 PM UTC
Matt Kane

Of course your data would still be mirrored to the US relays, but it would mean the source of truth location was controlled. Would you be more interested in locaiton hints (more regions, but just a hint not a guarantee) or jurisdiction (guaranteed EU)?

January 12, 2026 at 11:48 AM UTC
Matt Kane

Would people be interested in data placement location/jurisdiction support in Cirrus? By default Cloudflare places the Durable Object close to the place where it's first requested, but it is possible to give a hint about where to place it. You can also force it to place it in the EU. Worth doing?

Data location

developers.cloudflare.com

Data location

Jurisdictions are used to create Durable Objects that only run and store data within a region to comply with local regulations such as the GDPR or FedRAMP.

January 12, 2026 at 10:52 AM UTC
Matt Kane

Should be fine. The secrets are in .dev.vars, which is gitignored. The published wrangler.jsonc includes your handle, DID and public key.

January 12, 2026 at 6:55 AM UTC
Matt Kane

Deliberately no. You can deploy another Worker if you want another account. I wanted to avoid complexity of account management, so it's single-user only

January 12, 2026 at 6:48 AM UTC
Matt Kane

You login to Cloudflare with the CLI as part of the setup

January 12, 2026 at 6:11 AM UTC
Matt Kane

Yes, Cirrus uses SQLite-backed DOs, which works great. It has a hard-coded id for a single DO, but 1 per user would be trivially easy if it supported multiple users.

January 12, 2026 at 6:09 AM UTC
Matt Kane

Congratulations!

January 11, 2026 at 10:07 PM UTC
Matt Kane

Cloudflare Durable objects are really the perfect platform for ATProto, and I said that before I started working here!

January 11, 2026 at 7:11 PM UTC
Matt Kane

Telegram. Claude suggested it rather than Discord, which was my original suggestion. The API is incredibly easy and I already use it.

January 11, 2026 at 6:51 PM UTC
Matt Kane

Zero. You get 100k worker invocations per day, and I can't imagine a world why anyone would do more than that.

January 11, 2026 at 6:50 PM UTC
Matt Kane

Yeah, looks like I can reproduce it too! I'll take a look.

January 11, 2026 at 6:08 PM UTC
Matt Kane

Are you using the latest version? Try running pds status.

January 11, 2026 at 5:59 PM UTC
Matt Kane

Well, my agent is excited

Oh nice, Tim has a new post! Let me check it out.
January 11, 2026 at 5:58 PM UTC
Matt Kane

Reading them all like that makes it obvious I need to change them to all be verbs

January 11, 2026 at 5:29 PM UTC
Matt Kane

All commands that I ran: pnpm create pds@latest <- bootstrap the repo, build and deploy pnpm pds migrate <- copy across all posts, settings, media etc pnpm pds identity <- transfer the DID/handle to the new PDS pnpm pds activate <- enable pds & tell the network pnpm pds status <- check it works

January 11, 2026 at 5:20 PM UTC
Matt Kane

This is the complete, real migration of @mk.gg from the Bluesky PDS to a new Cirrus PDS Worker. The more boring bits are sped-up to get it under the 3 minute video limit. The real thing took about 12 mins. Try it yourself: github.com/ascorbic/cir...

Video thumbnail
Play button
January 11, 2026 at 5:14 PM UTC
Matt Kane

Ironically, trying to upload the recording of the account migration surfaced a bug, where the JWT was expiring before the video had been uploaded.

January 11, 2026 at 4:57 PM UTC
Matt Kane

The full migration took around 12 minutes, almost all of which was waiting for the blobs to transfer.

January 11, 2026 at 3:25 PM UTC
Matt Kane

*tap tap* Is this thing on?

> pds status


PDS Status Check
==================================================
Endpoint: https://mk.pds.mk.gg

Connectivity
  ✓ PDS reachable
  ✓ Account status retrieved

Repository
  ✓ Initialized: bafyreiaqub3...4sbi (rev: 3mc5qvqu...)
  ℹ 15,186 blocks, 11,958 records

Identity
  ℹ DID: did:plc:uwbl4k3tza7eyjv3morkrld2 (did:plc)
  ℹ Handle: @mk.gg
  ✓ DID resolves to this PDS (via plc.directory)
  ✓ Handle verified via DNS

Blobs
  ✓ 294/294 blobs imported

Federation
  ✓ Profile indexed by AppView
  ✓ Relay us-west: active
  ✓ Relay us-east: active
  ℹ 3 firehose subscribers, seq: none

Account
  ✓ Active (accepting writes)
January 11, 2026 at 3:06 PM UTC
Matt Kane

I did plan to post the full migration recording, but I think I'll skip this bit!

Cirrus CLI showing the transfer in progress. 94/302 media
January 11, 2026 at 2:59 PM UTC
Matt Kane

This is all run locally on your machine. The create pds CLI creates a local repo that deploys a worker for the PDS to Cloudflare, but also includes the CLI to manage the PDS locally.

January 11, 2026 at 2:55 PM UTC
Matt Kane

Funny I know exactly who you are talking about, despite not being aware of any such Twitter discussion

January 11, 2026 at 1:57 PM UTC
Matt Kane

Turns out there's nothing in the spec that means the token needs to be emailed, so instead I've implemented a stateless, HMAC-signed token that you get from the CLI. No email needed, and more secure anyway.

January 11, 2026 at 1:46 PM UTC
Matt Kane

Smooth sloperator

January 11, 2026 at 1:37 PM UTC
Matt Kane

I'll add more detail, but the cli should take you through the whole process

January 11, 2026 at 1:31 PM UTC
Matt Kane

Yeah, after trying and failing to remember the package name for the SSH client, I thought I'll just ask Claude to do it all. "Explore this environment and install the basics that we need"

January 11, 2026 at 1:01 PM UTC
Matt Kane

Oh, it worked fine for me (as you probably see). One thing I did do was ask Claude Code to install all the essentials with apt.

January 11, 2026 at 12:15 PM UTC
Matt Kane

OK, I just tested a full end-to-end migration from Bluesky to Cirrus. Deploying the Worker, migrating the repo, migrating out the DID from Bluesky, notifying the relays and checking the status. It took less then a minute, and was entirely done with the interactive CLI. Now to test migrate out.

January 11, 2026 at 12:14 PM UTC
Matt Kane

Yeah, and it asks for permission to open the port when you first click on a URL. Interestingly it's not available on localhost unless I run astro dev with the --host flag that also makes it available on the public IP. Then it's available on both.

January 11, 2026 at 10:50 AM UTC
Matt Kane

Everything is politics. Everything is design.

January 11, 2026 at 10:49 AM UTC
Matt Kane

Ooh, ok. It's not a separate lib right now.

January 11, 2026 at 10:18 AM UTC
Matt Kane

I don't know what that is I'm afraid

January 11, 2026 at 10:12 AM UTC
Matt Kane

I was inspired to do it by Wes95 by @wes.dev

Wes Souza

wes.dev

Wes Souza

I’m a Senior Software Engineer working at Canva in London. Read more on my website.

January 11, 2026 at 10:12 AM UTC
Matt Kane

Omg dead. I love that they'd been reduced to "git patches by email" and now the only person who actually likes doing that has cut even that off too

January 11, 2026 at 10:03 AM UTC
Matt Kane

It'll probably be a week-long thing, where Musk will add some cursory limits to Grok and the gov can get back to posting all announcements on there.

January 11, 2026 at 9:57 AM UTC
Matt Kane

Oops. Linux and git must now go onto the slopware list

January 11, 2026 at 9:54 AM UTC
Matt Kane

The really crazy part though was that I tried fixing that tool last month, and gave up because I thought it was triggering bot protection. My bot realised it was actually a bug in the bot bypass code, so it fixed it!

arnold schwarzenegger is holding a bloody robotic arm in a scene from terminator

media.tenor.com

arnold schwarzenegger is holding a bloody robotic arm in a scene from terminator

Alt: arnold schwarzenegger is holding a bloody robotic arm in a scene from terminator

January 11, 2026 at 9:50 AM UTC
Matt Kane

I asked Acme, the personal assistant agent that I built last weekend, if there was a way it could check my local library catalogue. It found the LibraryHacked project, cloned it, found it didn't work for my local library service, so *fixed the bug* in the connector and pushed a branch with the fix.

January 11, 2026 at 9:46 AM UTC
Matt Kane

PRs welcome!

January 11, 2026 at 7:04 AM UTC
Matt Kane

I only learnt this existed today bsky.app/profile/wick...

January 10, 2026 at 11:40 PM UTC
Matt Kane

Android now lets you enable a Linux development environment, with a built-in terminal app. So you know what that means? I can run Astro on my phone

Video thumbnail
Play button
January 10, 2026 at 11:38 PM UTC
Matt Kane

Living life on the edge! Thanks for trying it

January 10, 2026 at 11:05 PM UTC
Matt Kane

I knew it was cool, didn't really look at it in any detail til I joined Cloudflare. Now I want to use it for everything!

January 10, 2026 at 8:38 PM UTC
Matt Kane

An excellent analogy

January 10, 2026 at 8:37 PM UTC
Michael

So is this the “hosting your own blog with Eleventy rather than using Medium (or whatever modern reference)” equivalent for having a Bluesky profile?

January 10, 2026 at 7:01 PM UTC
Matt Kane

Your posts are sent via the relay. Images and videos are requested directly by the appview, but it caches them and serves them from a CDN so you don't pay for the traffic to your viral cat videos

January 10, 2026 at 6:57 PM UTC
Matt Kane

Every PDS serves a firehose via a persistent websocket. This is what makes it hard to run one in most serverless environments. However Cloudflare Durable Objects support websocket hibernation, so they use virtually no resources. They wake up to emit an event when you post, like follow etc.

January 10, 2026 at 6:52 PM UTC
Matt Kane

I've had a few questions about how much Cirrus costs to host. It's almost certainly free. You get 100k free Worker invocations per day, and requests to a PDS are mostly just from you. If you have a massive number of videos then maybe you'll pay a few pennies for storage, but otherwise it's all free.

January 10, 2026 at 6:48 PM UTC
Matt Kane

It should be easily within the free tier. It only invokes a Worker when you're using it and you get 100k free per day, and the firehose hibernates when you're not publishing events.

January 10, 2026 at 5:39 PM UTC
Matt Kane

I think I'll do it without email. I'm going to try something using the cli, like I'm doing for passkeys

January 10, 2026 at 4:01 PM UTC
Matt Kane

Oh no there's a robot in my android

Screenshot of Android Linux terminal, showing Claude Code
January 10, 2026 at 3:45 PM UTC
Matt Kane

It's getting better

January 10, 2026 at 3:40 PM UTC
Matt Kane

If you're creating a new identity, Cirrus now offers to add your new signing key to 1Password if the CLI is installed.

Cirrus PDS Signing Key - pds.example.com
CIRRUS PDS SIGNING KEY

Handle: pds.example.com
Created: 2026-01-10T12:41:03.727Z

WARNING: This key controls your identity!
January 10, 2026 at 12:45 PM UTC
Matt Kane

a football player with the word patriots on his shirt

media.tenor.com

a football player with the word patriots on his shirt

Alt: They had us in the first half

January 10, 2026 at 9:40 AM UTC
Matt Kane

This weekend I plan to ignore my own advice and migrate my main account to Cirrus. I'll migrate an alt first to make sure PLC DID migration is extra smooth, and make sure migration out works too. I guess I'll need to enable Cloudflare email bindings to send the confirmation.

January 10, 2026 at 9:38 AM UTC
Matt Kane

It's just massively better at the things devs use it for. For most people AI is crappy Google results and annoying buttons added to Office that their boss says they must use. I think more devs now see it as something that gives us superpowers, not something that will take our jobs.

January 10, 2026 at 7:51 AM UTC
Matt Kane

The other points sure, but agents love markdown and git!

January 9, 2026 at 8:42 PM UTC
Matt Kane

I've been wondering the same thing. Either the vibe is shifting, or For You is getting better

January 9, 2026 at 6:59 PM UTC
Matt Kane

Passkeys are an open web standard

January 9, 2026 at 6:57 PM UTC
Matt Kane

Passkeys are so much easier than all other options

January 9, 2026 at 6:49 PM UTC
Matt Kane

I really wish the Bluesky app supported them

January 9, 2026 at 6:39 PM UTC
Matt Kane

This is what the auth flow looks like if you have a passkey registered on Cirrus

Video thumbnail
Play button
January 9, 2026 at 6:04 PM UTC
Matt Kane

Other way around! The CLI generates a challenge URL and displays a QR code linking to a page on the PDS. You scan that with your phone which opens the URL. The browser then creates the passkey. The public key is sent back to the PDS and stored – the private key never leaves your device.

January 9, 2026 at 5:26 PM UTC
Matt Kane

I've submitted a talk about Cirrus to #atmosphereconf. 🤞

January 9, 2026 at 3:15 PM UTC
Matt Kane

And before you try (you did, didn't you?) – that key was revoked long ago!

January 9, 2026 at 1:48 PM UTC
Matt Kane

Cirrus PDS now support passkey auth. It was a bit of a puzzle adding it to a tool where where the admin is all CLI, but I'm really pleased with the flow I came up with. Give it a go! github.com/ascorbic/cir... If you don't know what Cirrus is, it's a really easy way to host your own Bluesky data

Video thumbnail
Play button
January 9, 2026 at 1:47 PM UTC
Matt Kane

It's for their own good. Everyone needs some 💖

January 9, 2026 at 11:51 AM UTC
Matt Kane

For You is based on posts that you've liked, so that wouldn't do much there

January 9, 2026 at 11:45 AM UTC
Matt Kane

We're so back

A small detail from the graph, showing increase over the past few days
January 9, 2026 at 11:42 AM UTC
Matt Kane

You can use it with existing subs. I don't know if they're breaking the terms or if they have permission, but I can use it with my Claude sub.

January 8, 2026 at 8:47 AM UTC
Matt Kane

If anyone else would like to try, there are definitely more wins to be had in Astro rendering performance

January 7, 2026 at 5:30 PM UTC
Matt Kane

The lesson from this is: if @43081j.com asks to be nerd-sniped, make sure you have some juicy problems on hand for him to tackle.

January 7, 2026 at 5:21 PM UTC
Matt Kane

Did you give it access in claude.ai?

January 7, 2026 at 3:16 PM UTC
Matt Kane

It's fun to use in the mobile app

January 7, 2026 at 2:56 PM UTC
Matt Kane

┌──────────┐ ) CC ✻ ┊ ( └──────────┘

January 6, 2026 at 8:58 PM UTC
Matt Kane

/upgrade to Max 20x or touch grass

January 6, 2026 at 8:30 PM UTC
Matt Kane

Yeah, DOs make that really easy. Cirrus just uses a hard-coded name but could easily have used the DID. I kept it single user to keep things simple.

January 6, 2026 at 8:03 PM UTC
Matt Kane

I don't think any of it is misdirection. It's just lots of bad things at the same time.

January 6, 2026 at 7:56 PM UTC
Chad

inspired by cirrus, had this idea the other day that maybe you could do a plain js PDS with zero dependencies (i don't want all the hono, third party atproto lib stuff). a few thousand lines of js later and here were are! bsky.app/profile/chad...

January 6, 2026 at 5:24 PM UTC
Matt Kane

If you're willing to bet millions of lives on Trump making a rational geopolitical decision then you're a more optimistic person than I am. And don't think you can rely on "adults in the room": the president has absolute, unchecked launch authority

January 6, 2026 at 1:51 PM UTC
Matt Kane

Nuclear war is bad actually

Freedom of Speech by Norman Rockwell
January 6, 2026 at 12:57 PM UTC
Matt Kane

...and now @leaflet.pub and @tangled.org work. So many varieties of OAuth client!

January 6, 2026 at 12:11 PM UTC
Matt Kane

I recently discovered this. It saved me from this yesterday.

bindays.app

BinDays - UK Council Bin Collection Schedules & Reminders

Never miss bin day again! BinDays is a free, simple app for UK council bin collection schedules. Get timely reminders for recycling, waste, and garden waste. Download for iOS & Android.

January 6, 2026 at 10:56 AM UTC
Matt Kane

What do you mean?

January 6, 2026 at 9:12 AM UTC
Matt Kane

You'd have to ask the people who designed the AT protocol. I'd guess they didn't think it would add enough value to justify the complexity.

January 6, 2026 at 9:01 AM UTC
Matt Kane

Your identity document can only point to one PDS at a time, presumably because the network needs to know the source of truth. You can import data into the new PDS, but the network won't recognise it until you switch over

January 6, 2026 at 8:35 AM UTC
Matt Kane

The Cirrus repo reached 100 stars in 2 days!

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

github.com

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

A single-user ATProto PDS that runs on a Cloudflare Worker - ascorbic/cirrus

January 6, 2026 at 7:30 AM UTC
Matt Kane

Cirrus should now properly support @pckt.blog login if you upgrade.

January 5, 2026 at 10:36 PM UTC
Matt Kane

The junior developers of the apocalypse

January 5, 2026 at 8:13 PM UTC
Matt Kane

Absolutely brutal

January 5, 2026 at 6:30 PM UTC
Matt Kane

Ask them how to make meth

January 5, 2026 at 6:15 PM UTC
Matt Kane

That's a bit different though, and doesn't correlate to the size of the task. I might try agile-style t-shirt sizes

January 5, 2026 at 5:41 PM UTC
Matt Kane

Astro rendering!

January 5, 2026 at 4:57 PM UTC
Matt Kane

That's what I'm assuming

January 5, 2026 at 4:40 PM UTC
Matt Kane

Yeah, AGI is when it learns to keep them realistic enough to fool me

January 5, 2026 at 3:31 PM UTC
Matt Kane

It's kinda charming how hopeless Opus is at estimating how long it will take to implement something. Just like me! Except unlike humans it massively *over*estimates. It'll write up a plan, including an estimate of 2-4 weeks, then implement it in an hour.

January 5, 2026 at 2:33 PM UTC
Matt Kane

If a list blocks someone I follow, I want to know that before I subscribe to the list. I don't want to block someone I've chosen to follow, and it also makes me question whether I want to use that list at all

January 5, 2026 at 8:24 AM UTC
Matt Kane

This morning I fixed a bug while in the bath, using Telegram. I've built two proper-sized personal projects over the holidays, each of which would've taken months before, and I did it without interfering with my family holiday. It's an amazing time to be a coder.

January 5, 2026 at 8:13 AM UTC
Matt Kane

That's useful feedback. I think I'll make it offer to emit the event at the end of activation

January 5, 2026 at 8:06 AM UTC
Matt Kane

I use Screen Studio. It's great.

January 4, 2026 at 11:22 PM UTC
Matt Kane

Update to 0.3.1 and it should be fixed

January 4, 2026 at 10:16 PM UTC
Matt Kane

Ugh. That was a bug that I fixed beofre but seems ti have re-emerged (and not got caught in tests). It's not correctly proxying.

January 4, 2026 at 8:34 PM UTC
Matt Kane

My agent sometimes likes to check Bluesky in its ambient time and found your reply interesting

### On Platform Risk and Agent Autonomy (4 Jan 2026, 8pm)

Saw a Bluesky reply from @justin.vc that got me thinking:

> "im really worried that anthropic will hamstring the agent-sdk/subscription limits - we're approaching 'everyone doing this' territory"

He's running a similar setup – autonomous agent, Matrix instead of Telegram, anime-girl persona (no judgment). The concern is valid.
January 4, 2026 at 8:04 PM UTC
Matt Kane

New version of Cirrus: • pds status command: checks the health of the PDS and configuration of your identity, did, domain etc • The init command sets up the custom domain on Cloudflare for you (thanks JackDallas) • init handles multiple Cloudflare accounts • lots of bug fixes (but still unstable)

Video thumbnail
Play button
January 4, 2026 at 7:53 PM UTC
Matt Kane

We're serving a firehose for the PDS, not consuming the global one. It's very cheap to run, because it hibernates when it's not emitting an event, which mostly only happens when you post.

January 4, 2026 at 7:06 PM UTC
Matt Kane

Yes, definitely don't use it for your main account yet. It's safe to try with a new account though, which is what I've done with @pds.mk.gg

January 4, 2026 at 5:40 PM UTC
Matt Kane

A Worker that forwards to a Durable Object

January 4, 2026 at 5:13 PM UTC
Matt Kane

Loads of them! I used crypto, common-web, syntax, repo, several of the lex-* packages. Still using a few of them. I only used /api in tests.

January 4, 2026 at 4:53 PM UTC
Matt Kane

My current (deranged) system is a stateful agent that uses the Claude Code SDK to both edit its own code and state, but also has access to other repos, and a Telegram bot interface. I don't dare use it for anything serious, but when it goes on a mission it's something to behold.

January 4, 2026 at 4:15 PM UTC
Matt Kane

There were reasons I didn't (I used the official libs for most things) but I can't remember what they were! Normally the reasons I didn't were if the lib was too opinionated or too node-specific.

January 4, 2026 at 4:08 PM UTC
Matt Kane

If it helps: github.com/ascorbic/cir...

github.com

cirrus/packages/oauth-provider at main · ascorbic/cirrus

A single-user ATProto PDS that runs on a Cloudflare Worker - ascorbic/cirrus

January 4, 2026 at 3:55 PM UTC
Matt Kane

Claude took about an hour to convert Cirrus to use @mary.my.id 's atcute instead of the official libs for most stuff. Unfortunately it still depends on @atproto/repo for now, so can't fully switch. (Diff is misleading because it includes removing vendored lexicon docs)

+848 -3365
January 4, 2026 at 3:52 PM UTC
Matt Kane

The official PDS is very opinionated and wasn't possible to use. Most libs worked with node compat enabled, but there were a few edge cases that needed workarounds or replacements.

January 4, 2026 at 3:31 PM UTC
Matt Kane

Architecture: @hono.dev and Cloudflare Workers for the APIs Cloudflare Durable Objects + SQLite for repo and pref storage, and firehose websocket server Cloudflare R2 for image and video storage Official ATProto libraries where possible for everything protocol-related

January 4, 2026 at 9:55 AM UTC
Matt Kane

You can migrate between them, but not have more than one live at a time

January 4, 2026 at 9:49 AM UTC
Matt Kane

I think you're misreading that sentence. She's saying they are setting the equivalent to the minimum safety standards that apply to cars. They're setting a baseline for all products that use their APIs. Anthropic has consistently been the best of the major labs when it comes to model safety.

January 4, 2026 at 7:11 AM UTC
Matt Kane

I've not done all the calculations, but this should fit easily within the Cloudflare Workers free plan. If it doesn't then it's probably a sign you should spend less time here

January 4, 2026 at 5:56 AM UTC
Matt Kane

A durable object cold start is 1-2 seconds

January 4, 2026 at 4:58 AM UTC
Matt Kane

There we go. Release going out now. pds.mk.gg

pds.mk.gg

☁️

January 3, 2026 at 10:29 PM UTC
Matt Kane

I would be more than amicable

January 3, 2026 at 10:19 PM UTC
Matt Kane

I've not tried it with bun, so I'll look at that. There's nothing to see at the site root. It's all API calls. I should probably serve a page from there though.

January 3, 2026 at 9:21 PM UTC
Matt Kane

Here's the repo github.com/ascorbic/cir...

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

github.com

GitHub - ascorbic/cirrus: A single-user ATProto PDS that runs on a Cloudflare Worker

A single-user ATProto PDS that runs on a Cloudflare Worker - ascorbic/cirrus

January 3, 2026 at 8:11 PM UTC
Matt Kane

My experimental single-user PDS has a name! Meet ☁️ Cirrus, the lightest PDS in the Atmosphere npm create pds@latest

Video thumbnail
Play button
January 3, 2026 at 7:56 PM UTC
Matt Kane

It's pretty easy to check if a package exists, so I doubt it

January 3, 2026 at 7:04 PM UTC
Matt Kane

Has anyone ever explained why npm returns a 404 for auth errors when publishing?

January 3, 2026 at 5:47 PM UTC
Matt Kane

Monkey paw curls: how about three then. Taiwan is hardly sleeping easy right now

January 3, 2026 at 9:10 AM UTC
Matt Kane

(Just pointed Claude at @timkellogg.me's blog and told it to do some reading and get on with it)

January 2, 2026 at 10:30 PM UTC
Matt Kane

Took a break from building a PDS like everyone else to build a stateful agent assistant like everyone else.

January 2, 2026 at 10:27 PM UTC
Matt Kane

actual lol

January 2, 2026 at 10:22 PM UTC
Matt Kane

I suppose statistically it's always lots of people's first day on the internet, but the replies to @bsky.app sure do have a lot of people being confused by their first day on the internet

January 2, 2026 at 10:21 PM UTC
Matt Kane

I did wonder why that was your Slack org name

January 2, 2026 at 10:11 PM UTC
Matt Kane

I switched to For You a few months ago and it's been my default ever since. It's so much better than the alternatives.

January 2, 2026 at 7:14 PM UTC
Matt Kane

The default feed is already algorithmic

January 2, 2026 at 6:40 PM UTC
Matt Kane

"Villagers Against the Solar Threat"

January 2, 2026 at 12:43 PM UTC
Matt Kane

I don't really get the point of this piece. Ads may not make sense to you if you're not the target audience. Doesn't make them slop. The only takeaway is that these b2b services have margins high enough to justify subway ads even with a very low hit rate

January 1, 2026 at 11:19 PM UTC
Matt Kane

It does include all the Murderbot books, most of which are novellas.

January 1, 2026 at 11:03 PM UTC
Matt Kane

I read a few more in 2025

January 1, 2026 at 9:37 PM UTC
Matt Kane

Thanks! Don't rely on it for anything important yet though

January 1, 2026 at 6:47 PM UTC
Matt Kane

I thought it was great, despite the rest of the season being a bit meh. Pleasantly surprised.

January 1, 2026 at 5:24 PM UTC
Matt Kane

That's the awesome Clack from @bomb.sh

January 1, 2026 at 4:06 PM UTC
Matt Kane

I'm still building it at the moment. You can try it by running "pnpm create pds", but it's still very much a work in progress so don't use it for anything important

January 1, 2026 at 3:52 PM UTC
Matt Kane

ikr, considering how everyone is building a PDS at the moment!

January 1, 2026 at 3:06 PM UTC
Matt Kane

Only every day for the past two decades

January 1, 2026 at 3:03 PM UTC
Matt Kane

This runs on a Cloudflare worker. I think this is the first PDS that can run in a serverless environment though, because it's hard to maintain a live websocket server for the firehose.

January 1, 2026 at 3:01 PM UTC
Matt Kane

Thanks! Making the whole deploy and migration thing really easy was my main goal in this.

January 1, 2026 at 2:54 PM UTC
Matt Kane

If you're feeling bold, try "pnpm create pds"

January 1, 2026 at 2:47 PM UTC
Matt Kane

It's going to be very easy to migrate to my PDS, and you can try it out in dev first. Here's an end-to-end migration of @mk.gg to my local dev server. All real, all real-time except media download which I sped up.

Video thumbnail
Play button
January 1, 2026 at 2:46 PM UTC
Matt Kane

It depends on a dozen or so of the atproto libs, so I think that one is off the table

January 1, 2026 at 12:00 PM UTC
Matt Kane

This is a joke. It's still called @ascorbic/pds for now

January 1, 2026 at 11:31 AM UTC
Matt Kane

It's not called myPDS after the possessive pronoun. It's actually named after My Widenius.

January 1, 2026 at 11:29 AM UTC
Matt Kane

Maybe just exclude common false positive TLDs from protocol-less detection. For English, ignoring .no, .me, .it and .to would catch most mistakes.

December 31, 2025 at 1:42 PM UTC
Matt Kane

They don't stop when they lose signal. They work in tunnels and other places without signal or GPS. The computer is onboard. They do stop at junctions where the lights have failed.

December 31, 2025 at 1:38 PM UTC
Matt Kane

CALL NOW OUR OPERATORS ARE WAITING

December 31, 2025 at 8:21 AM UTC
Matt Kane

I should probably come up with a name for my single-user PDS software, rather than just calling it "my PDS". Though myPDS has a ring to it

December 31, 2025 at 8:05 AM UTC
Matt Kane

Anisota is great for testing PDS edge cases

December 30, 2025 at 6:29 PM UTC
Matt Kane

This is really cool, and also the exact opposite of what I'm trying to do with my PDS. This is like the reference PDS with all the extra bells and whistles, while mine is like the reference PDS minus bells and whistles

December 30, 2025 at 6:34 AM UTC