By October, three AI assistants on my Mac were using these tools. Then I wanted to reach them from my phone while the Mac was off. Then I wanted assistants from other companies to use them too — including one that cannot install anything at all.
Move A · a shared gateway on my Mac
Each assistant was launching its own copy of every tool, so I built one gateway they all share. One day, six tools started at the same moment and all of them silently hung: macOS gives a background service only 256 file handles. The fix is a single line — 10240 — with a comment beside it saying it must never be deleted.
Move B · a rented cloud computer
To keep working while the Mac sleeps, the same gateway now also runs on a small rented cloud computer, shared by three assistants, behind a private network that only my own devices can join.
Move C · tearing a door down SUPERSEDED
The cloud computer is billed by the minute and sleeps when idle. A permanently open public tunnel counted as activity, so it never slept — about 76 € a month. I tested three ways to get a cheap public entrance; all three were dead ends, and all three are written down so nobody walks them again.
Move D · a free worker on the open internet
One assistant cannot install software, speaks an older version of the protocol, and cannot send login headers. So the tools moved to a Cloudflare Worker that speaks both protocol versions and signs in with OAuth. Today it offers 347 abilities — reading the calendar, sending mail, opening files, writing notes — to 10 AI assistants. The local gateway was not deleted: COLD STANDBY
Moving house carefully is its own skill. One move touched about 40 references across configuration files and scripts. I copied first, checked the copy side by side, switched over in a planned window, watched it for 24 hours, and only then removed the old one — with the rollback practised in advance. It still found a way to break: macOS will not start a background service from an external disk. The fix was to split the layers — the service on the internal disk, the tools wherever they live.
The architecture is a fossil record of things that broke.
Move E · into WeChat
Tools on a server help AI assistants. People live somewhere else — in China, that place is WeChat. Family plans, school notices and the articles worth keeping all arrive there, and none of it ever reached an assistant. So the last move went from inside WeChat to an AI assistant, and back.
Forward it, and it is handled
Forward a message or an article to a bot in WeChat. A small program on an old Mac at home receives it through Tencent’s official bot channel and drops it into an inbox folder. Muse — an AI assistant that lives on its own cloud computer — checks that inbox every minute, puts any dates into the calendar, summarises the article, and writes a reply into an outbox. The program sends the reply back into the same WeChat chat.
Why an old Mac at home? WeChat blocks article requests that come from cloud servers. So the fetching happens on a home connection, and the assistant in the cloud only ever reads the saved text. It can reach exactly one folder on that Mac — nothing else.
Tap “favourite”, and it is filed
The second stream needs no action at all. When I tap “favourite” on an article — a habit I already had — it appears in a knowledge base about two minutes later, sorted into one of 12 folders: by my own rules first, and by a small language model when no rule fits. It now holds about 1,780 items. Forward a WeChat video post to the bot, and it goes straight into the same knowledge base, with a ✅ in the chat.
Ask it, and it answers from my own reading
A knowledge base you cannot ask is just a drawer. So the same corpus gets a personal RAG layer. The full text of every article stays on my own machine as Markdown — the master copy, beyond any app’s lock-in — and a SQLite index recalls candidates two ways: BM25 for exact keywords, multilingual text embeddings for meaning. A small cross-encoder reranker (a qwen3 reranking model) re-sorts the merged list, and the language model I point it at answers with the sources attached. The stack degrades gracefully: if the embedding service is down, keyword search still answers — nothing in the pipeline blocks.
Written down: what does not work
The bot channel does not deliver merged chat-history cards, so the bot politely asks for messages one at a time. Image-only posts have no text, so it asks for a screenshot. Favourited images and files carry no link, so they cannot be filed DEAD END — recorded as one. A reply can never be sent twice: one running copy, a duplicate check, and an atomic claim on every reply. And the honest weak point: the old Mac has to stay on. A plan to move it onto a cloud computer is written down and waiting.
The best interface is the one people already use every day.