Start in 4 steps
Create a bot and store the token
Create a bot on @BotFather (Telegram) or the Discord Developer Portal.
Commands (in the chat)
| Command | What it does |
|---|---|
/pair <code> | Redeem a pairing code |
/new [label] | Open a new tab (max 5) |
/tab [id] | List or switch tabs |
/stop | Abort the current turn |
/close [id] | Close a tab |
/help | Show commands |
CLI reference
/hearth opens the settings panel with the same controls.
Always-on (service)
Run Hearth as a background service so your forge is reachable even after logout:soulforge hearth status.
Surfaces
| Surface | Platform | Identity |
|---|---|---|
| Telegram | Any OS | Bot + numeric from.id allowlist |
| Discord | Any OS | Bot + user snowflake allowlist |
Security
Hearth layers several protections on top of SoulForge’s existing hook system:Identity allowlist
Only paired identities can send. Unknown senders are dropped.
Approval prompts
Destructive tool calls (edit, shell, git) arrive as tap-to-approve buttons.
Secret redaction
Bot tokens, API keys, PATs, AWS keys, bearer tokens — auto-redacted from all logs.
Read denylist
.env, *.pem, ~/.ssh/**, ~/.aws/credentials — blocked before every read.Sandboxed caps
Optional: route destructive ops through Docker with
caps: "sandboxed".Bot tokens in keychain
Tokens live in macOS Keychain / Linux secret-tool. Never in plain config.
Config
Default config lives at~/.soulforge/hearth.json. Most users never edit it — the CLI manages everything. For advanced setups (multiple chats, read denylists, capability caps), see the config schema.
Non-goals
- No cloud. Hearth is “reach your host” — not a hosted service. Your machine must be running.
- No WhatsApp. Terms of service forbid it.
- No concurrent writers. Reads ok across chats; writes are single-owner per tab.

