Skip to content

Releases: CodeAbra/iai-personal-memory-engine

v1.1.7

22 Jun 07:28

Choose a tag to compare

Added

  • scripts/install-linux.sh — a one-shot Fedora / RHEL / Debian setup helper: prerequisite checks (Python ≥3.11, Rust, Node ≥18), venv creation, editable install, MCP-wrapper build, crypto-key init, and systemd user-service install. Idempotent and safe to re-run. Thanks to @MoppelMat.

Fixed

  • Dropped two ineffective directives (StartLimitIntervalSec, StartLimitBurst) from the systemd unit's [Service] section — systemd only honors those keys in [Unit], so in [Service] they had no effect and emitted a warning on modern systemd. Thanks to @MoppelMat.

v1.1.6

22 Jun 06:35

Choose a tag to compare

Fixed

  • Daemon memory and CPU under sustained load. On large stores the background daemon's warm state and nightly consolidation could climb in resident memory and spin the CPU. This release:

    • isolates the runtime-graph rebuild in a spawn-context worker,
    • computes graph centrality with a bounded sampled estimator (no exact in-process betweenness at scale),
    • streams record reads instead of materializing the whole corpus,
    • drains the deferred-capture backlog in two phases (insert first, embed later) with self-limiting safety rails,
    • grades the memory watchdog against the kernel's physical-footprint metric rather than raw resident set.

    Warm memory now stays well under the cap and the consolidation CPU storm is gone. No changes to the public API, CLI, MCP tools, or on-disk store format.

v1.1.5

22 Jun 01:45

Choose a tag to compare

Security

  • Deferred-embed pending rows are now encrypted at rest. On an encrypted store, a record awaiting background embedding briefly held its text (literal_surface) and provenance in plaintext during the embed window. Pending rows are now encrypted on write and decrypted just before embedding, matching the rest of the at-rest encryption. Unencrypted stores are unaffected.

