Apache 2.0 · MCP-native · Private beta

Never solve twice.

Open-source engineering memory for AI-native dev teams. Built on Postgres + pgvector, served over MCP — bring any LLM, run anywhere your container does.

  • ~30h/wk recovered per 10-eng team
  • <300ms auto-inject in your IDE
  • 30+ devs across 2 design partners

The cost of forgetting

Your team's hardest work evaporates into Slack threads and stale README files.

Across every project your team has shipped, the same fix gets re-derived every month — because no one remembers it's already in last quarter's tickets. The lookup is fast. Only if it happens.

  1. Wednesday

    You start a ticket on a site you haven't touched in six months.

    You re-read three folders of .md notes and an old PR thread.

    Cost: 90 min

  2. Wednesday + 2h

    You hit a stack trace that feels familiar.

    You Slack-search "that 4xx retry loop" across two workspaces.

    Cost: 40 min

  3. Wednesday + 5h

    You ship a fix that someone else shipped six weeks ago.

    You'll discover this next Wednesday when the same ticket reopens.

    Cost: +2.5 hours rework

The knowledge already exists in your team's commits. The recall doesn't. SenterPoint closes that gap in <300 ms per session.

The math, calibrated to research

~30 hours a week.
That's the cost of forgetting.

Most of your team's hardest debugging dies on Slack threads, .md notes no one re-reads, and PR comments archived three quarters ago. SenterPoint targets that specific waste — not vague productivity, not "AI somewhere in your workflow."

10 engineers
~3 friction events / week each
~60 minutes spent recalling
~30h reclaimable / week

≈ $300K / year  in fully-loaded engineering time. Per team. Compounding while your corpus grows.

Anchored to Atlassian 2024, McKinsey/IDC, and Stripe/Harris dev-productivity research. Mid-range estimate; upper bound (~50 h/wk) defensible, deliberately left on the table.

How it works

Two paths in. One answer out.

Auto-inject hits A only — sub-300 ms, effectively free. Explicit queries run A + B in parallel, fuse via reciprocal-rank fusion, and hand the shortlist to C. The cheap path runs on every session. The expensive one is opt-in.

always on

Postgres FTS

Full-text search + structured filter (site / tags / kind).

Runs on every session start to auto-inject the most relevant atoms into the model context — sub-300 ms end to end. No LLM call, no embedding round-trip.

Latency
< 100 ms
Cost
free
parallel to A

pgvector recall

Cosine similarity over 768-d local embeddings.

Runs independently of A, not as a refilter. Both paths return their top candidates; the fusion strip below combines them.

Latency
~ 200 ms
Cost
free
on pull

LLM judge

Any OpenAI-compatible model — your provider, your key.

Reads the fused shortlist, picks the genuinely applicable ones, synthesizes the answer with citations. Optional cross-encoder reranks the shortlist before the judge if configured.

Latency
judge-dominated
Cost
~ $0.001

What you get

Two moments do the work. Four primitives support them.

Each capability maps to a single HTTP endpoint and a single MCP tool with the same shape. No SDK lock-in, no special client library — just JSON over HTTP and the MCP standard your editor already speaks.

You open a site you haven't touched in six months…

…the relevant precedents are already in your context.

A SessionStart hook detects which customer site you opened and auto-injects the top 5–10 atoms before you type a word. You read what your past self learned. No prompt, no recall effort.

GET /auto-inject

You're about to write a fix…

…ask once whether your team already shipped it.

Three-stage cascade with citations. The judge filters keyword-only matches and returns 1–3 actually-relevant atoms plus a synthesis pointing at the exact files. The 90 minutes you would have spent re-deriving — gone.

GET /query · query_knowledge()
  • Submit

    Atom drafts itself from your commit metadata. One keystroke. Zero hand-typed knowledge.

    POST /precedents
  • Supersede

    Promote a fix to canonical; the old atom stays searchable, ranks below. No deletes, ever.

    POST /precedents/{id}/supersede
  • Cross-site

    Tenant-scoped, site-blind. Ask once; recall spans every site you own.

    GET /atoms?tags=…
  • MCP + REST

    Same business logic behind every surface. OpenAPI generated from running code — cannot lie.

    /openapi.json · /mcp

Speaks MCP — works where you already write code

  • Claude Code MCP-native
  • Cursor MCP
  • Zed MCP
  • Windsurf MCP
  • Cline MCP
  • curl / scripts REST

Built like infrastructure

Boring stack, on purpose.

Postgres for everything (FTS, structured filters, embeddings). No exotic vector store, no orchestration layer, no abstraction tax. The whole service is one process — what runs in your mesh is what runs in our tests.

Private beta · 30+ devs · 2 design partners · 50+ sites in production

  • ~30h Recovered per week per 10-eng team · research-anchored
  • 30+ Developers in beta across 2 design partners
  • Apache 2.0 License committed public source follows the beta cohort

Built to self-host.

Single container plus Postgres 16 + pgvector. Bearer-token auth, Caddy reverse proxy, runs anywhere your container does — no managed-service hooks, no upstream phone-home. Apache 2.0.

your editor ─MCP─▶ senterpoint ──▶ postgres + pgvector
          ┊                ┊                 ┊
          └─── your mesh / your VPC / your hardware ───┘

Public source follows the beta cohort, once we've finished the git-history audit. Design partners can request a tarball today.

  • Model-agnostic by design.

    Stage C speaks the OpenAI API shape — any provider, any local endpoint (llama.cpp, vLLM, Ollama), any model. Rotate via env var. Your key, your spend, your data path.

  • Your commits, your data.

    Atoms scoped per-tenant at the data layer (composite PK, every query filtered by tenant_id). Multi-tenant isolation is structural, not a WHERE clause we hope to remember.

Ready when you are

Your tribe knows.
Make your IDE catch up.

Apache 2.0. Model-agnostic. Private beta — tell us about your team and we'll wire the cascade for you.