Flow
ServicesCommunications Service

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

Processcommunications-api
Port8127
Listenersconversation 8129, announcement 8130
Databasecommunications on the shared local Postgres
AuthDEV_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 releaseBinaryChart
communications-api/service (default)k8s/
communications-conversationlistener/conversationListenerk8s/
communications-announcementlistener/announcementListenerk8s/

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.

On this page