Troubleshooting Guide
Purpose: Solve common problems when using Fulcrum Audience: Developers and operators experiencing issues Format: Problem-oriented with step-by-step solutions
Connection Issues
SDK Cannot Connect to Server
Symptoms:
- ConnectionRefusedError in Python
- ECONNREFUSED in TypeScript
- Timeout errors
Solutions:
-
Check server is running:
-
Verify endpoint configuration:
// TypeScript - check host format
const client = new FulcrumClient({
host: 'localhost:50051', // gRPC
// OR
restUrl: 'http://localhost:8080' // REST
});
-
Check firewall/network:
-
Verify API key (production):
MCP Server Not Appearing in Claude Desktop
Symptoms:
- Claude doesn't list fulcrum-governance as connected
- MCP tools not available
Solutions:
- Verify configuration file location:
| Platform | Location |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
-
Validate JSON syntax:
-
Check for common config mistakes:
Common issues: - Missing trailing comma in previous entry
- Using
http://instead ofhttps:// -
Placeholder API key not replaced
-
Restart Claude Desktop after config changes
-
Check Claude Desktop logs:
Policy Issues
Policy Not Triggering
Symptoms: - Actions allowed that should be blocked - Policy decisions not appearing in traces
Solutions:
-
Verify policy is enabled:
Check:"enabled": true -
Check policy scope matches:
-
Review policy priority:
- Higher priority policies evaluate first
- If an earlier policy returns ALLOW, others may not be checked
-
Use dashboard Traces to see evaluation order
-
Test policy directly:
Policy Blocking Unexpectedly
Symptoms:
- Legitimate actions denied
- DENY decision with unclear reason
Solutions:
-
Check trace details:
-
Review policy rules:
-
Common causes:
- Cost policy: accumulated cost exceeds limit
- Action filter: action name partially matches blocked pattern
-
Semantic policy: content triggers false positive
-
Adjust policy if needed:
Database Issues
Connection Pool Exhausted
Symptoms:
- too many clients already error
- Intermittent connection failures
- Slow query responses
Solutions:
-
Check current connections:
-
Identify connection leaks:
-
Increase pool size (if needed):
-
Ensure envelopes are closed:
Migration Failures
Symptoms:
- Server won't start
- relation does not exist errors
- Version mismatch warnings
Solutions:
-
Check migration status:
-
Re-run migrations:
-
For fresh start (development only):
Performance Issues
Slow Policy Evaluation
Symptoms:
- env.guard() takes > 100ms
- High P99 latency on traces
Solutions:
-
Check Redis cache:
Low hit ratio = policies not being cached -
Verify Redis connection in config:
-
Reduce policy complexity:
- Semantic policies are slowest (require LLM)
- Use simpler policy types when possible
-
Set appropriate priority to short-circuit evaluation
-
Check database query performance:
High Memory Usage
Symptoms: - OOM kills in Docker - Slow garbage collection
Solutions:
-
Check container limits:
-
Increase memory (if needed):
-
Check for memory leaks:
- Ensure envelopes are properly closed
- Monitor trace count growth
Cognitive Layer Issues
Semantic Judge Not Working
Symptoms:
- Semantic policies return ALLOW for everything
- Ollama connection errors in logs
Solutions:
-
Check Ollama is running:
-
Verify model is downloaded:
-
Pull model if missing:
-
Check Fulcrum config:
-
Test semantic evaluation:
Oracle Cost Predictions Inaccurate
Symptoms: - Predicted costs don't match actual - Cost policies trigger unexpectedly
Solutions:
-
Check model pricing is configured:
-
Update pricing if needed:
-
Report actual usage for calibration:
Docker Issues
Stack Won't Start
Symptoms:
- ./scripts/start-stack.sh fails
- Container exit codes non-zero
Solutions:
-
Run preflight checks:
-
Check port conflicts:
-
Clean up stale containers:
-
Check Docker resources:
Container Keeps Restarting
Symptoms:
- Service shows Restarting status
- Exit code in logs
Solutions:
-
Check container logs:
-
Common causes:
- Database not ready: Check depends_on and healthcheck
- Missing environment variables: Review .env file
- Port already in use: Check for conflicts
Getting More Help
Collect Diagnostic Information
Before reporting an issue, gather:
# System info
docker --version
docker compose version
go version # if building from source
# Container status
docker compose -f docker-compose.unified.yml ps
# Recent logs
docker compose -f docker-compose.unified.yml logs --tail=100 > fulcrum-logs.txt
# Health check
curl http://localhost:8080/health > health.json
Support Channels
| Channel | Use For |
|---|---|
| GitHub Issues | Bug reports, feature requests |
| Documentation | Guides and reference |
| support@fulcrumlayer.io | Enterprise support |
Reporting Bugs
Include:
1. Fulcrum version (curl http://localhost:8080/version)
2. Steps to reproduce
3. Expected vs actual behavior
4. Relevant logs (sanitized of secrets)
5. Environment (OS, Docker version, cloud provider)
Document created: 2026-02-01 Diataxis category: How-to Guide (task-oriented)