TECHNOLOGY ARCHITECTURE

Environment Specification

Infrastructure sizing, deployment profiles, and environment requirements for cloud and on-premise implementations. Aligned with TOGAF Technology Architecture and ISO/IEC/IEEE 29148:2018.

ISO/IEC/IEEE 29148:2018 TOGAF 10 HIPAA NIST SP 800-53
API Reference Developer Hub

Overview 29148 §5.2

This specification defines the technology infrastructure required to deploy the Symphonix Health platform. It covers compute, storage, networking, security, and supporting services across three deployment profiles. All requirements trace to ISO/IEC/IEEE 29148:2018 (system requirements), TOGAF Technology Architecture, and applicable healthcare regulations.

Platform Components

168

BulletTrain

Health Information Exchange microservices. Core registries, clinical workflows, AI/ML, integrations, and administrative services. Ports 8000-8310.

32

Nexus A2A

Agent-to-Agent protocol agents across 6 demo groups. JSON-RPC 2.0, clinician avatar, command centre, on-demand gateway. Ports 8021-8100.

6

GHARRA

Global Healthcare Agent Registry & Routing Authority. API server, Next.js frontend, Prometheus, Grafana, Redis, Kafka. Ports 3000-9092.

Deployment Profile Summary TOGAF ADM Phase D

ResourceSmall (Dev / PoC)Medium (Regional)Large (Enterprise)
Kubernetes Nodes1 node (or Docker Compose)3–5 nodes9–15 nodes (multi-region)
Total vCPUs832–48128–192
Total RAM32 GB128–192 GB512–768 GB
GPUNone (cloud API)1× NVIDIA T4 16 GB2–4× NVIDIA A10G 24 GB
Concurrent Users5–1050–2001,000+
Active Services~20~80200+
DatabaseSQLite (file-based)PostgreSQL 16 single nodePostgreSQL 16 HA + 2 replicas
CacheSingle Redis 256 MBSingle Redis 2 GB3-node Redis Cluster, 6 GB/node
Event StreamingIn-memory EventBusKafka single broker 50 GBKafka 3–5 brokers, 100 GB/broker
AuthenticationJWT HS256 (dev secret)OIDC + JWT RS256OIDC + mTLS + DPoP + MFA
Availability Target—99.5%99.99%
Estimated Monthly Cost$50–200 (dev)$2,000–5,000$15,000–50,000+

Compute Platform Services

CPU, memory, and GPU requirements per service category. All values are Kubernetes resource requests and limits derived from production manifests.

Per-Service Resource Allocation

Service CategoryInstances (S/M/L)CPU RequestCPU LimitMem RequestMem Limit
BulletTrain Core (per svc)10 / 50 / 168100m500m256Mi512Mi
Nexus A2A Agent (per agent)5 / 25 / 32100m500m256Mi512Mi
GHARRA API Server1 / 2 / 4100m500m256Mi512Mi
API Gateway1 / 2 / 4200m1000m256Mi512Mi
SignalBox Control Plane1 / 2 / 3200m1000m512Mi1Gi
MCP Servers (per server)2 / 5 / 7100m500m256Mi512Mi
GHARRA Frontend (Next.js)1 / 2 / 3100m250m128Mi256Mi
BulletTrain Frontend (React)1 / 2 / 350m200m128Mi256Mi
Command Centre1 / 1 / 2100m500m256Mi512Mi
Computer Use Session (each)0 / 1 / 5200m1000m512Mi1Gi

GPU Requirements

WorkloadSmallMediumLarge
LLM Inference (local)None — OpenAI API1× T4 16 GB (llama.cpp, port 18080)2× A10G 24 GB
Whisper STT (local)None — cloud APIShared with LLM GPU1× A10G dedicated
TTS (local)None — OpenAI TTSShared with LLM GPU1× A10G dedicated
Playwright / ChromiumN/ACPU-only, 200m / 512Mi per sessionCPU-only, 200m / 1Gi per session

Runtime Versions 29148 §6.3

