One project file
Services, ports and local defaults live in pyahu.yaml, next to the code that uses them.
Local services on k3d
Choose the services in pyahu.yaml. Pyahu creates the local cluster, waits for it to become ready, and prints the endpoints your app can use.
The default preset contains PostgreSQL only.
$ pyahu initPyahu creates k3d and waits for PostgreSQL.
$ pyahu upUse the generated values in your current shell.
$ eval "$(pyahu env)"Requires Docker or Podman and k3d 5.x.
When it helps
Pyahu is useful when application dependencies have outgrown a few ad-hoc container commands, or when local behavior needs to stay close to Kubernetes.
Services, ports and local defaults live in pyahu.yaml, next to the code that uses them.
Ingresses, Secrets, ConfigMaps and persistent volumes are real resources in a local k3d cluster.
Run database, identity, messaging and CDC together when the application needs all of them.
Included services
The minimal preset runs PostgreSQL. The platform preset enables the full stack, and every service can be turned on or off in the same file.
Databases and optional read replicas
localhost:5432 Local identity and OIDC
https://zitadel.localhost AMQP and management UI
localhost:5672 Valkey-compatible data and streams
localhost:6379 Single-broker KRaft for local events
localhost:9092 Connectors, plugins and Debezium CDC
localhost:8083 Topics, consumers and connectors
https://kafka-ui.localhost The full platform preset runs seven real services. Plan for 4 CPU cores, 8 GiB of container memory and 15 GiB of free disk. Use the minimal preset on smaller machines.
No hidden cluster
The normal workflow does not require kubectl or Helm. The cluster is still yours: export its kubeconfig and inspect every workload, volume and event when a service needs debugging.
Read the command guide$ pyahu services
SERVICE STATUS VERSION ENDPOINTS
postgres ready 18.4 localhost:5432
redis ready 8.1-alpine localhost:6379
kafka ready 4.3.0 localhost:9092
$ export KUBECONFIG="$(pyahu kubeconfig)"
$ kubectl get pods -n pyahu-local-dev
postgres-0 1/1 Running
redis-0 1/1 Running Local by default
Host ports bind to 127.0.0.1 instead of being published to the local network.
pyahu up masks passwords and credentials. pyahu env is the explicit command for real values.
pyahu down retains local storage. Permanent removal requires --purge-data and confirmation.
Kafka Connect
Declare a Debezium PostgreSQL connector in pyahu.yaml. Pyahu applies it, checks every task, and removes registrations that no longer belong to the file. Custom connector plugins can be downloaded with a required SHA-256 or read from a local jar.
Kafka Connect and Debezium guideservices:
kafkaConnect:
connectors:
- name: app-cdc
kind: debezium.postgres
database: app
tables:
include:
- public.orders Install
Releases are available for macOS, Linux and Windows. The install script and built-in upgrade verify the published checksum.
Get started