Releases: kraklabs/mie
Releases · kraklabs/mie
Release list
v1.3.7
Added
- MCP tool filtering: New
mcp.include_toolsandmcp.exclude_toolsoptions inconfig.yamlto control which tools are exposed to MCP clients.
Usage
# .mie/config.yaml
mcp:
# Option A: whitelist — only expose these tools
include_tools:
- mie_analyze
- mie_store
- mie_query
# Option B: blacklist — expose all except these
exclude_tools:
- mie_export
- mie_repairinclude_toolstakes precedence when both are set- Filtered tools are hidden from
tools/listand rejected ontools/call - Fully backward compatible — omitting the
mcpsection exposes all tools as before
Full Changelog: v1.3.6...v1.3.7
Full Changelog: v1.3.6...v1.3.7
v1.3.6
Fixed
- Fork bomb in daemon start:
forkDaemonBackgroundandconnectOrStartDaemonspawnedmie daemon startwithout--foreground, so each child re-forked indefinitely (~1 fork/500ms). The forked child now runs with--foregroundto enter the actual daemon serve loop.
Full Changelog: v1.3.5...v1.3.6
v1.3.5
Fixed
- Daemon child processes left as zombies:
runDaemonStartandconnectOrStartDaemonnow callcmd.Wait()in a background goroutine aftercmd.Start()to reap the forked daemon process - Zombie accumulation when daemon runs as PID 1 in a container without tini: a
SIGCHLDhandler withWait4(WNOHANG)now reaps orphaned child processes automatically
Full Changelog: v1.3.4...v1.3.5
Full Changelog: v1.3.4...v1.3.5
v1.3.4
Fixed
--foregroundflag ignored inmie daemon start --foreground: the parentrunDaemonFlagSet hadUnknownFlags = truewhich silently consumed--foregroundbefore it reachedrunDaemonStart— the daemon would fork into background mode and exit immediately, causing systemd services to fail with a restart loop
Full Changelog: v1.3.3...v1.3.4
v1.3.3
v1.3.2
v1.3.1
Added
- Auto-start daemon on
mie init: the daemon is started after config creation (and interview if used), so the MCP server is immediately ready when the IDE connects
Full Changelog: v1.3.0...v1.3.1
Full Changelog: v1.3.0...v1.3.1
v1.3.0: Daemon Multi-Instance Architecture
Highlights
MIE now supports multiple concurrent MCP clients (Claude, Cursor, etc.) without "database locked" errors. A single daemon process holds the exclusive RocksDB lock and multiplexes access over a Unix domain socket.
How it works
mie --mcp → auto-starts daemon if not running → connects via socket
No configuration needed — it just works. You can also manage the daemon manually:
mie daemon start # foreground
mie daemon start --background # detached
mie daemon stop
mie daemon statusWhat's New
Added
- Daemon server serving CozoDB over Unix domain socket
- SocketBackend client forwarding queries to daemon via newline-delimited JSON
mie daemon start|stop|statusCLI commands- Auto-start daemon from
mie --mcpwith retry/backoff MetaBackendinterface for transparent local/remote storageNewClientWithBackendconstructor for daemon-connected clients- Ping-based liveness detection for stale socket cleanup
- PID file locking with
flock()to prevent concurrent starts - Socket permissions restricted to owner-only (
0600) - Embedding dimension validation (daemon ↔ client)
- 15 new tests (13 socket/daemon + 2 dimension validation)
Fixed
- Deadlock in
SocketBackend.Close()— mutex released before closing connection - Silent fallback to embedded mode — now fails with clear error instead
- PID file race condition — atomic
flock()instead of write-then-check - Stale socket from crashed daemon — ping + cleanup on connect
- Scanner errors in daemon now logged
- Context propagation in daemon dispatch
- Protocol response ID validation
- Clean disconnect via
MethodCloseon close
Changed
mie --mcprequires daemon (auto-started or manual) instead of opening CozoDB directly- Graceful shutdown waits up to 5s for active handlers
Full Changelog: v1.2.0...v1.3.0
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's New
Added
mie_repairtool: rebuilds HNSW indexes and cleans orphaned embeddings when semantic search encounters corruption- Embedding backfill:
BackfillEmbeddingsgenerates vectors for nodes created before embeddings were enabled - Semantic search result boosting: content containing the query text gets its distance halved
- Semantic search quality filter: results with cosine distance > 0.6 (< 40% similarity) are excluded
- Field length validation: content (50,000 chars), titles (500), descriptions (2,000), names (200)
mie_bulk_storepre-validation: validates all items (required fields, enums, JSON arrays, date formats) before storing any, ensuring atomic-or-nothing behavior- Entity upsert detection:
mie_storenow shows "Stored new entity" vs "Updated existing entity" topicadded to MCP schemanode_typesenum across all tools- Fact invalidation without replacement:
replacement_idis now optional inmie_update; omitting it marks the fact invalid without creating a replacement chain - Edge existence check:
mie_delete remove_relationshipnow verifies the edge exists before attempting removal - Invalidation target pre-validation:
mie_storewithinvalidatesverifies the target fact exists before storing the new fact - JSON validation for
alternativesfield in decisions (rejects non-JSON-array values) - Warning for empty
roleondecision_entityedges - Embedding coverage stats per node type in
mie_status(e.g., "Facts: 47/49") - Decision status breakdown in
mie_status(e.g., "9 active, 1 superseded") - Orphaned edge cleanup during node deletion
Fixed
- Datalog export syntax (HIGH): now generates valid CozoDB
:putformat with proper key/value separation — previously produced unparseable output mie_analyzeconflict display: shows the existing fact (with ID) instead of the empty proposed factmie_queryfilter pass-through:category/kindfilters no longer exclude Decision and Event types that don't have those fields- Embedding deletion: errors in
DeleteNodenow log warnings instead of being silently swallowed, preventing orphaned HNSW entries - Async embedding timeout: embedding generation now uses a 30-second timeout instead of unbounded
context.Background() mie_exportembeddings message: only shown when actual embedding count > 0MockEmbeddingProvider: uses word-level hashing so texts sharing words produce similar vectors, fixingTestIntegrationSemanticSearch
Changed
- Edge schema refactored to support explicit key/value column separation for CozoDB
:putsyntax - Sorting and filtering logic improved in list and query operations with better error handling
- CI workflow updated to golangci-lint-action v7
- MCP server version bumped to 1.2.0
Full Changelog: v0.1.9...v1.2.0
Full Changelog: v0.1.9...v1.2.0