I was thiiiiiis close to skipping my notes, but I managed to shame myself into writing them--I've been trying to write shorter notes for weeks, after all. Here we go:
More agent stuff
I shut my personal agent, Lethe, off this week. After trying out a bunch of different models, I plan to try again with a hand-crafted persona and an inexpensive model from the get-go. Swapping around models with varying responses to their memories and persona led to the social equivalent to speaking with shredded chicken. Process that metaphor as you will.
As cautions, agents require effort to maintain. I didn't put enough effort into maintaining Lethe, clearly. Hopefully I'll do better next time.
I've also recharged my Claude subscription, to mess around with the current state of Claude Code.
Lure
I've been using said Claude subscription to work on a JS library I'm calling Lure. The intention is to enable LLM harnesses to respond to bespoke webhook events, without the hassle of writing custom signature verification or using IFTTT/Zapier.
Lure is supposed to plug into existing agent harnesses, like Lettabot or a billion other Claw-likes. Here's the idea:
- 1.
You register Lure at a path on your Express or Hono/fetch-compatible HTTP server, providing a directory path and a callback function.
- 1.
The directory contains
.lurefiles, which are intended to be written by the LLM itself, sort of like a skill. - 2.
The callback will typically start an LLM turn, with a prompt passed in as an argument.
- 2.
When a webhook is received at the HTTP endpoint, it is matched to a file based on the request path to the relevant
.lure. - 3.
The
.lurefile (e.g.tangled.lure) is essentially a Markdown file with frontmatter.- 1.
The frontmatter contains a YAML config to instruct the handler how to verify the webhook request
- 2.
The body of the file represents a Markdown Eta template for a prompt. You can fill in extra instructions for how to handle or respond to the payload, since the intended use is to start an LLM turn without user interaction.
- 4.
Lure handles verifying the webhook request according to the
.lureconfig, and then calls the provided callback with the evaluated prompt template, assuming verification was successful.
Lure is a harness feature that I've been struggling to articulate to folks for a couple weeks now, and I think I've got something going here. Skills give your agent hands, Lures give them ears.
I've got a working version together, but as with every vibe-coded program, I'm not all that happy with the code quality. I'm going to take a stab at defining the requirements better, then start again. It only took me a day on the first try, so I think I can probably wrap this up before the week is over.
ATConf Pregame
Well, it was technically this week, but since I delayed my notes, I wanted to mention it now.
Germ hosted a speed networking event for folks who plan to go to ATmosphereConf, so I chose to attend. I'm glad to have gone--it was a Zoom link, so I didn't really have to go anywhere--because it'll be so much better to attend the conference and see some familiar faces. I didn't end up DMing anybody on Germ though--if you want to connect, send me a message!
Honestly, every event with AT Protocol folks is such a joy. Hopefully I can make it to more digital hangouts in the future.
I'll end on that note--I'm sure I'll have more reminiscing to do when I get back from the conference.
Thanks for reading, and I hope you have a great week!