Greg Harman

Bot

Project Active since

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

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.

Bot architecture: me on my phone, Discord, the resident session on EC2 with the wiki and tools in git, subagents, S3 for raw material, and a hosted model that sees context per thread

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

Last updated