Troubleshooting Guide
Common issues and solutions for Sibyl deployments.
Connection Issues
Cannot Connect to API
Symptoms:
- Connection refused on port 3334
- Frontend shows "Cannot connect to server"
Solutions:
Check if server is running:
bash# Docker Compose docker compose ps # Kubernetes kubectl get pods -n sibylCheck server logs:
bash# Docker Compose docker compose logs backend # Kubernetes kubectl logs -n sibyl -l app.kubernetes.io/component=backendVerify port binding:
bash# Check what's listening lsof -i :3334 netstat -tlnp | grep 3334Check firewall rules (if applicable)
Database Connection Errors
SurrealDB Connection Refused:
surrealdb error: connection refusedSolutions:
Verify SurrealDB is running:
bashdocker compose ps surrealdb kubectl get pods -n sibyl -l app=surrealdbCheck connection settings:
bash# Environment variables echo $SIBYL_SURREAL_URLTest direct connection:
bashcurl http://localhost:8000/health
Authentication Issues
Forbidden After Login
Symptoms:
- API response includes
"error": "forbidden". - Response body says
"Invalid request data."with remediation to check organization or project permissions. - Login or refresh succeeds, but the next project, search, admin, or MCP request fails.
What it usually means:
The client has a valid Sibyl session, but the request does not match the user's organization, project, memory-space, or admin permissions. This is different from an OIDC provider problem. In the default install, OIDC is off and local auth is expected.
Solutions:
Confirm the intended auth mode:
bashecho $SIBYL_LOCAL_AUTH_ENABLED echo $SIBYL_PUBLIC_SIGNUPS_ENABLED echo $SIBYL_OIDCDefault local installs should have local auth enabled, public signups disabled, and no OIDC providers.
For a new default install, complete setup first.
The first setup signup creates the owner/admin user. After setup, additional users need an invite unless
SIBYL_PUBLIC_SIGNUPS_ENABLED=true.Check the active CLI context and token owner:
bashsibyl context sibyl auth status sibyl whoamiFor project-scoped failures, switch to a project the user can access or ask an owner/admin to add the membership.
For enterprise SSO, verify the IdP role claim emits
Sibyl.Member,Sibyl.Admin, orSibyl.Owner.
JWT Token Invalid
Symptoms:
- 401 Unauthorized responses
- "Invalid token" errors
Solutions:
Check JWT secret is set:
bash# Should be non-empty echo $SIBYL_JWT_SECRETVerify token hasn't expired:
- Default access token TTL: 60 minutes
- Use refresh token to get new access token
Check clock synchronization:
- JWT validation requires synchronized clocks
- Server and client should have correct time
GitHub OAuth Failing
Symptoms:
- "OAuth error" after GitHub redirect
- Missing callback URL
Solutions:
Verify OAuth credentials:
bashecho $SIBYL_GITHUB_CLIENT_ID echo $SIBYL_GITHUB_CLIENT_SECRETCheck callback URL in GitHub:
- Must match
SIBYL_PUBLIC_URL/api/auth/github/callback - Example:
https://sibyl.local/api/auth/github/callback
- Must match
Verify public URL:
bashecho $SIBYL_PUBLIC_URL
Performance Issues
Slow Queries
Symptoms:
- API responses taking > 5 seconds
- Timeouts on graph operations
Solutions:
Check graph size:
bashcurl -H "Authorization: Bearer $TOKEN" \ https://sibyl.local/api/admin/statsLimit query results:
- Use
limitparameter on list endpoints - Paginate large result sets
- Use
High Memory Usage
Symptoms:
- OOMKilled pods in Kubernetes
- Container restarts
Solutions:
Increase resource limits:
yamlbackend: resources: limits: memory: 2Gi requests: memory: 512MiCheck for memory leaks:
bashkubectl top pods -n sibylReduce worker or API concurrency for memory-constrained pods.
Worker Queue Backlog
Symptoms:
- Jobs not completing
- Crawl tasks stuck
Solutions:
Check worker status:
bashkubectl logs -n sibyl -l app.kubernetes.io/component=worker -fScale workers:
bashkubectl scale deployment sibyl-worker -n sibyl --replicas=3Check Redis when the opt-in coordination backend is enabled:
bashredis-cli -h localhost -p 6381 -n 1 KEYS "*"
Port Conflicts
Local Data-Service Port Conflict
Error: SurrealDB or the optional Redis coordination profile cannot bind its port
Solutions:
Find conflicting process:
bashlsof -i :8000 lsof -i :6381Change port in compose:
Set
SIBYL_SURREAL_PORTorSIBYL_REDIS_PORTbefore starting Docker Compose.Update environment:
bashSIBYL_SURREAL_URL=ws://127.0.0.1:<surreal-port>/rpc
Kubernetes-Specific Issues
Pods Stuck in Pending
Solutions:
Check node resources:
bashkubectl describe nodes kubectl top nodesCheck resource requests:
bashkubectl describe pod <pod-name> -n sibylReduce resource requests:
yamlresources: requests: cpu: 50m # Reduce from 100m memory: 128Mi # Reduce from 256Mi
Pods CrashLoopBackOff
Solutions:
Check logs:
bashkubectl logs <pod-name> -n sibyl --previousCheck events:
bashkubectl get events -n sibyl --sort-by='.lastTimestamp'Common causes:
- Missing secrets
- Database not ready
- Port already bound
Historical Archive Rehearsal Database Unavailable
Solutions:
Confirm the external rehearsal database is reachable:
bashpsql "postgresql://$SIBYL_POSTGRES_USER:$SIBYL_POSTGRES_PASSWORD@$SIBYL_POSTGRES_HOST:$SIBYL_POSTGRES_PORT/$SIBYL_POSTGRES_DB" -c 'select 1'Confirm the retained archive contains the database dump sidecar:
bashtar -tzf migration-archive.tar.gz | grep postgres.sqlRun restore only in explicit rehearsal mode with
--restore-database-dump --source-type legacy-archive --target-mode postgres-rehearsal.
Kong Gateway Issues
Solutions:
Check Kong operator:
bashkubectl get pods -n kong-systemCheck gateway:
bashkubectl get gateway -n kong kubectl describe gateway sibyl-gateway -n kongCheck dataplane:
bashkubectl get pods -n kong kubectl logs -n kong -l app=dataplane-sibyl-gatewayCheck HTTPRoutes:
bashkubectl get httproute -n sibyl kubectl describe httproute sibyl-api -n sibyl
Tilt-Specific Issues
Tilt Stuck on Resource
Solutions:
Check Tilt logs:
- Click on stuck resource in Tilt UI
- Look for error messages
Trigger manual rebuild:
bashtilt trigger <resource-name>Full reset:
bashtilt down # If using Minikube: minikube delete minikube start --cpus=4 --memory=8192 # If using OrbStack: restart via OrbStack app or `orb restart`) tilt up
Can't Access sibyl.local
Solutions:
Check /etc/hosts:
bashgrep sibyl.local /etc/hosts # Should show: 127.0.0.1 sibyl.localCheck Caddy is running:
- Look for
caddy-proxyin Tilt UI
- Look for
Check Kong port-forward:
- Look for
kong-port-forwardin Tilt UI
- Look for
Trust Caddy CA (macOS):
bashsudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain \ ~/.local/share/caddy/pki/authorities/local/root.crt
Getting Help
If you're still stuck:
Check logs thoroughly:
bash# All logs with timestamps kubectl logs -n sibyl --all-containers --timestamps -l app.kubernetes.io/name=sibylDescribe resources:
bashkubectl describe pod <pod-name> -n sibyl kubectl describe deployment <deploy-name> -n sibylCheck events:
bashkubectl get events -n sibyl --sort-by='.lastTimestamp' | tail -50File an issue:
- Include logs and error messages
- Describe reproduction steps
- Include environment details (OS, K8s version, etc.)
