Haarvisie verslagen
← Alle verslagen📄 Download als PDF
🎧 Luister dit verslag
1,0x
⬇️ Download naar telefoon

Jarvis β€” back-end handleiding

Dit is de complete technische gebruiksaanwijzing van Jarvis (jarvis.haartips.nl).

Doel: altijd precies weten hoe Jarvis werkt en waar je moet kijken bij een storing.

Alle info komt uit de geheugen-bestanden, de sessie-archieven Γ©n de live config op de VPS (gecheckt 28 juni 2026).


1. Wat is Jarvis?

Jarvis is Jamals persoonlijke AI-assistent met stem en camera.

Je praat live met hem in je browser (Google Gemini Live, natuurlijke stem).

Jamals regel: "Jarvis moet alles kunnen wat Conductor ook kan."

De 3 standen

Op de pagina kies je een knop bovenaan:


2. Architectuur

Onderdeel Waarde
URL https://jarvis.haartips.nl
Server VPS 149.210.171.174 (user jamalhaarvisie)
Frontend static /var/www/jarvis-haartips/index.html (v19)
Stem-relay (Live) jarvis-live.service β†’ /opt/jarvis/jarvis-live.py op 127.0.0.1:8749
Tool-API (functies) jarvis-api.service β†’ /opt/jarvis/jarvis-api.py op 127.0.0.1:8748
nginx route / static HTML, Cache-Control: no-store (verse versie gegarandeerd)
nginx route /api/ proxy β†’ 127.0.0.1:8748 (de tool-API)
nginx route /live WebSocket-proxy β†’ 127.0.0.1:8749 (Upgrade-headers, timeout 600s)
AI-model tekst/tools gemini-2.5-flash (in jarvis-api.py)
AI-model stem (Live) gemini-2.5-flash-native-audio-preview-09-2025
Stem-naam Sulafat (var VOICE in index.html)
DNS A-record jarvis β†’ 149.210.171.174 (via TransIP API)
SSL Let's Encrypt (certbot), ECDSA. Verloopt: 12 september 2026 (op 28-06 nog 75 dagen geldig, auto-renew)
Gemini-key staat in /opt/jarvis/env als GEMINI_KEY (chmod 600) β€” waarde niet hier vermeld

nginx-routes (samengevat)

systemd-services

Beide draaien als user jamalhaarvisie, met EnvironmentFile=/opt/jarvis/env, Restart=on-failure.


3. Waar staat wat (exacte paden)

Op de VPS (149.210.171.174, user jamalhaarvisie):

Op de MacBook (Conductor):

LET OP: index.html, jarvis-api.py en jarvis-live.py zijn deels root-owned. Voor edits: sudo tee / sudo mv. De map producten/ is van jamalhaarvisie.


4. Hoe draait het + veilig herstarten

De keten in het kort

  1. Jamal opent jarvis.haartips.nl en kiest een stand.
  2. Browser verbindt via /live (WebSocket) met jarvis-live.py (8749).
  3. jarvis-live.py pijpt de audio door naar Gemini Live (key blijft serverside).
  4. Als Jarvis een functie aanroept (bv. bericht sturen), gaat dat naar /api/... op jarvis-api.py (8748).
  5. Berichten/foto's gaan via Supabase-queue β†’ de poller op de MacBook β†’ Beeper/Telegram.

Veilig herstarten

Herstart alleen de Jarvis-service, nooit breed killen:

# stem-relay (gesprek werkt niet / verbinding valt weg)
sudo systemctl restart jarvis-live

# tool-API (functies werken niet: bericht/zoek/product/onthoud)
sudo systemctl restart jarvis-api

# status / logs bekijken
systemctl status jarvis-live
journalctl -u jarvis-api -n 50 --no-pager

NOOIT een brede pkill python3 of iets dergelijks β€” op deze VPS draaien ook Coco, Appel en andere services op python3 (8748-8753). Die zou je dan meeslepen.

Na een wijziging deployen

Edit HTML/py β†’ opnieuw plaatsen β†’ sudo systemctl restart jarvis-api (en/of jarvis-live).

De frontend heeft Cache-Control: no-store, dus een verse versie wordt gegarandeerd geserveerd. Toch kan een al-open tab de oude JS in geheugen houden β†’ tab echt sluiten en heropenen.

Belangrijk (max 3 SSH/min): fail2ban op de VPS. Bundel commando's in 1 ssh-call en wacht ~25s tussen calls.


5. Tools die Jarvis heeft

Jarvis roept "functies" aan tijdens het gesprek. Deze zitten als declaraties in index.html en worden uitgevoerd via /api/... op jarvis-api.py:

Extra functies (geen losse tool, wel ingebouwd)


6. Changelog / upgrades (laatste ~14 dagen)


