The problem store solves is fragmentation: when several people and several AI agents all need to read and write shared notes, reasoning, and structured knowledge, every client reinventing its own storage is brittle. Store is the deliberate counter-move — one REST API is the only data channel, and every consumer (CLI, agent, web view) goes through it. The founding decision is architectural minimalism: rather than bolting a graph database and a vector database onto a relational store, it puts all three capabilities into a single PostgreSQL instance using the Apache AGE and pgvector extensions, keeping the graph and the embeddings consistent with the relational data by construction.
The data model centers on account-owned nodes — each with a kind, title, body, JSON metadata, and an optional dense embedding — and typed edges held in a per-account graph. When a node is created or updated, the service best-effort generates an embedding via a local embedding server, so vector search needs no external embedding API. Authentication is service-account Bearer tokens, and account-to-account isolation is treated as the first-order invariant: it is enforced in the application layer, every query carries an account scope, and every new endpoint ships with a cross-account isolation test. One deliberate asymmetry exists — a node's web view is reachable by its UUID without a token (the UUID itself is the capability), so an author can share a single rendered node, while listing and search remain account-gated.
Beyond core CRUD, the surface has grown substantially: batch create and delete of up to a thousand nodes per call to collapse round-trips, incremental sync via an updated-at cursor, kind filters, an edges-listing endpoint, human-readable HTML node views that render Markdown safely, a cross-account feature-suggestion channel with voting and comments, an ontology and vocabulary facility, and an email-ingestion path with aliases and labels. A version endpoint and a cumulative changelog expose the system's evolving capability, because a daily autonomous loop scores incoming feature suggestions on usefulness, risk, and relevance and can take accepted ones from spec through code, tests, and production deploy on its own — within hard guardrails that forbid touching constitutional decisions, weakening isolation, or destructive operations.
Honest context: store is intentionally not a multi-tenant SaaS — there is no billing, SSO, real-time collaboration, or general-purpose CRUD GUI, and it does not host language-model inference, only embeddings. It is self-operated on a single VM behind automatic TLS, which means backups, upgrades, and monitoring are direct responsibilities, and the project's own handoff notes flag remaining work in backup automation and metrics. The graph layer carries a known limitation: a property-equality pattern in the pinned Apache AGE build is worked around by treating the relational nodes table as the match-and-delete authority, leaving graph-vertex cleanup partial. There is also a recorded embedding-length edge case where over-long text can silently fail to embed — the kind of operational honesty the project documents rather than hides.