I’ve caught the claw-fever that has been spreading throughout the small corner of the Internet that I live in. I started with OpenClaw for a few weeks and got hooked. I have now shifted to my own personal fork of Nanobot, with lots of my own customizations.

Clawperator

Claw + Cron: Square peg, round hole Link to heading

One of the things I setup on my OpenClaw instance was a new music discovery job. I want to get out of the Spotify algorithm and actually find music I like on my own. I have been a longtime last.fm user (on-again, off-again though). But I recently started scrobbling again to help with its recommendations. Combine that with the power of a search engine and letting OpenClaw do its thing, I was actually getting some good suggestions. I worked with my bot (Alice) to get that into a daily workflow, suggesting a few new albums to consider every day, including album covers and some details. It actually worked great, except for one thing. Every day I would get slightly different formatting, lots of emojis, no emojis, … My point is it wasn’t deterministic at all. When I broke down the skill that was created, it was, to me, a huge waste of tokens. My specific request did not need an LLM at all – I ended up with a combination of last.fm and querying MusicBrainz. While it did work, it just didn’t seem like the right tool for the job.

From cron to workflows Link to heading

A much better way (IMO) to incorporate these skills is to turn them into a deterministic workflow. That can kind-of-sort-of work with your agent, if it’s smart enough to write some code to do it. For example, it could write a python script that does exactly what you need. But even then, you have no control on the output, and things like retries, etc, become more complicated, and have to be re-invented for each cron job that is set up. You’re also still relying on the LLM to actually trigger the execution of that script. A much more natural way is to have your agent create a reusable workflow, which itself runs on a cron schedule. No LLM needed. The workflow can directly interact with the agent (via cli commands). Workflow tools like n8n are well established and can do some amazing things.

Dagu Link to heading

I like the simplicity of dagu, so I swapped out the whole cron engine in Nanobot to instead use workflows (I prefer that term to dag). A workflow can be a one off thing, or it can have a cron schedule. It is self-contained (runs on the same instance as nanobot), and I actually have it fully embedded (nanobot spins up an embedded dagu instance on startup). I have it wired up to send notifications on errors (I have a dedicated #workflow channel in slack for it). I actually have it calling out to OpenRouter for some LLM calls where needed too, and these are much more token efficient as they have a very focused system and user prompts.

All for naught? Link to heading

Having a daily job that gives me a slightly different notification each day is like the sound of nails on a chalkboard… at least to me. Inference is going to continue to get cheaper and faster, so maybe we’re going to live in a world where optimizing token efficiency doesn’t matter. LLMs might just need to retry a few times, or we get it close enough and then use a few more tool calls to wrangle the response into json or whatever format desired. But for now, I’m sticking with my workflows.