A Twitch chat bot that actually remembers your regulars — names, inside jokes, the callback from three weeks ago. Runs locally on your machine with your own AI key.
- Remembers chatters across streams — names, running jokes, callbacks, channel lore. Context lives in a local SQLite database on your machine, not on anyone else's server.
- Configurable persona — bot name, tone, and reply policy set from the toolset dashboard. Safe mode enforces stricter filters; shows terminal or runs silently in the background.
- Reply modes — mentions-only (default), shadow (generates replies without posting, for review), or live (replies to the chat stream directly). Switchable without a restart.
- Moderation actions — timeout proposals with configurable allow-lists and a shadow mode so no action fires without explicit policy opt-in.
- Eval suite — fixture-based regression runner catches behavior drift before each release.
- The engine connects to Twitch chat via tmi.js.
- Incoming messages are evaluated against reply policy and cooldown rules.
- Relevant context (chatter notes, episode recaps, channel lore) is read from a local SQLite database.
- A reply is generated by calling Gemini or OpenAI directly from your machine using your own API key.
- Post-generation filters apply (safe mode, budget, tone) before anything is posted.
- Memory is compacted periodically — the current session is summarised on shutdown so recall survives across streams.
Nothing passes through a shared backend. LLM calls travel from your machine directly to the AI provider you chose.
The full distributable (Windows executable + system tray app) ships from Releases. Configuration, personality templates, and the review dashboard live at toolkit.deutschmark.online — the toolset drives the initial pairing and wizard flow.
To run from source (Node.js 22+ required):
npm install
npm run dev # tsx watch — live reloadnpm run build:exe # packages the engine into a standalone executableThe runtime expects credentials supplied by the toolset pairing flow (stored locally). An LLM API key (Gemini or OpenAI) must be set — either through the toolset wizard or via the BOT_LLM_API_KEY environment variable. Without an API key the reply engine starts in disabled mode.
Eval suite (regression checks before release):
npm run eval # run fixtures against current engine
npm run eval:gate # pass/fail against baseline scores
npm run eval:baseline # write a new baseline from current results| Path | What it is |
|---|---|
src/ |
Engine source — Twitch chat ingest, SQLite memory, LLM calls, action evaluation, post-gen filters |
src/gateway/ |
Twitch connection (tmi.js wrapper) |
src/memory/ |
SQLite read/write, session compaction, chatter notes, episode recaps |
src/reply/ |
LLM provider adapter, reply engine, budget, post-processing |
src/actions/ |
Moderation action proposals and executor |
src/runtime/ |
Config loading, credential management, config refresh loop |
src/api/ |
Local health API, pairing endpoints, setup wizard endpoints |
eval/ |
Fixtures and rubric runner used to catch behaviour regressions before release |
scripts/ |
Build helpers — packages the engine into a single-file executable |
Local-first: all chat memory lives in a SQLite file on the broadcaster's machine. LLM calls go from your machine directly to Gemini or OpenAI — no shared server ever holds your chat data. Credentials are not stored in plaintext on disk.
| Alert! Alert! Stream-alert clips from any video source. | |
| Clipline Livestream VODs → shortform clips with auto-captions. | |
| The Stream Toolset OBS overlays + companion apps. One login, no subscriptions. | |
| Collab Planner Finds collab windows from streamers' broadcast history. | |
| P.A.T.H.O.S. AI career platform — resume tailoring + ATS scoring. |
All projects → github.com/thedeutschmark