

I gave Claude Code full agent access to my home server over Telegram
The setup
A systemd service (Python, ~1400 lines) bridges Telegram to Claude Code's CLI. Every message I send becomes:
claude -p "<my message>" --output-format stream-json --permission-mode bypassPermissions --mcp-config bot-mcp.json
It's locked to my Telegram chat_id only — no one else can talk to it. Sessions persist via --resume, so it's one continuous conversation, not stateless one-shots. Runs with full bash/tool access: it can read/write any file, run any shell command, manage Docker, edit configs — basically the same access I'd have at a terminal, just reachable from my phone.
Features we built on top of the raw bridge
- Telegram-native formatting: the agent outputs HTML (bold/code/pre), not markdown, since Telegram doesn't render markdown
- Inline buttons: it can offer tap-to-confirm choices instead of me typing "yes"
- Image/file sending: charts, screenshots, log excerpts come back as actual attachments
- [SILENT] / [REPLY] tags it can prepend to control notification behavior and threading
- Live activity status: a single message that live-edits with what it's doing ("Reading config.yaml", "Running docker ps"...) so my phone doesn't get spammed with a notification per tool call
- Just added: a real 5-minute status recap on long tasks — separate message, not just an edit, listing everything done since the last update
- A /stop command that can kill an in-flight run mid-task
- Message queueing — if I fire off a follow-up while it's still working, it queues instead of colliding
- Shared long-term memory across sessions (both this bot and my regular terminal Claude Code read/write the same memory store), so it doesn't forget project context between conversations
- Home Assistant MCP integration — it can query/control the smart home directly, not just talk about it
- Auto-escalation: non-trivial builds get a second opinion from a bigger model before shipping
What it's actually done for me (not hypothetical — this week alone)
- Diagnosed a NAT hairpin routing issue between two devices on my LAN by testing connectivity from both sides
- SSH'd into a separate Home Assistant device to add a config block and wired up a full GPS-tracking integration, end to end
- Stood up and fully tore down self-hosted services (Docker Compose, reverse proxy, dashboard tiles, docs) — including cleaning up after itself
- Reset an admin password when I got locked out of a service, diagnosing a stuck interactive prompt along the way
Lessons learned
- Long-running background tasks don't survive between Telegram messages — the process model is one-shot per message, so anything async has to either finish inside one turn or be built as a "durable" workflow (we use n8n for scheduled/recurring stuff)
- Don't restart the bot's own systemd service mid-task — it kills the very process reporting back to you (learned that one the hard way)
- Worth building a real activity indicator early — silence during a 20-minute debugging session reads as "is this broken?" even when it's working fine
Happy to answer questions where I can.
TTRPG Wiki just hit 200 systems, and 14 of them are indies submitted by their creators
Built ttrpgwiki.com a few months ago as a side-by-side comparison site for TTRPGs. Every system gets the same data shape, same scoring rubric, same field structure, so a one-person zine sits next to D&D and gets evaluated on its actual mechanics rather than budget or marketing reach.
The indie submissions are the part I'm proudest of. Going from "I built a thing" to "people I've never met are putting their own games into it" happened faster than I expected, and a meaningful chunk of the catalog now exists because the designers saw the value in submitting their systems to the site.
Shoutout to SAKE, NewEdo, Horse Majeure, METTLE Core, Wyld, Age of Adventure, Those Who Wander, Let's Go to Magic School, Aurora, Porkin' the Void, Kill Him Faster, Deep Sky Ballad, City of Amber, and Mercs, Mages, and Monsters.
If you want your system included, fill out the Submit a Request form on the site.