GitLab · GitHub · Gitea · Forgejo · Bitbucket · Bitbucket Server · Azure DevOps · Gerrit · Self-hosted

Code Review that keeps your
team in sync

Automatic reviews on every push. Smart diff visualization with move detection. Inline discussion, labels, approval workflow — works with GitLab, GitHub, Gitea, Forgejo, Bitbucket, Bitbucket Server, Azure DevOps and Gerrit.

app.codeveira.com/dashboard
Codeveira dashboard showing a list of open code reviews with commit messages, reviewer assignments and approval status badges Click to zoom
100%
Self-hosted, your data stays yours
<1s
CR created automatically on push
4+
Auth methods: password, OAuth, LDAP
Repositories, teams, reviewers

Everything your team needs
to review code confidently

From automated CR creation to advanced diff visualization — Codeveira covers the full review lifecycle.

Smart Diff Visualization

Advanced diff engine with move detection, token-level inline highlighting, long-line wrapping, and per-file side-by-side view. Syntax highlighting for 30+ languages — Ruby, JS, TS, Python, Go, Java, PHP, C#, SQL, YAML and more — coloured server-side with Rouge, theme-safe inline styles.

Syntax highlighting Move detection Inline diffs Side by side 30+ languages

8-Platform Integration

Connect repositories from GitLab, GitHub, Gitea, Forgejo, Bitbucket Cloud, Bitbucket Server, Azure DevOps or Gerrit with an access token. Live commit and diff fetching via each platform's API. Webhook-powered automatic CR creation on every push.

GitLab GitHub Gitea & Forgejo Bitbucket Bitbucket Server Azure DevOps Gerrit Webhooks

Inline Comments & Threads

Comment on any diff line — added, removed, or modified. Reply threads keep discussions organized. Comments on removed lines are correctly tracked with negative line references to avoid collisions.

Per-line comments Reply threads General comments

Labels & Resolution

Categorize comments with custom color-coded labels — create them per repository. Mark comments as resolved with a single click; resolved comments gray out so reviewers focus on what's still open.

Custom labels Resolve toggle Progress tracking

Review Workflow

Assign multiple reviewers per CR. Each reviewer independently approves or rejects. The CR auto-transitions to approved when all reviewers agree. Email notifications and real-time in-app alerts at every step.

Approve / Reject Auto-status Email alerts In-app notifications

Dashboard & Analytics

Live statistics: open, approved, pending reviews. Filter CRs by status, reviewer, time range, label, or stale flag — all client-side with no page reload. Open CRs older than 7 days get an amber stale badge automatically.

Live stats Time & label filters Stale CR badge Comment browser

Source Badges

Every repository, commit and code review displays a colour-coded platform badge — so your team always knows at a glance which of the 8 supported platforms the code comes from. The repository list also lets you filter by platform, status, and whether there are open CRs — all client-side with no reload.

8-platform badges Active / Inactive status Repo list filters

Language Detection

Every commit and code review displays a GitHub-style language bar — a proportional breakdown of programming languages detected from the diff. Powered by file extension mapping with GitHub's official language colors.

Language bar Per-commit & per-CR GitHub colors

AI Reviewer

Add an AI bot as a reviewer on any code review. It analyzes the diff, detects programming languages, and posts inline comments with language-specific feedback. Works with Claude (Anthropic), OpenAI, DeepSeek, Gemini, Qwen, or any local model — Ollama, LM Studio, vLLM and other OpenAI-compatible servers. Each bot can run automatically on every commit or on-demand only.

Claude · OpenAI · DeepSeek · Gemini · Qwen Ollama · LM Studio Auto & manual trigger Inline comments Language-aware

Custom AI Prompts

Define and manage system prompt templates for your AI reviewer bots. Use {{languages}} and {{guidelines}} placeholders to inject language-specific guidelines automatically. Assign a different prompt to each bot — security-focused, style-only, or anything in between.

Template variables Per-bot assignment Built-in fallback

Webhook Delivery Log

Every incoming push event from every platform is logged in Settings → Webhook Deliveries — source, event type, status, timestamp, and error details. Failed deliveries can be retried with one click, re-enqueuing the original payload for reprocessing.

Delivery history Error details One-click retry All platforms

Slack & Teams Notifications

Send review events to Slack and Microsoft Teams via incoming webhooks. Configure both URLs in Settings → Chat Notifications. Notifications fire for new reviews, assignments, comments, approvals, and rejections — alongside existing email alerts.

Slack Microsoft Teams Incoming webhooks 5 event types

Audit Log

Every significant action is recorded in Settings → Audit Log — review status changes, comment operations, user management, repository changes, and settings updates. Each entry captures actor name, target, structured details, and real client IP (X-Forwarded-For aware). Filterable by actor and action category.

Append-only Actor & IP Filterable 17 action types

Cycle Time Metrics

Per-repository analytics at Repository → Metrics. Track how long code reviews take from creation to approval. See median, p90, and average cycle times; a distribution chart bucketed from <1h to >7d; and per-reviewer response time tables. Filter by 7d, 30d, 90d, or 1y.