RuntimeVersionNotes
Python≥3.11 (3.12 recommended)Docker base: python:3.11-slim
Node.js20 LTSFrontend builds, Playwright, Mermaid
PostgreSQL16Production database (asyncpg driver)
Redis7Alpine image, hiredis client
Kafka≥3.5aiokafka Python client
Elasticsearch8.11+Optional, for SNOMED CT (Snowstorm)
Docker≥20.10Docker Compose v2+
Kubernetes≥1.28Medium/Large deployments

Storage Data Architecture

Database, object storage, and file storage sizing per deployment profile. All persistent volumes require SSD/NVMe-class storage for production workloads.

ComponentSmallMediumLarge
Primary DatabaseSQLite (file)PostgreSQL 16, 100 GB SSDPostgreSQL 16 HA, 500 GB–1 TB NVMe, primary + 2 replicas
RedisSingle, 256 MBSingle, 2 GB, AOF3-node cluster, 6 GB/node, AOF + RDB
ElasticsearchN/ASingle node, 50 GB3-node cluster, 200 GB/node
Kafka LogsN/A (in-memory)50 GB, 7-day retention100 GB/broker, 30-day retention
Object Storage (DICOM, docs)Local filesystem, 10 GBAzure Blob / S3, 500 GBMulti-region replicated, 5 TB+
FHIR Data (HAPI)Embedded H2, 5 GBPostgreSQL backend, 50 GBPostgreSQL HA, 200 GB
JSONL Event LogsLocal, 5 GB (2 MB rotation)Persistent volume, 50 GBCentralised log store, 200 GB
Audit Trail (immutable)SQLite, 1 GBPostgreSQL table, 20 GBDedicated PostgreSQL, 100 GB
Prometheus MetricsN/A5 GB, 15-day retention20 GB, 30-day retention
Grafana DataN/A100 MB500 MB

Backup & Retention 164.312(c)

PolicySmallMediumLarge
Database BackupManual / noneDaily automated, 7-day retentionHourly incremental, 30-day + annual archive
Point-in-Time RecoveryN/A7-day window30-day window
Audit Log Retention30 days1 year7 years (HIPAA minimum)
Clinical Data RetentionSession onlyPer-jurisdiction (typically 6–10 years)Per-jurisdiction, configurable
Disaster RecoveryN/ACold standby, 4-hour RPOHot standby, 15-min RPO, multi-region

Networking SP 800-53 SC

Port allocations, load balancing, service mesh, and firewall configuration. All internal traffic should use private subnets; only ports 80/443 are exposed to the internet.

Port Registry

Colour key: Nexus A2A · GHARRA · BulletTrain · Infrastructure

