Deploy Prompter
Prompter runs in production on the Cratis UpCloud Kubernetes cluster that also hosts Studio (decision D-11). This page is the map; the step-by-step runbook - workflows, Pulumi, secrets, backups - is DEPLOYMENT.md, which is the source of truth.
You can run it anywhere with internet
Section titled “You can run it anywhere with internet”Because the bot dials out to Discord (see the gateway mechanics in Set up the Discord app), it needs no public IP or ingress and runs identically from a laptop or a cluster. The artifacts are the same at every stage, so nothing is throwaway:
| Stage | Where | Good for |
|---|---|---|
| Laptop | docker compose up -d plus dotnet run | Trying it end to end on a test server, all bot development |
| Simple VM (optional) | Smallest UpCloud VM, Docker Compose | An always-on beta before the cluster work lands |
| Cluster | Studio’s UpCloud UKS via Pulumi | Production: automated deploys, observability, backups |
In production
Section titled “In production”Prompter is a single-replica Kubernetes Deployment - the Discord gateway wants exactly one connection -
alongside an in-cluster Postgres with pgvector, in the Norway region. Keeping stored data on EU-jurisdiction
infrastructure strengthens the privacy posture. It exposes GET /healthz for probes
and POST /reindex (shared secret) for documentation refreshes. The full topology, deploy flow, and one-time
setup live in DEPLOYMENT.md.
Documentation changes never redeploy
Section titled “Documentation changes never redeploy”App deploys are for code changes only. When the documentation changes, nothing is redeployed - the
Documentation build calls POST /reindex and the corpus updates in place. See
Configuration for the endpoints and
Grounded answers for how freshness works.