Waarom ik AIdaemon bouwde: een zelf-gehoste AI-agent die je vanaf je telefoon bedient
Ik gebruikte al een tijdje AI-agenten voor coderen. Claude Code, Codex, Cursor, Windsurf, Open Code. Ze veranderden hoe ik software schrijf. Maar dat was het. AI bleef binnen de editor.
Toen kwam OpenClaw. Een open-source AI-agent die je apps daadwerkelijk kon besturen, berichten kon verzenden, je inbox kon beheren. Niet alleen coderen, maar alles op je computer. Dat deed me nadenken over wat AI-agenten nog meer zouden kunnen doen.
Maar ik wilde iets anders. Ik had geen agent nodig die Spotify bestuurt of mijn slimme verlichting beheert. Ik had er een nodig die op mijn server draait, terminalcommando's uitvoert, code implementeert en zich herinnert waar ik vorige week mee bezig was. Iets waar ik vanaf mijn telefoon een bericht naar kon sturen als ik niet achter mijn bureau zat en dat echt ontwikkelwerk op mijn machine kon doen.
Daarom heb ik AIdaemon gebouwd.
Wat is AIdaemon?
AIdaemon is een zelf-gehoste AI-agent die draait als een achtergronddaemon op je machine. Je communiceert ermee via Telegram, Slack of Discord, en het kan terminalcommando's uitvoeren, op het web browsen, bestanden beheren, geplande taken uitvoeren en dingen onthouden tussen sessies door. Het is één enkele Rust-binaire. Geen Docker vereist, geen Node.js-afhankelijkheden. Kopieer het gewoon naar een willekeurige machine en het draait.
Zie het als een capabele assistent die permanent op je server of laptop draait en die je overal vandaan kunt berichten.
Waarom niet gewoon OpenClaw gebruiken?
Ik begon eigenlijk met OpenClaw. Het idee was briljant, maar toen ik erin dook, bleef ik tegen dingen aanlopen die er nog niet waren. Ik wilde commando's rechtstreeks vanaf mijn telefoon goedkeuren voordat ze werden uitgevoerd. Ik wilde de stappen die de AI nam in realtime zien, niet alleen het eindresultaat. Basisdingen voor een tool die commando's op je machine uitvoert.
Toen stuitte ik op een bug waardoor OpenClaw niet werkte met Gemini. Ik heb het opgelost en een pull request geopend, maar de PR-wachtrij was enorm. Ik wist dat het dagen, misschien langer, zou duren voordat mijn fix in de hoofdbranch terechtkwam. Toen drong het tot me door. Als ik het project van iemand anders blijf patchen om te krijgen wat ik nodig heb, kan ik misschien beter mijn eigen bouwen en het gebruiken als leerervaring om te begrijpen hoe persoonlijke AI-agenten moeten worden ontworpen, hun randgevallen, beperkingen en alles daartussenin.
Bovendien was OpenClaw merkbaar traag op een van mijn Macs. Voor iets dat als achtergronddaemon moet draaien, is prestatie belangrijk. Dat deed me verlangen naar iets lichters.
Maar de grootste leemte was geheugen. OpenClaw had dat nog niet. Elk gesprek begon opnieuw. Geen context van gisteren, geen herinnering aan de projecten waaraan je werkt, geen lessen geleerd van fouten uit het verleden. Daar kon ik niet mee werken.
De vraag veranderde dus van "hoe laat ik OpenClaw voor mij werken" naar "hoe zou mijn ideale AI-daemon eruitzien?". Ik bleef tegen dezelfde frustratie aanlopen. Ik was weg van mijn computer en moest iets controleren, een service opnieuw opstarten of een snel commando uitvoeren. SSH vanaf mijn telefoon werkt als noodoplossing, maar is pijnlijk voor alles behalve ls.
Wat als ik gewoon een Telegram-bericht kon sturen als "controleer of de nginx-service draait" en een antwoord terugkrijgen? Of "implementeer de nieuwste wijzigingen op staging"? Dat was het kernidee, geïnspireerd door OpenClaw.
Geheugen was het eerste dat ik ontwierp
Vanaf dag één wist ik dat AIdaemon dingen moest onthouden. Niet alleen chatgeschiedenis, maar daadwerkelijke kennis. Welke projecten ik aanpak. Welke tools ik prefereer. Welke fouten ik eerder heb gemaakt en hoe ik ze heb opgelost.
Elke zes uur bekijkt een achtergrondproces recente gesprekken en extraheert duurzame feiten. Dingen als "David gebruikt Cloudflare voor implementatie" of "de staging-server draait op poort 3002". Oude feiten worden vervangen wanneer nieuwe informatie binnenkomt, zodat de kennis actueel blijft.
Het leert ook van fouten. Wanneer AIdaemon een fout tegenkomt en deze vervolgens succesvol oplost, slaat het het patroon en de oplossing op. De volgende keer dat een vergelijkbare fout optreedt, weet het al wat het moet doen.
Workflows worden ook geleerd. Als ik een Rust-app meerdere keren op dezelfde manier bouw, test en implementeer, merkt AIdaemon het patroon op. Na voldoende succesvolle uitvoeringen wordt de procedure automatisch gepromoveerd tot een herbruikbare vaardigheid. Geen handmatige instelling nodig.
Dit alles wordt ondersteund door vector-embeddings voor semantisch herinneren, gewogen op basis van actualiteit en bruikbaarheid. Feiten die 30 dagen niet zijn opgeroepen, vervagen geleidelijk. Geheugen blijft relevant zonder handmatige opschoning.
Het geheugen is ook privacybewust. Feiten worden getagd met zichtbaarheidsniveaus, zodat informatie die in een privé-DM wordt gedeeld, nooit uitlekt naar een teamkanaal.
Hoe het werkt
De architectuur is eenvoudig. AIdaemon start als een systeemservice (launchd op macOS, systemd op Linux) en maakt verbinding met je berichtenkanalen. Wanneer een bericht binnenkomt, doorloopt het een agentlus.
- Intentieclassificatie - Een snel model bepaalt wat je wilt. Een snel antwoord, een uit te voeren taak, een in te stellen automatisering.
- Toolselectie - De agent kiest uit meer dan 40 ingebouwde tools op basis van je verzoek
- Uitvoering met veiligheid - Commando's doorlopen risicobeoordeling en goedkeuringsworkflows voordat ze worden uitgevoerd
- Geheugenupdate - Belangrijke context wordt opgeslagen voor toekomstige gesprekken
De tools
AIdaemon wordt kant-en-klaar geleverd met meer dan 40 tools.
- Terminal - Voer shellcommando's uit met veiligheid op basis van een allowlist en inline goedkeuring (Eenmalig toestaan / Altijd toestaan / Weigeren)
- Bestandsbewerkingen - Bestanden lezen, schrijven, bewerken en doorzoeken
- Git - Commit, branch, status controleren
- Webbrowsen - Headless Chrome voor pagina's die JavaScript-rendering vereisen
- HTTP-verzoeken - Volledige headercontrole, auth-profielen, OAuth-ondersteuning
- MCP-integratie - Externe MCP-servers verbinden om mogelijkheden uit te breiden
- CLI-agenten - Werk delegeren aan Claude Code, Gemini CLI, Codex of Aider
- Planning - Cron-achtige taakautomatisering met natuurlijke taalverwerking van tijd
- Geheugenbeheer - Kennis opvragen, bijwerken en delen tussen kanalen
Je kunt ook kanalen toevoegen tijdens runtime. Moet je een Discord-bot koppelen naast je bestaande Telegram-bot? Gebruik gewoon het commando /connect. Geen herstart nodig.
Intelligente modelroutering
Niet elk bericht heeft het duurste model nodig. AIdaemon classificeert verzoeken in drie niveaus.
- Snel - Eenvoudige vragen, snelle opzoekingen (goedkoopste model)
- Primair - Standaardtaken, de meeste interacties (standaardmodel)
- Slim - Complexe redenering, taken met meerdere stappen (meest capabele model)
Het ondersteunt standaard meerdere LLM-providers. OpenAI-compatibele API's (inclusief OpenRouter), Google Gemini, Anthropic Claude, Ollama, en elk lokaal model dat je wilt draaien. Je kunt providers tijdens runtime wisselen zonder opnieuw te compileren.
Veiligheid eerst
Het geven van terminaltoegang aan een AI-agent is iets wat je goed wilt doen. AIdaemon hanteert een voorzichtige aanpak.
- Uitvoering op basis van allowlist - Alleen vooraf goedgekeurde commando-voorvoegsels worden uitgevoerd zonder te vragen
- Inline goedkeuringsworkflow - Voor alles wat niet op de allowlist staat, krijg je een Eenmalig toestaan / Altijd toestaan / Weigeren prompt direct in je chat
- Risicobeoordeling - Commando's krijgen een score voor destructief potentieel, padgevoeligheid en complexiteit
- SSRF-bescherming - HTTP-tools blokkeren verzoeken naar interne IP-adressen
- Versleutelde status - Databaseversleuteling met SQLCipher, geheimen opgeslagen in de keychain van je besturingssysteem
- Stall-detectie - De agent stopt zichzelf als hij dezelfde toolaanroep drie keer herhaalt of vast komt te zitten in afwisselende patronen
Aan de slag
De snelste manier om het te proberen.
# Installeren via Homebrew
brew tap davo20019/tap
brew install aidaemon
# Of installeren via crates.io
cargo install aidaemon
# Of de binaire direct downloaden
curl -sSfL https://get.aidaemon.ai | bash
Maak vervolgens een config.toml aan met je LLM-provider en Telegram-bottoken, en start de daemon.
# Installeren als systeemservice
aidaemon install-service
# Of uitvoeren op de voorgrond
aidaemon
Dat is alles. Stuur een bericht naar je Telegram-bot en je praat met je machine. Bekijk de volledige documentatie voor configuratieopties en geavanceerde functies.
Waarom Rust?
Ik had nog nooit een regel Rust geschreven voor dit project. Nadat ik de traagheid van OpenClaw op mijn Mac had ervaren, wilde ik iets snels. Ik wilde ook zien of ik een productiesysteem kon bouwen in een onbekende taal door te leunen op AI-codeertools voor het routinewerk. Claude Code, Codex en Antigravity namen de boilerplate en de gevechten met de borrow checker voor hun rekening. Ik concentreerde me op architectuur en ontwerp.
Het resultaat is één enkele binaire die ik kan kopiëren naar een Raspberry Pi of een VPS van $5/maand en die gewoon werkt. Geen Docker, geen Node.js, geen runtime-afhankelijkheden. Voor een daemon die 24/7 moet draaien, bleken Rust's compileertijdsveiligheid en lage geheugenvoetafdruk de juiste keuze te zijn.
Wat nu?
AIdaemon is versie 0.9.2 en ik voeg er nog steeds aan toe. Recente toevoegingen zijn een tweefasen-consultantsysteem voor slimmere intentieclassificatie, afdwinging van gestructureerde JSON-schema's voor LLM-uitvoer en doeltracking met tokenbudgetten.
Het project is open source op GitHub en gepubliceerd op crates.io. Als je geïnteresseerd bent in het hebben van een persoonlijke AI-agent waar je volledige controle over hebt, probeer het dan eens en laat me weten wat je ervan vindt.