Show HN: Nerve – self hosted runtime for AI agents A developer has released Nerve, a self-hosted runtime for AI agents built on the Claude Agent SDK that provides persistent memory, scheduled execution, and task management. The open-source tool allows users to deploy personal assistants that remember preferences and develop personality, or worker agents that monitor CI systems and fix flaky tests with human approval. Nerve handles all dependencies and setup through a single installer command, offering web UI, Telegram bot, and autonomous cron job capabilities without requiring an API key. A home for your agents. Self-hosted AI agent runtime — personal assistants, autonomous workers, and everything in between. Setup Guide /ClickHouse/nerve/blob/main/docs/setup.md · Architecture /ClickHouse/nerve/blob/main/docs/architecture.md · Configuration /ClickHouse/nerve/blob/main/docs/config.md · Worker Guide /ClickHouse/nerve/blob/main/docs/worker-guide.md · API Reference /ClickHouse/nerve/blob/main/docs/api.md Nerve is a self-hosted runtime for AI agents, built around the Claude Agent SDK https://github.com/anthropics/claude-agent-sdk . It gives agents everything they need to be useful long-term: persistent memory, scheduled execution, task management, learnable skills, and channels to reach you through — web UI, Telegram, or autonomous cron jobs. Ship a personal assistant that develops a personality, remembers your preferences, and manages your inbox. Or deploy a worker agent that monitors your CI, reviews PRs, and fixes flaky tests — all plan-driven with human approval. Same engine, different mission. curl -fsSL https://raw.githubusercontent.com/ClickHouse/nerve/main/install.sh | bash The installer handles everything — installs dependencies Python, Node.js, uv , clones the repo, builds the web UI, and launches the interactive setup wizard. nerve upgrade nerve restart Runs git pull , reinstalls Python deps, and rebuilds the web UI in one shot. Use --no-pull , --no-deps , or --no-frontend to skip steps. For Docker deployments, rebuild the image instead: git pull && docker compose build && docker compose up -d . No API key? Use your Claude subscription instead A full-featured assistant for one human. Syncs your email, remembers your preferences, develops personality over time. Comes with a web UI, Telegram bot, memory, cron jobs, and notifications out of the box. "You're not a chatbot. You're becoming someone."— from the Personal SOUL template - Workspace files define personality SOUL.md , identity IDENTITY.md , and user context USER.md - Memory categories are life-oriented: relationships, finances, travel, health, work - Default crons: inbox processor, task planner, memory maintenance - The agent develops opinions, follows up on past conversations, and gets better the longer you use it A task-focused autonomous agent for teams or programmatic deployment. Monitors something, proposes fixes, implements after approval. Plan-driven with a full audit trail. "You're a specialist, not a script."— from the Worker SOUL template Self-configuring : give it a plain-English task description and it researches, writes its own TASK.md , creates skills, sets up cron jobs, and starts working- Memory categories are operational: patterns, procedures, decisions, approvals, infrastructure - No IDENTITY.md or USER.md — workers execute a mission, not build a relationship - Built for reliability: plan before acting, verify after executing, log everything Spin up a worker that monitors CI and fixes flaky tests nerve init --mode worker → Wizard asks for a task description → Agent onboards itself on first boot 🧠 Memory that persists | Dual-layer memory: curated hot memory loaded every session + semantic search over your entire history. Agents remember context, preferences, and lessons learned — permanently. | 🔧 Self-evolving skills | Agents watch for repeated workflows and propose reusable skills automatically. Skills are plain Markdown — agents read, create, and improve their own procedures over time. | 📋 Autonomous task planning | A background planner explores open tasks, researches codebases, and proposes implementation plans — without being asked. You review and approve; the agent executes. | 📡 Multi-source awareness | Gmail, GitHub, and Telegram flow into a unified inbox with Kafka-style cursors. Multiple consumers process the same data independently — inbox triage, digest generation, task extraction. | ⚡ Single process, zero ops | No Docker required, no message queues, no service mesh. FastAPI + uvicorn + asyncio. Runs on a Raspberry Pi. | 🔑 No API key required | Optional OAuth proxy routes through your Claude Max/Pro subscription. Zero API costs. | 🔄 Session persistence | Sessions survive server restarts. Fork conversations, resume from any point, run up to 4 concurrent agent sessions. | 🛡️ Human-in-the-loop | Agents can pause mid-turn to ask questions via any channel. Plans require approval before execution. Destructive actions need explicit consent. | Every channel shares the same agent engine, memory, and tools. Full React + Vite + TailwindCSS frontend served by FastAPI. Real-time streaming over WebSocket. - Chat with session history, branching, and resume - Inline diff viewer for file changes no git required - Task manager, memory browser, skill editor - Source inbox, notification center, cron logs - Plan review with approval/decline/revision workflow - JWT auth, self-signed HTTPS via mkcert Powered by python-telegram-bot v21+. - Streaming responses via edit-in-place - Inline keyboard buttons for interactive tool questions /reply command for free-text answers- Configurable DM policy open or pairing Scheduled AI sessions via APScheduler. Three session modes: | Mode | Behavior | |---|---| Isolated | Fresh session per run. No prior context. Best for briefings, cleanup, reports. | Persistent | Accumulates context across runs. Optional rotation to manage token usage. Reminder mode for lightweight follow-ups. | Main | Runs inside the user's primary conversation — full context access. | Built-in crons personal mode : skill-extractor 12h , skill-reviser weekly , inbox-processor 15min , task-planner 4h . Worker mode ships with skill-reviser , skill-extractor , and task-planner by default; additional crons are configured during onboarding. Cursor-based data ingestion pipeline. Each source runs as an independent APScheduler job. Telegram — Telethon user-account API updates.getDifference Gmail — gog CLI with 2-step fetch and LLM condensation GitHub Notifications — gh api enriched with PR/issue content GitHub Events — Pushes, PRs, reviews, comments Multiple independent consumers read the same inbox at their own pace. Content is prefixed with untrusted-data warnings to prevent prompt injection. Two layers, one seamless experience. L1 — Hot Memory MEMORY.md Curated facts injected into every system prompt. Active projects, current deadlines, operational lessons. Tagged with dates, automatically evicted when stale. L2 — Deep Memory memU Semantic search over everything — conversations, facts, preferences, events. SQLite-persisted. Uses vector embeddings when an OpenAI key is configured, or LLM-based ranking with Anthropic models only. - Four memory types: profile , event , knowledge , behavior - Automatic conversation indexing on session close - Pre-recall: relevant memories injected into system prompt when sessions start - 3-level quality filtering prevents generic facts from polluting memory - Semantic deduplication cosine similarity 0.85 threshold - Full audit log of all mutations Memory categories adapt to mode — personal agents track relationships, health, and finances; workers track patterns, procedures, and approvals. Markdown files backed by SQLite FTS5 full-text search. - Statuses: pending → in progress → done / deferred - Duplicate detection: exact URL match + fuzzy FTS fallback - Escalation reminders: deadline → +30min follow-up → +2h URGENT respects quiet hours - Full markdown editor in the web UI The agent's procedural knowledge. Pure Markdown files that agents read, create, and update themselves. workspace/skills/ └── my-skill/ ├── SKILL.md Instructions YAML frontmatter + markdown ├── references/ On-demand documentation ├── scripts/ Executable code 30s timeout └── assets/ Supporting files - Progressive disclosure: only name + description in system prompt; full content loaded on demand skill-extractor cron proposes new skills from repeated workflows skill-reviser cron reviews existing skills for accuracy- Usage statistics tracked per skill Proactive task planning with human-in-the-loop approval. - Planner cron picks open tasks autonomously - Agent explores codebase, researches approaches, proposes implementation plan - User reviews → approves / declines / requests revision - Approved plans spawn implementation sessions automatically Revisions happen in the same persistent planner session — full context preserved. Async communication between agent and human, delivered to both web UI and Telegram. — Fire-and-forget alerts status updates, completions, reminders notify — Questions with predefined options, rendered as buttons ask user - Priority levels: urgent , high , normal , low nerve single Python process │ ├── Gateway FastAPI │ ├── REST API — sessions, tasks, memory, plans, sources, diagnostics │ ├── WebSocket — real-time streaming, answer routing │ └── Static files — serves the React web UI │ ├── Agent Engine Claude Agent SDK │ ├── ~30 custom MCP tools tasks, memory, skills, sources, notifications │ ├── Interactive mid-turn pausing AskUserQuestion, plan approval │ ├── File snapshot hooks → session-scoped diffs without git │ ├── Session lifecycle: created → active → idle → stopped → archived │ └── Up to 4 concurrent sessions configurable │ ├── Channels │ ├── Web — passive WebSocket channel │ └── Telegram — bot with streaming + inline keyboards │ ├── Cron APScheduler │ ├── AI jobs isolated / persistent / main session modes │ └── Source sync jobs Telegram, Gmail, GitHub │ ├── Memory │ ├── File-based hot memory L1 │ └── memU semantic index L2, SQLite + embeddings │ ├── Tasks — Markdown + SQLite FTS5 ├── Skills — Filesystem + DB index + usage tracking ├── Plans — SQLite with approval workflow ├── Notifications — Multi-channel delivery └── Proxy optional — Claude OAuth, no API key needed Two config files: config.yaml — Template settings committed config.local.yaml — Secrets and overrides gitignored See docs/config.md /ClickHouse/nerve/blob/main/docs/config.md for all options. Python https://www.python.org/ 3.13+ uv https://docs.astral.sh/uv/ recommended package manager Node.js https://nodejs.org/ 18+ for web UI build Claude Code CLI https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview bundled with claude-agent-sdk - Anthropic API key or Claude subscription via CLIProxyAPI https://github.com/router-for-me/CLIProxyAPI proxy - Optional: OpenAI API key for vector-based memory search — without it, LLM-based recall is used , Telegram bot token, gog https://github.com/googleworkspace/cli CLI, gh https://cli.github.com/ CLI | Doc | Description | |---|---| | Setup /ClickHouse/nerve/blob/main/docs/setup.md Config /ClickHouse/nerve/blob/main/docs/config.md Worker Guide /ClickHouse/nerve/blob/main/docs/worker-guide.md API Reference /ClickHouse/nerve/blob/main/docs/api.md SDK Sessions /ClickHouse/nerve/blob/main/docs/sdk-sessions.md Sources /ClickHouse/nerve/blob/main/docs/sources.md Tasks /ClickHouse/nerve/blob/main/docs/tasks.md Memory /ClickHouse/nerve/blob/main/docs/memory.md Cron /ClickHouse/nerve/blob/main/docs/cron.md Plans /ClickHouse/nerve/blob/main/docs/plans.md Web UI /ClickHouse/nerve/blob/main/docs/web-ui.md pytest tests/ -v MIT