Skip to content

Releases: SurajKGoyal/amnesic

v0.2.1

17 Jun 09:09

Choose a tag to compare

v0.2.0

09 Jun 11:12

Choose a tag to compare

Full Changelog: v0.1.17...v0.2.0

v0.1.17

31 May 16:27

Choose a tag to compare

Full Changelog: v0.1.16...v0.1.17

v0.1.16 — install UX polish: zero-credential demo, marketplaces, badges

31 May 15:57

Choose a tag to compare

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 amnesicamnesic init (or amnesic init --demo)

v0.1.15 — Safe cross-process writes (busy_timeout)

28 May 14:03

Choose a tag to compare

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?

27 May 06:16

Choose a tag to compare

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

27 May 05:21

Choose a tag to compare

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

26 May 11:52

Choose a tag to compare

Performance (measured against real 76-table store):

  • db_get_schema 444 → 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 call
  • get_relationships BFS now loads all edges once, traverses in pure Python — no lock held during traversal
  • save_cached_schema + discover_relationships_bulk converted to executemany

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

26 May 11:39

Choose a tag to compare

Critical fixes from full code/security/performance review:

Correctness

  • FQN normalization centralized — db_annotate, db_discover_relationships, db_get_relationships, db_sync_knowledge now all use the same canonical key as db_get_schema. Fixes the teammate-reported bug where annotations silently vanish.
  • truncated flag no longer a false positive on exact-fit results
  • column_name lookups now case-insensitive (fixes 'OrderDate' vs 'orderdate' merge failures)

Safety

  • SELECT INTO OUTFILE / DUMPFILE / SELECT * INTO new_table now rejected by the static analyzer (closes MySQL filesystem-write bypass)
  • db_search no longer crashes on * or other unsupported FTS queries — returns []
  • Tunnel script TimeoutExpired caught and re-raised as RuntimeError with helpful message
  • Knowledge SQLite files now chmod 600 on 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

26 May 11:39

Choose a tag to compare

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 pymssql

Implementation: _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.