All projects

log-ai

In progress

A production error archive, read by AI with your system's context.

2026PythonFastAPISQLiteReactMCP
Private repository

Overview

An early-stage project. The idea: the error that today becomes a Slack message and scrolls away gets stored, grouped and searchable by meaning — and the AI analyses each group with the business context you wrote about the system. The core flow already works end to end; what's left is maturing operations and widening the set of recognised stacks.

The idea

A regular tracker says "QueryException on line 88". log-ai aims to say "the checkout queue retry reached an order that was already cancelled". Adoption is a one-line change: the endpoint accepts the same Slack webhook the app already uses. The AI is the last resort — structured payloads and regex handle almost everything for free, and only the unrecognised case reaches the model.

Screens

Captured from the running product.

The idea in one line: swap the Slack webhook for log-ai's, with no SDK and no code change.
The idea in one line: swap the Slack webhook for log-ai's, with no SDK and no code change.
The demo project's dashboard: open errors, newly born groups, regressions and the ingestion queue.
The demo project's dashboard: open errors, newly born groups, regressions and the ingestion queue.
Errors grouped on a shared timeline — bars that start together are usually the same deploy.
Errors grouped on a shared timeline — bars that start together are usually the same deploy.
The domain context the AI reads before analysing any error.
The domain context the AI reads before analysing any error.

Modules

Slack-compatible ingestion

Stores the raw payload and replies in ~10 ms; a queue inside SQLite itself processes it afterwards.

What it's for

Lets you adopt it without touching application code or slowing down the sender.

Normalisation ladder

Pydantic schema, then regex per known stack, and only last an LLM extracting into the same schema.

What it's for

Keeps AI cost to the rare case — and records which rung resolved each event.

Grouping and semantic search

A fingerprint that ignores line numbers, local embeddings and vector search inside the same SQLite file.

What it's for

Lets "payment problem" find a GatewayTimeoutException without the word appearing.

Domain context + MCP

Free-text notes about the system, read by the AI, and a read-only MCP server for Claude Code and Cursor.

What it's for

Lets you ask "why is checkout failing?" from inside the editor.

Progress

4/7 modules delivered
  1. Slack webhook ingestion, SQLite queue and the normalisation ladderDelivered · 2026-08
  2. Fingerprint grouping, local embeddings and semantic searchDelivered · 2026-08
  3. Accounts, sessions and owner-isolated projects, with a read-only MCP serverDelivered · 2026-08
  4. Status dashboard, deploy markers on the timeline and severity orderingDelivered · 2026-09
  5. Versioned schema migrationsPlanned
  6. Public deploy with a persistent volume and Litestream replicationPlanned
  7. Parsers for more stacks, so the LLM runs even lessPlanned

Stack

  • Python
  • FastAPI
  • Pydantic AI
  • SQLite
  • sqlite-vec
  • fastembed
  • React
  • Vite
  • Tailwind
  • Docker