Releases: SurajKGoyal/amnesic
v0.2.1
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Full Changelog: v0.1.17...v0.2.0
v0.1.17
Full Changelog: v0.1.16...v0.1.17
v0.1.16 — install UX polish: zero-credential demo, marketplaces, badges
Three improvements that close the install-friction gap versus other shipped MCP servers — without giving up amnesic's conceptual simplicity.
✨ amnesic init --demo — zero-credential trial
A new _demo.py builds a tiny self-contained SQLite e-commerce database (20 customers, 30 products, 100 orders, 232 line items, a full FK graph, and an integer status enum that's perfect for db_annotate). amnesic init --demo creates the DB, adds a [connections.demo] block to connections.toml, and is idempotent — re-running refreshes the data without duplicating config.
A curious visitor now goes from pipx install amnesic to actively using every tool in under 60 seconds — no database credentials required.
📦 Install UX
- Badges row (PyPI version, downloads, Python, license, MCP Registry, stars)
- "Works with" compatibility line listing 6 named clients + the MCP standard
- "Available on" row linking the Official MCP Registry and the new Claude Code plugin marketplace
- Claude Code section now leads with one-line install:
/plugin marketplace add SurajKGoyal/amnesic-marketplace
🔌 Claude Code plugin marketplace
amnesic is now installable as a Claude Code plugin via SurajKGoyal/amnesic-marketplace — no manual mcp.json editing.
Install: pipx install amnesic → amnesic init (or amnesic init --demo)
v0.1.15 — Safe cross-process writes (busy_timeout)
Adds PRAGMA busy_timeout=5000 to the SQLite knowledge store.
WAL mode already handled concurrent reads, and a per-process lock serialized writes within a process. But two processes pointed at the same knowledge file (e.g. Claude's MCP server + Cursor's, both annotating) could hit SQLITE_BUSY on simultaneous writes — the second writer failed immediately instead of waiting.
With busy_timeout, a contending writer now queues up to 5s for the lock to clear. Combined with amnesic's tiny, infrequent annotation writes, this fully covers the multi-client / multi-agent shared-store case.
Surfaced by a question from another agent-memory builder on the launch thread — exactly the scenario it protects.
v0.1.14 — Documentation: Is this safe with my data?
Adds a calibrated README section answering the most common question new users (and recruiters) have when seeing an MCP server for SQL databases: "is this safe with my data?"
Key points the new section makes:
- The trust boundary sits at the AI client, not at amnesic. amnesic doesn't introduce a new external service — it slots into whatever AI deployment the user already trusts.
- Frames the safety question universally — works for indie devs (Claude Pro, Cursor on personal projects) and enterprise teams (Bedrock, Azure OpenAI, Anthropic Enterprise, Vertex AI, self-hosted).
- Names specific regulatory regimes precisely (HIPAA PHI, PCI cardholder data, GDPR, India DPDP Act, data residency) for users who need to check.
- Highlights that data minimization is built into the design — the annotation layer means the AI answers most schema questions from the local SQLite knowledge file, without running queries that move row data.
- Includes an explicit MIT-license / no-legal-advice disclaimer.
No code changes.
v0.1.13 — README install consistency
Cosmetic fix to address inconsistency in the README's install instructions:
- The main Quickstart correctly recommends `pipx install amnesic` (no extras, wizard handles drivers)
- But the collapsed "Don't have pipx?" alternatives still showed `uv tool install amnesic[mssql]` and `pip install amnesic[mssql]` — confusing for users picking a non-MSSQL DB.
This release:
- Strips `[mssql]` from uv tool and pip install examples (now both just `amnesic`)
- Adds a one-line note that the wizard handles drivers regardless of installer
- Rewords Supported databases table: column is now "Installed by" explaining both the wizard nudge path and the extras path (for users who want all drivers up front)
No code changes.
v0.1.12 — Performance + migration hotfix
Performance (measured against real 76-table store):
db_get_schema444 → 0 SQLite calls per invocation (batched column knowledge lookup, was N+1)load_config()now cached at module level — was re-parsing TOML on every tool callget_relationshipsBFS now loads all edges once, traverses in pure Python — no lock held during traversalsave_cached_schema+discover_relationships_bulkconverted toexecutemany
Critical hotfix on top of v0.1.11:
The v0.1.11 column-case migration crashed with PRIMARY KEY constraint violation when two mixed-case rows would lowercase to the same key (e.g. JobStatus and JOBSTATUS both → jobstatus). Affected anyone upgrading from v0.1.10 → v0.1.11 with pre-existing annotations.
Fix: dedupe in Python (last write wins) and rewrite the table atomically. Idempotent guard so the migration only runs when needed.
Tests: 185/185 pass.
v0.1.11 — Correctness + safety fixes
Critical fixes from full code/security/performance review:
Correctness
- FQN normalization centralized —
db_annotate,db_discover_relationships,db_get_relationships,db_sync_knowledgenow all use the same canonical key asdb_get_schema. Fixes the teammate-reported bug where annotations silently vanish. truncatedflag no longer a false positive on exact-fit resultscolumn_namelookups now case-insensitive (fixes 'OrderDate' vs 'orderdate' merge failures)
Safety
SELECT INTO OUTFILE/DUMPFILE/SELECT * INTO new_tablenow rejected by the static analyzer (closes MySQL filesystem-write bypass)db_searchno longer crashes on*or other unsupported FTS queries — returns[]- Tunnel script
TimeoutExpiredcaught and re-raised asRuntimeErrorwith helpful message - Knowledge SQLite files now
chmod 600on POSIX (was world-readable)
Tests: 176/176 pass (+30 new regression tests covering INTO bypass, FTS edge cases, FQN normalization, tunnel timeout, column case, file permissions).
v0.1.10 — Zero-decision install
Removes the requirement to pick driver extras at install time. New flow:
pipx install amnesic # one command, no decisions
amnesic init # wizard asks driver, then guides setup
? Database type: MSSQL
✗ The MSSQL driver ('pymssql') is not installed.
Install with ONE of:
pipx inject amnesic pymssql
uv tool install --with pymssql --reinstall amnesic
pip install pymssqlImplementation: _is_driver_installed(driver) and _print_missing_driver_help(driver) helpers in _wizard.py. Check fires after the user picks a driver, with three actionable install commands matching the three install methods.