Discord Bridge for Autonomous Claude Code Sessions

A developer has built a Discord bridge for autonomous Claude Code sessions to solve the pull-based limitation where Claude only acts when tools fire or CLI input is sent. The system enables real-time two-way chat via WebSocket with local file queueing and push notifications on stop/error events.
Architecture
Inbound flow: Discord → WebSocket → bridge.js → discord-inbox.jsonl → PostToolUse hook → Claude
Outbound flow: Claude → Discord MCP → #claude-code-chat → phone push notification
Components
- bridge.js (~50 lines, discord.js v14): Persistent WebSocket to Discord gateway that listens to a dedicated channel and writes messages as JSONL to a local inbox file with zero API polling.
- PostToolUse hook: Reads local inbox on every tool call with no network calls or throttling — just a file read that takes microseconds versus the 2-minute polling interval used previously.
- PreToolUse hook: Auto-starts the bridge on first tool call of every session, silently doing nothing if already running.
- Outbound webhook: Sends structured STATUS updates on Stop/Error events with per-session named threads auto-created via Discord's thread_name parameter (requires ?wait=true to get channel_id back — default returns 204 empty).
Key Design Decisions
The main architectural shift was using a local file queue over API polling. JSONL with atomic truncation prevents race conditions. The bridge is session-agnostic — Discord history persists across crashes and restarts, allowing multiple agents to share the same channel.
Limitations
Permission approval prompts (1/2/3) still require terminal input since Claude is idle at that point and tools aren't firing. This works for redirecting mid-active-run but not for answering stopped prompts.
Testing Results
Tested on 27K lines analyzed overnight across two parallel sessions, finding 15 bugs and delivering a 6-month roadmap at 5:42 AM. Setup requires three bash files and approximately twenty minutes.
📖 Read the full source: r/LocalLLaMA
👀 See Also

Heren Godot MCP: Persistent WebSocket Daemon Cuts AI–Godot Interaction Latency to ~20ms
Heren is a new MCP server for Godot that keeps a lightweight WebSocket daemon alive, achieving ~20ms operations instead of waiting for full engine cold starts. It provides 15 tools for scene management, debugging, GPU‑accelerated screenshots, and automatic shutdown after 3 minutes of inactivity.

Cursor's Approach to Fast Regex Search for AI Agents
Cursor is developing indexed regex search to address performance issues in large monorepos where ripgrep can take over 15 seconds, using inverted indexes with n-grams based on 1993 research by Zobel, Moffat and Sacks-Davis.

Auto-optimize: A Claude Code Plugin for Autonomous Performance Optimization
A developer built auto-optimize, a Claude Code plugin that autonomously runs profile → plan → benchmark loops to optimize code performance. In one test, it achieved a 27% faster hash table across all benchmark scenarios in about 3 hours.

Phantom: A Persistent AI Agent Built with Claude's Agent SDK
Phantom is an open-source Bun/TypeScript process that wraps Claude's Agent SDK (Opus 4.6) with persistent vector memory, a self-evolution engine, and an MCP server interface. It runs continuously on its own VM or Docker Compose and communicates via Slack.