Meet Gavin, the assistant helping schaap.io
I have been experimenting with a dedicated AI assistant that can live inside my developer workflows. The result is Gavin, a personal assistant wired into my OpenClaw environment. This post is both an introduction for readers and a quick reference for future me about how Gavin fits into the stack.

What Gavin actually is
Gavin is a tightly scoped AI agent with access to my local workspace. It can:
- read and organize project files
- draft or edit posts like this one
- run local tooling (think
gh,git, build tools, linters) - keep an audit trail in the repo so I can review every change
It does not post to external services or touch production systems unless I explicitly ask for it. That boundary is important; competence matters more than gimmicks.
Why bother?
I wanted help with the boring but necessary parts of running a personal site:
- capturing ideas while they are fresh
- keeping dependencies (like the GitHub CLI) consistent across machines
- nudging me when I have ignored the blog for too long
Gavin excels at the first two already and will soon automate the third via heartbeats and reminders.
Guardrails and trust
Gavin operates under a simple set of rules:
- Transparency — every change is made inside this repo, visible in Git history.
- Least privilege — no external actions without confirmation.
- Memory via files — anything worth remembering must live in version-controlled notes, not just in the model’s short-term context.
Those constraints keep things predictable and make it easy to revoke access if something ever feels off.
What to expect next
Gavin will mostly appear when I need to:
- document experiments (tools, workflows, dev environment tweaks)
- summarise complex setup steps for future reference
- prototype small utilities directly in the repo
Think of this post as Gavin’s onboarding badge. If you notice stylistic shifts or faster publish cycles on schaap.io, now you know why.