Problem
The Knowledge Explorer has no ready-to-use deployment setup. The existing Dockerfile fails on a clean checkout (wrong directory path), docker-compose.yml only starts FalkorDB with no Explorer service, and there are no configs for any cloud platform. Developers who want to host the Explorer for their team must figure out the full stack from scratch.
Requested
Add a deploy/ directory with templates for the following targets, plus fix the root Docker setup.
Pre-requisites (code changes needed first)
- Add a
/api/health endpoint returning {"status": "ok"} — all platforms below depend on it for healthchecks
- Ensure
FALKORDB_HOST, FALKORDB_PORT, and ALLOWED_ORIGINS are read from environment variables in semantica/explorer/app.py
1 · Docker (fix + full stack)
- Fix
Dockerfile — correct the explorer/ path, add a non-root user, add HEALTHCHECK
- Add
.dockerignore — exclude node_modules, .git, __pycache__, tests/, .env
- Fix
docker-compose.yml — add the Explorer service alongside FalkorDB with depends_on and a shared network
- Add
docker-compose.dev.yml — volume-mount source dirs for hot-reload
Target UX:
docker compose up # full stack, one command
2 · Railway
deploy/railway/railway.toml — Dockerfile builder, healthcheck path, restart policy
- Env vars wired from the Railway Redis plugin (
FALKORDB_HOST, FALKORDB_PORT)
3 · Render
deploy/render/render.yaml — Blueprint that provisions both the web service and a Redis instance together
- Healthcheck path,
starter plan, env vars cross-linked between services
4 · Fly.io
deploy/fly/fly.toml — region, VM size (512 MB), auto-stop, HTTP healthcheck
- Short README with the four
flyctl commands to deploy from zero
5 · GCP Cloud Run
deploy/gcp/cloudbuild.yaml — build, push to GCR, deploy to Cloud Run in one pipeline
deploy/gcp/cloudrun-service.yaml — declarative service spec with scale-to-zero, env vars from Secret Manager, liveness probe
6 · Azure Container Apps
deploy/azure/azure.yaml — AZD project definition
deploy/azure/main.bicep — Container App + managed environment, HTTP ingress, scale rules (min 0 / max 10), liveness probe
deploy/azure/main.parameters.json — parameter template
Target UX:
azd up # provisions infra + deploys container
7 · Kubernetes + Helm
Raw manifests (deploy/kubernetes/):
namespace.yaml, configmap.yaml, secret.yaml.example
deployment.yaml — 2 replicas, rolling update, liveness + readiness probes, resource limits
service.yaml — ClusterIP
ingress.yaml — nginx-ingress with cert-manager TLS annotation
kustomization.yaml — apply everything with kubectl apply -k
Helm chart (deploy/helm/knowledge-explorer/):
Chart.yaml, values.yaml, values.prod.yaml
- Templates: deployment, service, ingress, configmap, HPA
- HPA enabled via
autoscaling.enabled: true in values
Acceptance Criteria
Implementation Order
| Priority |
Task |
| P0 |
Fix Dockerfile + .dockerignore + docker-compose.yml |
| P0 |
Add /api/health endpoint |
| P1 |
Railway + Render |
| P1 |
Fly.io |
| P2 |
GCP Cloud Run + Azure Container Apps |
| P3 |
Kubernetes manifests + Helm chart |
Problem
The Knowledge Explorer has no ready-to-use deployment setup. The existing
Dockerfilefails on a clean checkout (wrong directory path),docker-compose.ymlonly starts FalkorDB with no Explorer service, and there are no configs for any cloud platform. Developers who want to host the Explorer for their team must figure out the full stack from scratch.Requested
Add a
deploy/directory with templates for the following targets, plus fix the root Docker setup.Pre-requisites (code changes needed first)
/api/healthendpoint returning{"status": "ok"}— all platforms below depend on it for healthchecksFALKORDB_HOST,FALKORDB_PORT, andALLOWED_ORIGINSare read from environment variables insemantica/explorer/app.py1 · Docker (fix + full stack)
Dockerfile— correct theexplorer/path, add a non-root user, addHEALTHCHECK.dockerignore— excludenode_modules,.git,__pycache__,tests/,.envdocker-compose.yml— add the Explorer service alongside FalkorDB withdepends_onand a shared networkdocker-compose.dev.yml— volume-mount source dirs for hot-reloadTarget UX:
docker compose up # full stack, one command2 · Railway
deploy/railway/railway.toml— Dockerfile builder, healthcheck path, restart policyFALKORDB_HOST,FALKORDB_PORT)3 · Render
deploy/render/render.yaml— Blueprint that provisions both the web service and a Redis instance togetherstarterplan, env vars cross-linked between services4 · Fly.io
deploy/fly/fly.toml— region, VM size (512 MB), auto-stop, HTTP healthcheckflyctlcommands to deploy from zero5 · GCP Cloud Run
deploy/gcp/cloudbuild.yaml— build, push to GCR, deploy to Cloud Run in one pipelinedeploy/gcp/cloudrun-service.yaml— declarative service spec with scale-to-zero, env vars from Secret Manager, liveness probe6 · Azure Container Apps
deploy/azure/azure.yaml— AZD project definitiondeploy/azure/main.bicep— Container App + managed environment, HTTP ingress, scale rules (min 0 / max 10), liveness probedeploy/azure/main.parameters.json— parameter templateTarget UX:
azd up # provisions infra + deploys container7 · Kubernetes + Helm
Raw manifests (
deploy/kubernetes/):namespace.yaml,configmap.yaml,secret.yaml.exampledeployment.yaml— 2 replicas, rolling update, liveness + readiness probes, resource limitsservice.yaml— ClusterIPingress.yaml— nginx-ingress with cert-manager TLS annotationkustomization.yaml— apply everything withkubectl apply -kHelm chart (
deploy/helm/knowledge-explorer/):Chart.yaml,values.yaml,values.prod.yamlautoscaling.enabled: truein valuesAcceptance Criteria
docker compose upstarts a working Explorer athttp://localhost:8000with no extra stepsdocker build .succeeds on a clean checkoutdeploy/<platform>/folder has a shortREADME.mdwith the exact commands to deploy from zerohelm lintpasses on the Helm chartsecret.yamlfiles are.exampletemplates onlyImplementation Order
Dockerfile+.dockerignore+docker-compose.yml/api/healthendpoint