Zilla Gateway collega Apache Kafka e gli agenti AI tramite una singola configurazione
Chiunque abbia provato a inviare eventi da Apache Kafka direttamente al frontend o ai client mobili conosce questo dolore. I browser non possono lavorare con il protocollo binario di Kafka. Finisce che scrivi adattatori per microservizi infiniti, attivi bridge WebSocket o assembli soluzioni alternative con Server-Sent Events. La situazione diventa ancora più complicata quando appare nelle vicinanze l'IoT con il protocollo MQTT, e il business richiede di collegare agenti AI tramite MCP (Model Context Protocol) a questa infrastruttura.
Invece di un insieme di server proxy personalizzati, gli sviluppatori del team Aklivity hanno proposto un singolo gateway chiamato Zilla.

Cosa può fare Zilla
Fondamentalmente, Zilla combina due ruoli. Il primo ruolo è familiare: è un gateway event-driven (Event Gateway). Accetta richieste in entrata su HTTP, WebSocket, gRPC o SSE e le traduce direttamente in topic Kafka o broker MQTT senza scrivere codice lato server.
Il secondo ruolo è apparso con l'aggiornamento alla versione 2.0. Zilla ha imparato a lavorare come MCP Gateway per modelli linguistici di grandi dimensioni e agenti autonomi. Se il tuo assistente AI ha bisogno di strumenti da fonti diverse (API REST interne, topic Kafka, server MCP esterni), Zilla li aggrega in un singolo endpoint gestito.
Tutta la magia è configurata in modo dichiarativo attraverso un singolo file zilla.yaml. Descrivi i binding, le regole di routing, la validazione dello schema e le policy di sicurezza, poi esegui il binario o il container.
Quattro funzionalità chiave del progetto
Forwarding diretto REST e WebSocket ai topic Kafka
Non hai più bisogno di scrivere un backend in Go o Java solo per accettare un HTTP POST e mettere il payload in un topic. Zilla prende il corpo della richiesta, lo valida contro lo schema e lo scrive su Kafka.
La lettura funziona in modo simile: il frontend apre una connessione SSE o WebSocket, e il gateway trasmette i messaggi dalle partizioni direttamente al codice client con supporto per la cache.
Federazione di strumenti per agenti AI
Invece di collegare un LLM a cinque server MCP diversi con chiavi e formati separati, punti l'agente all'indirizzo del gateway:
http://localhost:7114/mcp
Zilla raggruppa automaticamente i toolkit disponibili attraverso namespace intuitivi:
github__create_pr
payments__refund
kafka__produce_message
L'agente vede un catalogo unificato di funzioni, ed è il gateway stesso a decidere dove inviare la chiamata: al sistema di pagamento REST API, a GitHub, o a una coda di messaggi.
Controllo del contesto e caricamento lazy degli strumenti
Quando hai decine di strumenti, la finestra di contesto del modello si riempie rapidamente con le descrizioni degli schemi. Zilla divide gli strumenti in "caldi" (eager) e "freddi" (cold). L'agente riceve prima un elenco base di capacità, e le specifiche dettagliate vengono caricate solo quando effettivamente necessarie. Questo risparmia token e riduce la latenza delle risposte.
Guard e validazione dei dati integrati
Il gateway valida le strutture dati in entrata e in uscita contro schemi JSON Schema, Avro e Protobuf. Se il modello genera una chiamata errata o il client invia JSON malformato, la richiesta viene bloccata a livello di gateway prima di raggiungere il circuito interno.
Sotto il cofano
Il gateway è scritto in Java, ma l'architettura differisce significativamente dalle classiche applicazioni enterprise. Gli sviluppatori miravano a ridurre l'overhead di memoria e la latenza, quindi hanno applicato diverse ottimizzazioni a basso livello:
- Generazione di strutture leggere (flyweight) per lavorare con buffer binari senza allocazioni heap non necessarie.
- Binding di una connessione a un singolo worker per l'intera durata della sessione, che elimina la sincronizzazione costosa tra thread.
- Scambio di frame tra stream attraverso binding tramite memoria condivisa con supporto per back-pressure.
- Uno strato di caching per Kafka che recupera un record dal broker una volta e lo distribuisce a migliaia di sottoscrittori.
Grazie a questo, Zilla praticamente non aggiunge latenza di rete quando fa da proxy per gli stream.
Quick Start
Il modo più semplice per provare il gateway è attraverso Docker Compose.
Se hai bisogno di REST su Kafka:
git clone https://github.com/aklivity/zilla.git
cd zilla/examples
docker compose --project-directory http.kafka.crud up -d
Dopo l'avvio, verifichiamo l'invio dei messaggi:
curl -X POST http://localhost:7114/items \
-H 'Content-Type: application/json' \
-d '{"name": "test-item", "price": 42.50}'
curl http://localhost:7114/items
Se stai sperimentando con agenti AI e il protocollo MCP:
docker compose --project-directory mcp.proxy up -d
Il gateway avvierà un singolo punto di ingresso sulla porta 7114 con supporto Streamable HTTP ed esporrà le metriche sulla porta 7190.
Sfumature e limitazioni
Quando ci si avvicina al progetto, ci sono un paio di cose da tenere a mente.
Zilla ha il proprio modello di configurazione. I file zilla.yaml risultano essere piuttosto dettagliati: devi capire in dettaglio i concetti di vault, binding, route e pipeline. Se sei abituato alle configurazioni semplici di Nginx, la sintassi qui richiederà tempo per essere appresa.
Il secondo punto riguarda la licenza. La versione base è distribuita sotto la Aklivity Community License. È gratuita per qualsiasi workload interno e uso in produzione, ma proibisce la vendita di Zilla come servizio standalone. Le funzionalità avanzate come l'archiviazione di stato distribuita basata su Redis/Hazelcast o l'autorizzazione OAuth estesa sono spostate nella versione commerciale Zilla Plus.
Vale la pena provarlo
Zilla affronta due problemi di integrazione contemporaneamente. Elimina la scrittura di codice boilerplate attorno a Kafka e porta ordine nel zoo di strumenti per agenti AI.
Il progetto è particolarmente utile se:
- Stai costruendo un sistema event-driven e vuoi consegnare dati ai client su protocolli web senza livelli extra.
- Stai sviluppando agenti AI e sei stanco di amministrare server MCP sparsi e chiavi API.
- La tua infrastruttura ha MQTT e Kafka che coesistono, richiedendo un singolo punto di ingresso e monitoraggio.
Puoi iniziare con gli esempi pronti nel repository: ci sono scenari chiari per la maggior parte dei task tipici.
Progetti correlati