Stein-Otto Svorstøl

GLaDOS: My Always-On AI Assistant

Published and tagged with #ai #productivity

First off: I find the AI hype pretty exhausting, the second-order effects of AI jobs and energy and copyright are real, and most companies still report no measurable productivity gains from AI. I’m still a sceptic. But over the last few months something changed for me: The models have gotten better, but in particular I’ve found the the integrations around them has gotten good enough to be useful in my own daily life.

So I stopped trying to evaluate AI as a category and started steering based on my own quality of life instead. The goal isn’t to make Claude do my thinking, but improve my own daily life by reducing administration and free up time. In practice this means that I push the routine, low-judgment work onto an assistant, and keep the thinking for myself. Cognitive offloading, rather than cognitive surrender.

To work towards that, I set up a small, cheap VPS with Shrp in Norway. It runs an always-on Claude Code instance connected to my productivity tools, accessible from my phone via Telegram and from any browser via Claude Code’s remote control feature. I call the assistant GLaDOS.

Why a VPS over Claude.ai and CoWork?

Claude already has a chat interface at claude.ai, MCP integrations for tools like Google Calendar and Slack, and CoWork for scheduling tasks against local files. There’s also Claude Code, a CLI for working with code and files directly. Nevertheless I wanted a server running Claude all the time for three reasons:

  1. Availability. Local MCPs only work when my laptop is open. A VPS is always on, which means the assistant is reachable from my phone while I’m walking the dog, between meetings, or away from the desk. A quick Telegram message to check tomorrow’s calendar or draft a reply saves real time.
  2. Context. Chat conversations are stateless. Each session starts from scratch with no memory of yesterday, no persistent file system, no long-running processes. Projects help, but only inside the chat surface. On the VPS, Claude works directly in my Obsidian vault, so notes, meeting logs, and project files are always one read away.
  3. Workflow fit. For this to be worth the effort, it had to augment the tools I already use rather than introduce a parallel one. The VPS lets me orchestrate MCPs, chain them into skills, schedule them with cron, and expose Claude through whatever interface I want (Telegram, web, soon probably more).

The architecture

The VPS is the hub. Inputs come in from Telegram, the browser, or scheduled cron jobs. Claude operates on the vault and reaches out through MCP servers to the services I actually use day to day. Everything important is backed up to Backblaze B2 overnight. The following services are running:

Other than logging in, all these services was set up by Claude and not manually by me.

MCP integrations

Claude connects to external services through MCP (Model Context Protocol). Currently it has access to Gmail, Google Calendar, Slack, Notion and Miro in the regular web version. There’s also Todoist, but their OAuth implementation is iffy so I don’t use their MCP. I’ve had much success with installing CLIs on the VPS for integrating with services, rather than using MCPs. So, I’ve done this for Todoist, Tripletex, LastFM, PocketCasts, NotebookLM, Hevy, Garmin Connect nad Readwise Reader. I’ve also set up self-hosted OpenNotebook instance (since Google NotebookLM integrations were very limited).

All these integrations makes it an assistant, an enables it to handle things such as “What’s on my calendar tomorrow?” is a Telegram message. “Summarize unread threads on Slack” is a Telegram message. “Create a Todoist task for the quarterly review, priority 2, due next Friday” is a Telegram message.

Skills and agents

As previously indicated I use lots of skills, reusable prompts for specific tasks. I have skills for cleaning up transcriptions, editing blog posts, processing Readwise highlights, logging hours in Tripletex, and a dozen other things. The definitions live in a CLAUDE/ folder in the vault with symlinks into the directory Claude Code expects.

Because they’re in the vault, any change I make on my laptop syncs to the server automatically through Obsidian Sync. This means I also can use Claude Code on my computer directly, with the same agent and skills files.

Cron can run Claude as a scheduled agent through claude -p "prompt" --allowedTools "tools". I have a daily morning brief that checks Slack, Gmail, and calendar, and a weekly review that summarizes open Todoist tasks and surfaces what slipped. Output gets piped to my Telegram session, so the briefing shows up like any other message. I’ve learned that from June 15, 2026, programmatic claude -p and Agent SDK usage draws from a separate monthly credit billed at full API rates, which means I might adjust this approach.

I’ve been sceptical of AI tools for years. What changed my mind was not the language models themselves. It was the integrations. An LLM that can read and write to the tools I already use is fundamentally different from one that just generates text. As one writer put it, LLMs become useful when they can actually do things.

There’s a related point I keep coming back to: AI’s real superpower is consuming, not creating. The value isn’t in having Claude generate text for me. It’s in having it read my calendar, cross-reference my notes, and surface what I need to know right now. The consuming side, parsing, connecting, summarising across sources, is where the leverage sits. At least I can try to enjoy it while the pricing provides a reasonably cost-beneficial.


Reply to this post by email