Automate the necessary-but-uncomfortable parts of software development

AI-Git-Bot turns engineering chores into repeatable, automated workflows — directly inside Gitea, GitHub, GitLab, and Bitbucket. Self-hostable. AI-agnostic. No Kubernetes required.

terminal — bash
$ git clone https://github.com/tmseidel/ai-git-bot.git
$ cd ai-git-bot
$ docker compose up -d # ← one command, that's it

Then open http://localhost:8080 — create your admin account and wire the first bot

The chores your team hates — automated

Every team has a list of "we know we should be doing this" engineering chores. AI-Git-Bot turns them into repeatable workflows that fire on Git events you're already producing.

🧾

Write Structured Issues

A writer bot inspects your vague bug report, reads related issues and repo context, asks the minimum clarifying questions — then produces a structured AI Created Issue with acceptance criteria. No more "clarify in DMs three days later."

🔍

Review Every PR Consistently

A review bot posts inline + summary feedback every time the bot is requested as reviewer. Large diffs are chunked. @bot mentions keep follow-up Q&A in the PR thread with full session memory.

🧪

Generate & Run E2E Tests Per PR

The Full-stack QA workflow plans user journeys from the diff, authors Playwright specs, deploys to a per-PR preview environment, runs the suite, and posts the report — then tears down on PR close.

🛠️

Implement Boring Follow-Up Issues

Assign an issue to a coding bot. It reads the source, drafts the change in a workspace, validates with your project's own build tooling (Maven / Gradle / npm / Go / Cargo / .NET), and opens a PR for review.

🔬

White-Box Unit Tests on Every PR

The AI Unit Tests workflow generates focused tests for the PR diff, runs them with the project's own runner, commits them onto the PR branch transparently, and posts the pass/fail + coverage report.

🧹

Tear Down Stale Previews Automatically

The PR-close lifecycle hook calls your deployment target's teardown action — webhook, MCP tool, CI workflow dispatch, or static no-op. Forgotten previews stop burning cluster budget and leaking data.

What the bot actually does

All shipped and tested. Every workflow is opt-in per bot — pick the chore that hurts most, wire one bot, done.

Workflow
Triggered by
Produces
PR Review
PR opened with bot as reviewer, or re-requested
Inline + summary review comments, chunked for large diffs
Interactive Q&A
@bot mention in PR comment or inline review thread
Threaded reply with file diff context and session memory
Issue → Code
Issue assigned to a coding bot
A pull request implementing the change, validated with your build tooling
Issue → Better Issue
Issue assigned to a writer bot
A structured AI Created Issue with acceptance criteria
AI Unit Tests
PR opened, or @bot generate-tests slash command
White-box unit tests committed to the PR branch, pass/fail + coverage report
Full-stack QA (E2E)
PR opened on a bot with an e2e-test workflow + deployment target
Generated Playwright suite, per-PR preview deploy, run report, teardown on close

💬 Slash commands in PR comments: @bot rerun-tests, @bot regenerate-tests <feedback>, @bot generate-tests, @bot rerun-unit-tests

Mix & match any AI provider with any Git platform

AI-Git-Bot is a gateway, not a script. Every Git platform plugs in through a RepositoryApiClient SPI. Every AI provider plugs in through an AiClient SPI. One admin UI, one PostgreSQL database, one set of encrypted credentials.

🤖 AI Providers — 5 ship today

Anthropic (Claude) OpenAI + Compatible Google Gemini Ollama (local LLMs) llama.cpp (GGUF)

Cloud providers need only an API key. Local LLMs (Ollama, llama.cpp) run on your own hardware — nothing leaves your infrastructure.

🔗 Git Platforms — 4 ship today

Gitea GitHub + Enterprise GitLab CE/EE Bitbucket Cloud

A single AI-Git-Bot instance serves mixed estates — GitHub for product, Gitea for embedded, Bitbucket for the legacy acquisition — all from one admin UI.

Screenshots across every Git platform

AI-Git-Bot works the same way everywhere — reviews, inline comments, E2E test reports, and coding agents across Gitea, GitHub, GitLab, and Bitbucket.

Gitea code review
Gitea — PR code review
GitHub code review
GitHub — Code review with comment
GitLab merge request review
GitLab — Merge request review
Bitbucket code review
Bitbucket — Code review
Gitea inline comment conversation
Gitea — Inline review conversation
Gitea PR with E2E test run
Gitea — Full-stack QA / E2E report
GitHub coding agent
GitHub — Coding agent implements an issue
GitLab coding agent
GitLab — Coding agent implements an issue

Up and running in 5 minutes

One Docker image, one PostgreSQL database, one admin UI. No Kubernetes required.

1

Clone and Start

git clone https://github.com/tmseidel/ai-git-bot.git && cd ai-git-bot && docker compose up -d

2

Open the Admin UI

Navigate to http://localhost:8080 and create your administrator account.

3

Connect AI & Git

Create an AI Integration (Anthropic, OpenAI, Ollama, …) and a Git Integration (Gitea, GitHub, GitLab, Bitbucket). API keys are encrypted at rest (AES-256-GCM).

4

Create a Bot

Create a bot combining one AI integration with one Git integration. Enable the workflows you want. Copy its unique Webhook URL.

5

Wire the Webhook

Configure the webhook in your Git provider. Done. Assign the bot as a reviewer on a PR — watch it post its first review.

Designed for production from day one

Adoption risk is the #1 reason AI-in-the-SDLC pilots die. Every design choice below exists to keep that risk near zero.

🔌

Opt-In Everywhere

Every workflow ships behind a prworkflow.<name>.enabled flag. Only review defaults to true. Nothing changes for repos you don't touch.

🔐

Encrypted at Rest

Every credential, webhook secret, and deployment-target config is encrypted with AES-256-GCM. API keys never appear in logs.

🛡️

Operator-Owned Tool Whitelists

Per-bot built-in tool whitelist + per-MCP-config tool whitelist. The admin decides what the agent can do — not the LLM, not the prompt.

🚫

No Silent Deploys

The bot triggers your existing CI — it never invents a deploy path. Four interchangeable DeploymentStrategy implementations keep deployment under your control.

📊

Fully Auditable

Every workflow run, step, and tool call is persisted. Micrometer meters (prworkflow.run_total, prworkflow.run_duration_seconds) exposed at /actuator/prometheus.

💰

Cost-Bounded

Workflow params expose hard caps (maxTestCases, maxRetries) and the agent loop honours the shared agent.budget.* token budget.

📦

Suite Promotion

Generated E2E tests don't evaporate on PR close. Four lifecycle modes (ephemeral, commit-to-pr, offer-as-pr, promote-on-merge) let tests graduate into the codebase under operator control.

🔄

Backwards Compatible

Every new column on bots is nullable. Existing bots without a WorkflowConfiguration keep running the legacy review workflow only. No migration drama.

Pick the chore that hurts most. Wire one bot. Done.

Self-hostable end-to-end, including local LLMs — nothing has to leave your infrastructure.