Quickstart: Hello Solution
By the end of this tutorial you will have a FastAPI service running in a local Kubernetes cluster, packaged as a Helm chart that wraps the platform’sem-service base chart, and reachable by curl. Total time: 30 minutes or less. If it takes longer, that’s a guide bug — please report via the 👎 thumbs at the bottom of this page.
This tutorial keeps every command and config snippet inline. Its one external dependency is the platform’s
em-service base chart, pulled from Emergence’s private container registry during install — registry access is granted to the Emergence team and Solution/Agent design partners (you authenticate with helm registry login in the install step).Prerequisites
Install these tools. Versions are floors, not pins — newer is fine.| Tool | Version | Purpose |
|---|---|---|
| Docker | 24+ | Container runtime for Kind |
| Kind | 0.20+ | Local Kubernetes cluster |
| kubectl | 1.28+ | Kubernetes CLI |
| Helm | 3.13+ | Package manager for Kubernetes |
| uv | 0.4+ | Python project manager |
- macOS
- Linux
What you’ll build
A solution calledhello-solution with one component (api) that exposes:
GET /healthz→{"status":"ok"}for k8s probesGET /echo?msg=...→ echoes the message back
em-service v0.0.15 with alias: api, so you’ll see how multi-component solutions extend (just add another alias).
Steps
Write the Helm chart
The chart declares one
em-service subchart, aliased as api. The platform’s em-service (v0.0.15) handles Deployment, Service, probes, env vars — you only configure your image and ports. To add a worker later, you’d add another em-service entry with alias: worker and configure it under that alias key in values.yaml. See em-service Chart for the full values reference.Create a Kind cluster and load your image
kind load docker-image makes your local image available inside the cluster without a registry.Install the chart
em-service from ghcr.io/emergenceai/em-charts, a private registry — helm registry login ghcr.io authenticates you (access is granted to the Emergence team and Solution/Agent design partners).What you just did
You wrapped a 25-line FastAPI app in a Helm chart that depends on the platform’sem-service base chart, deployed it to a namespace named em-<solution> (the platform convention), and reached it via port-forward. You did not configure auth, secrets, storage, or LLMs yet — those are the next how-tos:
Register a solution
Make this naming + namespace pattern systematic.
Authenticate users
Protect
/echo with JWT validation.Manage secrets
Wire a secret-backed env var into your chart.
Local development
Loop faster with docker-compose + hot reload.

