Learning by building my own AI assistant

I started using coding agents with Cursor in January 2025. A year later I wanted to build the tools, memory, and interface around the model myself. In January 2026 I started Sleeve, my first attempt to build an OpenClaw-style AI assistant. I also did not want to give somebody else's assistant broad access to my files, credentials, and messages. Discord was the interface.

The assistant was supposed to remember things, use tools, and act on its own. I first planned to use it for notes and project planning. The name came from the television series Altered Carbon. In the series, a sleeve is a body that a person's consciousness can inhabit. The joke was that the AI was the consciousness and I was its sleeve.

Sleeve ended up as three services. A standalone Discord bot received and sent messages. The Rails application routed them, stored the conversation history, and managed the knowledge base. Sleeve Mom embedded Pi's agent runtime and ran the assistant's tools. I authenticated Pi through its OpenAI Codex provider with my ChatGPT subscription. I configured Sleeve Mom to use one of the available GPT models.

I wanted the Rails application to be a hub for several projects. That was not only a plan for later. At least two projects sent messages through the same Discord bot, so keeping Discord separate was useful.

I used Pi to build Sleeve. I added brainstorming and plan-writing skills to Pi, then used them to break the work down. Coding agents wrote all the code. I made the architecture decisions and reviewed and tested the results.

Link collection was the first feature I used. I sent a URL in a direct message. Sleeve summarized it and saved the result as a Markdown note. I used this for a while, but I did not need a personal knowledge base enough to keep the habit. The knowledge base ended up being more useful for my AI game experiments.

For project planning, I got better results by opening Pi's terminal interface on the VPS and working there directly. Sleeve also supported image generation in the group chat. We used it a few times for fun, but it did not become a regular feature.

Eidolon soon took most of my attention. It was an experiment for game ideas I wanted to explore later. Eidolon was a fictional entity that remembered the real world incorrectly. It posted commentary about recent events with deliberate factual errors. My friends were supposed to notice an error and correct it with evidence. A correct answer would reveal part of a secret code.

The idea sounded easier than it was. A few friends tried the game. The first reaction was to trick the AI. After that, there was mostly confusion about what the players were expected to notice. The errors were not obvious enough and the puzzle was too difficult. It did not become engaging.

Repetition was the biggest technical problem. Eidolon kept returning to the same observations. Keeping the game state consistent came next. I separated the correct game state from Eidolon's distorted memories. I added scheduled research, player notes, rules for when it should speak, and checks for its responses. The code became more elaborate, but the game did not become clearer.

I worked on Sleeve for about two or three months. I paused Eidolon in April and later abandoned the project. It was not a product success, but I learned a lot about tools, memory, proactive agents, model output, and context management.

If I did this again, I would keep the assistant, coding interface, and games separate. Pi Web now gives me the coding interface I wanted. I might add an assistant later, but only when I have a real use for one. Games belong in their own project.