Wanderland

Advaita Service: echo-backend

echo-backend is the launcher and business-logic tier (Tier 2) of the echo reference application — a Wanderland engine that launches Nextflow runs as Kubernetes Jobs and proxies observability reads from foxfire for the frontend. It runs on Kubernetes (CoreWeave dev/prod, OrbStack local) and is reached in-cluster by the frontend.

What it does

Why it exists

The frontend talks to one backend, and runs are launched by something that holds cluster credentials and business logic rather than the browser. echo-backend is that seam: it turns a UI action into a Kubernetes Job and curates what the UI reads from the receiver. It also demonstrates that the deploy machinery is workload-agnostic — a Wanderland engine uses the same pipeline as a static site or a JVM service.

How it works

Deployment (k8s)

Env Context Image stage
local orbstack build → ECR
dev useast13-dev build → ECR
prod useast13-prod promote (k8s_live_image)

Configuration

Signing-key format

FOXFIRE_SIGNING_KEY must be a PKCS#8 EC P-256 PEM (BEGIN PRIVATE KEY). The nf-foxfire plugin loads it with Java's KeyFactory, which reads PKCS#8; Ruby/OpenSSL's default EC to_pem is SEC1 (BEGIN EC PRIVATE KEY), which Java won't load — convert with openssl pkcs8 -topk8 -nocrypt. The receiver verifies with the SPKI public key of the same pair (keys: { <key_id>: <spki-pem> }).

Dependencies

Dependency Use Endpoint / id
foxfire GraphQL reads (proxied) foxfire.vivarta-echo.svc.cluster.local:9311/graphql
nf-driver image launched as a Job advaita/nf-driver
wanderland-k8s-pack k8s_job launch primitive runtime dependency
Kubernetes API create driver Jobs via nextflow-launcher SA
foxfire-signing-key Secret signing key injected on the Job secretKeyRef; provisioned from SSM (open)

Dependents

Dependent Use
echo-frontend POSTs /api/runs (launch) and /api/graphql (reads) through nginx

Impact when down

The frontend cannot launch runs or read history (both route through the backend). Driver Jobs already created continue and still ship to foxfire. Blast radius is new launches plus the UI read path.

The code

Open questions