English
Local development
bash
docker compose -f dev/docker/compose.yml up -d
cp configs/config-example.yaml configs/config.yaml
cp configs/admin-example.yaml configs/admin.yaml
cp configs/client-example.yaml configs/client.yaml
go run .API ports: :8080 / :8081. dev/docker/compose.yml does not run KiriVers; it is only databases for local go run .. To run the full stack in Docker (Hub image + PostgreSQL + Redis) use the operator one-click pack deploy/; dev/build/ keeps only the runtime Dockerfile and the release CLI, no Compose file.
One-file Docker run (Hub image + PostgreSQL + Redis)
For a full local stack use deploy/ (details: Docker Compose). Passwords live only in deploy/.env (from .env.example) and feed Postgres, redis-server --requirepass, KIRIVERS_POSTGRES_DSN, KIRIVERS_CACHE_REDIS_*, and KIRIVERS_URL_SIGNING_SECRET. Cache driver is Redis (KIRIVERS_CACHE_DRIVER=redis).
bash
cd deploy
cp .env.example .env
docker compose up -dPersist deploy/config/ at /config; deploy/data/ for objects, logs and the datastores. deploy/ publishes only 8080 / 8081 on the host (it is dev/docker/ that maps 5432/6379), so the two never collide. Do not add a root compose.yml. Building the image from source is in Release and Docker.
Without Docker, keep using go run . above (CGO_ENABLED=1 and a C++ toolchain). Official binaries and images are always CGO; the Releases page ships KiriVers-<OS>-<Arch>-<sha6>.zip, and the thing you run after unpacking is kirivers-<os>-<arch> (.exe on Windows). See Release and Docker.
Admin UI
Required:
bash
cd frontend
yarn
yarn devOpen http://localhost:3000. Vite proxies to the real backend. Use this path for daily UI work; yarn build then :8081 is only for verifying production embed.
Vite proxy: /api/v1/projects must precede /api (:8080 / :8081).
Verify production embed: yarn build then go build. Disk static_dir with index.html wins on :8081; otherwise embed. static_dir: "" disables the UI.
Checks before you open a PR
The pipeline logic lives in dev/build/kirivers.py + dev/build/kirivers_build/ (standard-library Python, nothing to install), and each gate has an offline self-check. Use python3 on Linux / macOS and python on Windows:
bash
python3 dev/build/kirivers.py check-workflows # workflow static gate
python3 dev/build/kirivers.py release-notes --self-check # changelog format + type-table invariant
python3 dev/build/kirivers.py guard --self-check # guard decision matrix
python3 dev/build/kirivers.py issue-link --self-check
python3 dev/build/kirivers.py asset-names # the 10 archive names and inner binary names- The version is derived only from Conventional Commits; the root
CHANGELOG.mdis written back by the release job — never hand-edit it (format and customization: Release and Docker). - To inspect or edit an
sdk/<lang>branch:git worktree add .worktrees/<lang> sdk/<lang>..worktrees/is gitignored; do not check a branch out over the default-branch worktree.