YACD is a Kubernetes-native development environment manager for Cardano. It is aimed at builders who need repeatable local or shared development networks, not validators, stake pool operators, or production network operators.
The repository currently contains the operator foundation, the initial
CardanoNetwork API and reconciler, and a first developer CLI for deploying a
local YACD environment from a checked-in config file.
- Controller-runtime manager startup with structured logging.
- Health and readiness probes.
- Secure metrics serving with Kubernetes authn/authz filters.
- Initial
CardanoNetworkCRD shape for local and public network modes. - Local-mode
CardanoNetworkreconciliation for one primary node with Ogmios as the default chain API and Kupo as the default chain index API. - Developer CLI under
cli/withdeployandinfocommands. - Helm chart packaging for the manager deployment.
- Moon tasks for generation, checks, tests, local deployment, and Kind smoke testing.
- Local Kind/Tilt development stack wiring.
Enable the pinned local toolchain:
direnv allow
proto statusRun the normal local checks and tests:
moon run root:check
moon run root:test
git diff --checkRender the example local environment without changing the cluster:
go run ./cli/cmd/yacd deploy -f examples/local/yacd.yaml --dry-runDeploy the example environment and wait for the operator to report readiness:
kubectl create namespace yacd-smoke --dry-run=client -o yaml | kubectl apply -f -
go run ./cli/cmd/yacd deploy -f examples/local/yacd.yaml --namespace yacd-smoke --wait
go run ./cli/cmd/yacd info phase4-smoke --namespace yacd-smokeRun the local development stack with Kind, ctlptl, Tilt, and ko:
moon run root:dev-upStop and delete the local development stack:
moon run root:dev-downInstall from a local checkout:
moon run root:deployUseful local deployment overrides:
HELM_RELEASE=yacd HELM_NAMESPACE=yacd-system moon run root:deploy
IMG=ghcr.io/meigma/yacd:<tag> moon run root:deploy
LOCAL_IMAGE=true IMG=example.com/yacd:v0.0.1 moon run root:deployUninstall the local deployment:
moon run root:undeployThe repository publishes the developer CLI as the yacd release binary, plus
the controller manager container image and OCI Helm chart. Release Please owns
versioning, while the release workflow publishes artifacts under
ghcr.io/meigma/yacd.
See DESIGN.md for the current architecture direction. The first working slice should stay narrow and let the CRD and controller shape evolve from prototype work.