skip to content
Scott's Ramblings building Chesterton's Fence
Geoff

Introducing Geoff

/ 5 min read

Just like everyone else on the internet I set up OpenClaw-née-Moltbot-née-Clawdbot this week. First impressions - super useful, a portent of the future, and absolutely terrifying. For those of you who missed the memo, Clawdbot - which is the name I will use because everyone else is - is essentially Claude packaged up as a personal assistant - fire it up on your machine, give it access to all of your data and tools and APIs, and get back a chat interface - whatsapp, signal, whatever - that lets you interact with the lot of it. It has a couple new tricks up its sleave, too - because of its essentially unconstrained access to your system, it can craft new features for itself, on the fly (“Oh hey wouldn’t it be great if we could integrate this API?”), and it can schedule tasks in the future (“Every morning at 8am, remind me what works in my plan and any urgent emails”).

The terrifying part is - it can do most anything, so inevitably you give it all the keys to all the things - here, take my Email credentials, my WhatsApp, my corporate slack - everything you need to convincingly impersonate me, really. A creeping sense of dread arises. And to be fair - lots of people are cool with this in their lives, but I am not one of those people.

The Case for Boring Software

We’re living through an interesting moment in computing. After decades of software getting more complex, and more dependent on services and companies we don’t control or even have any meaningful power over, some of us have started to realise that perhaps this isn’t in our long term interests. There was a moment, for a second there, a couple decades ago, where we took the “personal” in PC seriously - the idea that eventually, regular people would be able to bend the PC they owned to do exactly what they wanted of it.

But … it never really happened? The tools got harder and harder to use, more and more shifted into cloud-delivered services that you can essentially choose to use, or not. The idea of building software just for yourself is a dream that remains only for us software nerds, really, and only for things that we really care about sinking the time into making. Don’t get me wrong - I don’t think this is all bad - we have a great deal of things now that would appear indistinguishable from magic, if you were to look at them with eyes from 20 years ago - but something has definitely been lost along the way.

You can probably see where i’m going with this. With tools like Claude (the coding assistant, not the derangedly-powerful personal assistant), knocking out little, focussed apps to scratch our own personal use cases, suddenly seems tractable - even cheap.

Enter Geoff

Geoff is my answer to the terrifying-but-very-useful nature of Clawdbot. Given how easy it suddenly is to knock up some basic app, why not make a custom, narrowly-defined personal assistant that does exactly the set of things I want from Clawdbot, without the reste of it?

Geoff is a simple, constrained personal assistant written in Rust, supporting a small set of narrowly scoped tools, and designed to reliably handle well-defined tasks without surprises. If Clawdbot is a young, high-powered, eager-to-impress assistant, Geoff is counting down the days til retirement; if Clawdbot is sprouting new appendages to better serve your every whim, Geoff is painstakingly ticking tasks off today’s postIt note.

Geoff can:

  • Work with your Obsidian vault
  • Read and search an IMAP mail server
  • Read calendar events over CalDAV
  • Read contacts over CardDAV
  • Run scheduled tasks via cron

That’s it. No filesystem access, no web access. If I want more features, I have to code them (or more realistically in this case, shout at Claude until it codes them). Geoff is boring by design, and likely completely useless to anyone else. But - I think this is fine, even, desirable?

How I Use It

Geoff doesn’t know anything about my Obsidian vault structure out of the box - I have to tell him. The hints field lets me describe my note-taking conventions so he can navigate them sensibly:

[tools.notes]
vault_path = "/path/to/obsidian/vault"
hints = """
Weekly journal: journal/YYYY/KW##.md (e.g. journal/2026/KW05.md).
Projects: projects/*.md - each has status frontmatter, summary, tasks, notes.
Quarterly plan: workplans/Q#-YYYY.md - goals and work items linking to projects.
Flow: quarterly plan defines work → projects track execution →
weekly entries reference projects as tasks.
"""

In practice this gives me enough to be able say “what should I be working on?” and “does that align with my goals for the quarter/week/whatever?”. I’ve also got a nice little tag-based system in the markdown itself so Geoff can easily track work flowing from planning down to day-to-day tasks.

The real value comes from scheduled tasks. Every weekday morning at 8am, Geoff runs through a routine that checks my calendar, scans recent emails for anything actionable, and reviews my notes for outstanding work items:

[[task]]
name = "morning-startup"
schedule = "0 8 * * 1-5" # Weekdays at 8am
prompt = """Good morning! Please give me my daily briefing:
1. Check for upcoming birthdays in the next 2 weeks
2. Search recent emails and list subjects/senders that look actionable
3. Check my notes for my weekly plan and summarize outstanding work items
Keep it concise but actionable."""

Getting Started

If you want to poke around, Geoff lives on GitHub. You can chat to him in the terminal or over Telegram. Configuration is a single TOML file. It’s early days, it’s rough around the edges, and it’s probably not what you’re looking for - but perhaps it will serve as a small bit of inspiration for someone else and their personal assistant goals.