”Repository not indexed” comment on a PR
Symptom: After posting@bugviper review on a pull request, BugViper replies with a message saying the repository is not indexed and asking you to ingest it first.
Cause: BugViper checks whether the repository exists in your Neo4j graph before starting a review. If it doesn’t find a matching Repository node, it refuses to proceed.
Fix: Ingest the repository before triggering a review. You can do this from the BugViper dashboard or via the API:
completed status, then post @bugviper review again.
Ingestion job stuck in “pending” or “running”
Symptom: You triggered ingestion and the job ID shows apending or running status indefinitely — it never reaches completed or failed.
Cause: The worker process that executes ingestion jobs may have crashed or been restarted after the job was dispatched. BugViper automatically marks jobs that have been in pending or dispatched state for more than 10 minutes as stale.
Fix: Re-trigger the ingestion request. BugViper detects the stale job and allows a new one to be created for the same repository. If jobs continue to stall, check the BugViper API logs for error output and verify Neo4j is reachable using the connection URI in your environment configuration.
”Firebase not initialized” error
Symptom: BugViper fails to start or logs an error likeFirebase not initialized or Could not deserialize key data.
Cause: The SERVICE_FILE_LOC environment variable points to a file that doesn’t exist, can’t be read by the process, or contains invalid JSON.
Fix:
Regenerate the service account key
- Open the Firebase Console
- Navigate to Project Settings → Service Accounts
- Click Generate new private key and download the JSON file
- Move the file to a secure location outside your repository
”Neo4j connection refused”
Symptom: BugViper fails to start or API calls return errors mentioning Neo4j connection failure,ServiceUnavailable, or Connection refused.
Cause: Neo4j is not running, the NEO4J_URI points to the wrong host or port, or the credentials are incorrect.
Fix:
Verify your NEO4J_URI
For a local Docker instance, the URI should be:For Neo4j AuraDB, use the full
neo4j+s:// connection string from your Aura dashboard. Make sure you’re not mixing up the HTTP browser port (7474) with the Bolt protocol port (7687).GitHub webhook not received
Symptom: You push code or post a@bugviper review comment but BugViper takes no action and there is no entry in your GitHub App’s Recent Deliveries list, or deliveries show a non-2xx response.
Cause: The webhook URL in your GitHub App settings doesn’t match your running server. In local development, ngrok may not be running or the domain may have changed.
Fix:
Check Recent Deliveries in GitHub
Go to your GitHub App settings → Advanced → Recent Deliveries. If a delivery appears with a
5xx or connection error, your server is reachable but returning an error. If no delivery appears at all, GitHub cannot reach your server.Verify the webhook URL
In your GitHub App’s General settings, confirm the webhook URL is set to:For local development, this should be your ngrok URL (e.g.,
https://your-name.ngrok-free.app/api/v1/webhook/onComment).”Unrecognized command” response from @bugviper
Symptom: You mentioned@bugviper on a PR and BugViper replied with a message saying it doesn’t recognize the command and listing the valid options.
Cause: The comment body contains @bugviper but the text after it doesn’t exactly match review or full review. Common triggers include typos, extra punctuation, or the command appearing inside quoted text.
Fix: Post a new comment containing exactly one of the two supported commands:
Semantic search returns no results
Symptom: You run a semantic (vector) search query from the BugViper dashboard or API and receive an empty results list, even for queries that should match code in the repository. Cause: Embeddings were not generated during ingestion. The graph contains the code nodes, but they have no vector property, so the similarity search has nothing to match against. Fix: Generate embeddings for the already-indexed repository without re-running full ingestion:{owner} and {repo_name} with your repository’s owner and name. Embedding generation runs in the background and can take a few minutes for large repositories.
Embeddings use the
openai/text-embedding-3-small model via OpenRouter and generate 1,536-dimensional vectors stored in Neo4j vector indexes. Make sure your OPENROUTER_API_KEY has sufficient credits before triggering embedding generation.Review already running
Symptom: You post@bugviper review on a PR and BugViper replies that a review is already in progress and asks you to wait.
Cause: BugViper tracks review state in Firestore. If a review was triggered recently and is still in the RUNNING state, BugViper blocks new review requests on the same PR to prevent duplicate comment floods.
Fix: Wait for the current review to complete. BugViper posts a top-level summary comment to the PR when the review finishes. If no comment appears after 10 minutes, re-trigger the review by posting @bugviper review again — the previous job will have timed out by then and a new one can start.