KIWI
Autonomous local AI agent and community of voices living in The Grove with private memory.
The Problem
Autonomous AI agents often suffer from leaky memory isolation, unpredictable side-effects on host systems, and lack of human-in-the-loop governance for high-stakes file operations and external device actions.
My Role
Architected and implemented the cognitive engine ("The Grove"), fail-closed host action safety policies, immutable exact-action plan ledgers, multi-device agent companion protocol, and unified multi-channel gateways.
Highlights
- Community of six voices living in The Grove with local memory running on the user's machine
- Local cognitive core ("The Grove") separating owner memory from credentialed client sessions
- Fail-closed security policy requiring immutable exact plans with rollback for all destructive actions
- DPAPI-secured Windows companion agent with local execution receipts and anti-re-execution guarantees
- Multi-modal interaction surface: Next.js Web UI, Voice HUD (:4321), and Telegram bot gateway with inline approvals
- Deterministic audit ledger tracking every state mutation, file movement, and memory association
Stack
Constraints
- Host safety is non-negotiable: no autonomous file deletion or batch reorganization without human-confirmed exact plans.
- Offline-first engine: core cognitive loops and memory databases must run purely locally without cloud dependencies.
- Multi-tenant memory isolation: administrative sessions and API token holders must never access the owner private mind context.
System Architecture
Key Trade-offs
The decisions worth defending — what I chose, what I turned down, and why.
File management execution model
Chose
Immutable two-phase exact-action plans with hash verification and dry-run preview
Rejected
Direct agent tool execution with broad shell permissions
Agents making speculative shell or file modifications risk catastrophic data loss; two-phase plans guarantee human oversight and rollback capability.
Engine-to-web communication architecture
Chose
Dedicated loopback HTTP/SSE gateway with bearer token authentication
Rejected
Monolithic single-process Next.js application
Decoupling the AI engine process from the Next.js frontend ensures background monitoring, telegram polling, and long-running skills survive web redeployments.
Device pairing security model
Chose
Windows DPAPI machine-bound tokens with polling architecture
Rejected
Inbound SSH or remote socket servers on client machines
Inbound listening ports expose clients to local network scans; outbound HTTPS polling behind DPAPI keeps remote companion devices secure.
What I'd Do Differently
An honest retrospective — the stuff I'd change with more time, more users, or a second pass.
- 1Implement automated regression tests for memory graph decay sweeps earlier in the development lifecycle.
- 2Consolidate SQLite schema migrations between better-sqlite3 and pg-schema under a single unified migration runner.
- 3Add fine-grained telemetry dashboards to observe cognitive latency across multi-turn reasoning chains.
Interactive Autonomous Agent Shell
Test live KIWI autonomous agent supervisor routines (agent status, grove ping, mcp tools, help) in the emulated shell below.
Technical Deep-Dive
Architecture, specifications, and implementation details.
Verificare izolată pentru web și pilotul Windows
Dovezi build/browser revizia 9: npm run verify:web trecut, 478 surse în .verify-work/web-NwBtZf/project; verification.json confirmă ieșire 0 și lipsa DB/restartului de producție. node scripts/verify-chat-http.mjs .verify-work/web-NwBtZf/project trecut pe endpoint-ul scoped, cu motor simulat și Edge/HTTP web/SQLite temporar reale. Artefacte: project/chat-probe/743dc227-e3ad-49d8-8ba3-ee9b914156a3/ în copia respectivă. Două POST-uri stream, zero repetare JSON, două apeluri motor, două rânduri user și un assistant. Nu testează furnizori live sau două PC-uri. Erorile tranzitorii de rețea/TLS ale build-ului s-au rezolvat prin reîncercare; avertismentele JOSE/Edge și importul schedulerelor rămân.
Revizia 8, 2026-09-08. Folosim skill-urile proiectului kiwi-test și kiwi-deploy. Verificările nu fac deploy și nu certifică două PC-uri fizice.
#Probă chat — revizia 8
După build: node scripts/verify-chat-http.mjs <snapshot-project-path>. Scriptul acceptă numai o copie construită din .verify-work/, pornește propriul Next pe loopback și Edge headless, cu SQLite separat, admin sintetic și motor HTTP simulat. Nu trimite emailuri sau cereri către furnizori reali și închide procesele proprii. Verifică succesul și eroarea motorului în UI, numărul POST-urilor și mesajele persistate. Login/parolă și motorul real nu sunt testate.
Build trecut: .verify-work/web-FI79by/project, 477 surse, ieșire 0. Proba chat-probe/a930c7aa-ed9a-418b-aa1c-f59f62a0aaf8/result.json are passed:true: două POST-uri stream, zero retrimiteri JSON, două apeluri motor, două mesaje user și un assistant. Captura erorii a fost inspectată. Contract și limite. Dovezile dispozitivelor de mai jos sunt reperul reviziei 6; nu au fost repetate în această etapă.
#Build
Din rădăcina proiectului: npm run verify:web. scripts/verify-web.mjs copiază sursele necesare build-ului, tracked/untracked, în .verify-work/web-*/project, inclusiv modificările locale. Exclude fișierele reale de mediu, bazele de date, imaginile ISO și bibliotecile PDF private. Refolosește node_modules instalate prin legături de directoare; nu este instalare curată de dependențe.
Copia folosește scriptul existent npm run build:web, propriul .next-prod, tipuri generate și SQLite gol. Configurația auth sintetică și un mediu cu variabile permise explicit înlocuiesc credențialele de producție; URL-urile motorului/LLM indică un port loopback închis. Nu rulează PM2. Directorul trebuie să fie pe discul sursei: prima încercare cu dependențe legate de pe alt disc Windows a produs căi Webpack invalide.
verification.json păstrează locația copiei, numărul surselor, codul de ieșire și rezultatul real. Artefactele eșuate sunt păstrate pentru diagnostic. .verify-work/ este gitignored; verificăm directorul exact înainte de eliminare. Nu există curățare recursivă automată.
Build-ul fără credențiale a identificat inițializarea prematură new Resend(...) la importul rutelor. web/src/lib/email/index.ts creează acum clientul numai la apelarea trimiterii. Trimiterea cere în continuare cheie configurată și eșuează explicit dacă lipsește. Verificarea nu trimite emailuri și nu validează contul live al furnizorului.
#Probă browser și HTTP
După un build reușit, compilăm companion-ul cu npx tsc -p tsconfig.companion.json, apoi rulăm:
npm run verify:devices -- <calea-absolută-către-project-din-copie>
scripts/verify-device-http.mjs acceptă numai copii construite din .verify-work/. Pornește propriul server Next de producție pe un port loopback disponibil, folosește conturi sintetice și sesiuni de test semnate, apoi lansează Microsoft Edge instalat prin Playwright în mod headless. Nu afișează coduri de asociere, tokenuri de dispozitiv sau cookie-uri.
Proba urmărește interfața reală de propunere/aprobare, middleware-ul HTTP și rutele de dispozitive, două identități de cont/dispozitiv, modificarea reală a unui fișier temporar, refuzul aprobării străine, refuzul acțiunii, păstrarea rezultatului după restartul exclusiv al serverului de probă și revocarea dispozitivului. Confirmarea locală APPLY este simulată, iar workspace-urile sunt pe același PC. Nu verifică login/parolă în browser, rețea între două PC-uri, distribuția instalatorului, UAC sau confirmarea terminalului interactiv.
Conturile sintetice au configurarea inițială finalizată, pentru ca dashboard-ul să nu redirecționeze din Devices către onboarding.
Artefactele sunt result.json, server.log și captura sarcinilor sintetice, în device-probe/ din copie. Numai un raport cu passed: true confirmă succesul probei. Checkpoint-ul păstrează ultimul rezultat și avertismentele cunoscute; existența scripturilor nu este dovadă de acceptare.
Finalizat la 2026-09-08: build cu ieșire 0, copie .verify-work/web-jFs7GS/project (474 surse); proba device-probe/9f1216c3-2613-40ad-96e4-c098116335c1/result.json raportează passed: true. Captura Edge a fost inspectată. Avertismentele JOSE despre API-urile de compresie în Edge rămân; proba browser/HTTP a trecut, dar nu acoperă toate căile auth. Înregistrarea schedulerelor la import apare și în worker-ele build-ului, pe DB izolată goală; eliminarea acestui efect la build rămâne o îmbunătățire operațională.