Troubleshooting
Common issues and their solutions.
"tmux not found" or "tmux: command not found"
Symptom: Crux fails to start with an error about tmux not being found.
Cause: tmux is not installed or not in your PATH.
Fix: Install tmux with your system package manager:
# Debian / Ubuntu
sudo apt install tmux
# macOS
brew install tmux
# Arch Linux
sudo pacman -S tmux
# Fedora
sudo dnf install tmux
Verify with tmux -V.
"no phase specs found"
Symptom: Commands like crux phase list or crux start report no phase specs.
Cause: The project has not been initialized, or the phases.spec_dir config points to a directory without PHASE*.md files.
Fix: Run crux init to create the project structure, or verify that your docs/phases/ directory contains phase spec files:
crux init
# or
crux init --example httpapi
Check your config:
grep spec_dir .crux/config.yaml
ls docs/phases/PHASE*.md
"agent not responding" or agent appears stuck
Symptom: The orchestrator reports an agent as unresponsive, or the agent pane shows output but the orchestrator does not detect it.
Cause: The plugin's detection regex does not match the agent's actual output format. This often happens with updated CLI versions that change their prompt format.
Fix:
-
Attach to the agent's tmux session to see its actual output:
tmux attach -t crux-engineer-1 -
Check what the agent is showing and compare with the plugin's detection patterns.
-
For custom plugins, update the regex patterns in your config:
generic_plugins:
my-tool:
ready_pattern: "^> $" # Must match the actual prompt
"rate limited" or commands being blocked
Symptom: Agent commands are blocked with rate limit messages in the audit log.
Cause: The agent is exceeding the configured commands-per-minute or files-per-session limit.
Fix: Increase the limits in .crux/config.yaml:
security:
max_cmds_per_min: 120 # default: 60
max_files_per_session: 200 # default: 100
Check the audit log for details:
crux audit list --since 1h
"database is locked" or SQLite errors
Symptom: Errors mentioning database lock or SQLite busy when running multiple commands.
Cause: Multiple processes attempting to write to the SQLite database simultaneously. SQLite uses WAL mode, but concurrent write contention can still occur.
Fix:
- Make sure only one
crux startinstance is running at a time. - If the issue persists after stopping all instances, the lock file may be stale:
ls -la .crux/memory.db* - Stop all crux processes and remove the WAL/SHM files (the data is safe):
rm -f .crux/memory.db-wal .crux/memory.db-shm
"vector search returns no results"
Symptom: crux decisions search returns empty results even though decisions have been recorded.
Cause: The embedding provider is not configured or not running. Without embeddings, vector search has no indexed data.
Fix:
-
Check your embedding config:
memory:
embedding_provider: chromem-default # or "ollama"
embedding_model: nomic-embed-text -
If using
ollama, make sure the Ollama server is running and the model is pulled:ollama list
ollama pull nomic-embed-text -
The
chromem-defaultprovider requires no setup and works out of the box. -
Try a full-text search instead (uses FTS5, always available):
crux decisions search "your query"