Self-hosted Git platform with event-driven CI/CD capabilities.
GitForge is a self-hosted Git service that provides Git hosting, CI/CD pipeline orchestration, and job execution — similar in scope to GitHub Actions, but operated on your own infrastructure.
| I want to... | Go to... |
|---|---|
| Get started quickly | docs/DEPLOYMENT.md |
| Deploy with Docker | docs/DEPLOYMENT.md#docker-compose |
| Understand the architecture | docs/ARCHITECTURE.md |
| Run locally | docs/RUNBOOK.md |
| API reference | docs/API.md |
| Contribute | docs/CONTRIBUTING.md |
- Git Hosting — Git server with SSH and HTTP protocol support
- Event-Driven CI/CD — Pipeline automation triggered by Git events
- AI Code Review — Review runs with per-commit findings over the diff
- Sandbox Execution — Job isolation via Docker containers
- Artifact Storage — Build artifact and cache management
- REST API — Full API for integration with other tools and the
gitforgeCLI - Prometheus Metrics — Built-in observability
- Cross-Platform — Linux, macOS, and Windows binaries
┌─────────────────────────────────────────────────────┐
│ GitForge │
├─────────────┬─────────────────┬─────────────────────┤
│ Git Server │ CI Engine │ Runner Agent │
│ (SSH/HTTP) │ (Scheduler) │ (Sandbox/Docker) │
└─────────────┴─────────────────┴─────────────────────┘
| Service | Port | Description |
|---|---|---|
| API Gateway | 42780 | REST API server |
| CI Orchestrator | 42781 | Pipeline execution + Scheduler API |
| Git HTTP | 42782 | Git over HTTP |
| Git SSH | 42022 | Git over SSH |
| Runner Agent | Dynamic | Executes CI jobs in Docker |
# Build everything
make build # or: cargo build --release
# Run the test suite and quality gates
make test
make lint
# Start the stack with Docker Compose (requires .env — see below)
cp .env.example .env # then set JWT_SECRET and the scheduler token
docker-compose up -d
# Bootstrap the first administrator, then log in
./target/release/gitforge admin --bootstrap
./target/release/gitforge auth --loginThe compose stack requires environment variables from
.env(DOCKER_GID,GITFORGE_WORKSPACE_HOST_DIR,GITFORGE_SCHEDULER_TOKEN,JWT_SECRET). Services are configured exclusively through the environment — there is noconfig.toml. Running binaries directly needs at leastJWT_SECRET(API) andGITFORGE_SCHEDULER_URL(runner); see the Runbook for the full table.
| Category | Documents |
|---|---|
| User Guides | Deployment · Runbook · API Reference |
| Architecture | Architecture Overview · Hooks · Testing Strategy |
| Development | Contributing · Branch Strategy |
| Project | Changelog · Security · Release readiness · CI runner trust policy |
GitForge/
├── crates/ # Core libraries
│ ├── gitforge-api/ # REST API (axum router + routes)
│ ├── gitforge-ci/ # CI pipeline engine + DAG
│ ├── gitforge-scheduler/ # Durable job scheduler
│ ├── gitforge-core/ # Git protocol handlers
│ ├── gitforge-review/ # AI review domain (diff scan, findings)
│ └── ...
├── services/ # Binary services
│ ├── api/ # API gateway
│ ├── ci/ # CI orchestrator (+ scheduler API)
│ ├── git-server/ # Git SSH/HTTP server
│ └── runner/ # Job runner agent
├── docs/ # Documentation
└── .github/ # CI workflows
MIT License