Server commands
Thekonduktor-server binary manages the backend:
Data directory
All Konduktor data lives under~/.konduktor/ by default:
| Path | Purpose |
|---|---|
~/.konduktor/konduktor.db | SQLite database |
~/.konduktor/credentials | Server auth credentials |
~/.konduktor/server.log | Server log |
~/.konduktor/github-app.json | GitHub App config (if configured) |
~/.konduktor/github-app.pem | GitHub App private key (if configured) |
~/.konduktor/cli.json | CLI authentication token |
~/.konduktor/workspaces/ | Cloned workspace repositories |
~/.konduktor/workspaces/<workspace>/ | Individual workspace directory |
~/.konduktor/workspaces/<workspace>/sessions/ | Session JSONL log files |
KONDUKTOR_DIR environment variable:
Environment variables
| Variable | Default | Purpose |
|---|---|---|
KONDUKTOR_DIR | ~/.konduktor | Data directory path |
KONDUKTOR_EXTERNAL_URL | (none) | Public URL for UI, allows for agents to create working links in external services (e.g. GitHub PR descriptions) |
KONDUKTOR_UI_DIR | (auto-detected) | Path to the built UI dist/ directory |
Running as a systemd service (Linux)
The one-liner install script creates a systemd unit at/etc/systemd/system/konduktor.service. Common operations:
- Auto-restart on failure (5-second delay)
- Read-only filesystem with write access only to
~/.konduktor - Process isolation (
NoNewPrivileges=true)
Running on macOS
macOS doesn’t use systemd. Start the server manually:/Users/<YOU> with your actual home directory path.
Reverse proxy (nginx)
The install script optionally configures nginx. To set it up manually:Upgrade and Connection headers are required for SSE log streaming to work correctly.
For HTTPS, use certbot:
Exposing for webhooks (development)
If your server isn’t publicly accessible and you want to use GitHub webhooks, you’ll need to use a tunneling service like Cloudflare Tunnel, ngrok, or zrok:/api/webhooks/github.
Database
Konduktor uses SQLite in WAL mode for concurrent read/write access. The database is at~/.konduktor/konduktor.db.
Migrations run automatically on server startup. To run them manually:
~/.konduktor directory to ensure you have a complete backup of all your data.
Background processes
The server runs several background tasks:| Process | Interval | Purpose |
|---|---|---|
| Stuck detector | 2 min | Kills agent sessions with no output for 2 hours |
| Orphan detector | 10 min | Finds and kills processes not tracked by any session |
| Worktree cleaner | 30 min | Removes orphaned git worktrees older than 24 hours |
| Conflict checker | 1 min | Detects merge conflicts in active PR branches |
Health check
Resource metrics
Logging
Server logs go to both stderr (or systemd journal) and~/.konduktor/server.log (10 MB, 3 rotated backups).