Releases: omic/attest
v0.2.0 — Apache 2.0 relicense
🎉 First Apache-2.0 release
Previous releases (≤ 0.1.42) were distributed under BSL-1.1 with Apache-2.0 as the scheduled change license. From v0.2.0 onward, the whole OSS tree is directly Apache 2.0. Use it, modify it, ship it in your own products — commercial or otherwise. See LICENSE.
OSS boundary cleanup
A multi-pass refactor separated LLM-dependent code from the rule-based OSS core:
- All LLM SDK usage is centralized in `attestdb/intelligence/llm_client.py`
- OSS directories (`core/`, `infrastructure/`, `extraction/`, `discovery/`, `resolution/`, `connectors/`) contain zero direct imports of `anthropic`, `openai`, `groq`, etc. — CI-enforced via `scripts/check_oss_boundary.sh`
- `heuristic_extractor.py` is now self-contained (previously had a hidden import dependency on the enterprise-only `text_extractor.py`)
- Investigation-specific modules (flight_log_parser, FBI-302 templates, etc.) moved to `demos/epstein/`
Engine fixes
- LMDB reader-slot self-heal (from 0.1.42): `LmdbBackend::open()` automatically calls `clear_stale_readers()` so long-running deployments stop accumulating stale entries from crashed processes. Prevents the `MDB_READERS_FULL` crash loop.
- New API: `RustStore.reader_check()`, `reader_info()`, and `stats()['reader_slots_used'|'reader_slots_max']` for operator observability.
Install
```
pip install attestdb==0.2.0
```
Wheels: linux x86_64, linux aarch64, darwin x86_64, darwin aarch64, win x86_64 (CPython 3.12).
v0.1.42 — LMDB reader-slot self-heal
Self-heal LMDB reader slots on every open. Fixes MDB_READERS_FULL crash loop on long-running deployments where stale (pid, txn_id) entries accumulate from processes that died uncleanly. New API: RustStore.reader_check(), reader_info(), and stats()['reader_slots_used'|'reader_slots_max']. attest-py wheel only; attestdb sdist unchanged.
v0.1.41 — Temporal Analytics
What's New
Temporal analytics — db.at(timestamp) now exposes the full analytics layer, not just query() and stats().
snapshot = db.at(timestamp)
snapshot.what_if(("KRAS", "gene"), ("activates", "relation"), ("MEK", "gene"))
snapshot.predict("BRCA1")
snapshot.evolution("TP53")
snapshot.knowledge_health()
# ... all analytics methods work on point-in-time stateArchitecture
TemporalStoreView proxy filters claim-returning store methods by timestamp. AnalyticsEngine(snapshot) works transparently — zero changes to the analytics engine itself. Every analytics method automatically operates on point-in-time state.
Benchmarked
Proxy overhead: <0.5µs per call, +3.3% on compounded access patterns (statistically not significant at p>0.05).
Full Changelog: v0.1.40...v0.1.41
v0.1.40 — Enterprise pipeline
What's New
- Enterprise provenance:
project,agent_id,source_version,labelsfields on Provenance struct (Rust + Python) - LegacyProvenance fallback: backward-compatible bincode deserialization for databases created before namespace/provenance fields
- Discovery pipeline: schema sampler, analyzer, aligner, claim templates, drift detection, schema versioning
- Calibration engine: prediction log, adaptive threshold engine, data quality tracker, feedback loop
- Review API: human review queue, bulk approve, MCP tools for conversational review
- Entity resolution: fuzzy/exact/domain matching, materialized views, ingestion hooks, CDC
- Unified query: query decomposer, conflict resolver, source authority matrix
- Access control: ACL sync, provenance-based policy engine, security middleware
- Audit layer: tamper-evident SHA-256 hash chain, SOC 2 export, SIEM webhook
- Extraction pipeline: unstructured claim extraction (email, Slack, QBR), entity linker, claim normalizer
- Resilience: circuit breakers, dead letter queues, rate limiter, idempotency store, source health tracker
- Claim type taxonomy: 32 hierarchical types with runtime extension
- CLI:
attest discovercommand for schema discovery - Drift check job: scheduled drift detection with auto-resolve and circuit breaker
Full Changelog
v0.1.39 — Launch CLI
New CLI commands: quickstart, mcp-config, doctor, trial, upgrade, share, stats, telemetry. 10 authored skill templates. ~12µs queries. 106 MCP tools.
v0.1.38 — Launch CLI
New CLI commands: quickstart, mcp-config, doctor, trial, upgrade, share, stats, telemetry.
10 authored skill templates. Bundled sample data. ~12µs queries. 106 MCP tools.
v0.1.37 — Fix MCP server crash on clean install
Bug fix
Fixed ModuleNotFoundError: No module named 'attestdb.mcp_tools_learning' that crashed attest-mcp on clean pip install. Enterprise-only modules (mcp_tools_learning, mcp_tools_viz, mcp_tools_autonomous, mcp_tools_analysis) are now guarded with try/except ImportError.
Also includes (from v0.1.36)
attest brain install— personal knowledge system for AI agents- Proactive MCP server instructions (tells agents to USE the brain tools)
- MCP server name changed from "attest" to "brain" (fixes Claude Code /doctor errors)
pip install -U attestdb
attest brain installFull changelog: v0.1.36...v0.1.37
v0.1.36 — Attest Brain
Attest Brain — personal knowledge system for AI agents
Give Claude Code, Cursor, OpenClaw, and any MCP-compatible agent a persistent brain that gets smarter every session.
pip install attestdb
attest brain installWhat's new
attest brain install— one command to install the brain into your coding tools (Claude Code, Cursor, Windsurf, Codex, Gemini CLI)attest brain status— view brain statistics (claims, entities, sessions, knowledge breakdown)attest brain uninstall— clean removalattest-brain— standalone CLI entry point
What the brain does
- Session recall — prior knowledge injected at session start
- Pre-edit warnings — known bugs surface before you edit a file
- Post-test fixes — prior solutions appear when tests fail
- Negative results — records what didn't work so nobody repeats the search
- Confidence scoring — every fact has a 0-1 score that updates with evidence
- Gap detection — finds what the brain doesn't know
Landing page
Full changelog: v0.1.35...v0.1.36
v0.1.35 — pip install attestdb now auto-installs Rust engine
What's New
One-command install
pip install attestdb now automatically installs attest-py (the Rust storage engine) as a dependency. No more ModuleNotFoundError: No module named 'attest_rust'.
Quality of life
- Downgraded "Unknown entity_type" warnings to DEBUG level — clean output for new users
- Performance regression tests (8 tests verifying ask <500ms, search <10ms)
- MCP tool cleanup: 4 uncapped claims_for calls fixed
- LIVE indicator on demo search inputs
- Updated PyPI descriptions and keywords
Full Changelog
v0.1.34 — Enterprise RBAC, Rust neighbors(), 3D graph labels
What's New
Enterprise RBAC (Group-Based Access Control)
- Groups & memberships:
db.create_group(),db.add_to_group()— team-based access - Declarative policies:
db.add_policy()— allow/deny rules per group/namespace/predicate - Entitlement resolution: principal → groups → policies → effective access
- SecureStoreProxy: wraps Rust store, filters ALL claim-returning methods
- 6-level sensitivity: SHARED → PUBLIC → INTERNAL → CONFIDENTIAL → RESTRICTED → REDACTED
- JWT + SAML auth: API middleware resolves user identity per request
- Audit logging: group_created, member_added, policy_created, access_denied events
- 29 security review findings fixed (5 CRITICAL, 8 HIGH, 10 MEDIUM)
Rust-native neighbors()
store.neighbors(entity_id)returns neighbor IDs from adjacency index- 11,020 neighbors in 3ms (no claim materialization)
Demo improvements
- 3D force-graph with HTML overlay labels (DOM-based, works everywhere)
- 2D force-graph with d3-force collision detection
- Stronger charge repulsion, circular initial positions