Every installation on Akua lives in its own private git repository. The repository is the source of truth for the deployment: your customer’s wizard inputs, the composition logic that turns those inputs into Kubernetes resources, and the rendered manifests your cluster actually applies. Editing the repository is what changes a deployment (through the dashboard, the API, orDocumentation Index
Fetch the complete documentation index at: https://docs.akua.dev/llms.txt
Use this file to discover all available pages before exploring further.
git push).
This page explains the model. For the step-by-step “how to clone and edit” walkthrough, see Customize an installation via git.
Why per-installation
A product on Akua can have hundreds of installations. Each one belongs to a different customer, runs in a different cluster, may pin to a different upstream version, and may carry its own ad-hoc tweaks. The per-installation repository keeps these isolated:- Customer A can edit their installation’s
inputs.yamlwithout touching anyone else’s deployment. - A patch you make for Customer B stays scoped to their repository.
- Each installation’s deployment history is a normal git log (branchable, diffable, revertible), independent of every other install.
What’s in the repository
| File or directory | Owner | Purpose |
|---|---|---|
akua.toml | You | Package identity. Mostly stable; edited when bumping the upstream pin. |
package.k | You | The composition layer. Adds install-scoped labels, can patch any field on any rendered resource, can append extra resources the upstream doesn’t include. |
inputs.yaml | Customer + you | The wizard’s output. Editable from the dashboard wizard, the API, or directly via git. |
upstream/ | Akua | A pinned snapshot of the product’s source. Vendored at provision time so renders are deterministic and offline-capable. |
manifests/ | Akua (rendered) | Output of package.k + inputs.yaml against upstream/. Regenerated on every change; never edit manually. |
How it stays in sync with the dashboard
The repository and the dashboard are not two separate stores. They are two views over the same content. The dashboard wizard readsinputs.yaml; saving a wizard change writes a commit. A direct git push to inputs.yaml shows up in the dashboard immediately. A git revert rolls the dashboard view back too.
This means you can mix the two surfaces freely:
- A customer changes a value through the wizard → commit lands → you see it in
git log. - You push a fix to
package.kfrom the CLI → next dashboard load reflects it. - An automation script edits
inputs.yamlover the API → equivalent to editing in the wizard.
inputs.yaml: if a customer saves a wizard change while you’re editing locally, the dashboard write happens first and your local push will fast-forward or fail. Use package.k for changes that must survive customer-driven wizard updates.
Rendering: pure, idempotent, offline
The render step turnspackage.k + inputs.yaml + upstream/ into manifests/. It has three properties worth understanding:
- Pure. Identical inputs always produce identical manifests, byte-for-byte. There’s no clock, no network, no secret material in the render context.
- Idempotent. Akua hashes the rendered manifests; if a render produces the same hash as the previous one, no commit is made and no deploy is triggered. Whitespace edits to
inputs.yamldon’t churn deploys. - Offline-capable. Because
upstream/is vendored, renders work without any external fetches. If the original source package becomes unavailable, your installations keep working.
Where the repository lives
Akua-managed installations are hosted atgit.akua.dev/<your-org>/<install-id>.git. Repositories are private and isolated to your workspace. Authenticate with your dashboard token (use any string for the username; the token is the password).
The dashboard’s Source tab on every installation shows the clone URL, the latest deployed commit SHA, and a link into the repository’s history.
Repositories and the wider package model
The per-installation repository is one slice of Akua’s package model. The samepackage.k + inputs concept applies to:
- Products (today): the source you publish gets vendored into every installation.
- Policies (planned): workspace-wide policy bundles that layer on top of per-install renders.
- Repository change requests: agent-authored or human-authored forks of an installation’s repo, reviewed and accepted through Akua rather than landed directly. See AI agents working with repositories.
Related topics
Customize an installation via git
Edit inputs, patch resources, push commits.
Package generation
How Akua generates packages from your sources.
Package versioning
How commit history maps to deployments and how to roll back.
Repositories API
Endpoints, parameters, and try-it playground.