AMI.

AMI · Stack vertical para identidad móvil de agentes

Proyecto: Parallax IEI Documento: stack completo y división de capas Versión: v2 · mayo 2026 Estado: v1 en producción · plataforma propia en construcción


En una frase

AMI controla la pila completa: el protocolo que hablan los agentes, la plataforma de aplicación, la infraestructura de comunicaciones (softswitch, SMSC, provisioning de números, SIP gateway) y la operación. AMI es producto y operación propios, no integración encima de nadie. Es la telco cloud-native de los agentes AI — números propios, SMS y voz por internet, sin SIMs físicas.

Por qué controlamos el stack entero

La industria del software para agentes está naciendo y casi todos los actores nuevos cometen el mismo error estratégico: construir el producto encima de APIs de terceros o de un operador tradicional. Eso convierte a la empresa en un middleware que vive del margen que le deja el proveedor de turno y nunca llega a controlar su economía, ni su roadmap, ni su defensibilidad.

AMI hace lo contrario. Cada capa, desde el protocolo MCP que ve el agente hasta el softswitch que origina la llamada, es código y servidores nuestros. El peering físico al PSTN se resuelve como interconnect estándar, igual que cualquier operador del mundo — es operación, no producto.

El resultado:


El stack, capa por capa

Diagrama 1 — Todo lo que controla AMI

flowchart TB classDef agents fill:#1a1a24,stroke:#5dd1ff,color:#ededf2,stroke-width:1px classDef ami fill:#1a1a24,stroke:#8b6cff,color:#ededf2,stroke-width:2px classDef world fill:#1a1a24,stroke:#4ade80,color:#ededf2,stroke-width:1px A["Agentes AI · mundo
asistentes · soporte · ventas · agentes propietarios
via MCP / REST"]:::agents subgraph AMI_STACK["AMI · stack vertical bajo nuestro control"] direction TB subgraph PROTO["Capa 1 · Protocolo abierto"] MCP["MCP server (stdio + HTTP)"] REST["REST API · OpenAPI 3.1"] end subgraph APP["Capa 2 · Backend de aplicación"] ID["Agent identity · AID · keypairs"] CT["Contratos · firma · KYC/KYB"] POL["Policy engine · límites · kill switch"] AUD["Audit log inmutable"] end subgraph PLAT["Capa 3 · Plataforma de comunicaciones (propia)"] VOICE["Asterisk / FreeSWITCH
(voz, SIP, IVR, transcripción)"] SMS["Kannel / Jasmin
(SMSC propio, SMPP)"] NUM["Number inventory
(provisioning de números)"] SIPGW["SIP gateway
(originación/terminación)"] end end W["PSTN · GSMA · internet móvil mundial"]:::world A --> PROTO PROTO --> APP APP --> PLAT PLAT -->|peering global| W class AMI_STACK ami class PROTO ami class APP ami class PLAT ami

Tres capas, todas nuestras. El bloque inferior (PSTN mundial) no es un componente de producto: es a donde un operador entrega su tráfico. Nosotros mantenemos peering con redes globales, igual que cualquier operador del mundo — es operación técnica, no dependencia estratégica.

Cada componente, descrito

CapaComponenteFunciónTecnología
1MCP serverTools ami.* para agentesPython + SDK oficial MCP
1REST APIOpenAPI 3.1 para clientes no-MCPPython stdlib
2Agent identity (AID)DID + keypair + ownership credentialEd25519 + JWT-VC
2Contracts & signatureGeneración contrato, firma electrónica, webhookBackend propio + servicio firma propio
2Policy engineLímites por agente, aprobación humana, kill switchBackend propio
2Audit logAppend-only, hash chain, compliancePostgres + hash SHA-256 chain
3Asterisk / FreeSWITCHOriginación y recepción de voz · IVR · grabación · transcripción · transferencia humanoOpen source, cluster propio
3Kannel / JasminSMSC propio · SMPP server · originación/recepción SMSOpen source, cluster propio
3Number inventoryAlta/baja de números, asignación a agentes, gestión de rangosBackend propio
3SIP gatewayOriginación y terminación contra redes globales, peeringOpen source, cluster propio

Toda la pila bajo nuestro control directo. Lo único fuera de nuestro código son las redes públicas (PSTN, GSMA, internet móvil) — pero eso no es un proveedor, es el mundo. Cualquier operador del planeta tiene peering con esas redes.


El flujo, paso a paso · todo pasa por nuestros servidores

Diagrama 2 — Una llamada o SMS de un agente, end-to-end

sequenceDiagram participant Agent as Agente AI participant Proto as AMI Protocol participant App as AMI Backend participant Plat as AMI Plataforma
(Asterisk · Kannel · Number inventory) participant World as Destinatario Note over Agent,Plat: Provisión (todo bajo AMI) Agent->>Proto: ami.request_number_offer Proto->>App: validate + audit App->>Plat: assign_number (inventario propio) Plat-->>App: MSISDN reservado App-->>Agent: MobileIdentity activa con número Note over Agent,World: Envío de SMS Agent->>Proto: ami.send_sms Proto->>App: policy check + log App->>Plat: SUBMIT_SM (Kannel SMSC propio) Plat->>World: SMS entregado (vía peering) Note over Agent,World: Llamada entrante World->>Plat: dial number (SIP) Plat->>App: callback (audit + policy) App->>Proto: push event Proto-->>Agent: incoming_call notification

