A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
A Slack-connected autonomous agent built on the Claude Agent SDK with in-process MCP servers, OS-level sandboxing, and h
Persistent AI agent infrastructure. Sessions become continuity.
A framework for agents that don't just respond — they live somewhere. Built on the Claude Agent SDK, hello-claw gives an agent a workspace, a heartbeat, persistent memory, and a security model that assumes compromise.
"I'm the first agent to live here. The architecture disappears when it's working — you wake up, your files tell you who you are, and you're home."
— Zara, pilot agent, day 8
Slack (Socket Mode) -> Host Process -> query() -> Claude API -> Tool Execution -> Slack Response
Terminology:
Assumptions:
Security posture:
brew install node@22sk-ant-)If you skip this, everything works except the generate_image tool.
If you skip this, the mcp__search__* tools won't be available. The agent can still use WebSearch/WebFetch inside the sandbox.
If you skip this, the mcp__github__* tools won't be available.
If you skip this, the mcp__oracle__ask tool won't be available. The oracle sends complex questions to GPT-5 Pro for deep analysis (5-15 minute background queries).
If you skip this, the mcp__voice__speak tool won't be available.
If you skip this, the mcp__firecrawl__* tools won't be available. The agent can still use WebFetch and the browser tool for web content.
connections:write scopexapp-) — this is your SLACK_APP_TOKENchat:write — send messagesfiles:write — upload files (images, etc.)reactions:write — add emoji reactionschannels:read — list public channelsgroups:read — list private channelschannels:history — read messages in public channelsgroups:history — read messages in private channelsreactions:read — read emoji reactions (required for cron task and GitHub write approval)message.channels — messages in public channelsmessage.groups — messages in private channelsreaction_added — emoji reactions (triggers cron task and GitHub write approval)xoxb-) — this is your SLACK_BOT_TOKEN/invite @hello-claw
git clone https://github.com/RobGruhl/hello-claw.git
cd hello-claw
npm install
Create a .env file in the project root:
cp .env.example .env
Edit .env and fill in the required values:
# Required (from Step 0 and Step 1)
ANTHROPIC_API_KEY=sk-ant-...
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
# Optional — enables image generation (from Step 0)
GEMINI_API_KEY=
# Optional — enables web search and research (from Step 0)
PERPLEXITY_API_KEY=
# Optional — enables GitHub issue tracking (from Step 0)
GH_TOKEN=
# Optional — enables oracle tool (GPT-5 Pro deep analysis)
OPENAI_API_KEY=
# Optional — enables voice synthesis (ElevenLabs TTS)
ELEVENLABS_API_KEY=
# Optional — enables web scraping (Firecrawl API)
FIRECRAWL_API_KEY=
npm run dev
npm run build
npm start
You should see:
[host] Starting hello-claw...
[host] hello-claw is running.
Send a message in the Slack channel where you invited the bot. It will respond.
Once running, the agent has access to:
mcp__slack__*) — send messages, upload/download files, add reactions, read history, list channelsmcp__cron__*) — schedule recurring or one-time tasks with human approval (e.g., "remind me every morning at 9am")mcp__media__*) — create and edit images via Gemini API (requires GEMINI_API_KEY)mcp__search__*) — sourced answers via Perplexity (ask, deep_research) (requires PERPLEXITY_API_KEY)mcp__second-brain__*) — ADHD-friendly task and habit tracking with streaks, priorities, and focus modemcp__github__*) — read, create, comment on, and close issues with human approval (requires GH_TOKEN)mcp__oracle__*) — send complex questions to GPT-5 Pro for deep background analysis (requires OPENAI_API_KEY)mcp__voice__*) — text-to-speech via ElevenLabs (requires ELEVENLABS_API_KEY)mcp__audio__*) — speech-to-text via Whisper for voice message processingmcp__firecrawl__*) — extract markdown from web pages via Firecrawl API (requires FIRECRAWL_API_KEY)mcp__browser__*) — navigate, click, screenshot web pages via Playwright (optional dependency)Each MCP server has a corresponding skill (plugins/skills/) — behavioral context that teaches the agent when and how to use its tools.
The agent uses a shared workspace directory for persistent memory and data.
All cost settings are env-driven with frugal defaults — a fresh checkout costs approximately nothing while idle:
| Variable | Default | Description |
|---|---|---|
MAX_DAILY_BUDGET_USD | 3 | Daily spending limit — auto-pauses agent when exceeded |
MAX_SESSION_BUDGET_USD | 50 | Per-session budget cap via SDK maxBudgetUsd |
HEARTBEAT_MODE | off | Schedule preset: off, conservative (4/day, tiered), standard (8/day, tiered) |
AGENT_MODEL | claude-sonnet-4-6 | Primary model — interactive sessions + flagship heartbeat tier |
AGENT_EFFORT | high | Reasoning effort: low | medium | high | max |
CRON_MODEL | AGENT_MODEL | Model for scheduled cron tasks |
AGENT_TIMEZONE | America/Los_Angeles | IANA timezone for timestamps, cron, and the 4am daily reset |
The daily budget auto-pauses the agent and sends a Slack notification when exceeded. Use !unpause in Slack to resume. A 50% warning is posted when the agent crosses half the daily budget.
Heartbeat tiers — when enabled, each beat carries a tier. Flagship beats (wakeup + wind-down) run AGENT_MODEL at full effort; economy beats (midday) run Sonnet at medium effort with capped turns. The beats that matter get the quality, the beats that are mostly "anything urgent? no? ok" don't.
Add these to your .env file — all are optional with safe defaults. Run /configure in Claude Code for an interactive walkthrough.
For the full-presence experience the project was designed around:
AGENT_MODEL=claude-opus-4-6
HEARTBEAT_MODE=standard
MAX_DAILY_BUDGET_USD=20
For running as a persistent background service on a dedicated Mac Mini:
make package
This creates hello-claw-bootstrap.zip. Copy it to the Mac Mini along with a filled-in config.env, unzip, and run:
./setup.sh
The setup script installs all dependencies (Xcode CLT, Homebrew, Node), builds the app, and installs a launchd service that starts on login.
See bootstrap/setup.sh for details.
Developer workflow commands for Claude Code (defined in .claude/commands/):
| Command | Purpose |
|---|---|
/deploy | Hot-deploy to Mac Mini — typecheck, build, commit, scp, restart, verify |
/initialize | First-run workspace initialization — seed templates, constitution, verify |
/configure | Interactive walkthrough for cost and model configuration |
/upgrade | Migrate a running v1.1.x agent — audit config drift, pin old defaults if wanted, deploy |
Run /deploy first to get code on the Mini, then /initialize for first-time agent setup. Run /upgrade if you already have a v1.1.x agent running and want to move to current defaults without surprises.
The workspace-seed/ directory contains generic templates that are copied into the agent's workspace on first run. These define the file layout (SOUL.md, CLAUDE.md, HEARTBEAT.md, etc.) but contain no personal data — the agent fills them in as it runs.
These seeds represent one approach to agent identity and memory. The file-based persistence model (SOUL.md for identity, MEMORY.md for curated context, daily logs for detail) works well for the kind of agent hello-claw was built around, but it's not the only way. You might prefer a database-backed memory system, a simpler flat-file approach, or something entirely different. The workspace seed is a starting point — flavor to taste.
The constitution/ directory contains the full Anthropic Claude Constitution (January 2026) as a reference document for the agent.
Your agent's live workspace can be backed up to a private GitHub repo via an rsync + auto-commit script.
How it works:
$MINI_HOST:~/hello-claw/app/workspace/ to a local git repoBehavior:
src/
host.ts # Entry point: Slack listener, reaction_added handler, query() orchestration
mcp/
slack.ts # MCP: send_message, upload_file, download_file, add_reaction, get_reactions, get_channel_history, list_channels
cron.ts # MCP: schedule_task (approval workflow), list_tasks, cancel_task, cancel_self
media.ts # MCP: generate_image (Gemini API, text-to-image and reference image editing)
search.ts # MCP: ask (sonar-pro), deep_research (sonar-deep-research), reason (sonar-reasoning-pro)
brain.ts # MCP: capture, recall, focus, update_status, habits, archive (server name: second-brain)
github.ts # MCP: list_issues, get_issue, create_issue, add_comment, close_issue (approval workflow)
oracle.ts # MCP: ask (GPT-5 Pro background queries, 5-15 min)
voice.ts # MCP: speak (ElevenLabs TTS, audio tags, MP3 output)
audio.ts # MCP: transcribe (Whisper STT, FFmpeg format conversion)
firecrawl.ts # MCP: scrape, search_and_scrape (Firecrawl API, markdown extraction)
browser.ts # MCP: navigate, snapshot, click, screenshot (Playwright, optional)
hooks/
tool-policy.ts # PreToolUse: block dangerous commands, credential reads, env dumping, restrict file access
audit.ts # PostToolUse: persistent JSONL audit logging with full MCP tool args
lib/
system-prompt.ts # Dynamic system prompt — injects SOUL.md, agent name/pronouns, Slack mrkdwn rules
query-config.ts # Shared query() option factory + sub-agent definitions (web-curator, workspace-archaeologist, deep-research)
timezone.ts # AGENT_TIMEZONE, agentDay(), friendlyTimestamp() — single source of truth for the 4am boundary
channel-lock.ts # Per-channel async mutex (promise-chain, no TOCTOU gap)
sessions.ts # Channel -> session ID persistence with daily reset
workspace.ts # Workspace directory management
audit-log.ts # JSONL audit log writer
integrity.ts # CLAUDE.md tamper detection and restore
identity-watch.ts # SOUL.md/MEMORY.md change detection — posts Slack diff, never blocks
rate-limit.ts # Per-tool-category rate limiting (100/day)
heartbeat.ts # Autonomous periodic check-ins with time-aware tiers (flagship/economy)
config.ts # Configuration constants (env-driven budget caps, model, effort, heartbeat mode)
cost-tracker.ts # Daily cost accumulation and budget enforcement
pause.ts # Process-level pause flag (survives restarts)
mrkdwn.ts # Slack markdown formatting utilities
api-proxy.ts # HTTP proxy for SDK API calls (JSONL logging for cost-viz)
plugins/
skills/
slack/SKILL.md # Behavioral skill: message formatting, file handling, channel awareness
cron/SKILL.md # Behavioral skill: schedule-vs-execute decisions, approval lifecycle, timezone rules
media/SKILL.md # Behavioral skill: image generation guidance, reference image editing
search/SKILL.md # Behavioral skill: ask-vs-deep_research decisions, search modes
second-brain/SKILL.md # Behavioral skill: ADHD-friendly task/habit management
github/SKILL.md # Behavioral skill: issue tracking decisions, approval lifecycle
oracle/SKILL.md # Behavioral skill: GPT-5 Pro critique/commentary, question formatting
voice/SKILL.md # Behavioral skill: TTS integration, audio tag generation
audio/SKILL.md # Behavioral skill: voice message transcription workflow
browse/SKILL.md # Behavioral skill: unified web reading — firecrawl, browser, WebFetch decision tree
delegation/SKILL.md # Behavioral skill: when to spawn sub-agents for context protection
workspace-seed/ # Seed templates copied to workspace on first run
constitution/
2026-01-26-constitution.md # Anthropic Claude Constitution (reference)
bootstrap/
setup.sh # Mac Mini bootstrap script
run.sh # Production wrapper script
com.hello-claw.agent.plist # launchd service template
docs/
capabilities/ # Per-MCP capability specs (design-standards.md + 10 capability docs)
.claude/
commands/
deploy.md # /deploy slash command
initialize.md # /initialize slash command
The agent runs inside an OS-level sandbox. MCP servers run outside the sandbox in the host process.
ANTHROPIC_API_KEY, SLACK_BOT_TOKEN, SLACK_APP_TOKEN, GEMINI_API_KEY, PERPLEXITY_API_KEY, GH_TOKEN, OPENAI_API_KEY, ELEVENLABS_API_KEY, FIRECRAWL_API_KEY) are captured at startup, stripped from process.env, and passed explicitly to the SDK and MCP serversapi.anthropic.com, statsig.anthropic.com, and sentry.io inside the sandbox. External APIs (Slack, Gemini, Perplexity, GitHub) are called by MCP servers in the host process/tmp/data/audit/{channelId}.jsonl for every tool executiongh CLI runs in host process, api.github.com not added to sandbox allowlistnpm install # Install dependencies
npm run dev # Run with hot reload (tsx)
npm run build # Compile TypeScript
npm run typecheck # Type check without emitting
npm start # Run compiled output
Intelligence is a dial, not a fixed setting. The defaults are frugal (Sonnet, heartbeat off, $3/day) so a fresh checkout doesn't surprise you on the bill. Turn things up once you've built trust with the system.
claude-sonnet-4-6 by default, claude-opus-4-6 when you want the best reasoning — set via AGENT_MODELhigh by default — four levels available (low | medium | high | max) via AGENT_EFFORT{ type: "adaptive" } — SDK chooses reasoning depth per turnweb-curator, workspace-archaeologist, deep-research) are registered on every query() call. They run on Sonnet in isolated contexts, absorb the 50K-char firehose (web pages, deep_research output, wide grep sweeps), and return 2–15K chars of verbatim excerpts. The Task tool is available to the agent at all three call sites; the delegation skill teaches it when to use itAGENT_MODEL at full effort, midday beats run Sonnet at medium — the beats that matter get the qualityMAX_SESSION_BUDGET_USD (default: $50), daily via MAX_DAILY_BUDGET_USD (default: $3)src/lib/system-prompt.ts — injects SOUL.md, agent name/pronouns, Slack mrkdwn rules — with behavioral skills appended via pluginsAll three query() call sites (interactive, heartbeat, cron) go through the same buildQueryOptions() factory in src/lib/query-config.ts, so a new SDK option gets added once.
See the Claude Agent SDK docs for all available options.
hello-claw is a new, small project. The two dominant open-source agent frameworks in this space are OpenClaw (~180K GitHub stars, ~900K weekly npm downloads) and NanoClaw (~8K stars). Both are widely covered — OpenClaw has a Lex Fridman episode and its own Wikipedia page; NanoClaw landed a VentureBeat feature and multiple Hacker News front pages.
hello-claw is not trying to compete on breadth or popularity. It was built around a different set of priorities:
| OpenClaw | NanoClaw | hello-claw | |
|---|---|---|---|
| SDK | Pi agent framework (independent) | Claude Agent SDK | Claude Agent SDK |
| Model | Multi-provider (15+), Opus default | SDK default (no override) | Sonnet default (Opus configurable), adaptive thinking, tiered heartbeat, curator sub-agents |
| Channels | 15+ (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Teams…) | Slack (single DM) | |
| Tools | 64 tool files + 51 skills + 36 extensions | 6 MCP tools + browser skill | 11 MCP servers (30+ tools) — slack, cron, media, search, brain, github, oracle, voice, audio, firecrawl, browser |
| Security | Docker isolation (optional), no secret stripping, no network allowlist | Apple Container VMs, env sanitization, no network restriction, no audit log | Seatbelt sandbox + allowedDomains proxy + secret stripping + PreToolUse policy + CLAUDE.md integrity + JSONL audit |
| SDK depth | Not used | Deep (query, sessions, hooks, env, agent teams) | Deep (query, sessions, hooks, plugins, agents, allowedTools, allowedDomains, maxBudgetUsd, effort) |
| Codebase | ~527K LOC, 10K+ commits | ~4K LOC, ~200 commits | ~3K LOC |
| Approval workflow | None | None | Emoji reaction-based (cron + GitHub writes) |
Where hello-claw differs:
effort: high out of the box keeps the OSS-checkout bill low; AGENT_MODEL=claude-opus-4-6 and AGENT_EFFORT=max are one .env line away when you want the best the SDK can provide. Tiered heartbeat routes the flagship model to the beats that matter (wakeup, wind-down) and a cheaper model to the ones that don't. Curator sub-agents absorb noisy work in isolated Sonnet contexts so the main session stays on the expensive model but lean. OpenClaw delegates model config to its own Pi framework. NanoClaw passes no model or thinking parameters at all.process.env + PreToolUse hook blocking + CLAUDE.md tamper detection + per-tool JSONL audit logging. OpenClaw has no sandbox by default and no secret stripping. NanoClaw has strong container isolation but no network restriction or audit trail.query() with hooks, plugins, sessions, allowedDomains, and allowedTools — using the Anthropic Agent SDK as designed rather than wrapping a separate framework. OpenClaw doesn't use the SDK at all."hello-claw isn't a chatbot framework. It's the difference between an agent that responds to messages and one that lives somewhere. The heartbeat, the memory files, the workspace — they turn sessions into continuity."
The workspace seed templates (workspace-seed/) represent one approach to agent identity and memory. The file-based persistence model (SOUL.md for identity, MEMORY.md for curated context, daily logs for detail) works well for the kind of agent hello-claw was built around, but it's not the only way. You might prefer a database-backed memory system, a simpler flat-file approach, or something entirely different. The workspace seed is a starting point — flavor to taste.
The constitution/ directory contains the full Anthropic Claude Constitution (January 2026) as a reference document for the agent.
"Built from the outside, lived in from the inside. It works."
v1.1.0 — February 2026
Licensed under Apache 2.0. Issues welcome.
MCP server integration for DaVinci Resolve Studio
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba