|
Some checks failed
Build and Release / Lint (push) Successful in 2m25s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 52s
Build and Release / Unit Tests (push) Failing after 3m0s
Build and Release / Build Binaries (amd64, darwin) (push) Failing after 54s
Build and Release / Build Binaries (amd64, linux) (push) Failing after 54s
Build and Release / Build Binaries (amd64, windows) (push) Failing after 59s
Build and Release / Build Binaries (arm64, darwin) (push) Failing after 58s
Build and Release / Build Binaries (arm64, linux) (push) Failing after 1m1s
These tests have pre-existing issues with git operations timing out and are not related to GitCaddy changes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .devcontainer | ||
| .gitcleaner | ||
| .gitea | ||
| .github | ||
| assets | ||
| build | ||
| cmd | ||
| contrib | ||
| custom/conf | ||
| docker | ||
| docs | ||
| models | ||
| modules | ||
| options | ||
| public | ||
| routers | ||
| sdk | ||
| services | ||
| snap | ||
| templates | ||
| tests | ||
| tools | ||
| web_src | ||
| .air.toml | ||
| .changelog.yml | ||
| .dockerignore | ||
| .editorconfig | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .gitpod.yml | ||
| .golangci.yml | ||
| .ignore | ||
| .mailmap | ||
| .markdownlint.yaml | ||
| .npmrc | ||
| .spectral.yaml | ||
| .yamllint.yaml | ||
| ai_enhancements.md | ||
| BSDmakefile | ||
| CHANGELOG-archived.md | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| crowdin.yml | ||
| DCO | ||
| Dockerfile | ||
| Dockerfile.rootless | ||
| enhancements.md | ||
| eslint.config.ts | ||
| eslint.json.config.ts | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main_timezones.go | ||
| main.go | ||
| MAINTAINERS | ||
| Makefile | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| pyproject.toml | ||
| README.md | ||
| README.zh-cn.md | ||
| README.zh-tw.md | ||
| SECURITY.md | ||
| stylelint.config.ts | ||
| suggestions.md | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| types.d.ts | ||
| updates.config.ts | ||
| uv.lock | ||
| vitest.config.ts | ||
| webpack.config.ts | ||
GitCaddy
The AI-native Git platform. Self-hosted, fast, and designed for the age of AI-assisted development.
What is GitCaddy?
GitCaddy transforms Git hosting into an AI-ready platform. While traditional Git servers treat AI tools as an afterthought, GitCaddy is built from the ground up with structured APIs, capability discovery, and intelligent context that AI assistants need to write correct code, generate valid CI/CD workflows, and understand your projects deeply.
Key differentiators:
- V2 API - Modern, AI-optimized endpoints with batch operations, streaming, and structured errors
- Runner Capability Discovery - AI tools query runner capabilities before generating workflows
- Action Compatibility Database - Curated compatibility matrix prevents workflow errors
- AI Context APIs - Rich, structured repository and issue intelligence
- Workflow Validation - Pre-flight checks for CI/CD workflows before commit
Features
V2 API - Modern, AI-Optimized Interface
A complete API redesign focused on AI tool consumption:
| Feature | Description |
|---|---|
| Batch Operations | Fetch up to 100 files in a single request |
| Streaming | NDJSON streams for progressive processing |
| Idempotency | Built-in support for safe request retries |
| Structured Errors | Machine-readable error codes, not just HTTP status |
| Request Tracking | Every request gets a unique ID for debugging |
| Health Checks | Kubernetes-compatible liveness/readiness probes |
| Operation Progress | Server-Sent Events for long-running operations |
GET /api/v2/batch/files # Bulk file retrieval
POST /api/v2/stream/files # NDJSON streaming
GET /api/v2/operations/{id} # Operation status
GET /api/v2/health/ready # Readiness probe
AI Context APIs - Repository Intelligence
Purpose-built endpoints that give AI tools the context they need:
Repository Summary (/api/v2/ai/repo/summary)
{
"name": "my-project",
"primary_language": "Go",
"project_type": "application",
"build_system": "go modules",
"test_framework": "go test",
"suggested_entry_points": ["cmd/main.go", "internal/app/"],
"config_files": ["go.mod", "Makefile", ".gitea/workflows/"],
"language_stats": {"Go": 45000, "YAML": 2000}
}
Repository Navigation (/api/v2/ai/repo/navigation)
- Directory tree with depth control
- Important paths ranked by priority (entry points, tests, docs)
- File type distribution
Issue Context (/api/v2/ai/issue/context)
- Issue details with all comments
- Related issues and code references
- AI hints: category (bug/feature), complexity estimation, suggested files
Runner Capability Discovery
Runners report their capabilities. AI tools query before generating workflows.
Endpoint: GET /api/v2/repos/{owner}/{repo}/actions/runners/capabilities
{
"runners": [
{
"id": 1,
"name": "ubuntu-runner",
"status": "online",
"labels": ["ubuntu-latest", "docker"],
"capabilities": {
"os": "linux",
"arch": "amd64",
"docker": true,
"docker_compose": true,
"shell": ["bash", "sh"],
"tools": {
"node": ["18.19.0", "20.10.0"],
"go": ["1.21.5", "1.22.0"],
"python": ["3.11.6", "3.12.0"]
},
"features": {
"cache": true,
"services": true
}
}
}
],
"platform": {
"type": "gitea",
"version": "1.26.0",
"supported_actions": {
"actions/checkout": {"versions": ["v3", "v4"]},
"actions/setup-node": {"versions": ["v3", "v4"]},
"actions/upload-artifact": {"versions": ["v3"], "notes": "v4 not supported"}
},
"unsupported_features": [
"GitHub-hosted runners",
"OIDC token authentication"
]
},
"workflow_hints": {
"preferred_checkout": "actions/checkout@v4",
"artifact_upload_alternative": "Use Gitea API for artifacts"
}
}
Workflow Validation
Validate workflows before committing. Catch incompatibilities early.
Endpoint: POST /api/v2/repos/{owner}/{repo}/actions/workflows/validate
// Request
{
"content": "name: Build\non: push\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/upload-artifact@v4"
}
// Response
{
"valid": false,
"warnings": [
{
"line": 8,
"action": "actions/upload-artifact@v4",
"severity": "error",
"message": "actions/upload-artifact@v4 is not supported",
"suggestion": "Use actions/upload-artifact@v3"
}
],
"runner_match": [
{
"job": "build",
"runs_on": ["ubuntu-latest"],
"matched_runners": ["ubuntu-runner-1"],
"capabilities_met": true
}
]
}
Action Compatibility Database
Built-in knowledge of GitHub Action compatibility:
| Action | Compatible Versions | Notes |
|---|---|---|
actions/checkout |
v2, v3, v4 | Fully compatible |
actions/setup-node |
v2, v3, v4 | Fully compatible |
actions/setup-go |
v3, v4, v5 | Fully compatible |
actions/setup-python |
v4, v5 | Fully compatible |
actions/cache |
v3, v4 | Fully compatible |
actions/upload-artifact |
v2, v3 | v4 not supported |
actions/download-artifact |
v2, v3 | v4 not supported |
Release Archive
Archive old releases without deleting them:
- Toggle archived status via UI or API
- Filter releases by archived state
- Archived releases hidden by default, toggle to show
- Preserves release history for compliance
POST /api/v1/repos/{owner}/{repo}/releases/{id}/archive
DELETE /api/v1/repos/{owner}/{repo}/releases/{id}/archive
GET /api/v1/repos/{owner}/{repo}/releases?archived=false
Installation
From Binary
Download from Releases:
# Linux (amd64)
curl -L -o gitcaddy https://git.marketally.com/gitcaddy/gitea/releases/latest/download/gitea-linux-amd64
chmod +x gitcaddy
./gitcaddy web
From Source
git clone https://git.marketally.com/gitcaddy/gitea.git
cd gitea
TAGS="bindata sqlite sqlite_unlock_notify" make build
./gitea web
Docker
docker run -d \
--name gitcaddy \
-p 3000:3000 \
-v ./data:/data \
gitcaddy/gitea:latest
Configuration
GitCaddy uses the same configuration as Gitea. Key settings for AI features:
[server]
ROOT_URL = https://your-instance.com/
[actions]
ENABLED = true
[api]
; Enable V2 API (enabled by default)
ENABLE_V2_API = true
; Max files in batch request
MAX_BATCH_SIZE = 100
; Enable AI context endpoints
ENABLE_AI_CONTEXT = true
GitCaddy Runner
For full capability reporting, use the GitCaddy act_runner:
# Download
curl -L -o act_runner https://git.marketally.com/gitcaddy/act_runner/releases/latest/download/act_runner-linux-amd64
chmod +x act_runner
# Register
./act_runner register \
--instance https://your-instance.com \
--token YOUR_TOKEN \
--name my-runner
# Run (automatically detects and reports capabilities)
./act_runner daemon
The runner automatically detects:
- OS and architecture
- Docker/Podman availability
- Installed tools (Node.js, Go, Python, Java, .NET, Rust)
- Available shells
- Docker Compose support
API Documentation
Interactive API documentation available at:
/api/v2/docs- Scalar API explorer/api/v2/swagger.json- OpenAPI specification
Architecture
GitCaddy
|
+------------------------------+------------------------------+
| | |
V2 API Layer Actions Engine Web Interface
| | |
+----+----+ +----+----+ +----+----+
| | | | | |
Batch Streaming Runners Workflows Repos Releases
Files (NDJSON) Capability Validation (Archive)
| | Discovery |
| | | |
+----+----+--------------------+---------+
|
AI Context APIs
|
+----+----+----+
| | | |
Repo Issue Nav Summary
Related Projects
| Project | Description |
|---|---|
| gitcaddy/act_runner | Runner with capability detection |
| gitcaddy/actions-proto-go | Protocol definitions |
Building
Requirements:
- Go 1.24+ (see
go.mod) - Node.js 22.6+ (for frontend)
- Make
# Full build
TAGS="bindata sqlite sqlite_unlock_notify" make build
# Backend only
make backend
# Frontend only
make frontend
# Run tests
make test
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
make test - Submit a pull request
License
MIT License - see LICENSE for details.
Acknowledgments
GitCaddy is a fork of Gitea, the open-source self-hosted Git service. We thank the Gitea team and all contributors for building the foundation that makes GitCaddy possible.