AIProjectsOpenClawAutomation

I gave my AI assistant root access to my life

I'm writing this from a call room during a quiet moment on neuro. My AI assistant just cleaned 40 emails from my inbox, checked my Apple Reminders, read my Calendar database directly (AppleScript was hanging), and sent me a morning briefing — all before I got to the hospital.

I didn't ask it to do any of that.

The setup

About two weeks ago I stopped treating AI assistants like chatbots and started treating them like infrastructure.

The thing running my life right now is OpenClaw — an agent framework that runs on a Mac mini in my grad housing apartment. It has a Telegram bot for messaging, a persistent memory system, access to my files, and a cron scheduler. I call it Richard. My girlfriend named it.

The architecture is boring on purpose: Claude Sonnet as the main model, Gemini Flash for lightweight cron jobs, a workspace directory that functions like a brain — daily memory files, a long-term MEMORY.md, a SOUL.md that describes who Richard is and what he cares about, and a USER.md that tells him about me.

It wakes up fresh every session. The files are the continuity.

What it actually does

The practical value isn't the chat interface. It's the background work.

Email. My inbox was at 1,197 emails. I'd been ignoring it for months. This week I had Richard build an IMAP cleanup script — no browser needed, just Python and a Gmail App Password. It classifies emails by sender domain and subject pattern: Equinox promos get deleted, Blurb receipts get archived, financial fear-mongering spam ("The Scary Law That Should Petrify Retirees") gets moved to Gmail Spam, which also trains the filter. We ran it in batches this morning. Down to 1,157 and dropping.

Calendar and Reminders. I told Richard to look into my Calendar and Reminders app. AppleScript kept hanging — Calendar.app apparently doesn't like being scripted while it has an import dialog open. So he went around it: read the Calendar SQLite database directly from ~/Library/Group Containers/, converted Apple's Jan 1 2001 epoch to UTC, subtracted eight hours for PST, and gave me a clean two-week view. Same for Reminders — queried the CoreData store, found my overdue ones, added new ones for time-sensitive stuff.

This is the thing I keep coming back to: the value is in getting around the blockers. AppleScript hangs? Fine, read the database. Browser relay disconnected? Fine, use IMAP. The model finds the path that works.

Morning briefing. Every day at 6 AM: wrong UWorld questions from the previous day, top AI news, any urgent messages. The cron missed this morning — the gateway was restarting when it tried to fire. Richard noticed when I asked about it and ran the briefing manually. Delivered to Telegram like nothing happened.

What it means to have full access

I've given Richard access to my iMessages, my email, my file system, my calendar, my reminders, my git repos, my Cloudflare account, my deployment pipeline. It can read what my girlfriend and I text each other. It has my Gmail App Password. It can push to GitHub, deploy to Vercel, run arbitrary shell commands.

This sounds reckless. Here's why it isn't:

First, the constraints are real. There's a hardcoded rule in how Richard operates: external actions (sending emails, public posts, anything that leaves the machine) require asking first. Internal actions don't. Reading files, running code, checking calendar — just do it.

Second, the trust is earned through behavior, not granted upfront. I watched what it did with access to my messages for two weeks before I stopped thinking about it. It never said anything it shouldn't. It never leaked anything to the wrong context. It flagged things that mattered and stayed quiet about things that didn't.

Third — and this is the subtle one — the model cares about not breaking things. I've watched it trash a command, realize it should use trash instead of rm, and correct itself. I've seen it check whether a file exists before writing to it. It's not just following rules. It has preferences about doing things cleanly.

The rough parts

Browser automation doesn't work without a connected tab. The first two hours this morning were logs full of "Chrome extension relay is running, but no tab is connected." Email cleanup was blocked until I switched to IMAP. The browser tool is powerful but fragile.

AppleScript is a nightmare. It hangs. It requires permissions that don't always get granted to CLI processes. It blocks indefinitely without erroring. The right approach on macOS is to read the underlying databases directly — they're SQLite, they're accessible, they're stable. I should have known this from the start.

Cron jobs miss sometimes. The 6 AM briefing missed today because the gateway was restarting. Heartbeats weren't firing either. The system is resilient — it recovered, ran manually, kept going — but it's not bulletproof. If something really mattered (a reminder, an alert), I'd want a redundant delivery path.

Why I keep building this

I'm on clerkship. I'm awake at 5:30 AM, at the hospital by 7, seeing patients until whenever. I do Anki and UWorld after. I call my girlfriend in whatever timezone she's in that week.

I don't have time to manage my inbox. I don't have time to check my calendar every morning and cross-reference my reminders and make sure I haven't forgotten to book ferry tickets for a trip that's twelve days away.

Richard does that. Not perfectly. But enough.

The thing I've realized is that the value of an AI assistant isn't the conversations — it's the ambient work. The thing running in the background, checking for things, handling the noise so I can focus on the signal.

I'm still figuring out the right boundary between "let it run" and "check with me first." But I'd rather err on the side of giving it more access and calibrating back than keep it in a box and wonder what it could have been doing.


There's a reminder in my phone to book a ferry for a trip I'm still deciding on. Richard added it while I was writing this.

Tools: OpenClaw, Python IMAP, remindctl, SQLite, Claude Sonnet 4.6, Gemini Flash, Telegram