Skip to content

Releases: CodeAbra/iai-personal-memory-engine

v2.0.1

Choose a tag to compare

@CodeAbra CodeAbra released this 11 Jul 05:03

v2.0.1 — Lower idle CPU

  • Corpus counters update incrementally instead of rescanning.
  • Fresh readers inherit the writer's sort index instead of rebuilding it.
  • The graph cache no longer re-streams the whole corpus on ambient captures.

Background rebuild churn is cut substantially. See CHANGELOG.md.

v2.0.0

Choose a tag to compare

@CodeAbra CodeAbra released this 10 Jul 23:22

What's new in v2.0.0

  • New Rust storage and graph engine — replaces the previous Python/hnswlib backend. Existing stores migrate automatically on first run, no manual steps.
  • Desktop app — a local, loopback-only dashboard to watch the memory graph live, add a memory, and hint records into the forgetting queue.
  • New memory operations — document study/teach, anticipatory foresight packs, and combined lexical + semantic search.
  • Dropped the last GPL-adjacent dependencies; the project now ships its own storage and graph engines under MIT.

Windows support is beta. See CHANGELOG.md for details.

v1.2.1

Choose a tag to compare

@CodeAbra CodeAbra released this 01 Jul 06:03

Fixed

  • capture-hooks install no longer breaks the MCP entry. It stopped wiring the wheel-bundled wrapper that shipped without its Node dependencies (it couldn't resolve @modelcontextprotocol/sdk, so the iai-mcp server failed to start after install); install now prefers a runnable wrapper. (#26)
  • HNSW boot-integrity check compares the live index element count instead of the already-repopulated label-map size, so a stale on-disk index is rebuilt rather than silently kept.
  • SessionStart cache refreshes during active (WAKE) operation, not only after a sleep cycle, so long-lived daemons serve current context.
  • macOS CI is green again — socket integration tests use short paths (Darwin AF_UNIX limit) with corrected fixtures.

Added

  • capture-hooks install --components to opt out of re-registering the SessionStart recall hook instead of always putting all three hooks back. (#26)

Thanks to @danielhertz1999-bit and @Marsu6996.

v1.2.0 — Windows support (beta)

Choose a tag to compare

@CodeAbra CodeAbra released this 26 Jun 21:44

Added

  • Windows support (beta). The daemon and CLI now run on Windows:

    • Unix-domain sockets fall back to authenticated TCP loopback (127.0.0.1:<port> + token);
    • fcntl / resource / signal calls are shimmed or guarded;
    • the daemon installs via Windows Task Scheduler;
    • crypto-key permissions are set with icacls;
    • the MCP wrapper dials the daemon over the same transport.

    The runtime is ported and validated on Windows 11. The test suite is still being ported, so Windows is beta for now — please report anything you hit. POSIX behavior is unchanged.

    Thanks to @danielhertz1999-bit for the port, and to @warplayer for thorough Windows 11 validation.

v1.1.7

Choose a tag to compare

@CodeAbra CodeAbra released this 22 Jun 07:28

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

Choose a tag to compare

@CodeAbra CodeAbra released this 22 Jun 06:35

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

Choose a tag to compare

@CodeAbra CodeAbra released this 22 Jun 01:45

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

Choose a tag to compare

@CodeAbra CodeAbra released this 21 Jun 14:59

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

Choose a tag to compare

@CodeAbra CodeAbra released this 21 Jun 08:00

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

Choose a tag to compare

@CodeAbra CodeAbra released this 18 Jun 00:25

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.