The open-source AI teammate that lives in your team's channels.
On June 23, 2026 Anthropic launched Claude Tag — a shared, persistent, proactive AI that works inside Slack instead of a private DM window. It's a great idea. It's also closed, Slack-only, and Claude-only.
hearth is the one you can self-host, point at any model, and audit line by line. Same shape — a multiplayer teammate with shared channel context, persistent memory, async execution, and a proactive "ambient" mode — but it runs on your infrastructure, against any model, with memory and governance you can see and edit.
Status: early preview. The core and the killer feature work today as a local-first app (SQLite, in-process, ~zero infra). The production-scale backends (Letta, Temporal, OpenFGA) are documented swaps behind the same interfaces — see docs/adr/. Contributions welcome.
| Claude Tag | hearth | |
|---|---|---|
| Hosting | Anthropic cloud | self-hosted, your infra |
| Model | Claude only | any model via LiteLLM |
| Memory | closed black box | transparent, inspectable, editable |
| Connectors | Anthropic-curated | any MCP server |
| Audit / budgets | enterprise tier | first-party, built in |
| Platforms | Slack | Slack now; Discord / Teams / Lark(飞书) next |
| License | closed | MIT |
- Multiplayer, in-channel —
@hearthand it replies in the thread using the whole channel as context. One shared teammate, not a DM per person. - Persistent, scoped memory — it remembers per channel and keeps a rolling summary. A channel is its own identity: #sales memory is invisible to #eng.
- Async tasks that report back —
task: <something>and it works in the background, then @s you in the thread when it's done. - Ambient mode (the killer feature) — opt a channel in and hearth decides when it's worth speaking up, gated by a relevance score, a cooldown, a daily budget, quiet hours, and a hard instant opt-out. Shadow mode is on by default: it logs what it would say without posting, so you can turn it on and tune it with zero risk of spam. Design: docs/ambient-spec.md.
- First-party audit log — every reply, task, and ambient decision is recorded with who triggered it.
- Model-agnostic — everything goes through a LiteLLM gateway; swap models in
config/litellm.yamlwith zero code changes.
At https://api.slack.com/apps → Create New App → from scratch, then enable Socket Mode (so no public URL is needed — hearth dials out to Slack).
- App-Level Tokens → generate one with
connections:write→SLACK_APP_TOKEN(xapp-…). - Bot Token Scopes:
app_mentions:read,channels:history,groups:history,chat:write,reactions:read. Install →SLACK_BOT_TOKEN(xoxb-…). - Event Subscriptions (bot events):
app_mention,message.channels,reaction_added. /invite @hearthinto a channel.
cp .env.example .env # fill in the two Slack tokens + your model key
make install # pip install -e ".[proxy,dev]"
make proxy # LiteLLM model gateway on :4000 (Docker)
make dev # hearth, over Socket Mode — no public URLThen @hearth in the channel. To switch on the killer feature, say
@hearth go ambient (starts in shadow mode); silence it any time with
@hearth be quiet or a 🔇 reaction.
The core logic is dependency-light and unit-tested on its own:
for t in tests/test_*.py; do PYTHONPATH=. python3 "$t"; doneSee docs/architecture.md for the full picture and the reuse-vs-build split. ~70% is composed from mature OSS (Bolt, Pydantic AI, Temporal, Letta, LiteLLM, OpenFGA, Langfuse, MCP); the differentiated ~30% — the ambient engine, identity scoping, the audit log, and the admin UI — is what hearth is. Key decisions are recorded as ADRs:
- 0001 — agent core: Pydantic AI vs LangGraph
- 0002 — durable execution: Temporal vs DBOS/Hatchet
- 0003 — memory: Letta vs Cognee
- 0004 — multi-platform: custom adapter vs OpenClaw
| Shipped (local-first) | in-channel replies · scoped memory + summary · async tasks · ambient gate (shadow) · audit log · model-agnostic gateway |
| Next | Letta memory backend · Temporal durable tasks · OpenFGA tool/channel/data scoping · SvelteKit admin (budgets, audit, memory inspection) · Discord / Teams / Lark(飞书) |
MIT — see LICENSE. hearth is an independent, model-agnostic project and is not affiliated with Anthropic. "Claude" and "Claude Tag" are trademarks of Anthropic, referenced here only for comparison.