Monorepo for Python and Rust services with a GitOps-first deployment model.
- Monorepo structure for apps, packages, and crates
- Python services (FastAPI), REST APIs, and MCP-related tooling
- Kubernetes + Helm for runtime infrastructure
- Argo CD for in-cluster deployment and reconciliation
Manual helm apply is intentionally avoided. Deployments are managed through Argo CD and currently require manual approval in addition to pull requests.
Home automation components (Home Assistant, Homebridge, Frigate, etc.) are maintained under infra/helm-chart as part of core infrastructure.
- GitHub Actions: build, test, lint, and image workflows
- In-cluster Argo CD: Helm/Kubernetes deployment execution
- Kubernetes, Helm, networking, oauth2-proxy
- Python, FastAPI, uv, pytest, ruff
- GitHub Actions and go-task (
Taskfile) - Cloudflare tunnel for public ingress (in-cluster)
Taskfile manages local and cloud workflows. See taskfile.dev and go-task/task.
apps/: main applicationspackages/: shared Python packagescrates/: Rust crates
Naming convention:
py-*for Python projectsrs-*for Rust projects
Use the devcontainer for Python and Rust development. Infrastructure flows are GitOps-based and should be validated from host/cluster context.
uv run autobrowser
uv run play
# Unit tests (workspace)
uv run pytest -v
# Local auth example for play
ALLOW_LOCAL_AUTH=true LOCAL_AUTH_EMAIL=t@t.dev ALLOWED_EMAILS='["t@t.dev"]' uv run play- Home internal: Home Assistant, MariaDB, Homebridge, Frigate
- General web: Play (FastAPI), Stirling PDF (on-demand)
- Supporting: OAuth2 Proxy, Headlamp, Cloudflare tunnel, cert issuers
A Kubernetes CronJob backs up MariaDB and configuration folders.
export KUBECONFIG=~/.kube/pi-configDefault kube context is config if not overridden.