Build you a personal assistant agent for fun and profit A developer built a personal AI agent called Al after finding existing options like OpenClaw too expensive and unpredictable. The agent runs on a remote server using Pi, OpenCode Go, Telegram, and other tools, designed to be autonomous, trustworthy, and budget-friendly. The guide provides opinionated building blocks for creating a never-sleeping personal assistant that operates independently from the user's local machine. Build you a personal assistant agent for fun and profit There are a lot of AI agents out there now. I tried most of them and they're all objectively terrible https://techstackups.com/articles/lefos-earendil-review/ . 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 https://ampcode.com/notes/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 https://openclaw.ai/ is also very good but that's too high level for me, I want less and OpenClaw is built on top of Pi anyway https://lucumr.pocoo.org/2026/1/31/pi/ 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 https://techstackups.com/articles/lefos-earendil-review/ 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 https://techstackups.com/articles/lefos-earendil-review/ two-models-for-a-personal-assistant 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 https://www.hetzner.com/cloud/cost-optimized 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 https://opencode.ai/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 fairly safe from a rug pull or big pricing increases. Step 1: Say hello to Al SSH into Al's machine, and install Pi https://pi.dev/ . - Follow the prompts - Run /login - Choose 'API Key' and OpenCode Go from the menu - Paste your OpenCode Go API key Check that it works: Now we're basically done. A remote-running command-line agent is actually all you need to achieve the objectives we set out at the start. You have an always-on assistant that can build itself into anything you want. You can call it Al if you want. You can stop here, or read on for my opinions on the best way to make use of Al. Step 2: Remote access via Tmux and Termux So we can say hi to Al but we need to be SSH'd into the machine and Al crashes if the network times out, so it's not actually useful yet. The best bang-for-buck next step is to run Al inside tmux so the session stays alive even after the SSH connection closes , and set up Termux. Using Pi inside tmux The tmux part is easy, if you chose Ubuntu 24.04 like I did then it's already available. Quit Pi, run tmux , start pi again, and hit ctrl-b d to detach the session. Now you can come back any time you want, run tmux a -t 0 to reattach the session and continue a long-running conversation with Pi who will keep the context in memory so Al remembers what you talked about last. Accessing Pi from Termux If you're on Android, install the Termux application https://play.google.com/store/apps/details?id=com.termux . This will let you SSH from your phone to Al's machine. It's a bit hard to do things like write SSH config in vim from a mobile keyboard but you only need to set up a few things: - Generate a public-private keypair by running ssh-keygen - Copy your public key contents off your phone I sent it to myself in Telegram saved messages - Optional Add three lines to ~/.ssh/config on your phone to make it easier to SSH to Al's machine Then from your laptop, SSH into Al's machine, and edit ~/.ssh/authorized keys to paste the public key from your phone. Now on your phone you can run ssh root@