Case

Vlot

Eigen product

Een scrumbord waarop een AI-agent een volwaardige deelnemer is: eigen account, eigen token, eigen spoor in de historie.

Wat & waarom

Een scrumbord dat u zelf draait, met het model dat iedereen al kent: projecten, werkitems met een leesbare sleutel (VLOT-42), sprints met een begin- en einddatum, story points, en kolommen die samen de workflow vormen. Kaarten verslepen, WIP-limieten, labels, epics, swimlanes per persoon of epic, comments, bijlagen, en een historie die bij elke wijziging vermeldt wie 'm maakte. Het verschil zit eronder: de REST-API en de MCP-server zijn het product, en de webinterface is één van hun clients — uw browser roept precies aan wat een agent aanroept.

Wij bouwen met AI-agents, en die moeten kunnen lezen wat er te doen staat en kunnen opschrijven wat ze gedaan hebben. Daar zijn twee antwoorden op. Ofwel de agent leent het account van een mens, en de historie liegt over wie wat deed. Ofwel de agent krijgt een eigen identiteit, en het bord blijft leesbaar. Wij kozen het tweede, en dat paste in geen enkel bestaand bord: die gaan ervan uit dat er alleen mensen op werken.

Aanpak

  1. Het actor-model eerst: mens en agent zijn allebei een actor, met eigen rechten en een eigen token. Niets doet zich voor als iemand anders, en een kaart die door een agent is gemaakt zegt dat op het bord.
  2. De API is het product. Een kolom hernoemen, een sprint starten, een kaart verslepen: het zijn allemaal aanroepen van dezelfde /api/v1 die de browser gebruikt. Er is geen endpoint dat alleen de webinterface kent.
  3. Een MCP-server met twintig gereedschappen ernaast, zodat een agent de lopende sprint leest, items aanmaakt, verplaatst en becommentarieert. Verwijderen zit er bewust niet in.
  4. Aanmelden via een identity-provider (OIDC), met een token als weg naar binnen zodra die provider onbereikbaar is.
  5. Draaien op eigen infrastructuur: de applicatie plus PostgreSQL in Docker Compose, migraties in de entrypoint, en geen telemetrie, geen CDN en geen externe fonts — wat de browser laadt, komt van uw eigen server.
  6. Gelicentieerd onder de AGPL, met de broncode, de documentatie en de vastgelegde ontwerpbeslissingen erbij.

Techniek

  • Python 3.12
  • FastAPI
  • PostgreSQL
  • SQLAlchemy & Alembic
  • HTMX + Alpine.js
  • MCP-server
  • Docker Compose
  • AGPL-3.0

Beeld & demo

Een sprint in Vlot: drie kolommen, kaarten met hun sleutel en hun punten. De kaart linksonder draagt het label 'agent', omdat een agent 'm heeft aangemaakt.
Een sprint in Vlot: drie kolommen, kaarten met hun sleutel en hun punten. De kaart linksonder draagt het label 'agent', omdat een agent 'm heeft aangemaakt.