111 karma · joined June 9, 2017
[ my public key: https://keybase.io/jrswab; my proof: https://keybase.io/jrswab/sigs/SyRgp9PMae6rrJzPV6zPr2cqd890DasAf1QigHKB1mU ]
Yes! I run a ghost blog (a blog that does not use my name) and have axe produce artifacts. The flow is: I send the first agent a text file of my brain dump (normally spoken) which it then searched my note system for related notes, saves it to a file, then passes everything to agent 2 which make that dump a blog draft and saves it to a file, agent 3 then takes that blog draft and cleans it up to how I like it and saves it. from that point I have to take it to publish after reading and making edits myself.
However, this does not help if a person gives access to something like Google Calendar and a prompt tells the LLM to be destructive against that account.
1. I have a flow where I pass in a youtube video and the first agent calls an api to get the transcript, the second converts that transcript into a blog-like post, and the third uploads that blog-like post to instapaper.
2. Blog post drafting: I talk into my phone's notes app which gets synced via syncthing. The first agent takes that text and looks for notes in my note system for related information, than passes my raw text and notes into the next to draft a blog post, a third agent takes out all the em dashes because I'm tired of taking them out. Once that's all done then I read and edit it to be exactly what I want.
Dotprompt is a promt template that lives inside app code to standardize how we write prompts.
Axe is an execution runtime you run from the shell. There's no code to write (unless you want the LLM to run a script). You define the agent in TOML and run with `axe run <agent name> and pipe data into it.
Great question and it's something that I've not dig into yet. But I see no problem adding a way to limit LLMs by tokens or something similar to keep the cost for the user within reason.
Axe treats LLM agents like Unix programs. Each agent is a TOML config with a focused job such as a code reviewer, a log analyzer, or a commit message writer. You run them from the CLI, pipe data in, get results out. Chain them together. Trigger them from cron, git hooks, CI.
Whatever you already use.
Some things that make it different:
- No framework lock-in: it's a single binary with two dependencies
- Stdin piping: `git diff | axe run reviewer` just works
- Sub-agent delegation: agents can call other agents via tool use
- Persistent memory: agents remember across runs without you managing state (if you need)
- Path-sandboxed tools: file ops are locked to the agent's working directory
Written in Go because I wanted fast cold starts and easy distribution. No daemon or GUI.
This is early stage to solve a need I have. I would love feedback on the agent config format and the skill system.
What's missing? What would make you actually use this?
Yes, scaling is going to be in interesting problem to solve. I may need accounts for things in the future such as saving beans and making lists or something but for the functionality of rating and finding beans I want to stay account-less.
I love your suggestion about adding some gamification to the site. I'll have to think about how that could be done well in the context of coffee.