7. Bekende problemen + oplossingen

Probleem Oorzaak Fix
Jarvis "kan ineens minder" (geen huisbediening) googleSearch + functionDeclarations botsten in native-audio googleSearch eruit, web-zoeken als functie zoek_internet (21-06, gefixt)
Jarvis "bluft": zegt verstuurd maar doet niks Live-model riep stuur_bericht niet Γ©cht aan (praatte er alleen over) Anti-bluf prompt + bluf-detector β†’ seintje naar Jamal (niet 100% te garanderen)
Oude pagina / functie "werkt niet" Browser-cache; al-open tab houdt oude JS Cache-Control: no-store staat live; tab echt sluiten + heropenen. Check versie-label op de pagina
Bericht naar contact mislukt stil Beeper /v1/chats gaf alleen actieve chats; Asuman/Erik gearchiveerd poller Γ³Γ³k ?query= + KNOWN-aliassen (papa=70, asuman=75, eric/erik=97, gerrie=194) + seintje bij mislukking
"papa" matchte verkeerd Beeper-zoek gaf rare 'Pappa'-varianten KNOWN-map β†’ rechtstreeks naar chatID 70 (Jamals eigen WhatsApp)
Transcriptie schakelt naar Arabisch tv-/achtergrondgeluid bij onduidelijke audio NL-lock in systeemprompt; wisselt alleen op expliciet verzoek van taal
Verkeerde productfoto verstuurd Bing-relevantie alleen is niet genoeg Gemini Vision-controle per kandidaat ("is dit echt product X?")
Bing geeft slechte foto's rate-limit bij veel snelle tests vanaf zelfde IP niet hameren tijdens testen; trekt vanzelf bij
Lampen gaan niet Γ©cht aan Paco (fysieke uitvoerder) offline Paco online brengen; commando staat in Supabase licht_commands
Audio-opname komt niet binnen op Telegram jarvis-live stuurde ruwe .wav (Telegram weigert stil) wav→mp3 vóór sendAudio (in appel-live al gefixt; jarvis-live had dezelfde bug nog open — checken)
Geluid kraakt per-chunk resampling AudioContext op vaste sampleRate 24000 (27-06, gefixt)
Monitor leeg na herstart ringbuffer in geheugen normaal; buffer vult weer na het eerste nieuwe gesprek

8. Storing-zoekgids ("Jarvis werkt niet")

Werk van boven naar beneden. Wacht ~25s tussen SSH-calls (fail2ban).

  1. Site laadt niet?
    - Check DNS/SSL: curl -I https://jarvis.haartips.nl (verwacht HTTP 200).
    - SSL verlopen? sudo certbot certificates | grep -A4 jarvis (verloopt 12-09-2026, auto-renew).

  2. Site laadt, maar geen gesprek / stem?
    - Is de Live-relay up? systemctl status jarvis-live
    - Zo nee: sudo systemctl restart jarvis-live
    - Logs: journalctl -u jarvis-live -n 50 --no-pager
    - Mic-rechten in de browser? Bij ingebedde Jarvis (hub) moet de iframe allow="microphone; camera" hebben.

  3. Oude versie / functie ontbreekt?
    - Check het versie-label op de pagina (nu "versie 19").
    - Tab echt sluiten + heropenen (niet minimaliseren).

  4. Functies werken niet (bericht/zoek/product/onthoud)?
    - Is de tool-API up? systemctl status jarvis-api
    - Zo nee: sudo systemctl restart jarvis-api
    - Logs: journalctl -u jarvis-api -n 50 --no-pager
    - Gemini-key aanwezig? Check dat /opt/jarvis/env de regel GEMINI_KEY= heeft (waarde niet tonen).

  5. Bericht/foto komt niet aan?
    - Draait er een JARVIS-SEND in Supabase agent_messages? Zo nee β†’ het model riep de functie niet aan (bluf) β†’ opnieuw proberen.
    - Zo ja β†’ check de poller op de MacBook: launchctl list | grep jarvis-send-poller + log ~/.claude/logs/jarvis-send-poller.log.
    - Beeper-token nog geldig? (Keychain "Claude Code-credentials").

  6. Lamp/rolluik reageert niet?
    - Is Paco online? (fysieke uitvoerder). Commando staat in Supabase licht_commands.

  7. Laatste redmiddel: alleen de Jarvis-services herstarten (zie sectie 4). Nooit breed killen β€” andere bots delen python3 op de VPS.


Bronnen: geheugen-bestanden (project_jarvis_assistent, reference_jarvis_v1, reference_jarvis_product_foto, project_email_assistent), sessie-archieven 20-28 juni, en live VPS-config (gecontroleerd 28 juni 2026).

πŸŽ™οΈ Bespreek met Jarvis