Three ways to install, the same charts underneath each. Your laptop costs nothing and takes a few minutes; a cloud install shows you its bill before it changes anything. Vennir is 0.x: try it, but read the gaps before you trust it with production.
The charts refuse older Kubernetes and older Helm. Without NetworkPolicy enforcement, the platform's databases and kernel-api aren't fenced off from steps. vennir runs on macOS and Linux, amd64 and arm64.
vennir tools --install downloads what's missing into ~/.vennir/bin, each at a pinned version checked against its project's checksum. Docker and the cloud CLIs are yours to install.
| For | Needs |
|---|---|
| Every install | kubectl (pinned 1.37.1), helm 4 (pinned 4.3.0) |
| Your laptop | Docker, running, about 4 GB of memory free; kind (pinned 0.33.0) |
| GKE | gcloud, gke-gcloud-auth-plugin, OpenTofu tofu (pinned 1.13.1) |
| EKS | aws CLI v2, OpenTofu tofu |
| Your cluster | A kubectl context that reaches it; ValidatingAdmissionPolicy available; kubectl within one minor version |
| The catalog | git, gh signed in with the repo and workflow scopes |
Both ways build a kind cluster and a local image registry at localhost:5001, and install the kernel and the console into vennir-system, with the same admission policies a cloud install gets.
Builds the platform from your checkout, creates the cluster vennir-local and the team team-a, and port-forwards the console.
Asks the cluster's name, the registry port, the size, the first admin's email and what else to keep, then installs a release, or your checkout with --source.
After make quickstart, sign in as admin@example.com with the password vennir-local. It's set only in the kind values, for a cluster nobody else can reach: never use it anywhere else. vennir generates the first admin's password instead, never prints it, and saves it to deploy/<env>/admin-password, readable only by you; you change it at the first sign-in.
After make quickstart, paste this into Runs → Submit a DAG. Both images are the fake products in examples/. create-project outputs {"projectId": "hello-123"}, and deploy-app runs next with it filled in.
Then publish real products to the local registry, with no Git hosting or CI. Each is validated, built, tested and scanned the way catalog CI does it, then registered with the console.
vennir makes the cluster with OpenTofu, under your own cloud sign-in, and installs the charts. Nothing changes until you approve, and running it again finds less to do, never duplicates.
Each choice says what it costs or gives up. Every answer is kept in deploy/prod/vennir.yaml: names only, never a secret. vennir config set changes one later.
Prices come live from your cloud's own price lists, never from numbers built into the CLI; if they can't be fetched, the screen says so rather than guess. A first cloud install takes about ten to twenty minutes.
The sleeper never sleeps while a run is unfinished, and wakes itself for a schedule that's due. While asleep the console and API don't answer, so catalog CI and automation fail until vennir wake. Keep production awake.
Unless you choose otherwise: the database's disk, the backups and logs buckets, and the task registry. The audit copy's bucket is always kept: it's the record, and its retention refuses deletion until it lapses.
Each release publishes both charts and their signed images to ghcr.io/rburns629/vennir. A chart install makes both databases, generates their passwords and the first admin. vennir init --target existing uses the same charts, and can set up HTTPS through your Ingress with cert-manager.
Adding a product is a reviewed pull request. CI holds no console or cluster credential: it pushes to the registry, and each install's console pulls the release, verifies it and applies it.
Starters come in Python, TypeScript, Go, PowerShell and Rust. On GitHub Free, a private repository has no Environments or branch rules; publishing is still limited to main by its cloud federation. A released vennir carries the catalog template for its own version, so make the catalog with the same version the install runs.
On kind or your own cluster, start from catalog-template/ by hand and publish with ./vennir catalog publish or make catalog-publish.
People who use your products never write a DAG. Each step runs as its product's own identity and secrets, which nobody running it chooses or sees.
Merged, it appears in Catalog. Choose Run, fill in the form made from its parameters, and follow the run live. Show as an API call gives a bot the same run.
Setup from an empty account, the hour-long walkthrough from a new team to two chained products, and every setting with its default.
Stuck? Troubleshooting says what to check when something fails, or ask the community.