Getting Started
This guide gets you from an empty GitOps source project to rendered Kubernetes manifests, then points you at the workflow that matches how you deploy.
Installation
Section titled “Installation”With mise
Section titled “With mise”Add Nyl to your mise.toml:
[tools."github:NiklasRosenstein/nyl"]version = "0.4.1"version_prefix = "v"Then install it:
mise installFrom Release
Section titled “From Release”curl -LO https://github.com/NiklasRosenstein/nyl/releases/latest/download/nyl-x86_64-unknown-linux-gnu.tar.gztar xzf nyl-x86_64-unknown-linux-gnu.tar.gzsudo mv nyl /usr/local/bin/From Source
Section titled “From Source”cd nylcargo build --releaseThe binary will be available at nyl/target/release/nyl when building from the repository root.
Install Locally
Section titled “Install Locally”cd nylcargo install --path .This installs nyl to ~/.cargo/bin/nyl.
Quick Start
Section titled “Quick Start”-
Create a Project
Terminal window nyl init platform --minimalcd platformThis creates:
nyl.toml- Project configurationcomponents/- Directory for componentsapplications/- Application sourcesconfig/- Cluster, target, repository, and Argo CD policy resources
-
Add a Component
Terminal window nyl create component v1.example.io MyAppThis creates a new local component at
components/v1.example.io/MyApp/with:Chart.yaml- Helm chart metadatavalues.yaml- Default valuesvalues.schema.json- JSON schema for validationtemplates/deployment.yaml- Kubernetes deployment template
-
Validate
Terminal window $ nyl validate✓ Found project config: nyl.toml✓ Components search path exists: components✓ Helm chart search path exists: .✓ Validation passedFor CI, use strict mode to treat warnings as errors:
Terminal window nyl validate --strict -
Render
Render a manifest file to stdout:
Terminal window nyl render apps.yamlFor a targetless deterministic render, provide Kubernetes capabilities explicitly:
Terminal window nyl render --kube-version 1.31.0 --kube-api-versions v1,apps/v1 apps.yamlFor target-aware rendering, scaffold a Cluster and target, update the Cluster’s capabilities, then select the target:
Terminal window git initnyl create cluster local --context kind-kindnyl capture cluster localnyl create target devnyl render --target dev apps.yamlGitOps resource discovery follows Git visibility. Cluster creation records the context without contacting Kubernetes;
nyl capture clusterperforms the live capability refresh explicitly.
Project Structure
Section titled “Project Structure”platform/├── nyl.toml # Project configuration├── applications/ # Application sources├── config/│ ├── clusters/ # Concrete clusters and render capabilities│ ├── argocd-instances/ # Argo CD control planes and catalog defaults│ ├── targets/ # Cluster-to-publication bindings│ ├── repositories/ # Named Git coordinates│ ├── projects/ # Argo CD project policy│ └── application-groups/ # Application selection and lifecycle policy├── components/ # Component definitions│ └── v1.example.io/│ └── MyApp/│ ├── Chart.yaml│ ├── values.yaml│ ├── values.schema.json│ └── templates/│ └── deployment.yaml└── charts/ # Optional: additional Helm chart search pathWhere to go next
Section titled “Where to go next”Take what you need. If Kubernetes is all you deploy, you never need Orchestration.