Port(s)ServiceProtocolCategory
80, 443Production Load Balancer / CDNHTTPSFrontend + API
5173Vite Dev Server (BulletTrain)HTTPFrontend Dev
8000–8009BT Core Registries (API GW, Client, HW, Facility, SHR, Terminology, Finance, FHIR, Consent)HTTP/RESTCore (10 svcs)
8010–8069BT Workflow, Clinical, Scheduling (Conductor, Orchestration, Diagnostic, Telemedicine, etc.)HTTP/RESTWorkflow (30+ svcs)
8021–8023Nexus ED Triage (triage, diagnosis, OpenHIE mediator)JSON-RPC 2.0A2A Agents
8024–8029Nexus HelixCare (imaging, pharmacy, bed, discharge, followup, coordinator)JSON-RPC 2.0A2A Agents
8031–8033Nexus Telemed Scribe (transcriber, summariser, EHR writer)JSON-RPC 2.0A2A Agents
8034–8039Nexus HelixCare (primary care, specialty, telehealth, home visit, CCM, avatar)JSON-RPC/WS/SSEA2A Agents
8041–8044Nexus Consent Verification (insurer, provider, analyser, HITL UI)JSON-RPC 2.0A2A Agents
8051–8053Nexus Public Health (hospital reporter, OSINT, central surveillance)JSON-RPC 2.0A2A Agents
8060–8067Nexus Interop Gateways (FHIR profile, X12, NCPDP, audit, HL7v2, CDA, DICOM)JSON-RPC 2.0A2A Agents
8080HAPI FHIR Server (Mock)HTTP/RESTFHIR
8090Compliance HITL AgentHTTPGovernance
8099Nexus Command CentreHTTP/WSMonitoring
8100Nexus On-Demand GatewayJSON-RPC 2.0Routing
8100–8123BT AI/ML (LLM Router, Guardrail, Bevan LLM, Prompt Constructor)HTTP/RESTAI/ML (16 svcs)
8115–8130BT Media & Comms (DICOM, Image, OCR, Voice, WhatsApp, Email/SMS, Notifications)HTTP/REST/WSMedia (10 svcs)
8150–8172BT Integration Connectors (HL7v2, FHIR, X12, Clearinghouse, Connector Registry)HTTP/RESTConnectors (15 svcs)
8180–8190BT Security & Policy (Policy DP, Secrets Mgr, Rate Limiter, Audit Store)HTTP/RESTSecurity (11 svcs)
8200–8216BT Public Health & MCP Servers (Surveillance, Terminology MCP, FHIR MCP, etc.)HTTP/REST/MCPPublic Health + MCP (12 svcs)
8220–8231BT Control Plane (SignalBox Control Plane, Session Supervisor, Temporal Worker)HTTP/WSOrchestration (5 svcs)
3000GHARRA Frontend (Next.js)HTTPFrontend
8400GHARRA API ServerHTTP/RESTRegistry API
5432PostgreSQL 16TCPDatabase
6379Redis 7TCPCache / Sessions
9092KafkaTCPEvent Streaming
9200Elasticsearch 8HTTPSearch (SNOMED)
1883, 9001MQTT Broker (Mosquitto) + WebSocketTCP/WSIoT Events
9090PrometheusHTTPMetrics
3001GrafanaHTTPDashboards
16686JaegerHTTPTracing
18080Local LLM (llama.cpp)HTTPAI Inference

Load Balancing

LayerSmallMediumLarge
L7 (HTTP/HTTPS)Direct access (no LB)Nginx reverse proxy or cloud ALBCloud ALB + WAF + CDN
L4 (TCP)N/AN/ANLB for PostgreSQL, Kafka, Redis
Ingress ControllerN/Anginx-ingress or Traefiknginx-ingress + cert-manager
SSL TerminationSelf-signed / Let’s EncryptManaged certificatesPrivate CA + auto-rotation
WebSocket SupportDirect (20 clients max)ALB with sticky sessionsALB + connection draining

Firewall Rules AC-4

DirectionSource / DestinationPortsProtocolPurpose
IngressInternet → LB443, 80HTTPS/HTTPFrontend + API
IngressLB → Services8000–8400HTTPInternal microservices
IngressMonitoring subnet9090, 3001, 16686HTTPObservability stack
EgressServices → api.openai.com443HTTPSLLM inference + TTS
EgressServices → SMTP relay587TLSEmail notifications
EgressServices → Twilio / LiveKit443HTTPS/WSSVoice, video, SMS
EgressGHARRA → Federation peers443HTTPSRegistry federation
InternalService meshAll internalmTLSService-to-service
DefaultAll otherAll*DENY

Security HIPAA §164.312 SP 800-53

Identity, access management, encryption, and compliance requirements. The platform enforces zero-trust: every request is re-authenticated regardless of network location.

Authentication & Authorisation

RequirementSmallMediumLarge
User AuthenticationJWT HS256 (dev secret)OIDC via KeycloakOIDC + MFA + SSO
Service-to-ServiceShared JWT secretJWT RS256 + optional mTLSMandatory mTLS + SPIFFE
Agent Auth (Nexus)JWT HS256JWT RS256 + DID verifyJWT + DID + DPoP
Registry Auth (GHARRA)Auth disabledJWT + rate limitingJWT + mTLS + DPoP + WAF
API KeysN/ASHA-256 hashed, scopedSHA-256, rotation 90d, KV-backed
Token Expiry1h browser tokens15m access / 24h refresh5m access / 1h refresh / rotation
IAM Groups1 (admin)3 (admin, clinical, ops)5+ (admin, clinical-high, clinical-med, ops, governance, connector)
RBAC / ABACBasic role checksRBAC per serviceFull ABAC policy engine with PDP

Encryption & Data Protection

RequirementSmallMediumLarge
In TransitTLS 1.2+ (optional)TLS 1.3, mTLS internalTLS 1.3 mandatory, mTLS all services
At RestOS-level encryptionAES-256 managed keysAES-256 + customer-managed keys (CMK)
PHI ScanningDisabledIngress middleware (GHARRA gateway)All ingress + egress paths
Secrets Store.env filesAzure Key Vault / AWS Secrets ManagerHSM-backed KV + auto-rotation
Audit LedgerJSONL filePostgreSQL hash-chained tableImmutable, tamper-evident, WORM
Audit Retention30 days1 year7 years (HIPAA 164.530(j))

Rate Limiting (GHARRA Tiers)

TierReq/minReq/dayMax AgentsFederationSLA
developer601,0005No—
team30025,00050No99.5%
business1,000100,000500Yes99.9%
scale5,000500,0005,000Yes99.95%
enterprise50,0005,000,000100,000Yes99.99%

Observability Operational

Monitoring, tracing, logging, and alerting infrastructure. SLO target: 99.9% availability, P99 latency <500ms.

ComponentSmallMediumLarge
MetricsConsole logs onlyPrometheus (100m CPU, 512Mi), 15s scrapePrometheus HA (Thanos/Cortex), 15s scrape
DashboardsN/AGrafana (50m CPU, 256Mi)Grafana HA + custom dashboards
TracingN/AJaeger + OpenTelemetry (OTLP)Jaeger/Tempo HA + OpenTelemetry Collector
Loggingstdout / stderrStructured JSON, 30-day retentionStructured JSON, SIEM integration, 1-year retention
AlertingN/APrometheus Alertmanager (basic rules)Multi-burn-rate SLO alerts (fast 1h / medium 6h / slow 24h)
Health ChecksManual/health + /ready probes, 30s interval/health + /ready, 15s interval, auto-remediation
Key Alert Rules—Error budget fast-burn, high latency P99Error budget 3-tier, rate limit spikes, federation circuit open, auth failure spike, PHI block spike

AI/ML Infrastructure Application Services

Large language model access, local inference, voice processing, and browser automation requirements.

LLM Models

ModelProviderUsed ByPurpose
gpt-4o-miniOpenAI APINexus agents (default)Clinical reasoning, diagnosis, summarisation
gpt-4o-mini-ttsOpenAI APIClinician AvatarText-to-speech (PCM 24kHz 16-bit mono)
gpt-5.1OpenAI APIBulletTrain LLM RouterClinical decision support, governance
gpt-5-miniOpenAI APIBulletTrain GuardrailSafety guardrails, NER extraction
claude-opus-4-6Anthropic APIGHARRA Computer UseBrowser automation via Playwright
smollm2 (GGUF)Local llama.cppNexus (offline profile)Air-gapped / low-latency inference
whisper (base.en)Local / OpenAIBulletTrain VoiceSpeech-to-text transcription
VCTK VITSLocal TTSBulletTrain VoiceLocal text-to-speech

API Key Requirements

APISmallMediumLarge
OpenAI API1 key, pay-as-you-go1 key, $200-500/mo budgetEnterprise agreement, $2,000-10,000/mo
Anthropic APIN/A1 key (computer use only)1 key, dedicated quota
Local InferenceN/A1× T4 GPU nodeDedicated GPU pool

Browser Automation (Computer Use)

AI-CU-001

Playwright Chromium Sessions

GHARRA computer use requires headless Chromium via Playwright. Each session: 200m–1000m CPU, 512Mi–1Gi RAM, display 1280×800 (configurable 800-1920 × 600-1200). Max 50 turns per task. Requires ANTHROPIC_API_KEY server-side.

Message Brokers & Events

Event streaming, caching, and IoT messaging infrastructure. The platform uses a tiered fallback: Kafka → Redis pub/sub → in-memory EventBus.

ComponentSmallMediumLarge
Kafka BrokersN/A (in-memory EventBus)1 broker, 3 partitions/topic3–5 brokers, 6+ partitions, replication factor 3
Kafka Storage—50 GB, 7-day retention100 GB/broker, 30-day retention
Kafka Security—PLAINTEXTSASL_PLAIN + TLS
Redis ModeSingle instance, 256 MBSingle + AOF, 2 GB3-node Sentinel or Cluster, 6 GB/node
Redis Use CasesBasic cachingSessions, rate limiting, pub/subDistributed state, event bus, CRI cache
MQTT BrokerN/AMosquitto single, port 1883 + WS 9001Mosquitto clustered or EMQX
WebSocket (Command Centre)Direct, 20 clients max20 clients, 5s poll cycle50+ clients via LB, 2s poll cycle
SSE StreamsPer-agent, 64 events bufferPer-agent, cursor resume, 300s retentionPer-agent, cursor resume, Redis-backed

Container Orchestration

Kubernetes cluster, Docker, and autoscaling configuration.

RequirementSmallMediumLarge
OrchestrationDocker Compose v2Kubernetes 1.28+Kubernetes 1.28+, multi-cluster
Nodes1 (host machine)3–5 worker nodes9–15 workers (multi-AZ/region)
Node Size8 vCPU / 32 GB8–16 vCPU / 32–64 GB per node16–32 vCPU / 64–128 GB per node
Container Basepython:3.11-slim + tini (PID 1 handling) for all agents. node:20-alpine for frontends.
Container RegistryLocal build onlyAzure ACR / AWS ECR (Basic SKU)ACR/ECR (Standard), geo-replicated
HPA (Autoscaling)N/ACPU-based, 70% thresholdCustom metrics (request rate, queue depth), 70% CPU
Min/Max Replicas1 / 1 per service1 / 3 per service2 / 10 per service
Health ProbesDocker HEALTHCHECKK8s liveness (10s) + readiness (5s)K8s liveness + readiness + startup (40s grace)
NamespacesN/A3: platform, monitoring, data5+: platform, nexus, gharra, monitoring, data

External Dependencies

Third-party services, cloud provider resources, and healthcare standards servers required for operation.

Cloud Provider Services

ServiceAzureAWSGCPOn-Premise
ComputeContainer AppsECS / EKSCloud Run / GKEKubernetes / Docker
DatabaseFlexible Server PG 16RDS PostgreSQLCloud SQLPostgreSQL 16
CacheAzure Cache for RedisElastiCacheMemorystoreRedis 7
Event StreamingEvent Hubs (Kafka API)MSKManaged KafkaApache Kafka
Object StorageBlob StorageS3Cloud StorageMinIO / NFS
SecretsKey VaultSecrets ManagerSecret ManagerHashiCorp Vault
IdentityEntra IDCognito / IAMIdentity PlatformKeycloak
MonitoringMonitor / Log AnalyticsCloudWatchCloud MonitoringPrometheus + Grafana
DNSDNS ZoneRoute 53Cloud DNSBIND / CoreDNS
CDNFront DoorCloudFrontCloud CDNNginx / Varnish

Third-Party API Dependencies

APIPurposeRequiredEnv Variable
OpenAILLM inference + TTSRequired (unless local LLM)OPENAI_API_KEY
AnthropicComputer Use (browser automation)OptionalANTHROPIC_API_KEY
TwilioSMS, WhatsApp, voice callsOptionalTWILIO_ACCOUNT_SID
LiveKitWebRTC video/audio (telemedicine)OptionalLIVEKIT_URL
StripePayment processing (marketplace)OptionalSTRIPE_SECRET_KEY
Exa SearchResearch literature searchOptionalEXA_API_KEY
NHS TRUDSNOMED CT terminology updatesOptionalTERMINOLOGY_TRUD_API_KEY

Healthcare Standards Servers

ServerPurposeSmallMediumLarge
HAPI FHIR R4Clinical data storeEmbedded H2 (port 8080)HAPI + PostgreSQLHAPI HA + PostgreSQL HA
Snowstorm (SNOMED CT)Medical terminologyOffline modeSingle + ElasticsearchHA + Elasticsearch cluster
Open Concept LabICD, CVX, ATC codesOffline modeSingle instanceHA instance

Scalability

Horizontal scaling strategies, connection pooling, caching, and federation scaling for multi-region deployments.

StrategySmallMediumLarge
Horizontal Pod AutoscalingN/ACPU-based, 70% target, max 3 replicasCustom metrics (RPS, queue depth), max 10 replicas
DB Connection PoolingN/A (SQLite)asyncpg pool, 10 connectionsPgBouncer, 50–100 connections per service
Cache StrategyIn-process (dict)Redis, 60s TTL (agent cards), 5min TTL (CRI)Redis Cluster, tiered TTL, cache-aside pattern
GHARRA FederationSingle registrySingle sovereign registryRoot + sovereign + organisational (3-tier), Bloom filter CRI
Federation Circuit BreakerN/APer-peer circuit breaker (CLOSED→OPEN→HALF_OPEN)Per-peer CB + CRI cache + timeout 5s
Event Bus ScalingIn-memory (single process)Redis pub/sub (single node)Kafka multi-partition, consumer groups
Multi-RegionN/ASingle regionActive-active, data residency per jurisdiction
CDN / EdgeN/AStatic asset CDNFull CDN + edge caching + geo-routing

Deployment Checklist 29148 §6.6

Pre-implementation checklist by deployment profile. Complete all items before first deployment.

All Profiles (Required)

PRE-001

Python 3.11+ and Node.js 20 installed

Verify runtime versions. Docker base images use python:3.11-slim and node:20-alpine.

PRE-002

OpenAI API key provisioned

Required for LLM inference and TTS unless using local inference profile. Set OPENAI_API_KEY.

PRE-003

JWT secret configured (non-default)

Change NEXUS_JWT_SECRET from dev-secret-change-me. Use 32+ character random string.

PRE-004

Port ranges 8000-8400 available

Verify no port conflicts across the full service port registry. See Networking section.

Medium & Large (Additional)

MED-001

PostgreSQL 16 provisioned

Migrate from SQLite to PostgreSQL. Set DATABASE_URL and GHARRA_DB_URL. Automated migrations run at startup.

MED-002

Redis 7 deployed

Required for distributed rate limiting, session cache, and event bus. Set REDIS_URL and GHARRA_REDIS_URL.

MED-003

OIDC identity provider configured

Keycloak or cloud OIDC. Set AUTH_MODE=oidc and GHARRA_AUTH_MODE=jwt.

MED-004

TLS certificates provisioned

All external-facing endpoints must use TLS 1.3. Configure ingress controller or reverse proxy with SSL termination.

MED-005

Observability stack deployed

Prometheus, Grafana, and Jaeger. Import GHARRA dashboard from infra/grafana/dashboards/gharra-overview.json.

Large Only (Additional)

LRG-001

Kafka cluster provisioned

3–5 brokers with replication factor 3. Set GHARRA_KAFKA_BOOTSTRAP_SERVERS. Required for federation events and metering.

LRG-002

mTLS service mesh enabled

Set BT_MTLS_ENABLED=true and GHARRA_AUTH_MODE=mtls. Provision service certificates via cert-manager or private CA.

LRG-003

Multi-region networking configured

Cross-region VPC peering or mesh. GHARRA federation peers: set GHARRA_KNOWN_PEERS with sovereign registry URLs.

LRG-004

HSM-backed secrets management

Azure Key Vault with purge protection or AWS CloudHSM. Auto-rotation for JWT signing keys (90-day cycle).

HIPAA compliance: For deployments handling Protected Health Information (PHI), enable GHARRA_ENV=production to activate PHI scanning middleware, strict CORS enforcement, and audit logging. Never store PHI in the GHARRA registry — it is a trust anchor and key directory only.

Specification version 1.0 — Last updated 2026-03-30 — Document ID: SYMPH-TA-001 — Classification: Public

Ready to deploy.

Choose your deployment profile and provision your infrastructure. Our team can walk you through enterprise deployments.

Book Architecture Walkthrough Developer Hub