AI

Henk: mijn AI-assistent kreeg een gezicht, een stem en één knop die ertoe doet

12 juni 2026
De Henk-console op desktop: gesprek met gerenderd antwoord, live tool-feed met tijden, en een dashboard met agenda, mail, taken en mail-agent-schakelaars
De console op desktop: gesprek, live tool-feed, en het dashboard met agenda, mail, taken en de mail-agent-schakelaars. Alle data is demo-data.

In deel 1 beschreef ik de architectuur van mijn persoonlijke AI-assistent: één Claude-brein op een thuisserver, tools via MCP, en een tier-systeem waarbij de transportlaag — niet het model — bevestiging afdwingt. Dat stuk eindigde met een prompt om er zelf een te bouwen. Dit deel gaat over wat er daarna gebeurde: de assistent kreeg een gezicht, een stem, en een naam. Henk.

Vooraf, voor de duidelijkheid: alle data in de screenshots hieronder is fictieve demo-data, gegenereerd via een mock-backend. Geen echte agenda’s, mails of namen.

Een gezicht — en bewust geen Jarvis

De assistent had front-ends (Telegram, voice), maar geen eigen plek. Die is er nu: een web-console in React/TypeScript van zo’n 60 kB, die op de desktop draait én als app op de telefoon (PWA, via het privé-VPN met een automatisch HTTPS-certificaat). En nee, het werd geen Jarvis-kloon. De naam is Henk. Iets Nederlandsers bestaat niet, en dat is precies het punt.

De stijl: donker grafiet met één koperkleurig accent dat alléén oplicht op wat er nú gebeurt. Daar zitten een paar designprincipes achter die ik graag doorgeef. Geen spinners en geen pop-ups — alle status loopt via de “presence” en de activiteitenregels in het gesprek. Mono-letters alleen voor cijfers. En droge Nederlandse microcopy: als de microfoon niets opvangt zegt Henk “Ik hoorde niets.” Als iets gelukt is: “Geregeld.”

De hele console is in ongeveer twee dagen gebouwd, deels door parallelle AI-subteams — één team op de backend-audio, één op de frontend-voice, tegelijk. Dat klinkt als een grap, maar het is gewoon hoe bouwen er inmiddels uitziet.

Je ziet de agent werken

Het grootste UX-probleem van agents is wachttijd. Een vraag waar tool-gebruik bij komt kijken duurt al snel tien tot vijftien seconden, en een stille interface voelt in die seconden kapot. De oplossing: een streaming-WebSocket op de service die elk tool-event live doorgeeft. In de interface zie je “agenda lezen… 1,2 s — mail doorzoeken… 1,4 s” verschijnen terwijl het gebeurt.

Wachttijd werd theater. Je wacht niet meer óp de assistent; je kijkt hoe hij werkt. Het is hetzelfde wachten, maar het voelt compleet anders.

De Henk-console op mobiel: chips-rij met agenda, mail en taken, een leesbaar antwoord en de live tool-feed
Mobiel (als PWA): chips voor agenda, mail en taken, en dezelfde live tool-feed. Demo-data.

Spraak, volwaardig

Praten met Henk werkt nu serieus. Hold-to-talk — knop ingedrukt houden, bewust geen open microfoon — met lokale transcriptie op de eigen server (whisper large-v3-turbo) en gesproken antwoorden via een Nederlandse stem. Werkt ook in Telegram: spraakbericht in, spraakbubbel terug.

Twee dingen die je bij het nabouwen kunt overslaan omdat ik ze al ben tegengekomen. Eén: iOS geeft geen microfoontoegang op http — HTTPS via het VPN was de fix. Twee: whisper’s automatische taaldetectie verprutst korte Nederlandse zinnen; de taal hard op NL forceren bleek cruciaal.

Leukste productie-detail: de stem is gekozen via een blinde vergelijking van twaalf Nederlandse stemmen — voorgelezen door de assistent zelf.

Een 3D-aanwezigheid uit een AI-pipeline

De “presence” — het element dat toont of Henk luistert, denkt of spreekt — is een 3D-sculptuur. Gegenereerd met Meshy (text-to-3D), nabewerkt (de sokkel op triangle-niveau weggesneden) en gerenderd met een eigen shader: mat keramiek met een koperen gloed die meebeweegt met je stem. Op trage hardware valt hij automatisch terug op een 2D-variant.

Is dat nodig? Nee. Maar een assistent waar je tegen práát heeft iets nodig dat terugkijkt, en een pulserende bol uit een text-to-3D-model is anno 2026 een middag werk.

De knop die ertoe doet

Het tier-systeem uit deel 1 geldt onverkort op het nieuwe kanaal. De console kan pas mail versturen of afspraken aanmaken na een expliciete bevestigingskaart — en die bevestiging wordt door de server-transportlaag afgedwongen, niet door het model. Een kwaadwillende instructie verstopt in een e-mail kan de knop niet omzeilen; dat is opnieuw getest op dit kanaal.

De tier-2-bevestigingskaart in de Henk-console: Mail versturen? met account, ontvanger, onderwerp en de knoppen Uitvoeren en Annuleren
De tier-2-bevestigingskaart: Henk zet het concept klaar, maar versturen kan pas na een expliciete klik. Demo-data.

Daarnaast: het maandbudget is nu een zichtbare meter in de interface, met de circuit-breaker uit deel 1 erachter. En er is een hardening-ronde gedaan langs tien edge-cases — verbinding weg terwijl er een voorstel openstaat, verlopen sessies, dat soort werk. Het aantal geautomatiseerde tests staat inmiddels op 104 backend en 52 frontend.

Dezelfde bevestigingskaart full-width op mobiel
Dezelfde kaart op mobiel, full-width. Het tier-systeem is op elk kanaal hetzelfde. Demo-data.

En hij kan nu ook máken

Nieuwste toevoeging: beeldgeneratie als tool (fal.ai/FLUX). “Maak een header-beeld voor m’n blogpost” levert een afbeelding op die automatisch in de kennisvault belandt — met een eerlijke kostenmelding erbij (zo’n 3 cent). De assistent die eerst alleen wist en regelde, maakt nu ook.

Voor wie de kosten-vraag al voelde aankomen: alles draait thuis op een Mac mini, en de maandkosten van het AI-brein zitten rond de tientjes. Niet honderden euro’s.

Wat er nog komt

Twee dingen staan op de rol: latency-tuning (die tien tot vijftien seconden mogen korter) en de koppeling met de voice-desktop-app, zodat de push-to-talk-laag uit deel 1 en de console één geheel worden.

Deel 1 met de volledige architectuur en de bouw-prompt vind je hier. En wil je hierover sparren, of Henk een keer zien werken: koffie in Bladel werkt het best. Hoe ik AI breder inzet lees je op over AI.


Richard

Meer lezen

Gerelateerde berichten