Fixed

  • Sleep daemon WAKE/idle CPU storm — the consolidation cycle could spin the CPU and never settle; the daemon now serves recall on wake. Thanks to @Marsu6996 (#20).
  • Consolidation & recall correctness — tombstoned records excluded from the runtime graph, crisis-mode topology built on the live graph, recall score clamp, reflection-embedding + crash recovery hardened — closing the root causes behind the crisis-mode loop. Thanks to @Marsu6996 (#22).

v1.1.4

21 Jun 14:59

Choose a tag to compare

Fixed

  • migrate --reembed-from-text repaired nothing on bulk-loaded stores. The version added in v1.1.3 fetched each record through a path that returned nothing on stores populated in bulk, so it re-embedded zero records and exited reporting success — a silent no-op. It now reads records directly, actually re-embeds from the stored text, and is resumable with bounded memory use.

If you ran the migration on v1.1.3, run it again on v1.1.4 — your vectors were not repaired:

iai-mcp migrate --reembed-from-text

Throughput is embedder-bound (no batch speedup yet), so a large store takes a while; the run is resumable and reports progress.

v1.1.3

21 Jun 08:00

Choose a tag to compare

Fixed

  • Ambient capture embedded the cue label instead of the message. The session-capture path embedded a positional provenance label ("session <id> turn <n>") rather than the message content, so stored vectors collapsed and semantic recall degraded on any store built through the session hook. Capture now embeds the message content; the stored text (literal_surface) was never affected. Run iai-mcp migrate --reembed-from-text once after upgrading to repair vectors written before this fix. Thanks to @Marsu6996 for the report and fix.
  • Data loss under parallel transcript imports. write_deferred_captures wrote in place to the final filename, so a concurrent drain could read a half-written file and quarantine it as permanently failed. Writes are now atomic. Thanks to @gardinermichael for the report.
  • Sleep daemon could stall in crisis mode. Interrupted consolidation steps now record the underlying error instead of a bare deferred marker; recall degrades honestly instead of serving stale schema-dominated results while a cycle is stuck; and crisis mode auto-clears after 72 hours. A watchdog now emits an alert when the sleep cycle stops completing.

Added

  • iai-mcp migrate --reembed-from-text — re-embeds existing episodic records from their stored text to repair vectors written before the capture fix above. Idempotent; supports --dry-run, --resume, --rollback, --reembed-batch-size.
  • iai-mcp migrate --salvage-torn-permanent-failed — recovers complete records from torn capture files.
  • iai-mcp deferred-unlock-dead-pids — releases deferred-capture files left locked by a process that is no longer running.

Upgrading: after updating, run iai-mcp migrate --reembed-from-text once to repair recall vectors on existing stores.

v1.1.2

18 Jun 00:25

Choose a tag to compare

Fixed

  • macOS Keychain credentials for nightly consolidation. When claude /login
    stores OAuth credentials in the macOS login Keychain instead of
    ~/.claude/.credentials.json (the file is absent on a normal desktop-app
    setup), the subscription check now falls back to the Keychain item, so the
    nightly claude -p path is found. Added IAI_MCP_CLAUDE_BARE=0 to drop the
    --bare flag for setups where claude --bare -p reports "Not logged in"
    while plain claude -p authenticates. Default behavior unchanged.

v1.1.1

15 Jun 16:03

Choose a tag to compare

Fixed

  • Linux runtime fixes for the experimental Linux path: daemon binder detection
    gains an ss fallback, ANN query distances are clamped to a valid range, and
    the multiprocess store path no longer races on table visibility. Linux remains
    experimental and unvalidated end-to-end — testing and port feedback are welcome.

Changed

  • Internal cleanup only — no changes to the public API, the iai-mcp / iai
    CLI, the MCP tool set, or the on-disk store format: the sleep-pipeline
    compatibility shim was removed in favour of the canonical module, sleep-step
    names were made consistent, and more wall-clock benches are gated out of the
    default test run.

v1.1.0

15 Jun 03:11

Choose a tag to compare

Added

  • Experimental Linux support. The native engine now builds on Linux (the
    Rust extension no longer hard-depends on a macOS-only acceleration backend),
    the daemon installs as a systemd user service, and the capture/recall hooks
    run on POSIX shells. scripts/install.sh handles the Linux path and the
    README documents the extra build prerequisites. Validated on macOS; Linux is
    code-complete but not yet validated end-to-end — testing and port feedback
    are welcome.

Changed

  • Source restructured into focused packages. The largest modules — cli,
    store, daemon, hippo, doctor, migrate, and core — are now packages
    with concern-grouped sub-modules instead of single large files. The public API,
    the iai-mcp / iai CLI surface, the MCP tool set, and the on-disk store
    format are unchanged; this is an internal reorganization that makes the storage,
    daemon, community-detection, and migration layers easier to read and navigate.
  • Background daemon and graph-cache rebuild paths gained additional
    resource-isolation and reliability hardening.

v1.0.3

11 Jun 20:32

Choose a tag to compare

Fixed

  • MCP tools/list no longer stalls ~5s when the daemon is down — the wrapper connects the MCP transport first and wakes the daemon in the background.
  • scripts/install.sh (and the other shell scripts) ship executable; ./scripts/install.sh works directly.
  • Wrapper test runner no longer hangs after the suite (reconnect socket/timer unref'd).
  • More deterministic store teardown (store↔database reference cycle broken).
  • Tests that need the optional LongMemEval dataset or a built native extension now skip cleanly when those are absent.

Added

  • Full-transcript session capture (per-session turn ceiling raised to 100 000).
  • iai-mcp migrate --rederive-timestamps — repairs legacy records whose timestamps collapsed to a single import time.
  • Doctor check for time-collapsed episodic sessions + a daemon boot audit event when the doctor respawned it.
  • Typed stubs for the native extension (iai_mcp_native.pyi) in the wheel.

Changed

  • launchd: always-on activation (RunAtLoad=true, restart on crash) replaces socket activation — the daemon starts at login and is immediately available.

Removed

  • The experimental summary-compression module and the [compress] extra (transparent passthrough fallback; drops a ~2.3 GB optional model download).

v1.0.2

08 Jun 03:31

Choose a tag to compare

Fixed

  • Packaging: launchd plist, systemd unit, and capture/recall hooks now ship inside the wheel (iai_mcp/_deploy/) and resolve via importlib.resourcesiai-mcp daemon install and hook setup no longer fail on a clean pip install.
  • Python/CLI path resolution: server config and hooks use the running interpreter (sys.executable) and resolve the CLI via PATH, so installs under pyenv / non-default layouts work.