Wendov1.0 · iOS & Android
Nederlands

Leren

Claude Code-meldingen en goedkeuringen op je telefoon

Claude Code heeft hooks: punten waarop het een opdracht van jou uitvoert. Dat is genoeg om een melding te bouwen voor als het om toestemming vraagt of klaar is, en zelfs om vanaf je telefoon te antwoorden. Hier lees je hoe dat onder de motorkap werkt en hoe Wendo het gebruikt.

Wat een Claude Code-hook is

Een hook is een opdracht die Claude Code uitvoert als er iets gebeurt: een sessie start, je stuurt een prompt, het heeft een toestemming nodig, het rondt een antwoord af. Je declareert ze in ~/.claude/settings.json, één gebeurtenis per sleutel, elk met een opdracht:

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "~/.wendo/wendo-hook.sh" }] }
    ]
  }
}

Claude Code voert die opdracht uit en geeft op de standaardinvoer een JSON-document mee met de gegevens van de gebeurtenis: de naam van de gebeurtenis, de werkmap, de sessie-id en, afhankelijk van het geval, de tool die het wil gebruiken. De opdracht doet daarmee wat hij wil. Bij sommige gebeurtenissen kan hij ook een antwoord naar de standaarduitvoer schrijven, en zo leert Claude Code de beslissing kennen.

De gebeurtenissen die de hook van Wendo registreert

De installer hangt hetzelfde script aan zes gebeurtenissen:

  • PermissionRequest: Claude Code staat op het punt je om toestemming te vragen.
  • Notification: een melding van Claude Code die aandacht nodig heeft.
  • Stop: het is klaar met antwoorden.
  • UserPromptSubmit: je hebt een prompt gestuurd, dus het is aan het werk.
  • SessionStart en SessionEnd: een sessie begint of eindigt.

Elke gebeurtenis wordt als regel opgeslagen in ~/.wendo/events.jsonl op de computer. De app leest dat bestand via SSH met jouw sleutel, dus er is geen tussenserver en geen account. Wat je in de Inbox ziet, komt daaruit.

Om te installeren volstaat één opdracht:

curl -fsSL https://wendo.lirafy.dev/install.sh | sh

Voordat het settings.json aanraakt, slaat het een kopie op als settings.json.bak-wendo, en je kunt het herhaaldelijk uitvoeren zonder dubbele regels. Hooks die je al hebt, blijven ongemoeid. De opties en de handmatige installatie staan op de pagina over meldingen en goedkeuringen; de uitgebreidere handleiding om de hele omgeving op te zetten staat in Claude Code gebruiken vanaf je telefoon.

Hoe een goedkeuring werkt

PermissionRequest is de enige gebeurtenis waarbij de hook blijft en wacht. Als Claude Code om toestemming vraagt, legt het script het verzoek vast als openstaand, en de Inbox van de app toont de rij met knoppen om goed te keuren of te weigeren. Als je er een aantikt, zet de app het antwoord in een bestand op de computer, pakt de hook het op en geeft de beslissing terug aan Claude Code.

De wachttijd is 90 seconden. Als je dan nog niet hebt geantwoord, drukt de hook niets af en toont Claude Code zijn gewone vraag in de terminal, alsof Wendo er niet was. Dat is belangrijk: als je telefoon uitvalt of je bereik kwijtraakt, blijft niets geblokkeerd, je valt gewoon terug op hoe het altijd werkte.

Als je in de terminal eerder antwoordt dan op de telefoon, wordt dat ook vastgelegd, als lokaal afgehandeld.

Een paar omgevingsvariabelen stellen het af, gezet vóór de hookopdracht:

  • WENDO_APPROVAL_TIMEOUT: seconden om te wachten. De timeout van de hook in settings.json (120 in de geïnstalleerde configuratie) moet groter zijn.
  • WENDO_BLOCKING=0: alleen waarschuwen, zonder op een antwoord te wachten.
  • WENDO_HOST: de naam waaronder de app de computer kent, als die afwijkt van hostname -s.

De vragen van Claude (AskUserQuestion) en plangoedkeuringen (ExitPlanMode) blokkeren niet. Ze vragen om een keuze in plaats van ja of nee, dus je beantwoordt ze in de chatweergave.

Meldingen met de app gesloten: ntfy

Zolang Wendo open is, leest de app de Inbox om de paar seconden. Met de app gesloten moet iets de melding naar je telefoon pushen, en dat is ntfy: een eenvoudige pushdienst waarnaar je publiceert met een HTTP-verzoek.

  1. Zet NTFY_TOPIC voor de hookopdracht in settings.json:
NTFY_TOPIC=a-long-random-topic ~/.wendo/wendo-hook.sh
  1. Installeer de ntfy-app op je telefoon en abonneer je op datzelfde topic.
  2. Vul het topic ook in bij Wendo, onder Instellingen › Agents › Meldingen.

Zo genereer je een topic dat niemand raadt:

openssl rand -hex 16

Het topic werkt als een wachtwoord. Op de publieke ntfy-server kan iedereen die de naam van een topic kent, lezen wat erop wordt gepubliceerd en eigen berichten sturen, gebruik dus niets als claude-jan. De meldingen bevatten het project en een fragment van het bericht of de opdracht, genoeg om op te beslissen, en niet iets wat vreemden moeten lezen.

Als je niet van de publieke server afhankelijk wilt zijn, wijst NTFY_URL de hook naar je eigen ntfy-server. De standaard is https://ntfy.sh. Een tik op een melding opent de tmux-, zellij- of herdr-pane waarin de agent draait, zolang je hem in een van die drie draait (zie de tmux-pagina).

Op Android is er daarnaast een controle op de achtergrond, minstens elke 15 minuten. Alleen meldingen over toestemmingen, berichten en afgeronde taken gaan naar ntfy; de hook pusht geen sessiestart, geen sessie-einde en niet elke prompt.

Beperkingen

  • Voorlopig alleen Claude Code. De hook wordt niet bij andere agents geregistreerd.
  • Het heeft jq nodig op de computer. curl is alleen nodig voor ntfy.
  • Zonder multiplexer weet de app niet in welke pane Claude zit en kan hij je er niet rechtstreeks heen brengen.
  • Het gratis plan bevat 5 proefgoedkeuringen vanuit de Inbox; met Pro is er geen limiet.
  • Wendo staat nog niet in de stores: hij komt binnenkort in de App Store en Google Play.