Case study · personal software

openclaw assistant

My personal agent runs on my own server, built on OpenClaw, and talks to me over Telegram. It handles my calendar, mail, commutes and media diary. The interesting part is not what it can do; it is how it is allowed to do it. Untrusted input never reaches the model raw, irreversible actions wait for my approval, and location awareness works without any tracking. The diagram below is the whole system; click around in it.

01

How the agent connects

Every wire that crosses the dashed boundary passes a numbered gate; the only ungated crossing is me. Click any element to inspect it.

Scroll sideways to see the whole diagram

Click a node to inspect what it does.
02

How it knows where I am

Two disciplined inputs replace GPS. My weekly routine is a small config I wrote down once. And the agent is hard-prompted so that every calendar event it creates must carry a venue and address, so the calendar stays location-complete by construction. "Where am I at 15:00" is then a lookup, not a tracking problem.

Input A · my routine

office mornings, most weeks
one gym evening
games night with the group
home base otherwise

Input B · any calendar event

Dentist

14:30 · Mon

Herengracht 214, Amsterdam

address required, enforced at creation

The payoff

Can I still make the 19:30 film tonight?
Yes. You are at the dentist until about 15:15, then back at the office. Leave by 18:42, take the 18:51 train, and you walk in twelve minutes early.
03

Unprompted messages

Scheduled checks compose the same skills without me asking. On office mornings the agent reads my calendar, checks the live rail data, and only messages me when something needs attention.

07:12 · unprompted

Your usual connection has a 15 minute delay this morning. Take the 07:31 instead; you will still be in before your 09:00 stand-up.
04

Under the hood

OpenClaw gateway, self-hosted. A large hosted MoE model with automatic fallback to a different model family. Skills are markdown instructions plus plain CLI scripts, one API each; I run the same scripts from my own terminal. The gates, the data discipline and the product decisions are the human part; much of the code is written with Claude Code.