Ir al contenido

Overview y stack

EMA Emi es un orquestador de agentes de IA que atiende a múltiples productos del ecosistema EMA con personalidades especializadas. Una sola URL, un solo deployment, varios agentes detrás. Cada producto cliente envía sus requests a la misma API; emaemi decide qué agente responder según la app de origen y qué tools tiene permitidas.

Versión 0.2.0 — Wave 3 (EMI as a Service) cerrada.

AppAgenteStatusTools
emahealthsalesGAlead_management
emaclinicsupportGAaidbox (per-tenant)
emavaultanalyticsGAsupabase-vault
emalablab_assistantalpha(planned Wave 5+)
emapathpathology_assistantplanned(Wave 6)
emawellwellness_coachnot implemented(Wave 5+)

Próximas waves:

  • Wave 4: UI en Vault para gestionar tenant_emi_access, mover pricing a emashared.model_pricing, eliminar deps FHIR_* legacy.
  • Wave 5+: tools reales para lab_assistant (validación Valab, abnormal explainer) y wellness_coach.
  • Wave 6: pathology_assistant con CAP synoptic + ICD-O-3.
CapaTecnologíaVersión
RuntimeCloudflare Workers
FrameworkHono^4.7
LenguajeTypeScript5+
Modelo LLMClaude (vía fetch nativo, no SDK)claude-haiku-4-5-20251001
FHIR clientAidbox per-tenant + AES-GCM credentials
Audit / activaciónSupabase emashared
Vault dataSupabase emahub (Vault)
TestsVitest + coverage-v8^4.1
DeployWrangler^4

https://emi.emahealth.io/api/chat

github.com/emahealth/emaemi

17 decisiones registradas (F001-F017) en docs/decisions.md del repo, fechadas 2026-05-08. Las más importantes:

  • F002requiresTenant=false para emahealth/emavault (visitantes anónimos / dashboards sin tenant).
  • F003checkAccess es fail-closed; el rate limit es fail-open.
  • F005 — nunca loguear prompt/response completos ni PHI.
  • F007-F009 — credenciales Aidbox encriptadas con AES-GCM, master key versionada, cache TTL 5 min in-memory por isolate.
  • F010-F012 — sales agent escribe leads en emavault.leads con upsert por email.
  • F014-F015 — pricing hardcoded en cost.ts, tokens agregados a través del tool loop completo.