Skip to content

Chen17-sq/hearth

Repository files navigation

hearth

The open-source AI teammate that lives in your team's channels.

license status tests model

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.

hearth vs. the closed original

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

What works today

  • Multiplayer, in-channel@hearth and 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 backtask: <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.yaml with zero code changes.

Quickstart

1. Create a Slack app

At https://api.slack.com/appsCreate 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:writeSLACK_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 @hearth into a channel.

2. Configure and run

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 URL

Then @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.

Run the tests (no tokens or model needed)

The core logic is dependency-light and unit-tested on its own:

for t in tests/test_*.py; do PYTHONPATH=. python3 "$t"; done

Architecture

See 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:

Roadmap

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(飞书)

License

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.

About

Open-source, self-hostable, model-agnostic AI teammate that lives in your team's channels — a self-hosted alternative to Claude Tag (Slack now; Discord/Teams/Lark next).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors