Skip to content

Repository layout ​

This matches the default-branch tree. Language SDKs are not here. .trellis/ is maintainer/AI workflow, not a required contributor path. GitHub is the only forge: checks and releases live in .github/workflows/, there is no second pipeline definition in the repo.

text
main.go                 # delegates to cmd.Run()
CHANGELOG.md            # changelog sections inserted by the release job (appears after the first release); never hand-edit
cmd/                    # server / admin / listen (listen is not a CLI command)
configs/                # *-example.yaml; local yaml gitignored
internal/
  cache/
  config/
  controller/           # admin/ + client/ + openapi.*.json
  database/
  delta/                # delta engines
  logger/
  middleware/
  model/
  platform/
  repository/
  service/              # includes update/, store/
  storage/              # local + s3
pkg/
  hashutil/ pathutil/ response/ semver/
  signature/ urlsign/ webhook/ grayutil/
frontend/               # Vue admin; embed.go embeds dist; daily yarn dev
frontend/embed.go
frontend/dist/.gitkeep
docs/                   # internal notes (not the VitePress root)
dev/docker/             # developer Postgres/Redis
dev/build/              # runtime Dockerfile and the release CLI (no shell scripts, no Compose)
  Dockerfile            # Alpine runtime image, build context = repo root
  changelog-types.conf  # section emoji/labels — display only, never feeds version derivation
  kirivers.py           # single entry point: python3 dev/build/kirivers.py <command> (python on Windows)
  kirivers_build/       # standard-library package, one module per concern; subcommand names keep the old script names
    cli.py              # subcommand registry and dispatch (usage and exit-code conventions)
    common.py           # single definition of the platform matrix, inner binary and archive names, `file` patterns, sha256
    build.py            # build-cgo / build-linux-musl / assert-linux-musl / install-cross-toolchains / install-llvm-mingw / frontend-build
    version.py          # next-version: derive the next version from Conventional Commits
    notes.py            # release-notes (Release body and CHANGELOG section) plus the changelog write-back
    package.py          # asset-names and package-assets (zips + SHA256SUMS.txt)
    images.py           # docker-image (native per-arch build, pushes <semver>_amd64 / _arm64) and docker-manifest
    guards.py           # commitlint / issue-link (PRs into main must link an issue) / guard (decision matrix)
    selfcheck.py        # check-workflows: static gate on the workflows (triggers, matrix, no QEMU)
.github/workflows/      # ci.yml (PR + main push checks), pr-guard.yml, gosec-scan.yml + security-gate.yml (sandboxed Gosec scan and ready-merge state machine), docs-pages.yml (compiles website/** and publishes gh-pages), release.yml (manual workflow_dispatch only), sdk-automerge.yml (manual only; batch-merges sdk/* PRs, releases and pushes to registries)
website/                # official docs site
deploy/                 # operator one-click Compose (.env credentials + bundled YAML)
scripts/install-deps.sh