De leeftijd van een tool meet je aan hoeveel zijn TUI veronderstelt dat je er niet écht naar kijkt.
De Hermes-terminal was vóór v0.11.0 precies dat type interface: hij werkte, op de manier waarop de tekstinstaller van een oude Linux-box werkt. Elke toets deed iets, elk commando deed wat het beloofde, en de visuele layout was meer een dun beleefdheidsgebaar dan een ontwerp. Ik gebruikte hem elke dag. Ik had niet door hoe vaak ik stilletjes om hem heen werkte, totdat v0.11.0 uitkwam.
Op 23 april 2026 — acht dagen na v0.10.0 — landde de release die de Hermes-team zelf "the interface release" doopte. Het is een naam die slap klinkt, totdat je het changelog leest en doorhebt dat de laag tussen jou en de agent simpelweg een ander programma is geworden.
React, Ink en de TUI die nu een TUI is
De Ink TUI is de zichtbare verandering. Ink is Vadim Demedes' bibliotheek waarmee je terminal-UI's bouwt met React-componenten — dezelfde primitieve elementen als op het web, alleen naar de terminal gerenderd. Hermes' TUI is volledig in Ink herschreven, met een Python-backend die via JSON-RPC met de frontend praat.
Wat het concreet betekent: streaming-output schokt niet meer wanneer er een tool-call tussendoor komt. Spinner-frames blijven netjes naast tekst staan. Resizen van de terminal herrekent de layout zonder de geschiedenis kwijt te raken. Lange tool-output wordt opgeknipt in een collapsible block dat je openvouwt. Een vooruitkijken naar inline image-rendering staat zelfs in de release notes vermeld voor toekomstige iteraties.
Dat klinkt als visuele politoer, en op de eerste vijf seconden is het ook dat. Op uur vijf is het meer dan dat: het is een TUI die zich gedraagt zoals een interactieve omgeving zich moet gedragen. Voor het eerst in een jaar lijkt de terminal het programma waarin Hermes echt thuishoort, niet een minimale shell waar hij in geduwd is.
Pluggable transport — de model-laag is een laag geworden
Onder de TUI zit de tweede grote verandering: de pluggable transport-architectuur. De model-laag was vóór v0.11.0 eigenlijk een lange if-elif-keten die per provider iets uniek deed. v0.11.0 vervangt dat door één transport-interface waarop providers worden geplugd.
De vier transports die op dag één geleverd zijn: Anthropic Messages, OpenAI ChatCompletions, OpenAI Responses API, en Amazon Bedrock. Daar bovenop landen vijf nieuwe inference-paden: GPT-5.5, Claude Opus 4.7 (1M-context), Kimi K2.6, QQBot (Tencent), en een direct Bedrock-pad voor enterprise.
Het belangrijke punt is niet "vijf nieuwe modellen" — dat is een normale week in 2026 — maar dat het toevoegen van een zesde, of een zevende, voortaan een plugin-implementatie is in plaats van een patch op een if-keten. v0.13.0 zal hierop bouwen door pluggable provider-systems toe te voegen voor gateway-adapters. De vorm is hier al uitgetekend.
/steer, mid-flight koers wijzigen
/steer is de slash-command die je in een lopende agent toelaat om bij te sturen zonder af te kappen en opnieuw te beginnen. Vóór v0.11.0 was de manier om de richting van een lopende agent bij te stellen: Ctrl-C, herstart, nieuwe prompt. Dat verlies je context. /steer zegt: nee, blijf doen wat je doet, maar weeg dít zwaarder mee.
Het effect is kleiner dan een fundamentele protocolverandering en groter dan een ergonomische tweak. Wie Hermes laat lopen op iets dat langer duurt dan een minuut, krijgt nu een knop om in te grijpen zonder de hele staat weg te gooien.
In dezelfde geest: /queue laat je een rij van vervolgvragen alvast invoeren terwijl de agent nog bezig is met de huidige. Dat klinkt klein totdat je beseft dat de cadans van een TUI-conversatie altijd was: typ, wacht, typ, wacht. v0.11.0 maakt dat: typ, typ, typ, de agent werkt het in volgorde af.
Het plugin-oppervlak is geen klein contract meer
De plugin-API krijgt in v0.11.0 een fundamentele uitbreiding. Plugins kunnen voortaan eigen TUI-componenten leveren, niet alleen achtergrond-tools. Een plugin kan een eigen statusregel toevoegen, een eigen panel, een eigen modal-dialoog die door dezelfde Ink-renderer wordt gestreamd als de rest van de TUI.
Dat klinkt onschuldig en is het niet. Een plugin-API die alleen achtergrondhandelingen aankan, is een plugin-API voor scripts. Een plugin-API die het renderen mag, is een plugin-API voor toepassingen. v0.11.0 maakt die overstap.
De MCP-laag krijgt parallel een OAuth 2.1 device flow update — opnieuw, in de vorm van eerder werk uitbreiden in plaats van vervangen.
Wat de naam "interface release" eigenlijk dekt
De release notes noemen v0.11.0 "the interface release", en op het eerste gezicht klinkt dat als een naam voor "we hebben de TUI opgepoetst". Maar als je het changelog op een rij zet, gaat het over interfaces op drie niveaus tegelijk:
- •De mens-agent interface (de TUI is herschreven).
- •De agent-model interface (de transport-laag is herschreven).
- •De plugin-host interface (het plugin-contract is uitgebreid tot iets dat de TUI mag bedienen).
Het is in essentie een release waarin de drie randen die Hermes raken — boven, onder en zijwaarts — alle drie zijn vernieuwd in dezelfde versie. Dat is ongebruikelijk voor een wekelijkse cadans en pas mogelijk geworden doordat de transport-refactor in v0.10.0 al stilletjes het pad had vrijgemaakt.
Wat nu beter is, met de getallen
- •Streaming throughput ligt ongeveer 2× hoger op Claude door betere tokenbuffering in de Ink-renderer.
- •Cold start van de TUI ligt 28% lager — een mooie eerste meting, vóór de v0.12.0-stap van 57% er nog overheen komt.
- •Memory footprint stijgt licht (~12%) als gevolg van de Ink-runtime, in ruil voor de zojuist genoemde throughput.
Geen van deze getallen is in zijn eentje een verkoopargument. Bij elkaar opgeteld is het verschil tussen "voelt vlot" en "voelt nét niet vlot" verdwenen.
---
Wat ik me afvraag, een week na de upgrade: hoe vaak heb ik tussen v0.10.0 en v0.11.0 stilletjes om de oude TUI heen gewerkt? Ik schakelde naar een tweede terminalvenster voor lange tool-output. Ik kopieerde streamende tekst naar een editor om hem leesbaar te maken. Ik herstartte de agent om koers te corrigeren in plaats van bij te sturen. Drie kleine workarounds die ik me niet bewust herinnerde, totdat ze in v0.11.0 niet meer nodig waren.
Goede interface-werk werkt op die manier. Je merkt het niet aan een nieuwe glanzende feature; je merkt het aan een rij oude workarounds die zonder aankondiging ophouden te bestaan.