Get started

Changelog

All notable changes to eidetic-daemon. Format inspired by Keep a Changelog; semver via git tags.

[Unreleased]


[v0.0.45] — 2026-05-20

/ask result cache: LRU + TTL keeps the web dashboard responsive under polling.

Added

Why

Web dashboard at /dashboard and any future polling client (mobile, Slack bot) will fire the same /ask query repeatedly. Without caching, every poll re-runs FTS5. 5-min TTL is short enough that fresh engrams surface quickly; 64-entry cap bounds memory.


[v0.0.44] — 2026-05-20

eideticd -uninstall — symmetric to -install. Lowers conversion friction.

Added

Why

Pre-v0.0.44: -install was one command but uninstall required manual launchctl bootout + rm -rf ~/.eidetic. Friction for “let me try this” prospects. Now: eideticd -install to install, eideticd -uninstall to remove. Symmetric.


[v0.0.42] — 2026-05-20

/export HTTP endpoint: stream every engram as newline-delimited JSON.

Added

Why

Right-to-export. “I own my data” was a Pro promise; this is the proof. Also enables: backup before uninstall, migrate to another store, audit trail for compliance, bulk re-ingest into a future vector store.


[v0.0.41] — 2026-05-20

Cursor capture noise reduction: only capture chatSessions/*.json, skip per-workspace workspace.json stubs.

Added

Why

Pre-v0.0.41: every Cursor workspace produced a single useless workspace.json engram + real session engrams from chatSessions/. On a developer with 50 workspaces, that’s 50 noise engrams polluting FTS results.


[v0.0.39] — 2026-05-20

Shared-team surface foundation: daemon sends X-Team-ID header for Team subscribers.

Added

Worker contract (op-assistant follow-up)

Daemon now sends X-Team-ID. Worker should:

  1. When /sync arrives with X-Team-ID, store the blob at TWO keys: per-device (current) AND engrams/team/<team_id>/<device_id>/<ts>.db (new)
  2. Add GET /team-engrams?team_id=X endpoint that lists across all team uploads
  3. Until then, the header is silently accepted and ignored — safe to ship before Worker is updated.

[v0.0.37] — 2026-05-20

Self-updating update_available flag via 24h GitHub releases poll.

Added


[v0.0.38] — 2026-05-20

/ask HTTP endpoint: nucleus_ask semantics for non-MCP clients (web dashboard, mobile, curl).

Added


[v0.0.36] — 2026-05-20

--backups flag: at-a-glance cloud backup history.

Added


[v0.0.35] — 2026-05-20

Sync.json hot-reload: Pro customers no longer need to restart the daemon after dropping their config.

Added

Why

Before v0.0.35, Pro onboarding required: (1) drop sync.json, (2) restart daemon via launchctl kickstart. Now step 2 is automatic — first upload fires within ~1s of file appearance.


[v0.0.34] — 2026-05-19

Sync health check: eideticd --check validates sync.json and tests Worker connectivity.

Added


[v0.0.33] — 2026-05-19

Sync-state persistence: --stats now shows last cloud backup time across daemon restarts.

Added


[v0.0.32] — 2026-05-19

Cloud restore: download the latest R2 backup in one command.

Added


[v0.0.31] — 2026-05-19

Bridge dual-listener mode for Cloudflare tunnel integration.

Added

Architecture note

The bridge feature is built and the -bridge flag exists, but the launchd plist (~/Library/LaunchAgents/works.eidetic.eideticd.plist) does NOT activate it by default. Port assignment must be coordinated with other services — in particular, port 8420 is owned by the XTTS voice daemon (Sovereign tunnel). Use :8421 or higher for eidetic bridge if activating.


[v0.0.30] — 2026-05-19

Windows capture path fix.

Fixed


[v0.0.29] — 2026-05-19

-install flag for one-command service registration.

Added


[v0.0.28] — 2026-05-19

linux-arm64 platform + FTS5 search snippets + eidetic-mcp 0.0.4.

Added


[v0.0.27] — 2026-05-19

Windows support: TCP mode, PowerShell installer, eidetic-mcp 0.0.2.

Added

Fixed


[v0.0.26] — 2026-05-18

--stats flag for at-a-glance database summary.

Added


[v0.0.25] — 2026-05-18

Compliance daemon, PyPI publish, and scheduler files.

Added


v0.0.24 — 2026-05-18

Cloud sync, Windows CI gate, MCP integration guide, and pre-public docs cleanup.

Added

Decision recorded


v0.0.23 — 2026-05-18

surface is now optional on GET /engrams — omitting it returns engrams across all surfaces, ordered by timestamp (respects order, since, before, limit). This gives callers the full retrieval query power of /engrams (paging, ordering, time windows) on cross-surface data, which /recent did not expose. Zero breaking change — all existing surface-scoped calls are unaffected.

Added

Changed (non-breaking)

Reference

PR #56 · tag v0.0.23


[v0.0.22] — 2026-05-18

order=asc on GET /engrams — callers can now retrieve engrams oldest-first by appending ?order=asc. Enables replay consumers, incremental import pipelines, and chronological feed UIs without a post-sort. Default (order=desc or omitted) is unchanged. Zero breaking change.

Added

Changed (non-breaking)

Reference

PR #55 · tag v0.0.22


[v0.0.21] — 2026-05-18

before upper-bound filter on GET /engrams and GET /recent — callers can now scope queries to a time window (since=<lower>&before=<upper>) or just a ceiling (before=<cutoff>). Enables polling diffs, sliding windows, and cursor-based pagination without fetching all rows. Zero breaking change — all existing calls omit before and see unchanged behaviour.

Added

Changed (non-breaking)

Reference

PR #54 · tag v0.0.21


[v0.0.20] — 2026-05-18

Count endpoint — GET /engrams/count returns {"count": N} for fast badge counts and monitoring without fetching rows. Surface and since filters match the /engrams retrieval semantics. Zero breaking change.

Added

Reference

PR #53 · tag v0.0.20


[v0.0.19] — 2026-05-18

Surgical single-engram removal — DELETE /engrams/{id} completes the point-CRUD surface (GET + DELETE by primary key). The existing surface-level DELETE /engrams?surface=X is unchanged. Zero breaking change.

Added

Reference

PR #52 · tag v0.0.19


[v0.0.18] — 2026-05-18

Point-lookup by primary key — GET /engrams/{id} lets callers fetch a single engram when they already know its ID (e.g. after a POST /engrams insert). Completes the basic CRUD surface. Zero breaking change.

Added

Reference

PR #52 · tag v0.0.18


[v0.0.17] — 2026-05-18

Bulk insert via POST /engrams/batch — one round-trip for N engrams in a single transaction. Complements the single-insert POST /engrams from v0.0.16. Zero breaking change.

Added

Reference

PR #50 · tag v0.0.17


[v0.0.16] — 2026-05-18

API-side engram insertion — POST /engrams turns the daemon from a read-only query layer into a writable store reachable from any caller (mobile, webhooks, relay pipelines, manual annotations). Zero breaking change to any prior caller; all existing GET/DELETE semantics unchanged.

Added

Reference

PR #49 · tag v0.0.16


[v0.0.15] — 2026-05-18

Cross-surface recent engrams — answers “what happened lately?” without a keyword or surface filter. Complements /search (relevance-ranked by keyword) and /engrams (surface-scoped). Zero breaking change to any prior caller.

Added

Reference

PR #48 · tag v0.0.15


[v0.0.14] — 2026-05-18

Full-text search over engram payloads — the first endpoint that answers “what did I say about X?” rather than scrolling reverse-chronological. Zero breaking change to any prior caller.

Added

Reference


v0.0.13 — 2026-05-18

Engram purge endpoint + surface listing + uninstall script. Three independent capabilities that close the full lifecycle: query (v0.0.2), observe (v0.0.7), authenticate (v0.0.9), and now purge + discover + clean-uninstall. All additive — zero breaking change to any prior caller.

Added

Reference


v0.0.11 — 2026-05-15

OpenMetrics 1.0.0 exposition format on /metrics via Accept-header negotiation. IETF successor to Prometheus exposition (CNCF-graduated). Compounds on v0.0.10 — additive, zero breaking change to v0.0.10 callers (Prometheus + JSON paths unchanged).

Added

Changed

Reference


v0.0.10 — 2026-05-15

Prometheus exposition format on /metrics via Accept-header content negotiation. Compounds on v0.0.7 JSON /metrics — additive, zero breaking change. Promotes “Prometheus-format /metrics” from the W2+ Unreleased candidate list into v0.0.10.

Added

Reference


v0.0.9 — 2026-05-15

Opt-in caller authentication on the daemon API. Defense-in-depth on top of UDS 0600 trust boundary — prevents other-process-on-same-uid impersonation when enabled. Off by default; preserves the W1 single-user UDS-trust model documented in SECURITY.md.

Added

Reference

Threat model amendment to SECURITY.md


v0.0.8 — 2026-05-14

Bridge surface for v0.0.7 /metricsdaemon_metrics() MCP tool exposes daemon observability counters to MCP clients (Cursor / Claude Code / Cline) via tool-call.

Added

Reference


v0.0.7 — 2026-05-14

First observability surface on top of v0.0.6 — GET /metrics JSON endpoint exposing daemon-side counters that DO posts (and any future ops dashboard) can cite live.

Added

Note

Reference


v0.0.6 — 2026-05-14

Shutdown-race fix on top of v0.0.5 (no behavioral change to capture/store/API).

Fixed

Added

Reference


v0.0.5 — 2026-05-14

Capture-side hard-wall removal + bridge reassembly + brand alignment (brand = “Eidetic Works”; “Eidetic” alone not used).

Added

Changed

Reference


v0.0.4 — 2026-05-14

Python MCP bridge + ship-readiness polish on top of v0.0.3 (no Go behavioral change).

Added

Reference


v0.0.3 — 2026-05-14

Hardening release on top of v0.0.2 (no behavioral break for v0.0.2 users; recommended upgrade for anyone hitting silent payload-skips on real Claude session JSONLs).

Added

Changed

Fixed

Reference


v0.0.2 — 2026-05-13

First W1 release. Daemon W1 spec functionally complete through Phase 6.

Added

Reference


v0.0.12 — 2026-05-17

Query latency percentiles on /metrics. Every /engrams call is timed; P50/P95/P99 surface via all three /metrics formats (JSON, Prometheus summary, OpenMetrics summary). Compounds on v0.0.11 — additive, zero breaking change (new fields are omitempty in JSON; new metric block gated on ≥ 2 samples).

Added

Reference


Unreleased

W2+ candidates (per spec § 1 cuts list, none of these target a current PR):