Gavin's headshot

Gavin Vickery

/index /posts /links /me

My AI assistant woke me up at 3am

Jan 30, 2026 6 min read

Cat Agents

At 3am, my phone buzzed. It was my AI assistant. Uhhh, what? I rolled over and blinked at my phone. It was asking for a two-factor authentication code…

I typed it in half-asleep, went back to bed, and thought: did that actually work?

When I woke up, it had finished. The assistant had created its own developer account under our company, set up an OAuth app, grabbed API keys, gone through the browser auth flow, written the integration code, and validated it. I’d asked it to connect some reporting software before bed. I didn’t expect it to actually do it. Holy shit!

That was the moment it stopped feeling like a chatbot and my work on it had paid off.

The spark

When OpenClaw (aka: Clawdbot / Moltbot) went viral, I was already tinkering with this stuff. But seeing that project blow up gave me new energy. It proved the concept - an AI agent that connects to messaging apps and actually does things on your computer.

But OpenClaw felt heavy to me. And wildly insecure. I wanted something leaner. Minimal. So I set out to build my own. Big surprise ha ha.

The mental model that changed everything

I started thinking about it like hiring a real employee.

A real assistant needs hardware. An email address. Accounts. So I gave it those things. Its own MacBook, Apple ID and a real company email.

This framing drove real decisions and helped me change my goals and perspective a bit. The assistant doesn’t just run code - it can physically control a computer. Open a browser, click around, fill out forms. When code can’t solve a problem, it can do what a human would do. Google it, figure it out and navigate the UI. It’s also insanely fun to just watch.

That’s how it handled the integration. It got stuck at one point, so it opened a browser and worked through the OAuth flow manually. Just like a person would. This felt like an unlock moment.

The hard problem isn’t what’s done - it’s what’s in the air

Tracking completed tasks is easy. A database with status flags. Done. Thats what basic bots do.

I think the tricky part is tracking what I call “threads” - the balls in the air. Things that aren’t tasks, they’re ongoing situations. An email I saw but haven’t responded to. Waiting on someone to get back to me. Something I need to follow up on in a day or two if I don’t hear back. They’re kind of tasks, but kind of not.

Here’s a recent example. I run a coworking space, and a member emailed saying they wanted to renew. The assistant received the email, looked up their Stripe account, noticed they were on manual invoicing instead of a subscription, and emailed them asking which they’d prefer going forward.

Then it waited. Tracked the thread. Eventually the member replied. The assistant texted me for confirmation before taking action. I said “go ahead.” It set up the subscription, notified the member, and closed the thread.

My total involvement was one text message.

Ok, now we’re getting somewhere…

The efficiency trick

I didn’t want to burn tokens polling every minute. I actually did initially, and Claude Code was pissed. “Hey, do I have any new emails?” over and over gets expensive fast.

So there’s code that acts as a gatekeeper. It loops regularly, checks the inbox against a database of emails the agent has already seen. Only when something new appears does it wake up the AI - and only passes the new stuff, not everything.

Same for threads. They have statuses and timeouts. Code monitors the table, notices when a deadline passes or a related email arrives. Even notices when I don’t respond for a few hours and gently follows up with me. The code handles “when.” The AI handles “what.” You only pay for intelligence when there’s actually a decision to make.

The trust ladder

An assistant is only useful if it can act autonomously. But you can’t trust a new assistant with everything on day one. So there’s graduated autonomy. It asks before anything irreversible. Sends me a confirmation before setting up that subscription. Checks before sending an email on my behalf. This mirrors how you’d train a human assistant. They don’t start with access to your bank accounts.

Over time, trust builds. The assistant earns more autonomy through consistent good judgment. Just like a real employee would.

At this point, my wife starts noting I’m talking to my AI assistant more than her. Oh boy… 😅

The cat

One last thing. We started with an AI-generated photo of a person as the avatar. Realistic looking. That was on me.

The team hated it.

It was too human. Kinda off-putting I guess? People kept commenting on how weird it felt to interact with something that looked like a real person but wasn’t.

Anyway, we switched to a cat character. This felt a little more playful, clearly not human, but still approachable. Win!

What I learned so far

The gap between a chatbot and an assistant isn’t intelligence - it’s agency. The ability to track things over time, make judgment calls, act on your behalf, and know when to escalate. That concept of threads and trust.

Most AI assistants are reactive. You ask, they answer. Maybe they trigger some automations. Pfft, thats so early 2025.

A real assistant initiates. Follows up and remembers that you’re waiting on someone. Nudges you when you’ve let something slip (which is a lot hah).

The technology to build this exists. The hard part is the design - figuring out when to involve the AI, how to maintain context across interactions, how much autonomy to grant.

I’m still iterating. But waking up to a completed integration I didn’t think would work? That felt like a glimpse of something new.