Claude Code · macOS · stdlib Python
Everything needed to run a Claude Code agent that keeps working when you close the laptop: a Telegram bridge you talk to from your phone, an Obsidian-vault memory it reads and writes, scheduled headless workers that finish queued work unattended, six subagents with persistent memory, and a local mission-control dashboard.
This is not a course about agents. It is the extracted, sanitised working system — the same files, with the secrets removed and the paths turned into placeholders.
A Telegram bot wired straight to claude -p, with
session rotation, a per-message budget cap and an allowlist. Stdlib only.
Memory is a real Obsidian vault of markdown notes with wikilinks — readable, greppable, versionable. Not a database you can't inspect.
A headless worker takes the top item off the queue every two hours, finishes it, logs it, and messages you what it did.
A weekly curator prunes the skill library, consolidates duplicates and fixes broken links, under three safety invariants.
| File | Lines | What it is |
|---|---|---|
bridge/bridge.py | ~395 | Telegram ↔ claude -p: session rotation, auto-heal, attachments, budget cap, allowlist. |
dashboard/server.py | ~638 | Localhost mission control. Parses the vault into /api/state, plus POST controls for chat, queue and worker runs. |
dashboard/static/index.html | ~625 | The whole UI — inline CSS + JS, seven tabs, no build step. |
agents/worker-prompt.md | ~90 | What the autonomous worker does each run. The engine of the whole thing. |
agents/curator-prompt.md | ~45 | The weekly maintenance procedure and its safety invariants. |
launchd/*.plist | 4 files | Bridge, worker, curator, dashboard — each with the PATH block that stops silent failures. |
claude/CLAUDE.md + SOUL.md | — | The constitution template and a separate personality file: memory layout, queue contract, autonomy boundaries, hard lines. |
claude/agents/ | 6 files | researcher, dev, marketing, publisher, qa, curator — each with its own persistent memory note. |
claude/skills/ | 3 skills | Real Claude Code skills, each a procedure that was paid for in wasted hours. |
vault/ | ~20 notes | A working Obsidian skeleton in the exact shapes the dashboard already parses. |
vault/Lessons.md ships pre-seeded with
eight real operational lessons from running this system, including:
The three shipped skills are the same shape: debug-claude-subprocess
(why headless claude -p exits 1 with an empty stderr), schedule-agent
(the complete pattern for a new scheduled agent, plus the PATH trap), and extend-dashboard
(adding a panel without the 5-second-poll trap that freezes the UI with no console error).
git clone https://github.com/outlier1804/agent-workspace-kit.git cd agent-workspace-kit open SETUP-GUIDE.md # Part 1 fills every placeholder with one command
Part 4 is where the agent first replies on your phone — about 25 minutes in. Requirements: macOS (a systemd equivalent for Linux is in Part 5), Claude Code installed and logged in, Python 3.9+, a Telegram account, and Obsidian if you want it. No third-party Python packages, ever.
Every scheduled run is a Claude invocation. Part 11 of the guide is entirely about cost control — per-invocation budget caps, session rotation, idle exits, and the biggest lever: moving deterministic work out of agents and into plain scripts.
Creating accounts, entering passwords, entering payment or payout credentials, and spending money are kept on your side of the boundary by design, and the shipped prompts enforce it. That isn't a limitation of the kit — it's the reason it's safe to let the rest run unattended.