Self-Hosting Guide
Run DocuGardener on your own infrastructure — completely free under the AGPL-3.0 license.
DocuGardener is released under the GNU Affero General Public License v3.0 (AGPL-3.0). You can clone the repository, deploy it on your own servers, and use every feature without paying a license fee. The SaaS at docugardener.dev exists for teams who prefer a managed, zero-ops experience.
When to Self-Host vs. Use SaaS
| Consideration | Self-Hosted | SaaS |
|---|---|---|
| Data residency | Full control — deploy anywhere | EU (Hetzner) |
| Air-gapped networks | Supported (use Ollama for LLM) | Not possible |
| Operational burden | You manage infra, backups, upgrades | Zero-ops |
| Cost | Free (your infra costs only) | Free / $29 / $79 per month |
| LLM choice | Any provider including local Ollama | BYOK — bring your own key |
| Plan limits | None (set QUOTA_OVERRIDE=unlimited) | Per plan tier |
Architecture Overview
DocuGardener is composed of two planes that communicate over a shared PostgreSQL database and Redis message queue:
Control Plane
Next.js App Router application with Prisma ORM. Handles authentication (NextAuth), the dashboard UI, GitHub App management, team/RBAC, and billing. Connects to PostgreSQL.
Analysis Plane
Python FastAPI service with RQ (Redis Queue) workers. Receives GitHub webhooks, clones repositories, performs AST parsing, generates vector embeddings (Weaviate), and runs LLM-powered drift analysis. Connects to PostgreSQL, Redis, and Weaviate.
Deployment Modes
| Mode | Best For | Guide |
|---|---|---|
| Development (Docker Compose) | Local development, evaluation, small teams | Docker Compose guide |
| Production (VPS + Caddy) | Single-server production, small to medium teams | Coming soon |
| Enterprise (Kubernetes / Helm) | High availability, horizontal scaling, enterprise compliance | Coming soon |
Removing Plan Limits
Self-hosted installations can remove all plan-based quotas by setting a single environment variable:
QUOTA_OVERRIDE=unlimited
With this set, there are no limits on the number of PR analyses, repositories, or team seats regardless of the plan tier shown in the dashboard.