
I built my own AI assistant, and it runs on a Mac mini on my desk
Ever wished you had an actual personal assistant? I don't mean a chatbot in a browser tab that forgets you between sessions. I mean something that is always running, remembers everything you have shown it, and knows enough about you to be useful.
Most of us solve this with a pile of apps. A notes app, a read-later app, a reminders app, a spreadsheet for subscriptions, and another one for job applications. Each is fine on its own. None of them talk to each other, and you end up being the glue.
I wanted one system, on a machine I own, shaped around my life. So I built it. It has been running for about seven months now, and this is how it went.
Short version
An AI agent on an always-on Mac mini, a folder of Markdown files, and Discord to talk to it from my phone. There is no database. I describe what I want in plain text and the agent does it. I started on Claude Code and moved to Hermes Agent in the summer, and my knowledge base moved over exactly as it was.
It started with "save this"
The first thing I wanted was simple. I send a link, I say "save this," and it gets filed without me doing anything else.
So I built that first. I installed Claude Code on a Mac mini I already had, left it running, and wrote a CLAUDE.md file describing how I wanted things saved. For an article, fetch the page and write a summary with the key points. For a YouTube video, grab the transcript as well. Then look through everything saved before and link the related entries to each other. An index file made the search fast and scalable.
That was the whole first version: an agent, a folder of Markdown files, and a page of instructions.
I had used apps like Notion and Obsidian before. They are good tools, but they expect me to do the organizing, and I generally stop doing it after two weeks. This time the organizing happened without me. I have around 900 entries in my knowledge base now, on everything from privacy research to motorcycle gear to game mechanics, and I have never sorted a single one. This was the first step in creating my "second brain."
Second brain
A personal knowledge base you dump things into and search later, instead of trying to remember them. The term comes from Tiago Forte's book. The idea is old; what is new is that an AI can do the filing for you.
Then I put it on my phone
For the first few weeks I talked to the agent over SSH from my phone. It worked, and it was miserable.
SSH
Secure Shell. It opens a command line on another computer over the network. It is the standard way to manage a server, but working in a terminal on a phone is a poor experience.
So I asked Claude Code to write a Discord bot. It was a few hundred lines of Python, connected to a private Discord server, with an allowlist so that only I could talk to it. Overnight the system became about ten times more useful, because saving something was now as easy as sending a message.
It feels like texting someone competent who remembers everything I have ever told them.
Then it kept growing
Once the basics worked, every "it would be handy if it also did this" turned into a feature. Adding one is cheap. I describe a folder and a few rules, and it starts happening. I don't have to build a new app or pay for another subscription.
Seven months later, this is what it does:
- A morning briefing. Every day at 7 a.m. I get an email with the weather, my calendar, the reminders that are due, progress on my weekly goals, subscriptions about to renew, and news picked for my actual interests.
- Reminders and calendar. "Remind me to return that amplifier before the 11th" is all it takes. Events show up in the calendar on my phone.
- Paperwork. It tracks job applications, subscriptions, and mileage. The subscription tracker has caught things I had forgotten I was paying for.
- A watchlist. Movies, shows, and games. It tells me when something on the list lands on a streaming service I already pay for.
- Game notebooks. For each game I play, it keeps my keybinds, my build notes, and whatever I was in the middle of. I can come back after three weeks and ask what I was doing. That is very useful when your memory is as bad as mine.
- A small web app. Mneme is the web UI for my knowledge base and all the features described above. With it, I can search and interact with my content without having to talk to the agent. I reach it from my phone over Tailscale, a private network between my own devices, so it is never exposed to the internet. Every time I ask for a new feature, the agent builds both the folder structure and the web UI for it.
I didn't write a single line of code for any of this. I described the pages I wanted, the agent wrote the Python code, and I reviewed the result.
The switch to Hermes
By the summer, three things were bothering me.
The instruction file had become enormous. Every session loaded all of it, whether I was saving a video or asking about a game.
The automations were launchd jobs, which are easy to forget because nothing shows them to you.
And the Discord bot worked, but it was lacking some features.
launchd
The service manager built into macOS. It starts programs at boot, at login, or on a schedule, so it does the job that cron does on Linux. Each job is a .plist file in a LaunchAgents folder, which you only see if you go looking for it.
Hermes is an open-source agent runtime that takes care of all three. Instructions are split into skills, which are small files that load only when they are relevant. I have around 160 of them now. Scheduled jobs have a dashboard that shows their prompts and their history. Discord is built in, and it does a lot more than my custom bot did.
I had tried Hermes once before and gone back to Claude Code, because at the time it didn't work with my Claude subscription. I could have run it on OpenAI's models instead, but I prefer Claude. Once the subscription worked, I moved everything over.
Moving the knowledge base and all its content was simple: I copied a folder. That is the big benefit of plain text files. They are vendor-agnostic, and both people and AI can read them. Hermes then reorganized a few things and started creating skills as it went.
Another benefit of Hermes is that it is not locked to any specific AI provider; you can configure several. Mine runs on Claude Opus 5.5. Once in a while the login to Claude fails, and then Hermes switches to OpenAI's GPT-6.1 Sol on its own until Claude is back.
What I learned
Your files matter more than your tools. Everything is plain Markdown, backed up to a private GitHub repository every night. I could lose the Mac mini and rebuild from the repo. I like this better than relying on a collection of SaaS apps that hold my data hostage.
The instructions are the product. What makes the system useful is a clear written description of how I want things done. I can read it, edit it, and version it like any other text.
Get a chat interface early. Those weeks on SSH were weeks of barely using it.
Privacy and security
I was conscious of security from the start. The early versions of OpenClaw demonstrated what not to do: give your AI agent full access to all your accounts and files. Instead, I decided to host the agent on a non-admin account, with no access to any of my accounts or files. If the agent needed access to something, I created a new account for it. So it has its own calendar and its own way of sending me email. The one exception is the model subscriptions it runs on, and there is no way around that. To this day, it doesn't have access to my email or password manager.
How much access to give the agent is your choice, and your risk to take. Some people will want a personal assistant with access to their email, calendar, and work files. That is a valid use case for a personal assistant, but it is still risky to blindly trust an AI with all that information and power. It is not that companies like Anthropic or OpenAI have bad intentions, but that you could be the victim of prompt injection. The more the agent can reach, the more damage a successful attack can do.
Prompt injection
An attack that hides instructions in content that looks harmless. For example, your AI agent reads a web page that contains instructions telling it to send all your passwords to an attacker. AI agents are now better at identifying such threats, but it is still a risk.
On top of the model providers' own safeguards, Hermes has its own check for suspicious actions and asks me to approve them in Discord.
Before you give it your accounts
An agent that can read your email can be tricked into forwarding it to someone else. Start with separate accounts for the agent, and give it access to your own only when you really need to.
Even though my files are stored on my Mac mini, the data still goes to companies like Anthropic, OpenAI, GitHub, and Discord. It is up to you to check what those companies do with your data and whether you trust them. Most AI providers have a setting to opt out of training on your data.
What it costs
- Claude Max subscription: 100 dollars a month
- ChatGPT subscription for the backup model: 20 dollars a month
- The Mac mini: a few hundred dollars, once, and I already had it
- GitHub, Discord, and Tailscale: free
If you already pay for a good model subscription, and you have an unused computer gathering dust somewhere, it costs almost nothing. Your electricity bill may go up a little, but the Mac mini's low-power mode keeps that small.
You don't need the big plan to find out whether this is for you. Start on a 20-dollar plan and use it for two weeks. If you reach for it every day, upgrade. If you don't, you spent 20 dollars finding out, and the folder of files is still yours.
Try it yourself
You need two things: a machine that can stay on, and a model.
The machine can be an old laptop, a spare desktop, or a cheap VPS. It doesn't need to be fast. Mine is idle most of the day. For the model, you need a subscription or pay-per-use API access (which is much more expensive than a subscription). You can also run a small model locally if you have a lot of RAM, and then the only extra cost is electricity.
VPS
A virtual private server: a small computer you rent by the month in a data center. It is always on, which is what this setup needs.
Then it is four steps:
- Install Hermes. This is where I would start today. Discord, scheduled jobs, and a dashboard are built in, and you can change the model provider whenever you like.
- Describe what you want. Write down where files go, what a saved entry should contain, and how entries link to each other. Add a second file about yourself, with your interests and preferences, so the agent has something to work with.
- Build one feature. Saving links is a good first one. Ask the agent to build it, try it on a real article, and tell it what you didn't like. Repeat until it does what you want.
- Use it, and add the rest when you miss it. A briefing, a tracker, a web page.
One thing at a time
If you take one piece of advice from this post, take this one: build and test a single thing before you move on to the next.
The temptation is to put everything in one prompt. Save links, send me a briefing, track my subscriptions, and build me a web page for it. You will get something back. It will be roughly what you asked for, and it will be wrong in four places you have not found yet. The agent had to make dozens of small decisions you never specified, and there is too much for you to check.
It feels slower, but the version built in small steps is the one that still works next month, because you understood every piece as it went in. The agent is just fast enough to make skipping those steps look tempting.
Was it worth it?
Yes. It started as a knowledge base, a place to save links, and it ended up as a full-fledged personal assistant.
What I use it for most is getting rid of small decisions. I don't decide where to file a link. I don't check whether a subscription is about to renew. I don't try to remember what I was doing in a game three weeks ago.
None of those are hard. They are just constant, and each one costs a little attention. Handing them to something that never forgets and never gets bored turned out to be worth far more than a folder of saved links.
If that sounds good to you, find a machine that can stay on and start with one link.
AI disclaimer
This post was written with the help of my AI assistant, the very one it describes. The structure, the opinions, and the mistakes are mine.