Waterschap Brabantse Delta · R&D-lab · research-artifact

Eddy: één chat die live meetdata, documenten en registers samenbrengt

R&D-lab eerste versie 2026-07-06 laatst bijgewerkt 2026-07-06 versie 1.0 concept
Eddy is de interne AI-assistent van Waterschap Brabantse Delta, live op eddy.wbd-rd.nl. In plaats van tussen losse dashboards en systemen te wisselen stelt een medewerker één vraag; Eddy haalt het antwoord op uit de Z-info-historian, de documenten van het waterschap en publieke geo- en omgevingsbronnen, en levert het terug als tekst, een interactieve grafiek, een kaart of een export. De naam verwijst naar de eddy uit de vloeistofdynamica — de werveling die dwars op de hoofdstroom informatie naar boven woelt.
9
MCP-tool-servers
2
Z-info-bronnen: historian + objecten
1024-d
lokale, key-loze embeddings
sonar-pro
model op eigen API-account

Wat Eddy is

Eddy is een chat-assistent bovenop LibreChat, met Keycloak-SSO, die praat met de systemen en documenten van het waterschap. Het achterliggende taalmodel bevat geen waterschapskennis; alle feiten komen uit gereedschappen (tools) die Eddy tijdens een gesprek aanroept via het Model-Context-Protocol (MCP). Zo is elk antwoord herleidbaar tot een bron in plaats van tot het geheugen van een model.[1]

De opzet is bewust modelonafhankelijk: de MCP-servers zijn losse diensten en de agent-laag koppelt ze aan wélk taalmodel dan ook. Het model is daarmee een uitwisselbaar onderdeel, geen fundament — een eigenschap die de overstap in hoofdstuk 4 mogelijk maakte.

Wat Eddy kan

Live meetdata (Z-info)

Niveau, debiet, druk, zuurstof, vrachten en vergunningen per installatie — uit de ruwe historian (realtime SCADA) én uit gevalideerde Z-info-objecten.

Interactieve grafieken

Meetreeksen komen terug als ECharts-grafiek met zoom en tijdschuif, gehost naast de chat — het model tekent nooit zelf een grafiek, het levert de data.

Documentzoek (RAG)

Hybride zoek over het documentcorpus: pgvector-embeddings + Nederlandse full-text, samengevoegd met Reciprocal Rank Fusion. Inclusief PDF-upload in het gesprek.

Kaarten & registers

Legger, Omgevingswet (DSO), BRO-ondergrond, Rijkswaterstaat en PDOK — als kaart of feitenlijst, via de gedeelde kaart-renderer.

Omgevingsdata

Neerslag/weer (KNMI), zonkracht en actuele stroomprijzen — de context waarin een gemaal of zuivering draait.

Exports

Grote datasets als veilige, gechunkte CSV-export, downloadbaar buiten het gesprek.

Architectuur — hoe het werkt

LibreChat is puur UI + agent-runtime; alle domeinlogica zit in de MCP-servers. Een vraag doorloopt onderstaande lus: het model besluit welke tool het nodig heeft, LibreChat voert die tool uit, en het resultaat gaat terug het gesprek in — net zo vaak als nodig.

Gebruikereddy.wbd-rd.nl · Keycloak-SSO
LibreChat-agentmodel + MCP-client
MCP-toolsZ-info · documenten · geo · omgeving
Bronnenhistorian · pgvector · registers
De negen MCP-servers en de gedeelde datalaag, zoals in productie uitgerold (infra-stack eddy).
ServerRolBron / techniek
zinfo-historianRuwe/live SCADA-tagsZ-info-webservice
zinfo-objectenGevalideerde dagwaarden, vrachten, vergunningenZ-info-objecten
documentenRAG-documentzoek + ingestPostgres + pgvector
omgevingWeer, zon, stroomprijzenKNMI · Open-Meteo · EnergyZero
leggerLegger & registersWBD-geo
omgevingswetDSO-regels & activiteitenDSO-API (gratis sleutel)
broOndergrondBRO (key-loos)
rwsRijkswaterenRijkswaterstaat (key-loos)
pdokBasiskaarten & locatiesPDOK (key-loos)

Embeddings voor het documentzoeken draaien lokaal en key-loos via een eigen Infinity-service (BAAI/bge-m3, 1024 dims). De databases (pgvector en MongoDB) staan op interne netwerken zonder uitgaand verkeer.[2]

Het taalmodel & soevereiniteit

Eddy draaide aanvankelijk op Claude Haiku 4.5, maar niet via een reguliere API-sleutel: een interne bridge leende een persoonlijk Claude-abonnement (Max/Team, OAuth). Dat viel buiten het bedoelde gebruik van de leverancier (risico voor dat account) en was aan de limieten van een consumentenabonnement gebonden.

Sinds 2026-07-06 draait het antwoordmodel op een eigen Perplexity-API-account van het waterschap, model sonar-pro. Omdat de architectuur modelonafhankelijk is, was dit een configuratiewijziging — geen herbouw: Perplexity is toegevoegd als OpenAI-compatibel endpoint, de agent wijst naar sonar-pro, en het persoonlijke abonnement is losgekoppeld.[3]

geverifieerd Alleen de pro-tier van Perplexity ondersteunt de tool-aanroepen die Eddy nodig heeft. Tegen de API getest (2026-07-06): sonar-pro en sonar-reasoning-pro geven een correct tool_calls-antwoord; sonar en sonar-reasoning geven 400 "Tool calling is not supported". Eddy móét dus op de pro-tier draaien, anders zouden de MCP-tools (Z-info, documenten, kaarten) stilvallen.

Eigen API-account i.p.v. persoonlijk abonnement Geen ToS-risico Model uitwisselbaar Tool-calling pro-tier

Aandachtspunt: Sonar is een zoek-georiënteerd model dat webresultaten kan meewegen en per aanroep een kleine zoekkost meebrengt — bij gebruik wordt bewaakt dat antwoorden op de Z-info- en documentbronnen leunen, niet op het open web.

Toegang, privacy & governance

Toegang loopt uitsluitend via Keycloak-SSO (realm wbd): alleen gebruikers met de rol eddy_read mogen inloggen. E-mail-login en zelfregistratie staan uit in productie.

Het corpus kan persoonsgegevens bevatten (bijv. vergunningaanvragen); de AVG/BIO-toets is bewust belegd vóór bredere uitrol. De keuze om embeddings lokaal te berekenen en interne databronnen zonder egress te draaien beperkt wat het waterschap buiten de deur zet. De overstap naar een eigen model-account (hoofdstuk 4) is onderdeel van dezelfde lijn: grip op waar data en verkeer heen gaan.

Status & vervolg

Bronnen

  1. RnD/eddy — applicatiecode, MCP-servers en agent-instructies, Waterschap Brabantse Delta. git.wbd-rd.nl/RnD/eddy ↗ geraadpleegd 2026-07-06
  2. RnD/infra — productiedeployment stacks/eddy (netwerkmodel, embeddings, MCP-servers). git.wbd-rd.nl/RnD/infra ↗ geraadpleegd 2026-07-06
  3. Besluit 7 — "Antwoord-agent op Perplexity i.p.v. het Claude-abonnement", docs/decisions.md in RnD/eddy; tool-calling geverifieerd tegen api.perplexity.ai/chat/completions. 2026-07-06
Data-vintage Repo- en productieconfiguratie t/m 2026-07-06
Methode Documentatie o.b.v. broncode, live stack-config en directe API-verificatie
Code & reproduceerbaarheid RnD/eddy + RnD/infra · dit bestand (view-source)
Contact R&D-lab · lab.wbd-rd.nl