Median & p90 Distribution chart Reviewer stats Time range filter

Prometheus Metrics & Grafana

Expose system health at GET /metrics in Prometheus text format — scrapeable directly by Grafana, Prometheus, or Grafana Agent. Create a service account in Settings, copy its token once, and configure it as a Bearer header in your datasource. Covers open/stale reviews, cycle times, webhook failures, comment activity and more.

Prometheus format Grafana ready Service accounts Bearer token auth

From push to approval
in four steps

Codeveira automates the entire code review lifecycle — your team focuses on the code, not the process.

1

Push to any Git platform

Developer pushes a branch. GitLab, GitHub, Gitea, Forgejo or Bitbucket fires a webhook to Codeveira automatically — or select commits manually from the live commit list.

2

CR Created Instantly

Codeveira fetches commits and diffs from the API, creates a Code Review, assigns reviewers from the repository team, sends email notifications.

3

Review & Discuss

Reviewers browse the diff, leave inline comments, add labels, reply to threads, mark issues as resolved.

4

Approve & Close

All reviewers approve → CR transitions automatically to Approved. Author gets notified and can close or merge.

Diffs that actually make sense

Most diff tools show moved code as deleted + added. Codeveira's best_match_offset algorithm detects that the code was relocated and pairs it correctly — with token-level change highlighting. Every file also has a side-by-side toggle to compare old and new side by side, and long lines wrap cleanly instead of scrolling off-screen.

app/services/pricing_service.rb  ·  modified
@@ -42,8 +42,14 @@ class PricingService
42
42
def calculate(tier, quantity)
43
base_price * quantity
43
+
if tier == :enterprise
44
+
apply_discount(base_price * quantity, 0.20)
45
+
else
43
46
*
base_price * quantity
47
+
end
44
48
end
Anna K. · 2 hours ago ⬤ logic ✓ Resolved
Move detection correctly paired this line — the discount logic wraps the original calculation rather than replacing it. LGTM.

* lines (purple) show code that was moved — paired by the move detection algorithm, not shown as deleted + added.

app.codeveira.com/repositories/panel/reviews/42
Codeveira combined diff view showing added and removed lines with move detection highlighting relocated code blocks Click to zoom

Connects to your existing stack

No vendor lock-in. Codeveira works with the infrastructure you already have.

GitLab

Webhooks, REST API v4, commit diffs, OAuth 2.0 login — full integration.

LDAP / Active Directory

Corporate directory authentication — no separate password management needed.

Email Notifications

SMTP-based alerts for new CRs, comments, approvals, and rejections. Runs alongside real-time in-app notifications.

Real-time Notifications

Red dot on the nav logo and (N) tab title prefix — updated every 5 s without page reload. Per-CR dots on the dashboard show exactly which reviews have new activity. Cleared automatically when you open the CR.

Slack

Send review events to any Slack channel via an incoming webhook. Configure the URL once in Settings — no restarts needed.

Microsoft Teams

Post review events to a Teams channel via an incoming webhook connector. Messages use the MessageCard format with a direct link to the review.

Self-hosted & Secure

Runs in Docker on your own infrastructure. Your code never leaves your servers.

MCP / Claude Code

Built-in Model Context Protocol server. Connect Claude Code or any MCP client to browse reviews, read diffs, and post comments directly from your editor — authenticated with a per-user API token.

Profile & Themes

Per-user profile page — change password, manage API token, and choose from 4 colour themes: Light, Dark, Dracula, and Nord. Theme persists in localStorage; system colour scheme respected on first visit. Nav bar button cycles through all themes instantly.

GitHub

Full integration — connect public and private repos via personal access token. Live commit fetching, diff API, webhook-powered auto CR creation on push.

Gitea

Self-hosted lightweight Git service. Gitea-compatible API — connect with a personal access token and instance URL.

Forgejo

Community-driven Gitea fork. Identical API — same setup as Gitea, full commit and diff fetching.

Bitbucket Cloud

Atlassian Bitbucket Cloud. Connect with an app password (workspace:password) — webhooks, commit fetching and diffs supported.

Bitbucket Server / DC

Self-hosted Bitbucket Server and Data Center. HTTP access token or Basic auth — supports all on-premises installations.

Azure DevOps

Cloud and on-premises Azure DevOps Server. Authenticate with a PAT (Code: Read) — webhooks via Service Hooks, full diff fetching.

Gerrit

Google's Gerrit code review server. Authenticate with HTTP credentials — uses the Gerrit webhooks plugin for push events and REST API for diffs.

See everything
at a glance

The dashboard shows live statistics across all repositories — open reviews, approvals, pending actions. Filter by status or reviewer. Click any comment count to instantly browse that review's entire discussion without navigating away.

  • Defaults to Open — no noise from closed reviews
  • Resolved/total comment counter per CR
  • Click comments to open a thread browser modal
  • Reviewer avatar badges with approval status
