AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Self-hosted Git forge in Go. PRs, issues, wikis, orgs, webhooks. Templ + HTMX, pure-Go git over HTTP/SSH, single binary. Alpha.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A minimal, self-hosted Git forge — single binary, no external runtime dependencies.
Alpha: Cloudzilla is under active development. APIs and features may change. Not recommended for production use yet.
bash
make docker-build
make docker-run
Run migrations
docker exec -it cloudzilla-app-cloudzilla-1 /app/cloudzilla-cli migrate查看完整 README ↗A minimal, self-hosted Git forge — single binary, no external runtime dependencies.
Stack: Go · Templ · HTMX · Alpine.js · Tailwind CSS · PostgreSQL
Alpha: Cloudzilla is under active development. APIs and features may change. Not recommended for production use yet.
| Milestone | Scope | Status |
|---|---|---|
| M1 — Core Platform (Phases 0–15.3) | Identity, git hosting, issues, PRs, code review, orgs, wikis, discussions, gists, search, and 50+ features across 100+ migrations | Complete |
| M2 — Advanced Infrastructure (Phases 16–20) | Container registry, Git LFS, CI/CD pipelines, clustering, GraphQL API | In progress |
graph TB
subgraph Client["Client"]
Browser["Browser (HTMX)"]
GitCLI["git CLI"]
SSHCLI["SSH Client"]
end
subgraph Cloudzilla["Cloudzilla (Single Binary)"]
HTTP["HTTP Server :8080\n(chi router)"]
SSH["SSH Server :2222\n(gliderlabs/ssh)"]
subgraph Layers["Application Layers"]
Handler["Handlers\n(page + API + git HTTP)"]
Service["Services\n(business logic)"]
Store["Stores\n(SQL queries / sqlx)"]
end
subgraph Frontend["Embedded Frontend"]
Templates["Templ Components"]
Static["Tailwind CSS + HTMX"]
end
end
subgraph Data["Persistence"]
PG[("PostgreSQL")]
Repos["Bare Git Repos\n(on disk)"]
end
Browser -->|"HTTP/HTTPS"| HTTP
GitCLI -->|"HTTP Smart Protocol"| HTTP
SSHCLI -->|"SSH git transport"| SSH
HTTP --> Handler
SSH --> Handler
Handler --> Service
Service --> Store
Store --> PG
Service --> Repos
Handler --> Templates
Templates --> Static
classDef client fill:#4A90D9,stroke:#2C5F8A,color:#fff
classDef server fill:#27AE60,stroke:#1A7A40,color:#fff
classDef data fill:#8E44AD,stroke:#6C3483,color:#fff
classDef frontend fill:#7F8C8D,stroke:#566573,color:#fff
class Browser,GitCLI,SSHCLI client
class HTTP,SSH,Handler,Service,Store server
class PG,Repos data
class Templates,Static frontend
cz remote client for repos, issues and PRs, and cz-admin for server-side operator commandsmake docker-build
make docker-run
# Run migrations
docker exec -it cloudzilla-app-cloudzilla-1 /app/cz-admin migrate
# Open http://localhost:8080 — redirects to /setup to create superadmin
All data persists in Docker named volumes (cloudzilla_data, postgres_data).
Set CZ_AUTH_JWT_SECRET in docker-compose.yml before exposing publicly.
make docker-down # Stop and remove containers
Prerequisites: Go 1.27+, PostgreSQL 14+ (or Docker, for the Postgres step below)
go mod tidy
make setup-tailwind # One-time: download Tailwind CLI
make setup-templ # One-time: install the templ CLI
make setup-air # One-time: install the reloader `make dev` uses
Start Postgres. The simplest option is the postgres service from the bundled compose file, which is preconfigured with the user/db that config.yaml expects:
docker compose up -d postgres # exposes 5432 to host; data persists in postgres_data volume
Prefer a native install? Run any PostgreSQL 14+ and create a cloudzilla role and database (password cloudzilla) — or edit the DSN in config.yaml to match what you already have.
Then run migrations and start the dev server:
make migrate # Run DB migrations
make dev # Backend + Tailwind watch on http://localhost:8080
First visit redirects to /setup to create your superadmin account.
For a populated instance to click around in, run make seed after make migrate on a fresh database instead of visiting /setup. It writes the repositories to ./git-repos, where make dev reads them. See cz-admin seed.
| Document | Description |
|---|---|
| CLAUDE.md | Developer guide: conventions, architecture, adding features |
| docs/api-reference.md | Full API endpoint tables with auth levels |
| docs/cli.md | cz remote client: install, login, scopes per command |
| docs/configuration.md | Config reference, env vars, CLI, production deployment |
| docs/ROADMAP.md | Full feature roadmap with phase specs and migration details |
| docs/access-control.md | Permission model: instance, org, and repo levels |
| docs/code-browser.md | Code browser URL patterns, CodeService API, ref resolution |
| docs/deployment.md | Docker quick start, env var overrides |
| docs/git-transport.md | HTTP smart protocol, SSH auth, permission rules |
| docs/htmx-patterns.md | Fragments, params, inheritance, errors, hx-on, toasts |
| Target | Description |
|---|---|
make setup-tailwind | Download Tailwind CLI (one-time) |
make setup-templ | Install the templ CLI (one-time) |
make setup-air | Install the reloader make dev uses (one-time) |
make generate-templ | Regenerate *_templ.go from *.templ files |
make download-mermaid | Download mermaid.min.js (one-time; auto-runs in build/dev) |
make download-htmx | Download htmx.min.js (once per version; auto-runs in build/dev) |
make build-css | Compile Tailwind CSS |
make dev | Run backend + Tailwind + templ watch concurrently |
make build | Full build: download assets, compile CSS, generate templ, build Go |
make migrate | Run DB migrations |
make seed | Fill a fresh, migrated database with test data |
make lint | Run golangci-lint |
make test | Run unit tests (no database required) |
make test-db | Start the test database container |
make test-integration | Run all tests including integration tests (requires Docker) |
make clean | Remove build artifacts |
make docker-build | Build Docker image |
make docker-run | Start with docker compose (detached) |
make docker-down | Stop and remove containers |
cmd/
server/ # HTTP server entrypoint
frontend/ # Static files (embedded in binary)
static/
main.css # Compiled Tailwind output
mermaid.min.js # served at /static/mermaid.min.js
htmx.min.js # served at /htmx.min.js
alpine.min.js # served at /alpine.min.js
cz-admin/ # Operator CLI (cobra)
cz/ # Remote client for developers (cobra)
internal/
config/ # Config loading (viper + YAML)
db/ # DB connection + migration runner
migrations/ # SQL files (embedded via embed.FS)
model/ # Data structs (db + json tags)
store/ # Store layer (raw SQL via sqlx)
service/ # Business logic (calls stores)
handler/ # HTTP handlers (page + API + git)
middleware/ # Auth, logger, CORS, RequireSetup
assets/ # Serves frontend/ under content-hash URLs, with ETags and gzip
router/ # chi route registration
ssh/ # SSH server (gliderlabs/ssh)
view/ # Templ components
layout/ # Base layout component
pages/ # Page components
fragments/ # HTMX fragment components
tailwind/ # Tailwind CSS v4 entry point: theme tokens, sources
docs/ # Architecture and feature docs
Cloudzilla is licensed under the Business Source License 1.1.
See the LICENSE file for the full license text, including the change date and additional use grants.
| docs/notifications.md | Notification types, service API, extension pattern |
| docs/organizations.md | OrgService API, endpoints, role model |
| docs/pr-merge.md | Merge strategies, conflict detection, PRDiffResult |
| docs/repo-import.md | Background clone jobs, SSRF guard, import.* config |
| docs/repo-mirrors.md | Pull mirrors: sync, scheduler, read-only guard, credentials |
| docs/storage.md | Local and S3 backends, object layout, avatars, attachments |
| docs/webhooks.md | Webhook events, HMAC signing, dispatch pattern |