jardbot
An always-on Discord bot that bridges a channel to Claude Code, with a layered safety system and approval buttons.
runninggateway tests are red, fix them
Claude wants to run:
Bash · bun test packages/gatewayFixed session.ts: 41 passed, 0 failed.
- commits
- 421
- last 30 days
- 148
- first commit
- Feb 5, 2026
- last commit
- Oct 7, 2026
- stack
- Bun, TypeScript, Discord.js
Counted from git on Oct 15, 2026. Services checked live at the same build.
- Source (private)
You message the bot in Discord and it forwards the request to Claude Code’s CLI, so Claude can edit files, run commands and search code from your phone. Every tool use goes through a rules engine: dangerous operations are denied automatically, safe reads are allowed, and everything else shows Approve/Deny buttons in Discord that default to deny after five minutes. Only one authorized user can talk to it.
It also has secret redaction, an append-only audit log, directory scoping, a two-hour limit on unattended runs, optional semantic memory, cron jobs, and an observability dashboard. It has since grown a phone app and web inbox. It runs in production on my home server as systemd user services (gateway, bridge, speech transcription), with a health watchdog. The source repo is private, so there is no link.
What I learned / would do differently
- Putting the safety layer first (deny, allow, ask) is what made it comfortable to run unattended; it’s the part I’d keep in anything similar.
- The docs directory has several overlapping roadmaps and plans (autonomy, security, mobile, pocket-ai). One current roadmap would be easier to keep honest.
- It outgrew “a Discord bot” into a small platform. Naming and structure that reflected that earlier would have helped.