← All work
Autonomous Systems2026 / 09

OWL

A local-first AI discovery system that connects scattered data sources, builds a living world model, and surfaces material changes without waiting for a prompt.

Node.jsElectronSQLiteMCP
Source & deliverables
8K+lines of production code
98passing tests
7source plugins
5deployment modes
01 / Context

The question
behind the work.

Important signals are scattered across email, calendars, code, commerce, chat, and local files. A normal chatbot waits to be asked and rarely maintains enough cross-source memory to notice a developing situation on its own.

My role

I architected and implemented the full system from scratch in Node.js, including the daemon, plugin contract, discovery engine, SQLite world model, delivery channels, Electron app, dashboard, MCP server, Docker deployment, documentation, and automated tests.

02 / Implementation

What I built.

OWL combines source plugins, a SQLite knowledge graph, scheduled discovery, feedback-aware filtering, an Electron app, a dashboard, MCP tools, and delivery channels.

  • Created a world model for entities, relationships, events, patterns, situations, discoveries, feedback, and graph traversal.
  • Built quick, deep, and daily scans with cross-source correlation, anomaly detection, quality filtering, and discovery chaining.
  • Implemented source plugins for Gmail, Calendar, GitHub, Slack, Shopify, files, and mock data behind one watch/query contract.
  • Delivered discoveries through CLI, Telegram, Slack, Discord, email, webhook, RSS/Atom, and WhatsApp.
  • Exposed the world model through an Electron desktop app, D3 dashboard, natural-language query command, and 11 MCP tools.
03 / In detail

Build a model of the work around you

OWL is built around a local SQLite world model of entities, relationships, events, patterns, situations, discoveries, and user feedback. Gmail, Calendar, GitHub, Slack, Shopify, local files, and mock data flow through one plugin contract, which keeps the core independent from any single source.

I implemented two-tier entity extraction, fuzzy resolution, relationship traversal, and a graph that can surface paths, clusters, bridges, and hubs across the information a person already has.

Find the signal before the prompt

The daemon runs quick, deep, and daily scans across connected sources. It correlates events, detects anomalies, filters low-value findings, chains discoveries together, and learns from reactions to avoid sending noise back to the user.

Each discovery carries type, urgency, confidence, and source context. That gives the user a path from a surfaced pattern back to the events and entities that produced it.

Deliver the same insight where it is useful

I built the system to run as a CLI, an Electron desktop app, a web dashboard, a Docker service, and an MCP server. The same world model can also deliver discoveries through email, Slack, Discord, Telegram, webhook, RSS, and WhatsApp channels.

More than 8,000 lines of production code and 98 passing tests support 10 entity types, four discovery types, graph traversal, eight delivery channels, and five deployment modes.

04 / Engineering judgment

The decisions
that shaped it.

  1. Kept the system local-first so users retain control of the world model and can use local models through Ollama.
  2. Separated source plugins, discovery logic, and delivery channels so integrations can change without rewriting the core.
  3. Filtered aggressively instead of maximizing notification volume; the product is only useful if it stays quiet when nothing matters.
  4. Fed user reactions back into preference scoring so useful discovery types are reinforced and dismissed patterns are dampened.

Evaluation & results

The codebase contains more than 8,000 lines of production code and 98 passing tests. It supports 10 entity types, four discovery types, graph traversal, eight delivery channels, and five deployment modes: CLI, desktop, dashboard, Docker, and MCP.

05 / Working outputs

See it for yourself.

Select an image to view it at full size.

06 / Artifacts

Take a closer look.

01GitHub repository02Documentation03npm package
Next projectMERCURY