Skip to main content

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’s em-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.
ToolVersionPurpose
Docker24+Container runtime for Kind
Kind0.20+Local Kubernetes cluster
kubectl1.28+Kubernetes CLI
Helm3.13+Package manager for Kubernetes
uv0.4+Python project manager

What you’ll build

A solution called hello-solution with one component (api) that exposes:
  • GET /healthz{"status":"ok"} for k8s probes
  • GET /echo?msg=... → echoes the message back
The image is built locally and loaded into Kind (no registry needed). The Helm chart wraps em-service v0.0.15 with alias: api, so you’ll see how multi-component solutions extend (just add another alias).

Steps

1

Create the project layout

Pick a working directory and scaffold these files:
2

Write the FastAPI app

3

Write the Dockerfile

A multi-stage build keeps the runtime image small.
Dockerfile
4

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.
5

Create a Kind cluster and load your image

kind load docker-image makes your local image available inside the cluster without a registry.
6

Install the chart

First install pulls 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).
7

Smoke-test it

If both calls succeed, you have shipped your first CRAFT solution.
8

Tear down

What you just did

You wrapped a 25-line FastAPI app in a Helm chart that depends on the platform’s em-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.