Which programming languages does BugViper support?
Which programming languages does BugViper support?
BugViper uses Tree-sitter to parse source code into ASTs, and ships parsers for 17 languages:
Files in unsupported languages are skipped during ingestion and excluded from code graph queries and reviews.
| Language | Language | Language |
|---|---|---|
| Python | TypeScript | JavaScript |
| Go | Rust | Java |
| C++ | C | C# |
| Ruby | PHP | Swift |
| Kotlin | Scala | Haskell |
| Lua | Bash |
Why didn't BugViper post any review comments on my PR?
Why didn't BugViper post any review comments on my PR?
Several conditions must be true before BugViper posts an inline comment:
- The repository must be indexed. BugViper won’t review a PR unless the repo has been ingested first. If it isn’t, BugViper posts a message on the PR explaining this.
- Issues must meet the confidence threshold. BugViper filters out findings with a confidence score below 7/10. A review that finds no high-confidence issues will post a walkthrough summary but no inline comments.
- You must mention
@bugviperin a PR comment. Webhooks only trigger a review when someone explicitly calls@bugviper reviewor@bugviper full review. Opening a PR alone does not trigger a review.
200 response.How do I re-index a repository after making large changes?
How do I re-index a repository after making large changes?
For large refactors or after adding many new files, trigger a full re-ingestion to rebuild the graph from scratch:Setting
"clear_existing": true removes all existing graph nodes for the repository before re-ingesting. Alternatively, use the Re-ingest button in the BugViper dashboard if you have one configured.For smaller incremental changes — like a single push to a branch — BugViper handles those automatically through the push webhook without a full re-index.Can I use BugViper with private repositories?
Can I use BugViper with private repositories?
Yes. BugViper uses a GitHub App for all repository access, and GitHub Apps can be granted access to private repositories. When you install your GitHub App, choose Only select repositories and add the private repos you want BugViper to work with.BugViper clones repositories using the App’s installation token, which respects the access you granted. No personal access tokens or SSH keys are needed.
What happens if an ingestion job fails?
What happens if an ingestion job fails?
You can check the status of any ingestion job using its job ID:The response includes a
status field (pending, running, completed, or failed) and an error_message field that describes what went wrong.Common causes of ingestion failures:- Invalid GitHub credentials — the GitHub App private key or App ID is wrong
- Neo4j connection issues — the database is unreachable or the credentials are incorrect
- Repository not found — the App may not have been granted access to that repository
pending or dispatched for more than 10 minutes are automatically marked stale. You can safely re-trigger ingestion for a stale job and a new one will be created.Does BugViper store my source code?
Does BugViper store my source code?
Yes. When you ingest a repository, BugViper stores the full source code of each file as a property on the corresponding
File node in your Neo4j graph. This is what enables code search, the peek viewer, and the AI review agent’s ability to look up functions, callers, and dependencies during a review.Only repositories you explicitly ingest are stored. BugViper does not scan or store repositories on its own.Your Neo4j database is the authoritative store — you can delete a repository and all its graph data at any time using DELETE /api/v1/repos/{owner}/{repo}.How much does a review cost?
How much does a review cost?
Cost depends on the model you configure and the number of changed files in the PR.
You can reduce cost in two ways:
| Model | Approximate cost per file |
|---|---|
openai/gpt-4o-mini (default) | Very low |
openai/gpt-4o | Low to medium |
anthropic/claude-sonnet-4-5 | ~$0.12 per file (~6,500 tokens) |
- Lower
MAX_TOOL_ROUNDS— the default is8; setting it to4or5cuts exploration tokens roughly in half while still catching most issues. - Use a cheaper model for synthesis — set
SYNTHESIS_MODEL=openai/gpt-4o-minieven if you use a more capable model forREVIEW_MODEL.
Can I use a different LLM provider?
Can I use a different LLM provider?
BugViper uses OpenRouter as its LLM gateway, which gives you access to 200+ models from OpenAI, Anthropic, Google, Meta, Mistral, and others — all through a single API key. You do not need separate accounts with each provider.To switch models, set BugViper’s synthesis phase uses robust JSON extraction that works with any model — it does not require structured-output API support, so you can freely experiment with newer or open-weight models.
REVIEW_MODEL and SYNTHESIS_MODEL in your .env to any valid OpenRouter model slug:Why is @bugviper not responding to my comment?
Why is @bugviper not responding to my comment?
If you posted
@bugviper review on a PR and nothing happened, work through this checklist:- Is the GitHub App installed on the repository? Go to your GitHub App settings → Install App and confirm the repo is listed.
- Is the webhook URL correct? In your GitHub App settings, check that the webhook URL points to
https://your-bugviper-domain.com/api/v1/webhook/onComment. - Was the webhook delivered? Open Recent Deliveries in your GitHub App settings. A failed delivery (non-
2xxstatus) indicates a server or network issue. - Has the repository been indexed? BugViper posts a message on the PR if the repo isn’t indexed — check the PR for that message.
- Is BugViper running? Confirm the API service is up and reachable from GitHub’s webhook IPs.