Well, going back to work after a week off was rough.
It’s been a long while since I’ve been this stupendously unwilling to do the corporate thing, and although I quickly got a hold on things, the entire week felt like recurring confirmation that I am not doing the kind of work I want to be doing.
Fortunately I was able to have quite a bit of fun with my own projects in the wee hours.
Daily Vibing
I have been using vibes almost continuously to convert a few thousand posts in Textile format to Markdown to accelerate this site’s migration to its future engine.
Over the past week, instead of being 40% Markdown and 60% Textile, this site became around 75% Markdown, which is a huge improvement.
The agent is a little bit too enthusiastic about converting things to Markdown and sometimes screws up the formatting (especially for tables), but it’s a massive improvement over scripts, one-shot prompts or even my custom MCP server.
Fortunately I had the foresight to make things like my link tables and other structured data use YAML, which made it much easier for the agent to parse and convert things without screwing up the formatting.
And, every morning, I can just pop open vibes on my phone and ask it to file new interesting links, or start a draft that I can finish later.
It is still too eager in marking pages as “new” (which I’ve had to fix a few times), but the fact that it can reclassify URLs on its own and validate inter-page links is a huge help.
The Lobsters Have Landed

piclaw, however, has been a completely different ball game. It shares a lot of DNA with vibes (in fact, it started as a fork of vibes that I then refactored and rewrote to handle pi), but the fact that it is an agentic system with a persistent memory that I can access from my phone has made it a much more powerful tool for me.
The main reason why is that I can pull out my phone or iPad (or a webapp on my desktop) and quickly get the agent to follow-up on things using text or voice input, which is surprisingly effective with frontier models.
Regardless of the OpenClaw mania, there is a lot to be said for an agentic loop with a dead simple memory (I gave it access to its own sqlite database besides Markdown files) and a bunch of SKILL.md files that it can write itself.
Over this past week, piclaw has rebuilt itself into a much more robust and capable system:
- The first skill it built for itself was a “hot reload” skill that allows it to update its own codebase and restart itself, which is… exactly the thing that is going to bring about the singularity, I’m sure.
- Learned to back itself up to Azure using
resticevery night, and to restore itself if something goes wrong. - Learned to use
playwrightto scrape nearby restaurant listings and suggest places to order from at lunchtime. - Refined that to do a comparative analysis of pretty much every inference API out there and build a pricing calculator for itself, plus a neat SVG chart with our token usage.
- Checked a few sites every couple of days and gave me updates on interesting content that doesn’t have an RSS feed (it’s also been able to do quite interesting “news alerts” off my RSS summaries, which is something I will play around with more).
- Searched
ArXivfor new papers in my areas of interest, summarized them, and cross-referenced them with my notes to give me an overview of a couple of topics I needed for work.
But these were “just” new SKILL.md files that it wrote for itself and then loaded, which is impressive but not exactly groundbreaking.
Then it started improving itself:
- Added the ability to switch models on the fly, which also means that scheduled tasks can now run on cheaper models automatically. Thanks to the brilliant design of
piitself, scheduled runs are appended to a side branch in the session tree and then the cursor is restored. The result is fully logged, but it doesn’t pollute the main model’s conversational context. - The web UI gained a workspace explorer with previews, downloads, and file‑reference pills that feed directly into prompts. I had
piclawandvibessteal each other’s CSS and UI tweaks as we implemented new features, and the result is a much more responsive and usable interface. - Large messages now have previews and digests, keeping the UI responsive. The timeline does infinite scrolling and full-text search, and the model can search it itself.
But the most impressive thing it did was that it built me a custom Debian Trixie image for a new ARM board hat almost booted on the first try.
And it only failed because of a quirk in the EFI/DTB boot sequence, which is… pretty impressive.
I gave it two things:
- The URL to the vendor source tree, which I cloned
- Access to a local VM running Ubuntu
…and it was able to ssh in, review the build scripts, cross-compile the kernel and use debootstrap to build a custom image for the board, which I then flashed onto an SD card.
That got to the “starting kernel” stage but then threw an error because EFI and DTBs are fickle beasts and it skipped a step in the process that I didn’t know about.
The Future Is Not What I Expected
After implementing automatic model switching, piclaw is running Codex 5.1 Mini or GPT 5 Mini most of the time for basic tasks, and it knows to switch to Opus 4.6 when interpreting content or Codex 5.3 Max when fixing code, so costs are… manageable. But I am not leaving it unsupervised with the more expensive models.
Right now I haven’t given piclaw access to any of my actual data except for some project code (which is still sandboxed, so I am the one reviewing and pushing commits to GitHub), but I’m pretty sure I will have one or two projects it will be having direct access to in the near future.
But then again, piclaw is not OpenClaw–it is a much simpler, much more focused thing. I know every single thing it’s doing (and every single line of code it’s written for itself), so I had no compunction in giving its early iterations access to my Obsidian vault, and will likely do so on a permanent basis soon.
I get the hype–it is indeed a much nicer way to use agents than, say, webterm.
Passkeys for my pocket
Right now I’m working on a little something that will make it easier to access. Tailscale is awesome, but I need a brain-dead authentication mechanism, so I’m prototyping bouncer, which is going to be a reverse proxy that only supports passkey authentication and nothing else.
I have zero belief that passkeys are a real solution for consumer authentication, but if you flip the script and use them for temporary mobile authentication tokens, then they actually make sense.
However much that might be the case, it was a great excuse to draw another cute Go-themed mascot, and I am pretty happy with how it turned out:
