Operations
Local port, provider keys, Service Bus topology, and deployment status for communications.
Communications is not in DEPLOYED_SERVICES yet, so its paths stay out of the merged platform
OpenAPI document. The Azure pipeline deploys the Helm releases below.
Local
| Process | communications-api |
| Port | 8127 |
| Listeners | conversation 8129, announcement 8130 |
| Database | communications on the shared local Postgres |
| Auth | DEV_AUTH=1 and X-Dev-Principal |
Provider keys are named only in services/communications/.env.example.
Put values in services/communications/.env. An empty key is valid: the channel is listed with
available=false. AGENT_EMAIL_DOMAIN is dev-ai.flow.life locally (Foundry agents only). Other
senders use @flow.life, except workspace meeting summaries, which send from
[email protected]. Each Mailgun domain has its own
MAILGUN_SENDING_KEY_<DOMAIN>, so m.flow.life needs MAILGUN_SENDING_KEY_M_FLOW_LIFE. Create the inbound agent route in the Mailgun
dashboard (Receiving → Routes) and point it at MAILGUN_INBOUND_WEBHOOK_URL.
FOUNDRY_URL defaults to http://localhost:8128. When it is unset the wake is logged and
skipped.
Service Bus topology
services/communications/.azure/bus/topology.yaml declares domains
conversation and announcement. Each has a listener that logs the message. The conversation
listener also retries a Foundry wake.
Configuration
Values that are not secret are committed in .azure/env/config.<env>.yaml. The rest is encrypted
with SOPS in a file next to it. The committed secrets files are still the template pair, so
Twilio and Mailgun are not present until they are added with helm secrets edit.
services/communications/.azure/env/readme.md lists every key, which file
it belongs in, and why.
One image, several releases
| Helm release | Binary | Chart |
|---|---|---|
communications-api | /service (default) | k8s/ |
communications-conversationlistener | /conversationListener | k8s/ |
communications-announcementlistener | /announcementListener | k8s/ |
Dev API ingress: communications-api.dev.apps-and-services.com
(services/communications/.azure/k8s/values/api.dev.yaml); prod is
communications-api.apps-and-services.com.
Pipeline
services/communications/.azure/azure-pipelines.yml triggers on develop /
master changes under services/communications. The Helm install step applies every entry in
that file's charts list. Stages match template's: decrypt SOPS secrets, build the image from
the repository root, busctl plan (exit 2 additive, exit 3 destructive and gated by a manual
approval), apply, then helm upgrade --install per chart.
Migrations
Goose SQL in services/communications/migrations/. cmd/api -migrate is a
separate invocation, not startup.