Engineering note

Starting OwlEye with a smaller analytics surface

OwlEye starts with one constraint: visitor analytics should not require cookies or persistent browser storage.

That decision shapes the whole stack. The TypeScript SDK exposes focused entrypoints for page and custom event analytics, rule-based tracking, and performance measurements. Each surface can be started and stopped independently while the hosted API keeps ingestion policy server-enforced.

The backend keeps two different kinds of data in different stores:

  • ClickHouse owns high-volume analytics facts.
  • SQLite owns users, sites, sessions, and other application metadata.

Public SDK ingestion also stays separate from authenticated console APIs. That makes the trust boundary easier to understand and lets the ingestion path remain focused on accepting events.

OwlEye operates this stack as one hosted product. Local loopback allowances exist for development, not as a separate runtime edition. Production authentication, quotas, subscriptions, retention, and data-rights workflows remain server-enforced instead of relying on browser-side product gates.