832 karma · joined March 28, 2022
oh this is cool. I would be very interested in a Facebook CLI
The agents run on my NixOS server in their own unix account, this is the real secret sauce. This lets me use unix perms to limit their access to things, and it allows them to handle server administration. I've given them access to a cli mail and calendar client[1], github, and they have the ability to deploy updates whitelisted services. NixOS lets them install whatever they want in ephemeral shells, and it's not possible for them to break the server in a way I can't trivially roll back.
They can modify the caddy config, so there have been times I've entirely built and deployed new services on a new domain from my phone on the bus.
The harness is called pi-msg, I've done a writeup of my machine's setup on my site.[2]
[0]: https://github.com/zachpmanson/pi-msg [1]: https://github.com/zachpmanson/docket [2]: https://notes.zachmanson.com/the-fleet/
Model and observed window | Messages | Retrieved actual $/message
DeepSeek v4-flash — all observed snapshots, 20 Jul–15 Sep | 4,610 | $0.0241
DeepSeek v4.1-flash — 11–27 Sep, before the 28 Sep billing change | 1,079 | $0.0576
DeepSeek v4.1-flash — 28 Sep, partial new billing window | 69 | $0.0365
GPT-6 Luna — 23–28 Sep, partial final day | 88 | $0.0329
I've subbed to Codex because I suspect at my usage rates the Codex Plus plan gives me more Luna messages than I'm using, and I've not really observed and better or worse intelligence performance. Interested to see how my $/message comes out after a month of usage on the Codex plan.
Something nice I've realised about my harness is that I can run different agents on different models so I can collect pricing data for a bunch in parallel.
[0]: pi-msg, run pi agents over xmpp https://github.com/zachpmanson/pi-msg
Tech like SynthID I see a net positive especially since it doesn't degrade text quality. I dream about a browser extension running at all times that makes text more translucent based on the confidence of LLM writing[0].
This article's suggestion of using it to unmask whistleblowers is very interesting and not something I'd thought about though. Still not convinced that spymark is a better name though.
[0]: Sean Goedecke's Deckard is close but it would rather invisible than bright red https://www.seangoedecke.com/deckard/
Farid Zakaria's recent nix saga is insane
- unifying all versions of all packages into one resolution tree
- making executables out of sqlite databases
- adding API routes to a sqlite executable with an insert statement ?!?!?
- making one flake that contains all flakes
- adding version ranges to nix
- run any nix package any nix version in your browser (this one)
The Pi harness is built to be extended like this, and it's a joy to work with.
The benefit beyond that was having agents running on my server directly so they can do a lot of sysadmin and monitoring tasks, as well as suggesting config changes through PRs to my nix config.
pi-msg doesn't support bonjour, I'm running it on a nixos server (nix is the real secret ingredient of my whole setup) the xmpp server is the same machine as the agents. I'm almost always on a different network to the one where the server is. If the server goes down the agents and ejabberd are coming down simultaneously.
This has worked well since I can spin up new accounts on demand and I can use existing server software (ejabberd, perfect) and clients (Fluux, great; Conversations, okay). I've had to make a few custom modifications to each client to make agent comms a bit nicer (e.g. exposing status messages more prominently since I use that to expose current agent commands), but the XMPP layer has had pretty much everything I could have wanted.
Controlling a chat service is a bit intoxicating, I'm now using it as my notification service over a bunch of different projects.
I used Google Chat way back, its nice that the tech is still around and great as ever.
brutal
I can't speak to what the scene was like 10 years ago, but to say that its rare feels very wrong to me.
Funny that the XMPP clients has taken more of my time than the pi XMPP wrapper itself.