Real features. Real dates. No vapor. The product as it actually exists today, week by week.
The supersede() API you got this morning is now optional. Pass auto_supersede=true on a write and Aurra runs an LLM classifier against the most semantically-similar existing memories. When it's confident a new fact replaces an old one, it supersedes automatically and writes an audit log entry. False negatives are recoverable via the manual API; false positives have a 0.85 confidence floor and a per-category opt-out gate that runs before the classifier ever sees the memory.
Off by default. Pass the flag explicitly when you want it.
client.memories.add(
content="User now prefers dark mode",
auto_supersede=True,
)Set auto_supersede_default once and every write on that key opts in. Same endpoint controls excluded_categories (defaults to ["health_medical", "legal_status"] — the system filters these before the LLM ever runs), min_confidence (floor 0.85, raise to be more conservative), and classifier_model.
121-case hand-labeled benchmark covering 25 categories — clear supersessions, refinements, independent facts, hedging, reversion, generalization, B2B agent state, multi-entity ambiguity. 100% precision on the "supersedes" verdict at the 0.85 confidence threshold: every time the classifier was confident enough to act, it acted correctly. Pinned to claude-haiku-4-5. Eval methodology and acceptance criteria in the design doc.
The API surface and SDK methods ship today and are stable. Live classification is gated by an environment variable while we run final production validation. Calls with auto_supersede=true currently return ran: false, skipped_reason: "level_2_disabled_by_env" — the memory still saves normally, the classifier just doesn't fire yet. The flag flips on later this week.
Every memory carries valid_from, valid_to, and superseded_by. Your agent can now query what was true on any specific date, walk the supersession chain of any fact, and distinguish between "current truth" and "historical truth". Existing memories were backfilled with valid_from = created_at — no migration needed. Read the launch post →
Mark a memory as replaced by another, or expire it without a replacement. Old memory keeps its valid_from; valid_to is set to now. Both SDKs ship with a supersede() method.
client.memories.supersede(
old_memory_id,
superseded_by=new_memory_id,
)Walk the full supersession chain for any memory — both forward (what replaced it) and backward (what it replaced). Returns oldest-to-newest with temporal flags on every entry.
Pass ?as_of=2026-04-01T00:00:00Z to get memories that were valid at that exact moment. The default response stays clean — only current truth — with a superseded_count so you know how much history exists without paying to fetch it.
npm install aurra ships a typed, Promise-based client with full parity to the Python SDK. ESM + CJS dual-build, zero dependencies, Node 18+, edge-runtime compatible. View on npm →
import { Aurra } from 'aurra';
const aurra = new Aurra({ apiKey: process.env.AURRA_API_KEY! });
await aurra.memories.add({
messages: [
{ role: 'user', content: "I'm Alice. I prefer dark mode." },
{ role: 'assistant', content: 'Got it!' },
],
sessionId: 'alice_1',
tenantId: 'alice',
});Skip the BYO-key setup. Aurra runs the extraction LLM for you, billed at $0.005 per write via Stripe Billing Meters. Toggle on or off from your dashboard at any time.
Hobby ($0), Starter ($29), Pro ($99), Enterprise ($3,000+) — all live, all self-serve. Webhook idempotency, grace-period quota gating, automatic seat billing on Pro at $25 per extra seat. See pricing →
Semantic search now uses pgvector's HNSW graph index. Roughly 10× faster query latency on memory recall, especially at scale. Zero schema migration required for existing customers.
Every write accepts a tenant_id for end-user-level scoping. Build B2B agents without rolling your own isolation layer. Read endpoints filter automatically.
Every read endpoint now returns a source_citation object with the source type, channel, capture timestamp, and original input. No more black-box recall.
GET /memories/{memory_id}/audit returns full provenance — source, original input, extraction model, prompt version, and history events. Wire it into your debugging tools or surface it to your end users.
Pass your own provider key per request. Anthropic and OpenAI supported today. Mistral coming soon. Your API costs stay on your bill, your model choice stays yours.
from aurra import Aurra
client = Aurra(api_key="aurra_...")
client.memories.add(
messages=[...],
session_id="...",
llm={"provider": "openai", "api_key": "sk-...", "model": "gpt-4o"}
)pip install aurra ships a refactored client with typed exceptions, a memories resource, and full coverage of the new API surface. View on PyPI →
New three-tab UI focused on what AI agent developers actually need: Memories, API Keys, Quickstart. Audit trail modal on every memory.
We ran Aurra against Mem0 on the standard memory benchmark. Mem0 stamped 23% of stored memories with the wrong date — even for source conversations from years prior. Open-source benchmark code at github.com/aurra-memory/benchmarks.