Zilla Gateway verbindt Apache Kafka en AI-agents via één configuratiebestand
Iedereen die heeft geprobeerd om events rechtstreeks vanuit Apache Kafka naar de frontend of mobiele clients te pushen kent deze pijn. Browsers kunnen niet overweg met het binaire protocol van Kafka. Je eindigt met het schrijven van eindeloze microservice-adapters, het opzetten van WebSocket-bruggen, of het in elkaar flansen van workarounds met Server-Sent Events. De situatie wordt nog gecompliceerder wanneer IoT met het MQTT-protocol in de buurt verschijnt, en de business vraagt om AI-agents via het MCP (Model Context Protocol) ook met deze infrastructuur te verbinden.
In plaats van een heleboel aangepaste proxy-servers stelden de ontwikkelaars van het Aklivity-team één gateway voor: Zilla.

Wat Zilla Kan Doen
Essentieel combineert Zilla twee rollen. De eerste rol is bekend: het is een event-driven gateway (Event Gateway). Het accepteert inkomende requests via HTTP, WebSocket, gRPC of SSE en vertaalt deze rechtstreeks naar Kafka-topics of MQTT-brokers zonder server-side code te schrijven.
De tweede rol verscheen met de update naar versie 2.0. Zilla leerde werken als een MCP Gateway voor large language models en autonome agents. Als je AI-assistent tools nodig heeft uit verschillende bronnen (interne REST API's, Kafka-topics, externe MCP-servers), aggregeert Zilla ze naar één beheerd eindpunt.
Alle magie wordt declaratief geconfigureerd via één zilla.yaml bestand. Je beschrijft bindings, routing-regels, schema-validatie en beveiligingsbeleid, en dan start je de binary of container.
Vier Belangrijkste Functies van het Project
Directe REST- en WebSocket-doorsturing naar Kafka-topics
Je hoeft geen backend in Go of Java te schrijven om alleen een HTTP POST te accepteren en de payload in een topic te plaatsen. Zilla neemt de request body, valideert deze tegen het schema en schrijft naar Kafka.
Lezen werkt op vergelijkbare wijze: de frontend opent een SSE-verbinding of WebSocket, en de gateway streamt berichten van partities rechtstreeks naar de clientcode met caching-ondersteuning.
Tool-federatie voor AI-agents
In plaats van een LLM te verbinden met vijf verschillende MCP-servers met aparte keys en formaten, verwijs je de agent naar het gateway-adres:
http://localhost:7114/mcp
Zilla groepeert automatisch beschikbare toolkits via intuïtieve namespaces:
github__create_pr
payments__refund
kafka__produce_message
De agent ziet een uniform catalogus van functies, en de gateway beslist zelf waar de call naartoe gaat: naar het REST API van het betalingssysteem, naar GitHub, of naar een message queue.
Contextcontrole en Lazy Tool Loading
Wanneer je tientallen tools hebt, vult het contextvenster van het model zich snel met schema-beschrijvingen. Zilla verdeelt tools in "hot" (eager) en "cold". De agent ontvangt eerst een basislijst van mogelijkheden, en gedetailleerde specificaties worden pas opgehaald wanneer ze daadwerkelijk nodig zijn. Dit bespaart tokens en vermindert de response-latentie.
Ingebouwde Guards en Data-validatie
De gateway valideert inkomende en uitgaande datastructuren tegen JSON Schema, Avro en Protobuf-schema's. Als het model een incorrecte call genereert of de client malformed JSON verstuurt, wordt het request geblokkeerd op gateway-niveau voordat het het interne circuit bereikt.
Onder de Motorkap
De gateway is geschreven in Java, maar de architectuur verschilt significant van klassieke enterprise-applicaties. De ontwikkelaars streefden naar het verminderen van memory-overhead en latentie, dus pasten ze verschillende low-level optimalisaties toe:
- Generatie van lichtgewicht structuren (flyweights) voor het werken met binaire buffers zonder onnodige heap-allocaties.
- Binding van een verbinding aan één worker voor de gehele levensduur van de sessie, wat dure thread-synchronisatie elimineert.
- Frame-uitwisseling tussen streams via bindings door gedeeld geheugen met back-pressure-ondersteuning.
- Een caching-laag voor Kafka die een record één keer ophaalt van de broker en distribueert naar duizenden abonnees.
Dankzij dit voegt Zilla praktisch geen netwerklatentie toe bij het proxyen van streams.
Quick Start
De makkelijkste manier om de gateway uit te proberen is via Docker Compose.
Als je REST over Kafka nodig hebt:
git clone https://github.com/aklivity/zilla.git
cd zilla/examples
docker compose --project-directory http.kafka.crud up -d
Na opstart verifiëren we het versturen van berichten:
curl -X POST http://localhost:7114/items \
-H 'Content-Type: application/json' \
-d '{"name": "test-item", "price": 42.50}'
curl http://localhost:7114/items
Als je experimenteert met AI-agents en het MCP-protocol:
docker compose --project-directory mcp.proxy up -d
De gateway start één entry point op poort 7114 met Streamable HTTP-ondersteuning en stelt metrics bloot op poort 7190.
Nuances en Beperkingen
Bij het kennismaken met het project zijn er een paar zaken om in gedachten te houden.
Zilla heeft zijn eigen configuratiemodel. De zilla.yaml bestanden blijken vrij gedetailleerd te zijn: je moet de concepten van vaults, bindings, routes en pipelines goed begrijpen. Als je gewend bent aan simpele Nginx-configs, zal de syntax hier tijd kosten om te leren.
Het tweede punt betreft licentiëring. De basisversie wordt gedistribueerd onder de Aklivity Community License. Het is gratis voor elk intern gebruik en productiegebruik, maar verbiedt het verkopen van Zilla als standalone service. Geavanceerde functies zoals gedistribueerde state-opslag op basis van Redis/Hazelcast of uitgebreide OAuth-autorisatie zijn verplaatst naar de commerciële Zilla Plus-versie.
Is het de Moeite Waard om te Proberen
Zilla pakt twee integratie-pijnpunten tegelijk aan. Het elimineert het schrijven van boilerplate-code rond Kafka en brengt orde in de zoo van tools voor AI-agents.
Het project is vooral nuttig als:
- Je een event-driven systeem bouwt en data wilt afleveren aan clients via webprotocollen zonder extra lagen.
- Je AI-agents ontwikkelt en moe bent van het beheren van verspreide MCP-servers en API-keys.
- Je infrastructuur MQTT en Kafka naast elkaar heeft, wat één entry point en monitoring vereist.
Je kunt beginnen met kant-en-klare voorbeelden in de repository: er zijn duidelijke scenario's voor de meeste typische taken.
Gerelateerde projecten