Case Study 06
ClaudeBot
Self-Hosted Autonomous Agent
Type
Personal R&D
Year
2026, ongoing
Scope
Architecture to deployment
Tests (Vitest)
Subsystem modules
Daemon (PM2 / Docker)
Platforms (Win / Linux / macOS)
What I wanted to prove
An autonomous agent you can actually leave running.
Most "autonomous AI agents" online are demos that break the moment they leave the happy path. I wanted to build one I'd actually trust running 24/7 on my own hardware — not a chat wrapper, an operator.
Persistent memory. Scheduled tasks in natural language. Sandboxed tool execution. A structured audit log for every operation. The full boring layer that separates a demo from a daemon.
The bet: if that same engineering discipline worked on a personal agent, it would map directly to client-facing autonomous systems — same security gate, same audit trail, same idempotent retries, just larger surface area.
The Approach
One SDK. Twenty-seven modules. One security layer.
Built on the official Claude Agent SDK. Twenty-seven loosely-coupled subsystems — memory, scheduler, skills, telegram, web app, PC-bridge, watcher, workflows — talking through a small set of shared interfaces.
Every tool call routed through one security gate: command blocklist, filesystem restrictions, rate-limiting, input sanitization, owner-only access. Every operation written to a JSON audit log.
The result is an agent I can leave running unattended and actually trust — the boring layer most demos skip is what makes it a daemon instead of a toy.
System Architecture
Inputs
Agent Core
Subsystems
Cross-cutting Layer
Security sandbox (blocklist + FS limits + rate-limit + sanitize) — JSON audit log for every operation
Tech Stack
TypeScript
Language (strict)
Node 22+
Runtime, ESM
Claude Agent SDK
Agent core
grammY
Telegram bot
node-cron
NL scheduled tasks
Vitest
71 unit tests
Docker / PM2
24/7 daemon
OpenAI SDK
Fallback provider
What it proves
Personal-scale, production-grade.
Twenty-seven subsystems. Seventy-one tests. Runs unattended on PM2 or Docker. Cross-platform. Every command checked against a blocklist before execution; every operation logged.
It's not a demo — it's a daemon. The same boring engineering layer that makes a personal agent trustworthy unattended is what makes a client-facing autonomous system trustworthy at scale: the security gate, the audit trail, the idempotent retries, the layer between intent and action.
ClaudeBot is the reference build behind everything else on this site. If you've seen Claude Code shipped as a real production system, you've probably seen its fingerprints.
“An autonomous agent you can't trust unattended is a chatbot with a longer leash. ClaudeBot is built on the boring layer most demos skip — idempotent retries, sandboxed tool execution, structured audit. That's the difference between something interesting and something I'd actually let run.”
Design principle
ClaudeBot
Next project