A Windows desktop application that silently captures your activity (focused windows, clipboard, and visible text), synthesizes daily sessions, and presents an intelligent interface to refine those into durable knowledge. Privacy-first and fully local.
Waddle is an autonomous Windows activity intelligence agent that silently captures your digital life, synthesizes it into contextual memory, and provides AI-powered tools for recall and knowledge management. Built with privacy-first principles, everything runs locally on your machine.
Waddle implements a four-layer autonomous agent architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β WADDLE APPLICATION β
β Wails + Svelte Frontend β’ Go Backend API β’ AI Reasoning Engine β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MR-win-activity-pipeline (SENSING LAYER) - v1.0.0 β
β Intelligent Capture: ETW β UIA β OCR with Entity Extraction β
β Performance: 1% CPU β’ <50ms latency β’ 98% accuracy β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ
β MR-win-etw- β β MR-win-uia- ββ OCR (Tess)ββ MR-go-entityβ
β tracker β β reader ββ Engine ββ -extractor β
βββββββββββββββ βββββββββββββββ βββββββββββββββ βββββββββββββββ
β β β β
ββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MR-go-ollama-client (PROCESSING LAYER) - β
β Local LLM Integration β’ Streaming Chat β’ Embeddings β
β Zero dependencies β’ Sub-100ms response time β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MR-go-lance-vector (MEMORY LAYER) - v1.0.0 β
β Vector Database β’ Semantic Search β’ Batch Processing β
β P99 <20ms on 50k+ vectors β’ 1,148 queries/sec β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INFRASTRUCTURE LAYER β
β ββ MR-svelte-memory-dashboard (UI Components) β
β ββ MR-go-retention-manager (Data Lifecycle) β
β ββ MR-go-sqlite-migrator (Schema Management) β
β ββ MR-win-dpapi-vault (Encryption & Security) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The intelligent capture system orchestrates three data acquisition methods:
-
ETW Kernel Events (MR-win-etw-tracker)
- Zero-overhead window focus tracking at 47.95 ns/op
- Sub-microsecond event processing with zero allocations
- Graceful polling fallback when ETW unavailable
- Process lifecycle monitoring
-
UI Automation (MR-win-uia-reader)
- STA thread-marshaled COM operations for safety
- App-specific extractors for 15+ applications
- Avoids expensive OCR when structured data available
- Panic recovery and timeout protection
-
OCR Batch Processing
- 10-item batches with 500ms timeout
- Parallel processing for efficiency
- Fallback detection (knows when OCR is needed)
-
Entity Extraction (MR-go-entity-extractor)
- JIRA tickets:
PROJ-123 - Hashtags:
#golang - Mentions:
@username - URLs, emails, file paths
- Case-insensitive deduplication
- JIRA tickets:
Performance: 98% accuracy at 1% CPU usage vs. pure OCR (85% accuracy, 15% CPU)
Lightweight LLM integration for local AI:
- Zero dependencies - uses only Go stdlib
- Functional options API - clean, composable configuration
- Streaming support - real-time response processing
- Embedding generation - for semantic search integration
- Built-in summarization - optimized for activity context
client := ollama.New(ollama.DefaultConfig())
summary, _ := client.Summarize("session context", capturedText)High-performance semantic search:
- IVF_PQ indexing - optimized for Windows
- Batch operations - 100 vectors in 87ms
- Async embedding queue - non-blocking generation
- Retention policies - automatic lifecycle management
- Ollama integration - local embedding generation
Benchmarks: 1,148 vector searches/second, P99 <20ms on 50k vectors
Production-grade Svelte template:
- Svelte 5 + Vite + Vanilla CSS
- Timeline + card-based views
- Global search (Ctrl+K)
- Dark theme support (Glassmorphism)
Enterprise-grade encryption:
- AES-256-GCM encryption
- Argon2id KDF (64MB memory, 4 threads)
- Windows Credential Manager integration
- DPAPI key protection
- Key rotation without data loss
- Zero plaintext key storage
- MR-go-retention-manager: Automated cleanup with archive/delete policies
- MR-go-sqlite-migrator: State-machine validated schema migrations with rollback
- MR-go-sqlite-migrator: Migrated legacy JSON to SQLite (used in production)
- Go to Releases
- Download
Waddle-x.x.x-Setup.exe(installer) orWaddle-x.x.x-Portable.exe - Run and launch from Start Menu
Waddle's AI requires Ollama installed separately:
ollama serve
ollama pull gemma2:2b # or llama3, mistral, etc.# Clone
git clone https://github.com/eequaled/waddle.git && cd waddle
# Development
wails dev
# Build (Native Executable)
wails buildAll data stored locally at ~/Documents/Waddle/:
sessions/ # Daily captured sessions (SQLite)
archives/ # Archived collections
global_chats/ # AI chat history
profile/ # User profile data
Edit ~/Documents/Waddle/sessions/blacklist.txt to exclude sensitive apps:
KeePass.exe
LastPass.exe
waddle-backend.exe -data-dir "D:\Waddle" -port 9090Each MR project is a battle-tested, production-ready library extracted from Waddle:
| Repository | Purpose | Key Features |
|---|---|---|
| MR-win-activity-pipeline | Intelligent capture orchestration | ETW/UIA/OCR hybrid, entity extraction, 98% accuracy |
| MR-win-etw-tracker | Kernel-level event tracking | Zero-allocation, 47.95 ns/op, graceful fallback |
| MR-win-uia-reader | Structured data extraction | STA thread-safe, 15+ app extractors, OCR detection |
| MR-go-ollama-client | Local LLM integration | Zero deps, streaming, embeddings, sub-100ms |
| MR-go-lance-vector | Vector search engine | P99 <20ms, batch operations, 1,148 qps |
| MR-go-entity-extractor | Context extraction | JIRA, hashtags, mentions, deduplication |
| MR-go-retention-manager | Data lifecycle | Archive/delete policies, compression |
| MR-go-sqlite-migrator | Schema management | State machine, rollback, checksums |
| MR-win-dpapi-vault | Encryption | AES-256-GCM, Argon2id, Credential Manager |
| MR-react-memory-dashboard | UI components | React 19, Radix UI, TipTap, Recharts |
Automatically capture and search everything you do:
- "What was that JIRA ticket I was working on Tuesday?"
- "Show me all my golang research sessions"
- "Summarize my week in VS Code"
Chat with AI grounded in your actual activity:
- Context-aware responses based on real sessions
- Local processing - no data leaves your machine
- Semantic search across captured content
Understand your work patterns:
- App usage visualization
- Time tracking by project
- Distraction detection
Use with N8n, Zapier, or custom agents:
// N8n webhook receives activity events
if (event.app === "Slack" && event.duration > 1800) {
// Trigger automation after 30min in Slack
}| Metric | Value | Component |
|---|---|---|
| Event latency | <50ms | MR-win-activity-pipeline |
| CPU usage | ~1% | MR-win-activity-pipeline |
| Search P99 | <20ms | MR-go-lance-vector |
| Vector QPS | 1,148 | MR-go-lance-vector |
| ETW throughput | 20M events/sec | MR-win-etw-tracker |
| Memory per op | 0 B (zero-allocation) | MR-win-etw-tracker |
βββ frontend/ # Svelte dashboard
βββ build/ # Wails build output
βββ main.go # Application entry point
βββ app.go # Subsystem orchestration
βββ wails.json # Wails configuration
βββ pkg/
β βββ platform/ # Platform abstraction (ETW/UIA)
βββ profile/ # Default assets
# Unit tests
go test ./...
# Benchmarks
go test -bench=. -benchmem
# Race detection
go test -race ./...Sessions not appearing?
- Wait 30 seconds for first capture cycle
- Check Private Mode isn't enabled (system tray icon)
- Verify app isn't in blacklist
AI chat not working?
- Ensure Ollama is running:
ollama serve - Pull model:
ollama pull gemma2:2b
High CPU usage?
- Reduce screenshot frequency in settings
- Add more apps to blacklist
- Check OCR isn't running continuously
Waddle welcomes contributions! Areas of interest:
- Additional app-specific extractors for MR-win-uia-reader
- New entity types for MR-go-entity-extractor
- Performance optimizations for MR-go-lance-vector
- UI improvements for MR-react-memory-dashboard
MIT License - see LICENSE for details.
Built with β€οΈ for knowledge workers who want to remember everythingβprivately.