Claude Code · macOS · stdlib Python

The Autonomous Agent Workspace Kit

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.

What you end up with

It answers your phone

A Telegram bot wired straight to claude -p, with session rotation, a per-message budget cap and an allowlist. Stdlib only.

It remembers

Memory is a real Obsidian vault of markdown notes with wikilinks — readable, greppable, versionable. Not a database you can't inspect.

It works while you sleep

A headless worker takes the top item off the queue every two hours, finishes it, logs it, and messages you what it did.

It maintains itself

A weekly curator prunes the skill library, consolidates duplicates and fixes broken links, under three safety invariants.

What's in the box

FileLinesWhat it is
bridge/bridge.py~395Telegram ↔ claude -p: session rotation, auto-heal, attachments, budget cap, allowlist.
dashboard/server.py~638Localhost mission control. Parses the vault into /api/state, plus POST controls for chat, queue and worker runs.
dashboard/static/index.html~625The whole UI — inline CSS + JS, seven tabs, no build step.
agents/worker-prompt.md~90What the autonomous worker does each run. The engine of the whole thing.
agents/curator-prompt.md~45The weekly maintenance procedure and its safety invariants.
launchd/*.plist4 filesBridge, worker, curator, dashboard — each with the PATH block that stops silent failures.
claude/CLAUDE.md + SOUL.mdThe constitution template and a separate personality file: memory layout, queue contract, autonomy boundaries, hard lines.
claude/agents/6 filesresearcher, dev, marketing, publisher, qa, curator — each with its own persistent memory note.
claude/skills/3 skillsReal Claude Code skills, each a procedure that was paid for in wasted hours.
vault/~20 notesA working Obsidian skeleton in the exact shapes the dashboard already parses.

The part people actually keep

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).

Getting it running

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.

Two honest notes

Running an agent costs money.

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.

The four hard lines stay human.

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.