AI and agents6 filesInfrastructure2 filesDevelopment5 filesAbout4 files

A personal AI assistant in Telegram — built, then deliberately shut down

  • Telegram
  • memory
  • automation

A personal AI assistant in Telegram — built, then deliberately shut down

A personal assistant in a messenger: you write to it like a person, it remembers the previous conversation, reads email and calendar, understands voice messages and sends a morning digest. It ran around the clock on my own server under systemd.

What was inside

A persistent model session, so the conversation does not restart with every message. Voice transcribed through Whisper, images accepted as they are, email read over IMAP from two mailboxes, calendar over CalDAV, replies formatted as HTML to fit the messenger’s constraints. 65 green unit tests across all of it.

The most interesting part was memory extraction. Nightly and weekly workers parsed the conversations and wrote facts straight into my personal knowledge base with no manual step. The assistant did not just answer — it fed the same memory my working agents rely on.

The memory architecture decision

I went through the ready-made systems — Mem0, Zep, Letta — and deliberately passed on all of them. Not out of distaste for other people’s code: their memory model targets a different scenario, with vector search and an external service in the middle. What I needed was predictable, human-readable and versioned — markdown, JSONL and git, the same stack as the rest of my personal infrastructure. Memory you can open in an editor and fix by hand is incomparably easier to debug.

Why I shut it down

The assistant worked and was useful, but it duplicated what I already do in a terminal, and running a separate service cost attention every week. I stopped it, removed the code from the server and kept an archive. That is a decision, not a failure — knowing when to close your own project seems to me a separate skill, and a more expensive one to learn than launching.