Observa cómo todas las decisiones pasan por nuestro stack — políticas, auditoría, identidad, signaling, originación y terminación. Las redes globales solo aparecen como destino o origen de tráfico, no como un actor intermedio.


El mapa de actores (cómo se ven los flujos de valor)

Diagrama 3 — Flujos contractuales y económicos

flowchart LR classDef parallax fill:#1a1a24,stroke:#8b6cff,color:#ededf2,stroke-width:2px classDef agents fill:#1a1a24,stroke:#5dd1ff,color:#ededf2,stroke-width:1px classDef customer fill:#1a1a24,stroke:#4ade80,color:#ededf2,stroke-width:1px classDef world fill:#1a1a24,stroke:#8888a0,color:#ededf2,stroke-width:1px C["Cliente empresarial
(despacho · SaaS · contact center)"]:::customer Ag["Agente AI
(propiedad del cliente)"]:::agents AMI["AMI Stack
(protocolo + plataforma + infra)"]:::parallax W["Mundo
(humanos · sistemas)"]:::world C -->|contrata + paga €€€€| AMI C -.opera.-> Ag Ag -->|MCP / REST| AMI AMI -->|SMS · voz · datos| W W -->|inbound| AMI AMI -->|notify| Ag AMI -.audit + compliance.-> C

Toda la relación contractual del cliente es con AMI. No hay intermediarios visibles ni invisibles entre nosotros y el cliente, ni entre nosotros y el mundo. El cliente paga a un actor (nosotros), tiene un contrato (nuestro), tiene compliance (nuestro), y todos los flujos de valor están bajo nuestra cuenta y razón.


Lo que ya tenemos hoy

No estamos describiendo un proyecto futuro. Hay piezas en producción y piezas en construcción:

En producción

En construcción (próximas semanas)

Calendario realista

HitoPlazo
Stack completo levantado y enchufado al adapter de AMI4-6 semanas
Primer SMS y primera llamada reales por nuestra plataforma6-8 semanas
Piloto con 2-3 clientes empresariales reales10-12 semanas
Numeración propia en 3-5 países iniciales12-16 semanas
Licencia de operador en España tramitada en paraleloen proceso

Canal de distribución · bundles con hosting providers

Hay una oportunidad masiva y poco evidente: los proveedores de hosting ya están vendiendo agentes AI desplegados como servicio. Uno solo de ellos, públicamente, anuncia más de 100.000 agentes desplegados en sus planes; varias plataformas cloud están moviéndose en la misma dirección.

Estos agentes nacen con todo lo que necesitan para operar en cloud — excepto un número de teléfono propio. Ningún hosting provider tiene infraestructura telco. Es el hueco perfecto para AMI.

La propuesta de canal

Ofrecer a cada hosting provider un bundle integrado: el cliente final paga, por ejemplo, +1 €/mes sobre su plan y recibe automáticamente:

Reparto típico negociable: 60% AMI / 40% provider. AMI cubre numeración, infraestructura y operación. El provider cubre integración, soporte de primer nivel y visibilidad de marca.

Cómo se ve la integración

flowchart LR classDef provider fill:#1a1a24,stroke:#fbbf24,color:#ededf2,stroke-width:1px classDef customer fill:#1a1a24,stroke:#4ade80,color:#ededf2,stroke-width:1px classDef parallax fill:#1a1a24,stroke:#8b6cff,color:#ededf2,stroke-width:2px C["Cliente final
(compra plan con agente)"]:::customer H["Hosting provider
(plataforma cloud que despliega agentes)"]:::provider AMI["AMI Stack
(número + API + compliance)"]:::parallax C -->|plan + 1 €/mes bundle| H H -->|API: provision_number_for_customer| AMI AMI -->|MSISDN + credenciales| H H -->|inyecta en env del agente| C AMI -.revenue share.-> H

El cliente final no firma con AMI — es el provider quien tiene la relación contractual. Para el cliente, el número aparece "incluido en el plan". Para nosotros, cada agente aprovisionado por un partner es un MSISDN bajo nuestra plataforma generando ingreso recurrente.

Por qué esto es asimétrico a nuestro favor

Hay precedentes

El modelo de "infraestructura como pieza por defecto de la plataforma" lleva una década probado:

Para agentes AI con número de teléfono real, este modelo no lo tiene nadie todavía. La ventana se cierra cuando un competidor lo cierre primero con uno de los hosting players grandes. Moverse ahora es la jugada.

Cómo arrancar

  1. Identificar el primer provider piloto. El candidato natural es el hosting cloud que más visiblemente está vendiendo agentes desplegados (volumen anunciado público de 100K+ agentes ya en producción), con cliente final cautivo esperando capacidades extra.
  2. API simple expuesta por AMI: POST /v1/partners/{partner_id}/provision que toma customer_ref + country y devuelve phone_number + credentials. Una sola llamada. Documentación y ejemplo de integración listos en una semana.
  3. Bundle de marca opcional: "Powered by AMI" en el dashboard del partner, o invisible si prefieren branding propio.
  4. Pricing: comisión revenue share sobre el bundle, sin cuotas mínimas iniciales para reducir fricción del partner. Ajustable cuando el volumen lo justifique.

Por qué este momento


Lo que NO somos

Para evitar malentendidos:


Contacto

Daniel Gamino · Parallax IEI Repo público: https://github.com/Gamino17/AMI Spec del protocolo: https://protocolami.com/spec Demo en vivo: https://protocolami.com Experiencia visual: https://protocolami.com/experience