For production use, you want SlackHive to survive reboots, serve HTTPS, and get backed up. This page covers the operational recipe on top of the standard CLI install. If you haven’t installed yet, start with Install with the CLI.Documentation Index
Fetch the complete documentation index at: https://slackhive.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Security checklist
Before exposing SlackHive to a production network:- Strong
ADMIN_PASSWORDin.env(regenerate if it was auto-filled during testing) -
AUTH_SECRETandENV_SECRET_KEYgenerated withopenssl rand -hex 32(slackhive initdoes this automatically) -
NODE_ENV=productionin.env - Reverse proxy terminating TLS - never expose port 3001 directly
-
.envnot in version control - MCP secrets stored in Settings → Env Vars (encrypted), not in plain MCP config
envfields -
~/.slackhive/directory permissions limited to the runtime user
Run as a service
macOS - launchd
Create~/Library/LaunchAgents/co.pelago.slackhive.plist:
Linux - systemd
For OAuth subscription mode on Linux, make sure the service user has access to either:- A running keyring daemon (
secret-toolworks for that user), or - A pre-populated
~/.claude/.credentials.jsonin the service user’s home
claude login once as that user before enabling the service.
Create /etc/systemd/system/slackhive.service:
slackhive start, which acquires the singleton lock, negotiates ports, and starts the web + runner. On stop, slackhive stop sweeps orphans and unlinks the lock.
Reverse proxy with nginx
proxy_buffering off is required for the live logs stream - otherwise the UI shows log lines in lumps instead of real time.Reverse proxy with Caddy
flush_interval -1 disables buffering for SSE.
Change the web port
slackhive init picks 3001 by default and auto-negotiates if taken. To pin a different port, set PORT in .env:
Backup
Everything that matters is on disk under~/.slackhive/. Back up the whole directory:
What’s in the backup
| Path | Contents |
|---|---|
~/.slackhive/data.db | All agents, memories, skills, history, MCP catalog, users, settings |
~/.slackhive/agents/<slug>/ | Per-agent workspace - CLAUDE.md, sessions, copies of assigned wiki folders |
~/.slackhive/knowledge/<folderId>/wiki/ | Compiled wikis for the Knowledge Library (source of truth) |
~/.slackhive/.env | Encryption keys, admin password, Claude auth |
Automated daily backup
Update
update runs git pull, reinstalls dependencies, rebuilds, and restarts. Your data.db is preserved.
Review releases before updating in production. Database migrations run automatically on the next start.
Resource requirements
Minimum recommended for a small team (5–10 agents, moderate traffic):| Resource | Minimum | Recommended |
|---|---|---|
| CPU | 2 cores | 4 cores |
| RAM | 2 GB | 4 GB |
| Disk | 10 GB | 20 GB |
Key rotation
AUTH_SECRET
Rotating invalidates every active session - everyone is logged out.
- Generate:
openssl rand -hex 32 - Update
.env - Restart:
slackhive stop && slackhive start
ENV_SECRET_KEY
Rotating makes every stored secret unreadable. You must re-enter each secret after rotation.
- Export every value from Settings → Env Vars by hand (the API never returns plaintext)
- Generate:
openssl rand -hex 32 - Update
.env - Restart:
slackhive stop && slackhive start - Paste each secret back into Settings → Env Vars
${env:NAME} will fail between steps 3 and 5.
Monitoring
SlackHive doesn’t ship built-in metrics or alerting. For production monitoring:- Live Logs tab in the UI - real-time diagnostics
- Runner log -
~/.slackhive/logs/runner.logstreams JSON-per-line; pipe to Loki, Datadog, CloudWatch - Health check -
curl http://127.0.0.1:3001/api/healthreturns 200 when the stack is live - Status command -
slackhive statusreports process state and ports