Build you a personal assistant agent for fun and profit | Tech Stackups
Skip to main content<br>There are a lot of AI agents out there now. I tried most of them and they're all objectively terrible. Specifically, OpenClaw is too unpredictable and expensive for me and many of the other options aren't powerful enough to actually do things autonomously.
I built my own one. I call it Al (Alice, Alan, play on AI with a capital I instead of lowercase L, you choose).
Here's how to build your own Al and how to use it effectively. Not because Al is the one-true-agent or better than the others, but because it is opinionated, competent, and runs on a budget. Specifically this guide:
Lays out some very practical goals of what a good agent should be
Meets those goals in a minimal way that lets you build on top of them
So I'm not going to show you how to build the perfect agent. That would be a different guide for everyone I know. But I'm going to give you some very opinionated building blocks with which you can build your own perfect agent.
Spoilers: We use Pi, OpenCode Go, Telegram, Resend, Hetzner, Tailscale, GitHub, and Nginx. You can swap out many of these for equivalents if you have strong opinions that are different from mine. The final system looks something like this
Yes, it's very simple. No, we're not using a thousand MCPs or Ralph, or anything like that. Yes, you can use this to get shit done. Yes, I will explain why I chose these pieces as we go. Yes How to build an Agent is very good but that's too low level for me, I want to think about fewer details, yes OpenClaw is also very good but that's too high level for me, I want less and OpenClaw is built on top of Pi anyway so it's a good way to drop down one level of abstraction.
What is a good agent?
I describe my goals for an agent in more detail in my Lefos review article when I explain why Lefos wasn't the agent I wanted. In summary agents should be things like:
Autonomous (doesn't rely on you to do stuff)
Useful (does stuff that needs to be done)
Trustworthy (doesn't leak your stuff)
Competent (isn't dumb)
Self-improving (ok sometimes dumb but not always in the same way at least?)
Serious (we have work to do)
The most basic, but also most powerful, agents today are command-line tools like Claude Code, Codex, Amp, Pi, OpenCode and many others. I use most of these daily, and they remain my primary way to interact with AI, but that's when I'm at my desk doing work. They're not autonomous enough.
Sometimes I want to have an agent do something while I'm on the go, or kick off an agent to do something on its own while I'm at work. Then I want something that has its own resources and doesn't bump into me. That's when I use Al. I think of Al as a never-sleeping personal assistant. While the agent harnesses I run on my machine are often doing stuff on behalf of me, there are two models for personal assistants and Al follows the model where it has its own identity, separate from mine.
Al's Hello World — Pi running on a remote machine
I'm a terrible engineer. A lot of good engineers I know love building stuff for the sake of it — for the beauty of the code, for the challenge, or for some other pure reason that I can only aspire towards. I hate all of this; I only like engineering stuff to get the dopamine rush of having built something useful and delightful to me. So I have to design my projects in such a way that the next reward is in sight, so I don't get discouraged and give up, but not too easy, so I don't get bored on my way there.
That's a long way of saying that we're going to start by building something that I can't easily get in my current setup of ChatGPT, command-line agents, etc. I want a personal assistant that is always online and that I can communicate with on different channels, and that can install software and 'do' things.
The first step to this is what I have locally already but running on its own machine. For this step you need
A Hetzner box, or similar VPS. I like the CX23 which gives you 4GB RAM, 40GB SSD for around $5/month. I use Ubuntu 24.04 but anything should work. I'll refer to this as Al's machine for the rest of this guide, because it helps to think of it as belonging to Al now, even if you sometimes use it for stuff. There are lots of alternatives for this but Hetzner is the one that I've found to be the best value and most reliable, without being overly complicated to use.
An API key from an LLM token provider. I have a lot of these but for this I recommend OpenCode Go which costs $5 for the first month, $10/month after that, and gives you very generous access to Kimi 2.6 which is the closest open source model I've tried to Sonnet 4.6 (my main daily driver). You can use Claude Code and Sonnet if you want, but it's more of a lock-in and costs will rise a lot if Anthropic removes Claude Code access from their $20/month plan for example. There are a lot of providers of Kimi tokens as it's open source so you're...