PostgreSQL
Primary relational database, with optional read replicas.
localhost:5432 local infrastructure for development
Pyahu CLI provisions PostgreSQL, ZITADEL, RabbitMQ, Kafka, Kafka Connect, Debezium and Kafka UI on a k3d cluster, with local TLS and predictable endpoints. Without turning your setup into a side project.
curl -fsSL https://cli.pyahu.io/install.sh | sh $ pyahu up
[preflight] Docker, k3d and local ports OK
[cluster] k3d pyahu-local ready
[certs] Secret pyahu-local-tls applied
[services] postgres · zitadel · rabbitmq · kafka
Pyahu local stack is ready
$ pyahu services
SERVICE STATUS ENDPOINTS
postgres ready localhost:5432
zitadel ready https://zitadel.localhost
rabbitmq ready localhost:5672
kafka-connect ready http://localhost:8083
$ curl https://zitadel.localhost/debug/healthz
ok▋ what runs
Everything runs locally on k3d. The endpoints match what apps already expect: convention over configuration, with nothing to reconfigure.
Primary relational database, with optional read replicas.
localhost:5432 Identity and OIDC over local HTTPS, no public CA.
zitadel.localhost AMQP messaging with a built-in management console.
localhost:5672 Event streaming broker in KRaft mode.
localhost:9092 Declarative Postgres CDC straight from pyahu.yaml.
localhost:8083 Visual inspection of topics, connectors and consumers.
kafka-ui.localhost pyahu platform
Pyahu CLI is the local on-ramp to the Pyahu Platform: a faithful subset of the real experience, running on your machine. It is real k3d/k3s, with Traefik, PersistentVolumes, ConfigMaps and Secrets. The CLI does not hide Kubernetes from the developer. It just makes provisioning and operation easier, and the cluster stays yours to inspect whenever you want.
Explore the local stack →$ export KUBECONFIG="$(pyahu kubeconfig)"
$ kubectl get ingress,pvc,cm,secret -n pyahu-local-dev
ingress/zitadel zitadel.localhost
ingress/kafka-ui kafka-ui.localhost
pvc/postgres-data Bound
configmap/rabbitmq-config
secret/pyahu-local-tls kubernetes.io/tls quick start
A preset writes a readable pyahu.yaml with the local services, ports and credentials.
pyahu init --preset platform The CLI validates dependencies, creates k3d and reconciles the Kubernetes resources idempotently.
pyahu up Predictable endpoints on localhost and connection env vars ready to paste.
eval "$(pyahu env)" installation
A single binary, no runtime. Signed releases on GitHub for macOS, Linux and Windows.
Details, verification and shell completion in Installation.
localhost with TLS
The CLI generates a local CA, issues the certificate for localhost and *.localhost (which covers zitadel.localhost, kafka-ui.localhost…), stores the TLS Secret in Kubernetes and makes host trust explicit, in one command.
$ pyahu certs status
CA status: valid until 2036-06-19
host trust: not trusted
$ pyahu certs trust
trusted local CA
$ curl https://zitadel.localhost/debug/healthz
ok change data capture
Declare the connector in pyahu.yaml. The CLI renders the Connect JSON, stores it in a Secret and applies it via the REST API, idempotent on every pyahu up.
services:
kafkaConnect:
enabled: true
connectors:
- name: app-cdc
type: source
kind: debezium.postgres
tables:
include:
- public.orders why pyahu
k3d + manifests generated by the CLI. No kubectl or helm in the normal flow.
ZITADEL on zitadel.localhost with its own CA and explicit host trust.
Debezium for Postgres declared in YAML. The CLI renders and applies the connector.
Real Postgres dumps to the host disk; restore from a local file or S3.
One pyahu.yaml defines services, ports and credentials. The rest lives in the commands.
reference
pyahu initpyahu uppyahu downpyahu doctorpyahu statuspyahu servicespyahu describepyahu logspyahu envpyahu kubeconfigpyahu backuppyahu restorepyahu certs statuspyahu certs trustpyahu certs rotateready to start