app.codeveira.com/dashboard
Codeveira dashboard overview with statistics panels: open reviews count, approvals, pending actions, and a commit list grouped by repository Click to zoom

Ready to streamline your
code review process?

Self-hosted, works with GitLab, GitHub, Gitea, Forgejo & Bitbucket — built for teams that care about code quality.

Frequently asked questions

Does Codeveira work with self-hosted GitLab instances?
Yes. Codeveira connects to any GitLab instance — cloud (gitlab.com) or self-hosted — using the GitLab REST API v4 and webhooks. You configure the URL and an API token per repository. No access to your source code leaves your infrastructure.
How do I install Codeveira with Docker?
Codeveira ships as a Docker Compose stack (Rails app + PostgreSQL + Redis + Sidekiq). Copy .env.example to .env, fill in your GitLab URL and credentials, then run docker compose up -d. The app is ready on port 3000 in under a minute.
Can I use LDAP or Active Directory for login?
Yes. Set the LDAP_HOST, LDAP_BASE, LDAP_BIND_DN and related variables in your .env file. Codeveira will authenticate users against your directory and create their accounts automatically on first login. Password login and GitLab OAuth can be used alongside LDAP.
Is GitHub integration available?
Yes, GitHub integration is fully available. Add a GitHub repository by selecting GitHub as the source, entering the owner/repo path and a personal access token with Contents: Read permission. Codeveira fetches commits and diffs live from the GitHub API. For automatic CR creation on push, set up a webhook in your GitHub repository settings pointing to /webhooks/github.
Does Codeveira support Gitea, Forgejo or Bitbucket?
Yes — all three are fully supported:

Gitea & Forgejo: Select the platform as source, enter your instance URL (e.g. https://gitea.example.com), the owner/repo path and a personal access token. Webhooks go to /webhooks/gitea or /webhooks/forgejo.

Bitbucket Cloud: Select Bitbucket, enter the workspace/repo path and an app password in username:password format (or a repository access token). Webhooks go to /webhooks/bitbucket with event repo:push.
Does Codeveira support Bitbucket Server, Azure DevOps or Gerrit?
Yes — all three are fully supported:

Bitbucket Server / Data Center: Select Bitbucket Server, enter your instance URL (e.g. https://bitbucket.example.com), path as PROJECTKEY/repo-slug, and an HTTP access token (or username:password). Webhook event: repo:refs_changed/webhooks/bitbucket_server.

Azure DevOps: Select Azure DevOps, enter path as organization/project/repository and a PAT with Code: Read permission. For on-premises Azure DevOps Server set the instance URL. Set up a Service Hook (Web Hooks, Code pushed) pointing to /webhooks/azure.

Gerrit: Select Gerrit, enter your instance URL, the Gerrit project name, and HTTP credentials (username:http_password from Gerrit Settings). Install the gerrit-webhooks plugin and configure a ref-updated event to /webhooks/gerrit.
How does the AI Reviewer work?
The AI Reviewer is a bot user that analyzes the diff and posts inline comments. It supports multiple providers:

Anthropic Claude — add an API key and select a Claude model (Sonnet, Haiku, Opus).
OpenAI — add an OpenAI API key and select a GPT model (GPT-4o, o1-mini, …).
DeepSeek — add a DeepSeek API key and select deepseek-chat or deepseek-reasoner.
Google Gemini — add a Gemini API key and select a Gemini model (2.0 Flash, 1.5 Pro, …).
Qwen / Tongyi — add a DashScope API key and select a Qwen model.
OpenAI-compatible / local models — point the bot at any server that speaks the OpenAI /v1/chat/completions format: Ollama, LM Studio, LocalAI, vLLM, OpenRouter. No API key required for Ollama or LM Studio.

Each bot has a trigger mode: Auto — runs automatically when added to a CR and re-runs on every new commit added to that CR. Manual — only runs when you click Run on the review page (useful for expensive models). Auto bots also have a Re-run button for on-demand re-execution.

Create a bot in Settings → Users → 🤖 New AI Reviewer.
Can I customise the prompt the AI reviewer uses?
Yes. Go to Settings → AI Prompts to create and manage system prompt templates. Each template supports two placeholders: {{languages}} (replaced with the detected language list at review time) and {{guidelines}} (replaced with language-specific review guidelines). You can then assign a specific prompt to each AI reviewer bot — different bots can use different prompts. A built-in default prompt is always available as a fallback; it cannot be deleted.
Does Codeveira send my source code to any external service?
It depends on which AI provider you choose. If you use a cloud provider (Anthropic Claude, OpenAI, DeepSeek, Google Gemini, or Qwen), the diff of each reviewed commit is sent to that provider's API. If you use a local model (Ollama, LM Studio, etc.), the diff stays entirely on your own machine — nothing leaves your infrastructure. Everything else — commits, comments, user accounts — always stays local regardless of the provider. Codeveira never sends telemetry or phones home.