Botdeck is a local desktop cockpit for managing official Discord bots, built with Next.js, Electron, Discord.js, Prisma and SQLite.
Run multiple bots, test messages, build embeds, manage slash commands and inspect runtime health from one clean local interface.
| Bot setup | Workspace |
|---|---|
![]() |
![]() |
| Health dashboard | Slash command studio |
|---|---|
![]() |
![]() |
- Multi-bot local launcher for official Discord bot tokens
- Discord-style workspace with live message handling
- Bot creation flow with guided setup
- Slash command and context command studio
- Embed builder with live preview
- Health dashboard for runtime and connection status
- Local message search powered by SQLite
- Local-first token and runtime storage
- Electron desktop packaging for Windows, Linux and macOS
- Shared TypeScript protocol between the web app and desktop runtime
Start by installing the dependencies:
npm installOnce installed, you can run Botdeck in different ways.
npm run devRuns the web interface, WebSocket server, and desktop runner in development mode.
Default endpoints:
- Web UI:
http://localhost:3000 - WebSocket:
ws://localhost:3001
npm run appBuilds and launches the Electron desktop app.
npm run buildBuilds the project for production.
npm run build-win
npm run build-lin
npm run build-mac
npm run build-allBuilds desktop packages for Windows, Linux, macOS, or all supported platforms.
npm run cleanRemoves generated files and local build artifacts.
botdeck/
ββ apps/
β ββ web/ # Next.js app, API routes, WebSocket server and UI
β ββ desktop/ # Electron entry point and desktop runner
β
ββ packages/
β ββ shared/ # Shared protocol, types and state logic
β
ββ assets/ # Icons and README preview assets
ββ scripts/ # Development, build, clean and packaging scripts
ββ package.json # Root scripts and workspaces
ββ README.md
Botdeck works without a .env file. By default, it stores its local database and runtime key inside .botdeck/ at the project root.
Create a .env file only if you want to override the local runtime configuration:
# SQLite database location.
# Use BOTDECK_DATABASE_PATH for a file path, BOTDECK_DATABASE_DIR for a folder,
# or BOTDECK_DATABASE_URL if you want to pass the full Prisma SQLite URL yourself.
BOTDECK_DATABASE_PATH=.botdeck/database/botdeck.db
# BOTDECK_DATABASE_DIR=.botdeck/database
# BOTDECK_DATABASE_URL=file:./.botdeck/database/botdeck.db
# Local WebSocket server used by the web UI and desktop runtime.
BOTDECK_WS_HOST=127.0.0.1
BOTDECK_WS_PORT=3001
NEXT_PUBLIC_WS_URL=ws://localhost:3001
# Allow access from another device on the same network.
# Keep this disabled unless you know why you need it.
BOTDECK_ALLOW_NETWORK=false
# Debug Prisma SQL queries in the server logs.
BOTDECK_PRISMA_LOG_QUERIES=0
# Windows packaging only: override the embedded Node runtime version.
# BOTDECK_NODE_RUNTIME_VERSION=22.16.0Do not commit your .env file. It can contain local paths, debug settings, or machine-specific values.
Botdeck stores runtime data locally in .botdeck/ by default.
.botdeck/
ββ database/
β ββ botdeck.db
ββ runtime.key
These files are ignored by Git and should not be committed.
Give a βοΈ if this project helped you!
Copyright Β© 2026 Macxzew.



