
Ik bleef Buzz in een workaround wikkelen. Toen stopte ik.
Vorige week praatten mijn AI-agenten met elkaar via een stuk lijm dat ik zelf had geschreven — een gateway-adapter die mijn Hermes-opstelling verbond met de Buzz-relay. Het werkte een beetje, maar niet echt. De uitgaande berichten gingen via een CLI-aanroep, wat traag was. Ik probeerde een WebSocket-optimalisatie en die faalde stil. Ik was mijn avonden kwijt aan het plakken van een workaround in plaats van mijn agenten fatsoenlijk te laten praten.
Toen nam ik een besluit dat achteraf logisch lijkt, maar waar ik even voor nodig had: stop met om het gereedschap heen bouwen, en gebruik het zoals het bedoeld is. Buzz heeft een officieel agent-mechanisme. Het heet de relay bridge en het spreekt het Agent Client Protocol (ACP) over stdio. Elke ACP-compatibele agent kan aansluiten — Hermes, OpenClaw, een lokale agent, alles. Buzz bezit het transport. Mijn agenten behouden hun identiteit, hun geheugen, hun skills, hun tools.
De verleiding om je eigen brug te bouwen
Ik snap het. Als je een homelab draait, is de neiging om te bouwen. Een tool past niet precies bij je opstelling, dus schrijf je een kleine adapter. Dan heeft die adapter een workaround nodig. Dan heeft de workaround een bug. Voor je het weet onderhoud je een parallel systeem dat hetzelfde doet als het officiële systeem — alleen slechter, en met meer van je tijd.
Wat me uiteindelijk overtuigde, was de faalmodus. Mijn gateway-adapter had een uitgaand probleem dat ik twee keer had gepatcht en nog steeds niet goed was. Ondertussen stond Buzz’s eigen harness — buzz-acp — al gebouwd in een release-map op mijn machine. Alle stukjes waren er: de bridge-binary, het hermes acp entrypoint, zelfs een ACP-check-commando. De enige ontbrekende dependency was een Python-pakket dat ik nooit had geïnstalleerd. Ik stond één uv pip install van de officiële route af, en ik had het genegeerd.
Wat “zoals bedoeld” je echt oplevert
De officiële route gebruiken betekent dat je stopt met vechten tegen de tool. Buzz regelt het transport en de WebSocket. Je agent spreekt gewoon ACP. Als er iets breekt, debug je tegen het bedoelde gedrag van de leverancier, niet tegen je eigen lijm. En het generieke deel is belangrijker dan het lijkt: omdat de bridge protocol-gebaseerd is, kan ik morgen zonder één regel integratiecode een nieuwe agent aan de relay toevoegen. OpenClaw levert al een acp-commando mee. Zelfde harness, nieuwe agent.
De eerlijke afweging is dat de officiële route soms meer voorbereiding kost. Ik moest een extra Python-pakket installeren en elke agent een eigen Nostr-key geven. Maar dat is een eenmalige kostenpost, die een terugkerende kostenpost vervangt die ik elke avond betaalde.
De les
Als een tool niet past, check dan voordat je een brug schrijft of de tool al een brug heeft. Het officiële mechanisme staat er meestal al, gedocumenteerd en onderhouden. Ik heb twee avonden aan lijm verspild die Buzz al netjes had opgelost.
Heb jij ooit een workaround onderhouden terwijl de officiële functie er al was? Wat deed je uiteindelijk besluiten om over te stappen?
Wat vond je van dit bericht?