Bot
My own always-on agent, after OpenAI's Dots: memory as an LLM wiki in git, running on a box I control.
At OpenAI's DevDay on September 29, Sam Altman showed Dots, which OpenAI calls "always-on, proactive agents." I wanted one, and I wanted it to be mine: running on a box I control, with its memory in files I can read. So Bot is my Dot.
It runs all the time on its own EC2 instance and talks to me over Discord, for now. Its memory follows Andrej Karpathy's LLM wiki idea: a folder of Markdown pages that the model writes and keeps up itself, in a git repo. I almost never edit it. Bot reads the index when a session starts and writes down what it learns as it goes. The tools it builds for itself live in the same repo, so one push backs up the memory and the tools together.
Some of the ideas are older. I've had a personal AI project of my own on the back burner (never published), and two pieces of it carried over. The first is a sovereign data tier, after Tim Berners-Lee's pods: my data lives in a store I control, and a hosted model sees a piece of it only for as long as a thread lasts. The second is tiers of hardware, from always-on devices to a local model to a frontier model when the job needs one. Bot doesn't have the tiers yet.
What it does today
- One long-running session does the work. Every night it writes a handoff note and restarts with a fresh session.
- A sync job commits the repo every five minutes. The repo got about 160 commits in its first 38 hours.
- Work that needs more than a few steps goes to a subagent. A routing table picks the agent, the model and the effort level. The rule is to use the cheapest row that fits.
- Each subagent run goes in a log with tokens, tool calls, time and a quality note. There were 22 runs in the first two days. The biggest used 215,963 tokens and ran for 4,476 seconds.
- Tools are scripts. Each has --help and --self-test. There are 19, and 10 have been used.
- Bot can change its own charter, agents or schedule only when I approve it.
The handoff note was stale by the first morning, because another session kept working after it was written. Oops. Bot now treats the handoff as a summary and checks git log for the truth. Two subagent runs went wrong because Bot sent work that needed file writes to an agent that can't write. Both stopped and said why. That's how I want it to fail.
What it taught me
Approvals have to be one tap. I'm on my phone, and if a request wants me to type something, I'll miss it. The first morning, about ten permission prompts hit in four minutes. Now every request comes with two reactions I can tap, and real approve and deny buttons are next.
Every channel is a data sovereignty question. You can keep the documents in a store you trust, and the conversation about them still sits on someone else's servers. The conversation tells most of the story. So for each channel I ask what could leak there, and that's a big part of why Discord is temporary.
Changelog
- 2026-10-03: First version of this page. Bot running since 2026-10-02.
Last updated