diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 81b3442..e9450de 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2025-2026 VetCoders (https://vetcoders.io)
+# Copyright (c) 2025-2026 Vetcoders (https://vetcoders.io)
name: Bug Report
description: Report a reproducible problem in rmcp-memex
title: "[Bug]: "
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index 6f7a130..231da62 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2025-2026 VetCoders (https://vetcoders.io)
+# Copyright (c) 2025-2026 Vetcoders (https://vetcoders.io)
name: Feature Request
description: Suggest an improvement or new capability for rmcp-memex
title: "[Feature]: "
diff --git a/.github/workflows/loctree-ci.yml b/.github/workflows/loctree-ci.yml
index c616c7d..e8bd53c 100644
--- a/.github/workflows/loctree-ci.yml
+++ b/.github/workflows/loctree-ci.yml
@@ -1,7 +1,7 @@
# Loctree CI - Codebase Health Analysis
# Uses loctree 0.8.0+ for dead code detection, circular imports, and health scoring
#
-# Co-Authored-By: Maciej & Klaudiusz
+# Co-Authored-By: Vetcoders
name: Loctree CI
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 000a219..4b4a033 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -96,12 +96,12 @@ All notable changes to this project will be documented in this file.
- Built on axum with tower-http CORS support
- **TUI Wizard Enhancements** - Machine-agnostic configuration
- Auto-detect hostname for per-host database paths
- - **Path Mode**: Shared (`~/.ai-memories/lancedb`) or Per-Host (`~/.ai-memories/lancedb.{hostname}`)
+ - **Path Mode**: Shared (`~/.rmcp-servers/rmcp-memex/lancedb`) or Per-Host (`~/.rmcp-servers/rmcp-memex/lancedb.{hostname}`)
- HTTP port configuration in wizard
- Host info displayed in health check
- Config TOML includes hostname and path mode comments
- **Multi-Host Database Paths** - Separate databases per machine
- - Pattern: `~/.ai-memories/lancedb.dragon`, `~/.ai-memories/lancedb.mgbook16`, etc.
+ - Pattern: `~/.rmcp-servers/rmcp-memex/lancedb.host-a`, `~/.rmcp-servers/rmcp-memex/lancedb.host-b`, etc.
- Avoids conflicts when syncing config across machines
- `MemexCfg::effective_db_path()` handles path resolution
@@ -166,7 +166,7 @@ All notable changes to this project will be documented in this file.
- **CLI `--auto-route` flag** - Automatic search mode selection for `search` command
- Analyzes query intent and selects optimal mode (vector/bm25/hybrid)
- Displays intent, confidence, and loctree suggestions when applicable
- - Example: `rmcp-memex search -n memories -q "when did we buy dragon" --auto-route`
+ - Example: `rmcp-memex search -n memories -q "when did we buy host-a" --auto-route`
- **MCP `auto_route` parameter** - Added to `rag_search` and `memory_search` tools
- When `true`, QueryRouter overrides explicit `mode` parameter
- Enables intelligent mode selection for AI agents
@@ -296,7 +296,7 @@ All notable changes to this project will be documented in this file.
- **Release Workflow** - GitHub Actions for multi-platform binary releases.
- **Install Script** - `curl | sh` installer with platform detection.
```bash
- curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+ curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
```
## [0.2.1] - 2025-12-26
@@ -365,4 +365,4 @@ All notable changes to this project will be documented in this file.
---
-Vibecrafted with AI Agents by VetCoders (c)2025 The LibraxisAI Team
+Vibecrafted with AI Agents by Vetcoders (c)2025
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bb12f88..dee6125 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-
+
# Contributing
Thanks for helping improve `rmcp-memex`.
diff --git a/Cargo.toml b/Cargo.toml
index c896320..0f09484 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,8 +5,8 @@ edition = "2024"
build = "src/build.rs"
description = "High-performance semantic indexing with MCP server and blazing-fast LanceDB vector storage."
license = "MIT OR Apache-2.0"
-repository = "https://github.com/VetCoders/rmcp-memex"
-homepage = "https://github.com/VetCoders/rmcp-memex"
+repository = "https://github.com/vetcoders/rmcp-memex"
+homepage = "https://github.com/vetcoders/rmcp-memex"
documentation = "https://docs.rs/rmcp-memex"
readme = "README.md"
keywords = ["mcp", "rag", "embeddings", "lancedb", "vector-search"]
diff --git a/LICENSE b/LICENSE
index cc37148..2dc5329 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2025-2026 VetCoders (https://vetcoders.io)
+Copyright (c) 2025-2026 Vetcoders (https://vetcoders.io)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/LICENSE-APACHE b/LICENSE-APACHE
index 544ac52..e04e139 100644
--- a/LICENSE-APACHE
+++ b/LICENSE-APACHE
@@ -175,7 +175,7 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
END OF TERMS AND CONDITIONS
-Copyright 2025-2026 VetCoders (https://vetcoders.io)
+Copyright 2025-2026 Vetcoders (https://vetcoders.io)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/Makefile b/Makefile
index 75f8551..be33d7b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,10 @@
# rmcp-memex Makefile
# ============================================================================
# Service management, build, and maintenance targets
-# Created by M&K (c)2026 VetCoders
+# Created by vetcoders (c)2026
# ============================================================================
#
-# RAM DISK MODE (Dragon 512GB):
+# RAM DISK MODE (512GB workstation):
# make ramdisk-up - Create 50GB RAM disk, copy DB, start service
# make ramdisk-down - Sync to disk, unmount RAM disk, stop service
# make snapshot - Sync RAM disk to disk (backup)
@@ -14,11 +14,11 @@
SHELL := /bin/bash
BINARY := rmcp-memex
INSTALL_PATH := $(HOME)/.cargo/bin/$(BINARY)
-LAUNCHD_PLIST := $(HOME)/Library/LaunchAgents/ai.libraxis.rmcp-memex.plist
+LAUNCHD_PLIST := $(HOME)/Library/LaunchAgents/com.vetcoders.rmcp-memex.plist
# Disk paths
-DB_PATH_DISK := $(HOME)/.ai-memories/lancedb
-LOG_DIR := $(HOME)/.ai-memories/logs
+DB_PATH_DISK := $(HOME)/.rmcp-servers/rmcp-memex/lancedb
+LOG_DIR := $(HOME)/.rmcp-servers/rmcp-memex/logs
HTTP_PORT := 8987
# RAM disk config (50GB = 104857600 blocks of 512 bytes)
@@ -63,14 +63,14 @@ start: ## Start memex service via launchd
echo "Service already running on port $(HTTP_PORT)"; \
else \
launchctl bootstrap gui/$$(id -u) $(LAUNCHD_PLIST) 2>/dev/null || \
- launchctl kickstart gui/$$(id -u)/ai.libraxis.rmcp-memex 2>/dev/null || \
+ launchctl kickstart gui/$$(id -u)/com.vetcoders.rmcp-memex 2>/dev/null || \
$(INSTALL_PATH) serve --db-path $(DB_PATH) --http-port $(HTTP_PORT) --http-only & \
sleep 3; \
echo "Started memex on port $(HTTP_PORT)"; \
fi
stop: ## Stop memex service
- @-launchctl bootout gui/$$(id -u)/ai.libraxis.rmcp-memex 2>/dev/null
+ @-launchctl bootout gui/$$(id -u)/com.vetcoders.rmcp-memex 2>/dev/null
@-pkill -f "$(BINARY) serve" 2>/dev/null
@echo "Stopped memex service"
@@ -105,7 +105,7 @@ dashboard: ## Open dashboard in browser
@open http://localhost:$(HTTP_PORT)/
# ============================================================================
-# RAM DISK (Dragon 512GB - full DB in RAM)
+# RAM DISK (512GB workstation - full DB in RAM)
# ============================================================================
ramdisk-create: ## Create 50GB RAM disk (requires sudo for mount)
diff --git a/README.md b/README.md
index 6642465..ad5ce06 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# rmcp-memex
-[](https://crates.io/crates/rmcp-memex) [](LICENSE) [](https://crates.io/crates/rmcp-memex) [](https://github.com/VetCoders/rmcp-memex/actions)
+[](https://crates.io/crates/rmcp-memex) [](LICENSE) [](https://crates.io/crates/rmcp-memex) [](https://github.com/vetcoders/rmcp-memex/actions)
`rmcp-memex` is a custom Rust MCP kernel providing RAG and long-term memory capabilities to AI agents via LanceDB.
@@ -13,8 +13,8 @@ It exposes two explicit transport modes from a single canonical surface:
## Release Surface
-- Quick install: `curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh`
-- Prebuilt binary bundles: [GitHub Releases](https://github.com/VetCoders/rmcp-memex/releases) uploaded from locally built and signed artifacts
+- Quick install: `curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh`
+- Prebuilt binary bundles: [GitHub Releases](https://github.com/vetcoders/rmcp-memex/releases) uploaded from locally built and signed artifacts
- Release runbook: [docs/RELEASE.md](docs/RELEASE.md)
- Configuration guide: [docs/02_configuration.md](docs/02_configuration.md)
- HTTP/SSE reference: [docs/HTTP_API.md](docs/HTTP_API.md)
@@ -24,7 +24,7 @@ It exposes two explicit transport modes from a single canonical surface:
```bash
# Install from the latest GitHub Release
-curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
# Start the MCP server
rmcp-memex serve
@@ -205,7 +205,7 @@ use rmcp_memex::{MemexEngine, SearchMode};
let engine = MemexEngine::for_app("my-app", "documents").await?;
// Hybrid search with BM25 + vector fusion (recommended)
-let results = engine.search_hybrid("dragon mac studio", 10).await?;
+let results = engine.search_hybrid("host-a mac studio", 10).await?;
for r in &results {
println!("{}: {} (combined: {:.2}, vector: {:.2}, bm25: {:.2})",
r.id, r.document, r.combined_score, r.vector_score, r.bm25_score);
@@ -497,7 +497,7 @@ MLX_MAX_BATCH_ITEMS=32
**Quick install (recommended):**
```bash
-curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
```
Prebuilt GitHub Release bundles are the canonical install path and avoid compiling
@@ -597,10 +597,10 @@ Configure in `~/.claude.json`:
```bash
# Open the local dashboard
-rmcp-memex dashboard --db-path ~/.ai-memories/lancedb
+rmcp-memex dashboard --db-path ~/.rmcp-servers/rmcp-memex/lancedb
# Start daemon
-rmcp-memex sse --db-path ~/.ai-memories/lancedb &
+rmcp-memex sse --db-path ~/.rmcp-servers/rmcp-memex/lancedb &
# Health check
curl http://localhost:8997/health
@@ -621,19 +621,19 @@ curl -N "http://localhost:8997/sse/search?query=context&namespace=agent1&limit=5
### Multi-Host Database Paths
-For setups with multiple machines (e.g., dragon, mgbook16), use per-host database paths:
+For setups with multiple machines (e.g., host-a, host-b), use per-host database paths:
```bash
# Per-host paths (each machine gets own database)
-rmcp-memex serve --db-path ~/.ai-memories/lancedb.$(hostname -s)
+rmcp-memex serve --db-path ~/.rmcp-servers/rmcp-memex/lancedb.$(hostname -s)
# Or use the wizard for machine-agnostic configuration
rmcp-memex wizard
```
The TUI wizard auto-detects hostname and offers:
-- **Shared mode**: `~/.ai-memories/lancedb` (same path everywhere)
-- **Per-host mode**: `~/.ai-memories/lancedb.dragon`, `~/.ai-memories/lancedb.mgbook16`, etc.
+- **Shared mode**: `~/.rmcp-servers/rmcp-memex/lancedb` (same path everywhere)
+- **Per-host mode**: `~/.rmcp-servers/rmcp-memex/lancedb.host-a`, `~/.rmcp-servers/rmcp-memex/lancedb.host-b`, etc.
### Configuration (TOML)
@@ -685,7 +685,7 @@ Intelligent query intent detection for automatic search mode selection:
```bash
# Auto-detect query intent and select optimal mode
-rmcp-memex search -n memories -q "when did we buy dragon" --auto-route
+rmcp-memex search -n memories -q "when did we buy host-a" --auto-route
# Output: Query intent: temporal (confidence: 0.70)
# Selects: hybrid mode with date boosting
@@ -695,7 +695,7 @@ rmcp-memex search -n code -q "who imports main.rs" --auto-route
# Consider: loctree query --kind who-imports --target main.rs
# Deep exploration with all onion layers
-rmcp-memex dive -n memories -q "dragon" --verbose
+rmcp-memex dive -n memories -q "host-a" --verbose
```
**Intent Types:**
@@ -817,5 +817,5 @@ Add to `~/.claude.json`:
---
-Vibecrafted with AI Agents by VetCoders (c)2025 The LibraxisAI Team
-Co-Authored-By: [Maciej](void@div0.space) & [Klaudiusz](the1st@whoai.am)
+Vibecrafted with AI Agents by Vetcoders (c)2025
+Co-Authored-By: Vetcoders
diff --git a/SECURITY.md b/SECURITY.md
index e71e32d..01b36ce 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,4 +1,4 @@
-
+
# Security Policy
## Supported Versions
@@ -11,7 +11,7 @@
## Reporting a Vulnerability
Please use GitHub Security Advisories for responsible disclosure:
-https://github.com/VetCoders/rmcp-memex/security/advisories/new
+https://github.com/vetcoders/rmcp-memex/security/advisories/new
If GitHub Advisories are unavailable, email security@vetcoders.io with a
summary, affected version, reproduction steps, and expected impact.
diff --git a/ai-hooks/README.md b/ai-hooks/README.md
index de97d1f..3b1f6c1 100644
--- a/ai-hooks/README.md
+++ b/ai-hooks/README.md
@@ -42,10 +42,10 @@ Add to `~/.claude/settings.json`:
| Variable | Default | Description |
|----------|---------|-------------|
-| `MEMEX_DB_PATH` | `~/.ai-memories/lancedb` | Path to LanceDB |
+| `MEMEX_DB_PATH` | `~/.rmcp-servers/rmcp-memex/lancedb` | Path to LanceDB |
| `MEMEX_NAMESPACE` | `cloud` | Default namespace to search |
| `MEMEX_LIMIT` | `3` | Max results to return |
---
-Vibecrafted with AI Agents by VetCoders (c)2026 The LibraxisAI Team
+Vibecrafted with AI Agents by Vetcoders (c)2026
diff --git a/ai-hooks/memex-context.sh b/ai-hooks/memex-context.sh
index 765d014..f00d5fa 100755
--- a/ai-hooks/memex-context.sh
+++ b/ai-hooks/memex-context.sh
@@ -24,7 +24,7 @@ export PATH="$HOME/.cargo/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PA
#
# CONFIGURATION (via environment):
# MEMEX_AUGMENT=0 - Disable all augmentation
-# MEMEX_DB_PATH - Path to lancedb (default: ~/.ai-memories/lancedb)
+# MEMEX_DB_PATH - Path to lancedb (default: ~/.rmcp-servers/rmcp-memex/lancedb)
# MEMEX_NAMESPACE=cloud - Namespace to search
# MEMEX_LIMIT=3 - Max memories to return
#
@@ -33,7 +33,7 @@ export PATH="$HOME/.cargo/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PA
# - jq for JSON parsing (optional)
#
# ============================================================================
-# Created by M&K (c)2026 The LibraxisAI Team
+# Created by vetcoders (c)2026
# ============================================================================
set -uo pipefail
@@ -42,7 +42,7 @@ set -uo pipefail
# CONFIGURATION
# ============================================================================
MEMEX_AUGMENT="${MEMEX_AUGMENT:-1}"
-MEMEX_DB_PATH="${MEMEX_DB_PATH:-$HOME/.ai-memories/lancedb}"
+MEMEX_DB_PATH="${MEMEX_DB_PATH:-$HOME/.rmcp-servers/rmcp-memex/lancedb}"
MEMEX_NAMESPACE="${MEMEX_NAMESPACE:-cloud}"
MEMEX_LIMIT="${MEMEX_LIMIT:-3}"
diff --git a/ai-hooks/memex-startup.sh b/ai-hooks/memex-startup.sh
index 461effe..19c138e 100755
--- a/ai-hooks/memex-startup.sh
+++ b/ai-hooks/memex-startup.sh
@@ -17,7 +17,7 @@ export PATH="$HOME/.cargo/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:$PA
# - SessionStart hook
#
# ============================================================================
-# Created by M&K (c)2026 The LibraxisAI Team
+# Created by vetcoders (c)2026
# ============================================================================
set -uo pipefail
@@ -25,7 +25,7 @@ set -uo pipefail
# ============================================================================
# CONFIGURATION
# ============================================================================
-MEMEX_DB_PATH="${MEMEX_DB_PATH:-$HOME/.ai-memories/lancedb}"
+MEMEX_DB_PATH="${MEMEX_DB_PATH:-$HOME/.rmcp-servers/rmcp-memex/lancedb}"
MEMEX_NAMESPACE="${MEMEX_NAMESPACE:-cloud}"
MEMEX_LIMIT="${MEMEX_LIMIT:-3}"
CACHE_FILE="/tmp/memex-startup-$(echo "$PWD" | md5 2>/dev/null || echo "$PWD" | md5sum | cut -c1-8).cache"
diff --git a/docs/01_security.md b/docs/01_security.md
index c0a1a24..32531c7 100644
--- a/docs/01_security.md
+++ b/docs/01_security.md
@@ -21,7 +21,7 @@ Zamiast hardcoded ograniczenia do `$HOME` i `cwd`, wprowadzono konfigurowalną l
# ~/.rmcp-servers/rmcp-memex/config.toml
allowed_paths = [
"~", # Home directory
- "/Volumes/LibraxisShare/data", # External volume
+ "/Volumes/SharedDrive/data", # External volume
"/opt/shared/documents" # Shared directory
]
```
@@ -334,5 +334,5 @@ key_derivation = "argon2id"
---
-Vibecrafted with AI Agents by VetCoders (c)2025 The LibraxisAI Team
-Co-Authored-By: [Maciej](void@div0.space) & [Klaudiusz](the1st@whoai.am)
+Vibecrafted with AI Agents by Vetcoders (c)2025
+Co-Authored-By: Vetcoders
diff --git a/docs/02_configuration.md b/docs/02_configuration.md
index acd5f86..39eddf0 100644
--- a/docs/02_configuration.md
+++ b/docs/02_configuration.md
@@ -79,7 +79,7 @@ log_level = "info"
# Jeśli puste, domyślnie $HOME i current working directory
allowed_paths = [
"~",
- "/Volumes/LibraxisShare/Klaudiusz",
+ "/Volumes/SharedDrive/notes",
"/opt/shared/documents"
]
@@ -264,5 +264,5 @@ rmcp-memex serve --log-level trace
---
-Vibecrafted with AI Agents by VetCoders (c)2025 The LibraxisAI Team
-Co-Authored-By: [Maciej](void@div0.space) & [Klaudiusz](the1st@whoai.am)
+Vibecrafted with AI Agents by Vetcoders (c)2025
+Co-Authored-By: Vetcoders
diff --git a/docs/ARCHITECTURE_ACTUAL.md b/docs/ARCHITECTURE_ACTUAL.md
deleted file mode 100644
index c47eb8a..0000000
--- a/docs/ARCHITECTURE_ACTUAL.md
+++ /dev/null
@@ -1,253 +0,0 @@
-# Memex Architecture - ACTUAL (Stan Faktyczny)
-
-```mermaid
-flowchart TB
- subgraph ENTRY["Entry Points"]
- MCP["MCP Tools
(stdio JSON-RPC)"]
- HTTP["HTTP API
(REST + SSE)"]
- CLI["CLI
(commands)"]
- end
-
- subgraph VALIDATION["Security Layer"]
- PATH["Path Validation
• expand ~
• detect ..
• canonicalize
• whitelist check"]
- TOKEN["Namespace Tokens
• create/revoke
• per-namespace auth"]
- end
-
- subgraph EXTRACTION["Content Extraction"]
- TXT["Plain Text (.txt)"]
- PDF["PDF (.pdf)
pdf_extract"]
- JSON_SMART["Smart JSON Detection
• Claude.ai export
• ChatGPT export
• Session essence
• Generic array"]
- MD["Markdown (.md)
section extraction"]
- CODE["Code (.rs/.py/.js)
❌ NO semantic chunking
treated as plain text"]
- end
-
- subgraph DEDUP["Deduplication"]
- HASH["SHA256 Hash
content_hash"]
- CHECK["Storage Check
has_content_hash()"]
- SKIP["Skip if EXISTS"]
- end
-
- subgraph SLICING["Slicing Strategy"]
- FLAT["FLAT MODE
512-char chunks
128-char overlap"]
- ONION["ONION MODE (default)
4 hierarchical layers:
OUTER → MIDDLE → INNER → CORE"]
- FAST["ONION-FAST
2 layers only
OUTER ↔ CORE"]
- end
-
- subgraph EMBEDDING["Embedding Generation"]
- MLX_ACTUAL["MLX Embedder
❌ Port: 12345 (not 8765)
Model: Qwen3-Embedding-8B-4bit-DWQ
Dims: 4096"]
- OLLAMA["Ollama (fallback)
Port: 11434
qwen3-embedding:8b"]
- BATCH["Smart Batching
max 64 items
max 128K chars"]
- NO_VALIDATE["❌ NO Dimension Validation
Silent corruption possible"]
- RETRY["Retry with Backoff
1s → 30s"]
- end
-
- subgraph STORAGE["LanceDB Storage"]
- RAMDISK["RAM Disk
/Volumes/MemexRAM
50GB HFS+"]
- LANCE["LanceDB
~28GB vectors"]
- SCHEMA["Schema v3
• id, namespace
• vector[4096]
• layer, parent_id
• content_hash"]
- NO_ATOMIC["❌ NO Atomic Writes
Partial failures = ghost docs"]
- end
-
- subgraph SEARCH["Search Pipeline"]
- ROUTER["Query Router
auto-detect mode"]
- VECTOR["Vector Search
ANN via IVF-HNSW"]
- BM25["BM25 Full-Text"]
- HYBRID["Hybrid Fusion
RRF scoring"]
- NO_RERANK["❌ Reranker Optional
Falls back to cosine"]
- end
-
- subgraph LAUNCHD["LaunchD Services"]
- LD_RAMDISK["ai.libraxis.memex-ramdisk
Create 50GB RAM disk"]
- LD_MLX_ACTUAL["ai.libraxis.mlx-embedding
❌ Port 12345 (not 8765)
WorkDir: vista-brain/scripts"]
- LD_MEMEX["ai.libraxis.rmcp-memex
Port 8997 server
Uses RAM disk"]
- LD_SNAPSHOT["ai.libraxis.memex-snapshot
Periodic sync"]
- end
-
- subgraph E2E_TESTS["E2E Tests"]
- NO_TEST_INDEX["❌ MISSING
test_index_search"]
- NO_TEST_MCP["❌ MISSING
test_mcp_tools"]
- NO_TEST_HTTP["❌ MISSING
test_http_api"]
- NO_TEST_DEDUP["❌ MISSING
test_deduplication"]
- end
-
- subgraph CONFIG["Configuration"]
- NO_CONFIG["❌ NO config.toml
Uses env vars + hardcoded defaults"]
- NO_MLX_FOLDER["❌ ~/.ai-memories/mlx-embeddings/
Contains unrelated project"]
- end
-
- %% Flow connections
- ENTRY --> VALIDATION
- VALIDATION --> EXTRACTION
- EXTRACTION --> DEDUP
- DEDUP -->|NEW| SLICING
- DEDUP -->|EXISTS| SKIP
- SLICING --> EMBEDDING
- EMBEDDING --> STORAGE
-
- %% Search flow
- ENTRY --> SEARCH
- SEARCH --> STORAGE
-
- %% LaunchD flow
- LD_RAMDISK -->|creates| RAMDISK
- LD_MLX_ACTUAL -->|provides| MLX_ACTUAL
- LD_MEMEX -->|uses| RAMDISK
- LD_MEMEX -.->|should call| MLX_ACTUAL
- LD_SNAPSHOT -->|syncs| RAMDISK
-
- %% Styling - Green = works, Red = broken/missing, Yellow = partial
- classDef works fill:#2d5a2d,stroke:#4a4,color:#fff
- classDef broken fill:#5a2d2d,stroke:#a44,color:#fff
- classDef partial fill:#5a5a2d,stroke:#aa4,color:#fff
- classDef missing fill:#3d3d3d,stroke:#666,color:#888
-
- class PATH,TOKEN,TXT,PDF,JSON_SMART,MD,HASH,CHECK,SKIP,FLAT,ONION,FAST,BATCH,RETRY,RAMDISK,LANCE,SCHEMA,ROUTER,VECTOR,BM25,HYBRID,LD_RAMDISK,LD_MEMEX,LD_SNAPSHOT works
- class NO_VALIDATE,NO_ATOMIC,NO_RERANK,MLX_ACTUAL,LD_MLX_ACTUAL,NO_CONFIG,NO_MLX_FOLDER broken
- class CODE,OLLAMA partial
- class NO_TEST_INDEX,NO_TEST_MCP,NO_TEST_HTTP,NO_TEST_DEDUP missing
-```
-
-## Status: Co działa, co nie
-
-### ✅ DZIAŁA (zielone)
-| Komponent | Status | Uwagi |
-|-----------|--------|-------|
-| Path Validation | ✅ | Pełna walidacja traversal |
-| Namespace Tokens | ✅ | create/revoke/verify |
-| Plain Text extraction | ✅ | UTF-8 read |
-| PDF extraction | ✅ | pdf_extract crate |
-| Smart JSON detection | ✅ | Claude/ChatGPT/Session |
-| Markdown extraction | ✅ | Section-aware |
-| Deduplication | ✅ | SHA256 + storage check |
-| Flat/Onion/Fast slicing | ✅ | Wszystkie 3 tryby |
-| Smart Batching | ✅ | 64 items / 128K chars |
-| Retry with Backoff | ✅ | 1s → 30s |
-| RAM Disk | ✅ | 50GB /Volumes/MemexRAM |
-| LanceDB | ✅ | 28GB, schema v3 |
-| Query Router | ✅ | auto-detect |
-| Vector/BM25/Hybrid search | ✅ | Wszystkie tryby |
-| LaunchD services | ✅ | ramdisk, memex, snapshot |
-
-### ❌ NIE DZIAŁA / NIE SPIĘTE (czerwone)
-| Komponent | Problem | Impact |
-|-----------|---------|--------|
-| **MLX Port w kodzie** | Kod domyślnie 12345, serwer na **8765** | Config mismatch |
-| **Atomic Writes** | BRAK - ghost docs przy crash | **HIGH** |
-| **Reranker** | Optional, fallback to cosine | Słabsze wyniki |
-| **config.toml** | BRAK - hardcoded defaults | Trudne zarządzanie |
-
-### ✅ NAPRAWIONE (w tej sesji)
-| Komponent | Status | Uwagi |
-|-----------|--------|-------|
-| **Dimension Validation** | ✅ DODANE | `test_dimension()` w `EmbeddingClient::new()` |
-| **E2E Tests** | ✅ DODANE | `tests/e2e_pipeline.rs` - 5 testów |
-| **TextIntegrityMetrics** | ✅ DODANE | >90% threshold, audit command |
-| **DimensionAdapter** | ✅ DODANE | Cross-dim search 1024/2048/4096 |
-| **Audit/Purge commands** | ✅ DODANE | `rmcp-memex audit`, `purge-quality` |
-
-### ⚠️ CZĘŚCIOWE (żółte)
-| Komponent | Status | Uwagi |
-|-----------|--------|-------|
-| Code extraction | ⚠️ | Traktowane jako plain text, brak AST |
-| Ollama | ⚠️ | Działa jako fallback, ale to nie docelowy design |
-
-### ❌ CAŁKOWICIE BRAKUJE (szare)
-| Komponent | Status |
-|-----------|--------|
-| E2E test: index → search | ❌ BRAK |
-| E2E test: MCP tools | ❌ BRAK |
-| E2E test: HTTP API | ❌ BRAK |
-| E2E test: deduplication | ❌ BRAK |
-
----
-
-## Szczegóły LaunchD Services
-
-### Aktualny stan usług:
-```
-PID STATUS SERVICE
-10721 -15 ai.libraxis.rmcp-memex ← działa, port 8997
-46656 137 ai.libraxis.mlx-embedding ← działa, port 12345 (!)
-46670 137 ai.libraxis.mlx-reranker ← działa
-46743 1 ai.libraxis.mlx-batch-server
-- 0 ai.libraxis.memex-snapshot
-- 1 ai.libraxis.mlx-batch-runner
-```
-
-### ai.libraxis.mlx-embedding
-```
-Port: 12345 (❌ powinien być 8765)
-WorkDir: vista-brain/scripts/ (❌ powinien być ~/.ai-memories/mlx-embeddings/)
-Script: mlx_embedding_server.py
-Model: Qwen3-Embedding-8B-4bit-DWQ
-Dims: 4096 ✅
-```
-
-### ai.libraxis.rmcp-memex
-```
-Port: 8997 ✅
-DB Path: /Volumes/MemexRAM/lancedb ✅
-Mode: --http-only ✅
-PathState: /Volumes/MemexRAM/lancedb (czeka na RAM disk) ✅
-```
-
-### ai.libraxis.memex-ramdisk
-```
-Size: 50GB (104857600 sectors)
-Mount: /Volumes/MemexRAM ✅
-Source: ~/.ai-memories/lancedb
-Sync: rsync -a ✅
-```
-
----
-
-## Krytyczne luki do naprawy
-
-### 1. CRITICAL: Dimension Validation
-```rust
-// BRAK w embeddings/mod.rs
-// Jeśli embedder zwróci 1024-dim:
-// → Silent write to LanceDB
-// → Cała baza corrupted
-// → Brak recovery
-```
-
-### 2. HIGH: Atomic Batch Writes
-```rust
-// BRAK w storage/mod.rs
-// Jeśli crash w połowie batch:
-// → Ghost documents
-// → Dedup nie złapie (inny hash?)
-// → Brak rollback
-```
-
-### 3. MEDIUM: Port Mismatch
-```
-OBIECANE: MLX embedder na 8765
-FAKTYCZNE: MLX embedder na 12345
-
-rmcp-memex używa provider cascade:
-1. Ollama localhost:11434
-2. Fallback dragon:12345
-
-Więc działa, ale przez Ollama, nie przez dedykowany MLX!
-```
-
-### 4. MEDIUM: Missing Config
-```
-OBIECANE: ~/.ai-memories/config.toml
-FAKTYCZNE: Brak pliku
-
-Wszystko przez env vars lub hardcoded defaults.
-Trudne do zarządzania na wielu maszynach.
-```
-
----
-
-## Propozycja naprawy (kolejność priorytetów)
-
-1. **[CRITICAL]** Dodać dimension validation w `EmbeddingClient::new()`
-2. **[HIGH]** Implementować batch transaction z rollback
-3. **[MEDIUM]** Zmienić port MLX na 8765 lub zaktualizować config memex
-4. **[MEDIUM]** Stworzyć `~/.ai-memories/config.toml` z pełną konfiguracją
-5. **[LOW]** Napisać testy E2E
diff --git a/docs/ARCHITECTURE_COMPARISON.md b/docs/ARCHITECTURE_COMPARISON.md
deleted file mode 100644
index e071b7a..0000000
--- a/docs/ARCHITECTURE_COMPARISON.md
+++ /dev/null
@@ -1,230 +0,0 @@
-# Memex Architecture Comparison: PROMISED vs ACTUAL
-
-## Quick Status
-
-```
-╔═══════════════════════════════════════════════════════════════════════════╗
-║ OVERALL STATUS: ~85% Complete ║
-╠═══════════════════════════════════════════════════════════════════════════╣
-║ ✅ Working: 20 components ║
-║ ✅ Fixed: 5 components (in this session) ║
-║ ❌ Broken: 2 components (1 HIGH) ║
-║ ⚠️ Partial: 2 components ║
-║ ⚠️ Config: Port mismatch (works via Ollama fallback) ║
-╚═══════════════════════════════════════════════════════════════════════════╝
-```
-
----
-
-## Side-by-Side Comparison
-
-| Component | PROMISED | ACTUAL | Status |
-|-----------|----------|--------|--------|
-| **Entry Points** |
-| MCP Tools | JSON-RPC over stdio | JSON-RPC over stdio | ✅ |
-| HTTP API | REST + SSE on 8997 | REST + SSE on 8997 | ✅ |
-| CLI | index/search/optimize | index/search/optimize | ✅ |
-| **Security** |
-| Path Validation | expand ~ / detect .. / canonicalize | expand ~ / detect .. / canonicalize | ✅ |
-| Namespace Tokens | create/revoke/verify | create/revoke/verify | ✅ |
-| **Extraction** |
-| Plain Text | UTF-8 read | UTF-8 read | ✅ |
-| PDF | pdf_extract crate | pdf_extract crate | ✅ |
-| JSON (smart) | Claude/ChatGPT/Session detection | Claude/ChatGPT/Session detection | ✅ |
-| Markdown | Section extraction | Section extraction | ✅ |
-| Code | Semantic chunking (AST) | Plain text only | ⚠️ Partial |
-| **Deduplication** |
-| Hash Algorithm | SHA256 | SHA256 | ✅ |
-| Storage Check | has_content_hash() | has_content_hash() | ✅ |
-| **Slicing** |
-| Flat Mode | 512-char / 128 overlap | 512-char / 128 overlap | ✅ |
-| Onion Mode | 4 layers (outer→core) | 4 layers (outer→core) | ✅ |
-| Onion-Fast | 2 layers | 2 layers | ✅ |
-| **Embedding** |
-| Embedder Port | **8765** | **12345** | ❌ Mismatch |
-| Embedder Location | `~/.ai-memories/mlx-embeddings/` | `vista-brain/scripts/` | ❌ Wrong |
-| Model | Qwen3-Embedding-8B | Qwen3-Embedding-8B-4bit-DWQ | ✅ |
-| Dimensions | 4096 | 4096 | ✅ |
-| **Dimension Validation** | **Fail fast on mismatch** | **✅ test_dimension() in EmbeddingClient::new()** | ✅ FIXED |
-| **DimensionAdapter** | Cross-dim 1024/2048/4096 | **✅ expand/contract adapters** | ✅ FIXED |
-| Batching | 64 items / 128K chars | 64 items / 128K chars | ✅ |
-| Retry | Exponential backoff | Exponential backoff | ✅ |
-| Fallback | Dragon remote | Ollama (unintended) | ⚠️ Partial |
-| **Storage** |
-| RAM Disk | 50GB /Volumes/MemexRAM | 50GB /Volumes/MemexRAM | ✅ |
-| LanceDB Size | ~28GB | ~28GB | ✅ |
-| Schema | v3 with content_hash | v3 with content_hash | ✅ |
-| **Atomic Writes** | **Transaction rollback** | **NONE - ghost docs** | ❌ HIGH |
-| **Search** |
-| Query Router | auto-detect | auto-detect | ✅ |
-| Vector Search | ANN via IVF-HNSW | ANN via IVF-HNSW | ✅ |
-| BM25 | Full-text | Full-text | ✅ |
-| Hybrid | RRF fusion | RRF fusion | ✅ |
-| Reranker | Dedicated on 8766 | Optional (cosine fallback) | ❌ Weak |
-| **LaunchD** |
-| memex-ramdisk | Create 50GB | Create 50GB | ✅ |
-| mlx-embedding | Port 8765 | Port 12345 | ❌ Mismatch |
-| rmcp-memex | Port 8997, uses RAM | Port 8997, uses RAM | ✅ |
-| memex-snapshot | Periodic sync | Periodic sync | ✅ |
-| **Config** |
-| Config File | `~/.ai-memories/config.toml` | **NONE** | ❌ Missing |
-| **Quality Assurance** |
-| TextIntegrityMetrics | >90% threshold | **✅ compute() + recommendation()** | ✅ FIXED |
-| Audit command | Per-namespace check | **✅ rmcp-memex audit** | ✅ FIXED |
-| Purge command | Remove low-quality | **✅ rmcp-memex purge-quality** | ✅ FIXED |
-| **Testing** |
-| E2E: pipeline | Required | **✅ tests/e2e_pipeline.rs (5 tests)** | ✅ FIXED |
-| E2E: MCP tools | Required | **MISSING** | ❌ |
-| E2E: HTTP API | Required | **MISSING** | ❌ |
-| Unit tests | Required | ~20 tests | ✅ |
-
----
-
-## Visual Comparison
-
-### PROMISED Architecture
-```
-┌─────────────────────────────────────────────────────────────────┐
-│ ENTRY POINTS │
-│ MCP (stdio) │ HTTP (8997) │ CLI │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SECURITY + EXTRACTION │
-│ Path Validation │ Token Auth │ PDF/JSON/MD/Code extraction │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ DEDUPLICATION │
-│ SHA256 → check storage → skip if exists │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SLICING (Flat/Onion/Fast) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ MLX EMBEDDER (port 8765) │
-│ ~/.ai-memories/mlx-embeddings/ │ Qwen3-Embedding-8B │ 4096d │
-│ ✓ DIMENSION VALIDATION (fail fast) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ LANCEDB (RAM DISK) │
-│ /Volumes/MemexRAM │ 50GB │ ~28GB vectors │ schema v3 │
-│ ✓ ATOMIC BATCH WRITES (transaction) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SEARCH │
-│ Router → Vector/BM25/Hybrid → Reranker (8766) → Results │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ E2E TESTS │
-│ index→search │ MCP tools │ HTTP API │ deduplication │
-└─────────────────────────────────────────────────────────────────┘
-```
-
-### ACTUAL Architecture (Updated)
-```
-┌─────────────────────────────────────────────────────────────────┐
-│ ENTRY POINTS │
-│ MCP (stdio) │ HTTP (8997) │ CLI (rmcp-memex) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SECURITY + EXTRACTION │
-│ Path Validation │ Token Auth │ PDF/JSON/MD │ ⚠️Code=text │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ DEDUPLICATION │
-│ SHA256 → check storage → skip if exists │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SLICING (Flat/Onion/Fast) │
-│ ✅ TextIntegrityMetrics (>90% threshold) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ ⚠️ MLX EMBEDDER (port 12345, not 8765) │
-│ vista-brain/scripts/ │ Qwen3-Embedding-8B-4bit │ 4096d │
-│ ✅ DIMENSION VALIDATION (test_dimension()) │
-│ ✅ DimensionAdapter (cross-dim 1024/2048/4096) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ LANCEDB (RAM DISK) │
-│ /Volumes/MemexRAM │ 50GB │ ~28GB vectors │ schema v3 │
-│ ❌ NO ATOMIC WRITES (ghost docs on crash) │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ SEARCH │
-│ Router → Vector/BM25/Hybrid → ⚠️ cosine fallback → Results │
-└─────────────────────────────────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────┐
-│ ✅ QUALITY ASSURANCE │
-│ ✅ E2E pipeline │ ✅ audit cmd │ ✅ purge cmd │ ❌ HTTP tests │
-└─────────────────────────────────────────────────────────────────┘
-```
-
----
-
-## Priority Fix List
-
-### ✅ FIXED (This Session)
-1. ~~**Dimension Validation**~~ → ✅ `test_dimension()` in `EmbeddingClient::new()`
-2. ~~**E2E Tests**~~ → ✅ `tests/e2e_pipeline.rs` (5 tests)
-3. ~~**Quality Metrics**~~ → ✅ `TextIntegrityMetrics` with >90% threshold
-4. ~~**Cross-dim Search**~~ → ✅ `DimensionAdapter` (1024/2048/4096)
-5. ~~**Audit/Purge**~~ → ✅ `rmcp-memex audit` + `purge-quality` commands
-
-### 🟠 HIGH (Data Integrity Risk)
-1. **Atomic Batch Writes** - Implement transaction wrapper
- ```rust
- // Wrap batch operations in transaction
- storage.begin_transaction()?;
- for doc in batch {
- storage.add(doc)?;
- }
- storage.commit()?; // or rollback on error
- ```
-
-### 🟡 MEDIUM (Config/Port Mismatch)
-2. **MLX Port** - Change launch agent to port 8765 OR update memex config
-3. **Config File** - Create `~/.ai-memories/config.toml` with all settings
-
-### 🟢 LOW (Nice to Have)
-4. **Code Semantic Chunking** - Add AST-based chunking for .rs/.py/.js
-5. **Reranker Integration** - Make reranker non-optional
-6. **HTTP API Tests** - Add E2E tests for REST endpoints
-
----
-
-## Files Created
-
-1. `docs/ARCHITECTURE_PROMISED.md` - Docelowa architektura (Mermaid)
-2. `docs/ARCHITECTURE_ACTUAL.md` - Stan faktyczny (Mermaid + czerwone krzyże)
-3. `docs/ARCHITECTURE_COMPARISON.md` - Porównanie side-by-side (ten plik)
-
----
-
-*Vibecrafted with AI Agents by VetCoders (c)2026 VetCoders*
diff --git a/docs/ARCHITECTURE_PROMISED.md b/docs/ARCHITECTURE_PROMISED.md
deleted file mode 100644
index 5e4aa23..0000000
--- a/docs/ARCHITECTURE_PROMISED.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# Memex Architecture - PROMISED (Docelowa)
-
-```mermaid
-flowchart TB
- subgraph ENTRY["Entry Points"]
- MCP["MCP Tools
(stdio JSON-RPC)"]
- HTTP["HTTP API
(REST + SSE)"]
- CLI["CLI
(commands)"]
- end
-
- subgraph VALIDATION["Security Layer"]
- PATH["Path Validation
• expand ~
• detect ..
• canonicalize
• whitelist check"]
- TOKEN["Namespace Tokens
• create/revoke
• per-namespace auth"]
- end
-
- subgraph EXTRACTION["Content Extraction"]
- TXT["Plain Text (.txt)"]
- PDF["PDF (.pdf)
pdf_extract"]
- JSON_SMART["Smart JSON Detection
• Claude.ai export
• ChatGPT export
• Session essence
• Generic array"]
- MD["Markdown (.md)
section extraction"]
- CODE["Code (.rs/.py/.js)
semantic chunking"]
- end
-
- subgraph DEDUP["Deduplication"]
- HASH["SHA256 Hash
content_hash"]
- CHECK["Storage Check
has_content_hash()"]
- SKIP["Skip if EXISTS"]
- end
-
- subgraph SLICING["Slicing Strategy"]
- FLAT["FLAT MODE
512-char chunks
128-char overlap"]
- ONION["ONION MODE (default)
4 hierarchical layers:
OUTER → MIDDLE → INNER → CORE"]
- FAST["ONION-FAST
2 layers only
OUTER ↔ CORE"]
- end
-
- subgraph EMBEDDING["Embedding Generation"]
- MLX["MLX Native Embedder
Port: 8765
Model: Qwen3-Embedding-8B
Dims: 4096"]
- BATCH["Smart Batching
max 64 items
max 128K chars"]
- VALIDATE["Dimension Validation
FAIL FAST if mismatch"]
- RETRY["Retry with Backoff
1s → 30s"]
- end
-
- subgraph STORAGE["LanceDB Storage"]
- RAMDISK["RAM Disk
/Volumes/MemexRAM
50GB HFS+"]
- LANCE["LanceDB
~28GB vectors"]
- SCHEMA["Schema v3
• id, namespace
• vector[4096]
• layer, parent_id
• content_hash"]
- ATOMIC["Atomic Batch Writes
Transaction rollback"]
- end
-
- subgraph SEARCH["Search Pipeline"]
- ROUTER["Query Router
auto-detect mode"]
- VECTOR["Vector Search
ANN via IVF-HNSW"]
- BM25["BM25 Full-Text"]
- HYBRID["Hybrid Fusion
RRF scoring"]
- RERANK["Reranker
Port: 8766
cross-encoder"]
- end
-
- subgraph LAUNCHD["LaunchD Services"]
- LD_RAMDISK["ai.libraxis.memex-ramdisk
Create 50GB RAM disk"]
- LD_MLX["ai.libraxis.mlx-embedding
Port 8765 embedder"]
- LD_MEMEX["ai.libraxis.rmcp-memex
Port 8997 server"]
- LD_SNAPSHOT["ai.libraxis.memex-snapshot
Periodic sync to disk"]
- end
-
- subgraph E2E_TESTS["E2E Tests"]
- TEST_INDEX["test_index_search
File → Vector → Search"]
- TEST_MCP["test_mcp_tools
JSON-RPC handlers"]
- TEST_HTTP["test_http_api
REST endpoints"]
- TEST_DEDUP["test_deduplication
Hash collision handling"]
- end
-
- %% Flow connections
- ENTRY --> VALIDATION
- VALIDATION --> EXTRACTION
- EXTRACTION --> DEDUP
- DEDUP -->|NEW| SLICING
- DEDUP -->|EXISTS| SKIP
- SLICING --> EMBEDDING
- EMBEDDING --> STORAGE
-
- %% Search flow
- ENTRY --> SEARCH
- SEARCH --> STORAGE
-
- %% LaunchD flow
- LD_RAMDISK -->|creates| RAMDISK
- LD_MLX -->|provides| MLX
- LD_MEMEX -->|uses| RAMDISK
- LD_MEMEX -->|calls| MLX
- LD_SNAPSHOT -->|syncs| RAMDISK
-
- %% Styling
- classDef promised fill:#2d5a2d,stroke:#4a4,color:#fff
- classDef critical fill:#5a2d2d,stroke:#a44,color:#fff
-
- class MLX,VALIDATE,ATOMIC,TEST_INDEX,TEST_MCP,TEST_HTTP,TEST_DEDUP,LD_MLX promised
- class RAMDISK,LANCE,SCHEMA critical
-```
-
-## Kluczowe założenia docelowej architektury
-
-### 1. Embedding Layer
-- **Dedykowany MLX embedder** na porcie **8765**
-- Folder implementacji: `~/.ai-memories/mlx-embeddings/`
-- Model: `Qwen3-Embedding-8B` (4096 dims)
-- **NIE Ollama** - natywny MLX dla Dragona
-
-### 2. RAM Disk Architecture
-- 50GB RAM disk `/Volumes/MemexRAM`
-- LanceDB (~28GB) całkowicie w RAM
-- Snapshot daemon - periodic sync to `~/.ai-memories/lancedb`
-- PathState dependency - memex startuje dopiero gdy RAM disk gotowy
-
-### 3. Dimension Safety
-- **Validation at startup** - sprawdzenie czy embedder zwraca 4096 dims
-- **Fail fast** - crash jeśli mismatch, nie silent corruption
-
-### 4. Atomic Writes
-- Transaction boundaries na batch writes
-- Rollback przy partial failures
-- No ghost documents
-
-### 5. E2E Test Coverage
-- Full pipeline tests (index → embed → store → search → verify)
-- MCP tool integration tests
-- HTTP API endpoint tests
-- Deduplication regression tests
diff --git a/docs/HTTP_API.md b/docs/HTTP_API.md
index 5bdc37f..6a11f04 100644
--- a/docs/HTTP_API.md
+++ b/docs/HTTP_API.md
@@ -1,6 +1,6 @@
# rmcp-memex HTTP API & Dashboard
-Vibecrafted with AI Agents by VetCoders (c)2026 VetCoders
+Vibecrafted with AI Agents by Vetcoders (c)2026
## Overview
diff --git a/docs/INDEXING_GUIDE.md b/docs/INDEXING_GUIDE.md
index 2a7e387..4a389bc 100644
--- a/docs/INDEXING_GUIDE.md
+++ b/docs/INDEXING_GUIDE.md
@@ -93,4 +93,4 @@ To normalne dla dużych plików. 8MB JSON = ~15-20 minut z Qwen3-Embedding-8B.
---
-Vibecrafted with AI Agents by VetCoders (c)2025 The LibraxisAI Team
+Vibecrafted with AI Agents by Vetcoders (c)2025
diff --git a/docs/RELEASE.md b/docs/RELEASE.md
index 7d9bbc2..35d01f6 100644
--- a/docs/RELEASE.md
+++ b/docs/RELEASE.md
@@ -59,12 +59,12 @@ Verify the public release surface, not just the repo:
```bash
# Installer path
-curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
rmcp-memex --version
# Manual artifact path
-curl -LO https://github.com/VetCoders/rmcp-memex/releases/latest/download/rmcp-memex-x86_64-unknown-linux-gnu.tar.gz
-curl -LO https://github.com/VetCoders/rmcp-memex/releases/latest/download/rmcp-memex-sha256sums.txt
+curl -LO https://github.com/vetcoders/rmcp-memex/releases/latest/download/rmcp-memex-x86_64-unknown-linux-gnu.tar.gz
+curl -LO https://github.com/vetcoders/rmcp-memex/releases/latest/download/rmcp-memex-sha256sums.txt
grep rmcp-memex-x86_64-unknown-linux-gnu.tar.gz rmcp-memex-sha256sums.txt
```
diff --git a/docs/assets/social-card.svg b/docs/assets/social-card.svg
index 4106680..dd064b2 100644
--- a/docs/assets/social-card.svg
+++ b/docs/assets/social-card.svg
@@ -1,6 +1,6 @@
diff --git a/docs/index.html b/docs/index.html
index cbde62e..7ed0ba9 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -36,7 +36,7 @@
Install
Transports
Release
- GitHub
+ GitHub
@@ -51,12 +51,12 @@ One canonical memory surface for local MCP and multi-agent daemon mode.
fighting over LanceDB locks.
Quick install
- curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+ curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
@@ -115,29 +115,29 @@ Release-ready install path
The shortest path from stranger to first query.
-
curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+ curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
rmcp-memex serve
rmcp-memex serve --http-port 6660 --http-only
-
+
Start here
README
Product overview, library usage, and MCP tool surface.
-
+
Configuration
Provider and storage setup
Embedding providers, storage paths, and deployment-friendly defaults.
-
+
HTTP/SSE
Daemon reference
Start with /api/discovery, then drill into browse, search, and write routes.
-
+
Release ops
Runbook
Preflight checks, tagging, artifact verification, and launch follow-through.
@@ -159,11 +159,11 @@ What shipping now means.
diff --git a/install.sh b/install.sh
index 5dae1c7..6b5f758 100755
--- a/install.sh
+++ b/install.sh
@@ -1,14 +1,14 @@
#!/usr/bin/env bash
# rmcp-memex installer for prebuilt GitHub Release bundles
-# curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+# curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
# or with a specific release tag:
-# RMCP_MEMEX_VERSION=v0.5.1 curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh
+# RMCP_MEMEX_VERSION=v0.5.1 curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh
set -euo pipefail
VERSION="${RMCP_MEMEX_VERSION:-latest}"
INSTALL_DIR="${RMCP_MEMEX_INSTALL_DIR:-$HOME/.cargo/bin}"
-GITHUB_REPO="VetCoders/rmcp-memex"
+GITHUB_REPO="vetcoders/rmcp-memex"
BINARY_NAME="rmcp-memex"
CHECKSUM_FILE="rmcp-memex-sha256sums.txt"
COMPAT_ALIASES=("rmcp_memex")
diff --git a/scripts/reindex-memories.sh b/scripts/reindex-memories.sh
index b3c9dc8..e2e35f7 100755
--- a/scripts/reindex-memories.sh
+++ b/scripts/reindex-memories.sh
@@ -2,7 +2,7 @@
# reindex-memories.sh
# Reindex all memories after fixing timestamp preservation (P0)
#
-# Created by M&K (c)2025 The LibraxisAI Team
+# Created by vetcoders (c)2025
# Part of rmcp-memex P4 fix
set -e
@@ -20,9 +20,9 @@ echo -e "${BLUE}========================================${NC}"
echo ""
# Default paths
-MEMEX_DB="${MEMEX_DB:-$HOME/.ai-memories/lancedb}"
-MEMEX_SOURCES="${MEMEX_SOURCES:-$HOME/.ai-memories/sources}"
-BACKUP_DIR="${MEMEX_BACKUP:-$HOME/.ai-memories/backups}"
+MEMEX_DB="${MEMEX_DB:-$HOME/.rmcp-servers/rmcp-memex/lancedb}"
+MEMEX_SOURCES="${MEMEX_SOURCES:-$HOME/.rmcp-servers/rmcp-memex/sources}"
+BACKUP_DIR="${MEMEX_BACKUP:-$HOME/.rmcp-servers/rmcp-memex/backups}"
# Parse arguments
DRY_RUN=false
@@ -58,8 +58,8 @@ while [[ $# -gt 0 ]]; do
echo " --dry-run Show what would be done without doing it"
echo " --force Skip confirmation prompts"
echo " -n, --namespace NS Namespace to reindex (default: conversations)"
- echo " --db PATH LanceDB path (default: ~/.ai-memories/lancedb)"
- echo " --sources PATH Source files path (default: ~/.ai-memories/sources)"
+ echo " --db PATH LanceDB path (default: ~/.rmcp-servers/rmcp-memex/lancedb)"
+ echo " --sources PATH Source files path (default: ~/.rmcp-servers/rmcp-memex/sources)"
echo " -h, --help Show this help message"
echo ""
echo "Environment variables:"
@@ -78,7 +78,7 @@ done
# Check if rmcp-memex is available
if ! command -v rmcp-memex &> /dev/null; then
echo -e "${RED}Error: rmcp-memex not found in PATH${NC}"
- echo "Install the prebuilt release with: curl -LsSf https://raw.githubusercontent.com/VetCoders/rmcp-memex/main/install.sh | sh"
+ echo "Install the prebuilt release with: curl -LsSf https://raw.githubusercontent.com/vetcoders/rmcp-memex/main/install.sh | sh"
echo "For development-only source builds: cargo install --path ."
exit 1
fi
diff --git a/scripts/release-local.sh b/scripts/release-local.sh
index d682347..d18150e 100755
--- a/scripts/release-local.sh
+++ b/scripts/release-local.sh
@@ -4,7 +4,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
BINARY_NAME="rmcp-memex"
-GITHUB_REPO="${RMCP_MEMEX_GITHUB_REPO:-VetCoders/rmcp-memex}"
+GITHUB_REPO="${RMCP_MEMEX_GITHUB_REPO:-vetcoders/rmcp-memex}"
SIGN_IDENTITY="${RMCP_MEMEX_SIGN_IDENTITY:-}"
OUTPUT_DIR=""
NOTES_FILE=""
diff --git a/src/auth/mod.rs b/src/auth/mod.rs
index 6d7e168..701777a 100644
--- a/src/auth/mod.rs
+++ b/src/auth/mod.rs
@@ -4,7 +4,7 @@
//! Each token is hashed with argon2id at rest. Plaintext is shown ONCE
//! on creation and never stored.
//!
-//! Vibecrafted with AI Agents by VetCoders (c)2024-2026 The LibraxisAI Team
+//! Vibecrafted with AI Agents by Vetcoders (c)2024-2026
use std::fmt;
use std::path::Path;
@@ -660,14 +660,14 @@ mod tests {
id: "limited".to_string(),
token_hash: String::new(),
scopes: vec![Scope::Read],
- namespaces: vec!["kb:claude".to_string(), "kb:mikserka".to_string()],
+ namespaces: vec!["kb:claude".to_string(), "kb:notes".to_string()],
expires_at: None,
description: "limited".to_string(),
created_at: Utc::now(),
};
assert!(entry.has_namespace_access("kb:claude"));
- assert!(entry.has_namespace_access("kb:mikserka"));
+ assert!(entry.has_namespace_access("kb:notes"));
assert!(!entry.has_namespace_access("kb:reports"));
}
diff --git a/src/bin/cli/definition.rs b/src/bin/cli/definition.rs
index 6195672..b1fe58d 100644
--- a/src/bin/cli/definition.rs
+++ b/src/bin/cli/definition.rs
@@ -221,8 +221,8 @@ pub enum Commands {
/// full metadata, and related chunks.
///
/// Examples:
- /// rmcp-memex dive -n memories -q "dragon"
- /// rmcp-memex dive -n memories -q "dragon" --verbose
+ /// rmcp-memex dive -n memories -q "host-a"
+ /// rmcp-memex dive -n memories -q "host-a" --verbose
Dive {
/// Namespace to search in
#[arg(long, short = 'n', required = true)]
@@ -335,10 +335,10 @@ pub enum Commands {
/// defaults. Results include relevance scores, timestamps, and metadata.
///
/// Examples:
- /// rmcp-memex search -n memories -q "when did we buy dragon"
- /// rmcp-memex search -n memories -q "dragon" --deep
- /// rmcp-memex search -n memories -q "dragon" -l 20
- /// rmcp-memex search -n memories -q "dragon" --mode hybrid
+ /// rmcp-memex search -n memories -q "when did we buy host-a"
+ /// rmcp-memex search -n memories -q "host-a" --deep
+ /// rmcp-memex search -n memories -q "host-a" -l 20
+ /// rmcp-memex search -n memories -q "host-a" --mode hybrid
Search {
/// Namespace to search in
#[arg(long, short = 'n', required = true)]
@@ -517,7 +517,7 @@ pub enum Commands {
///
/// Examples:
/// rmcp-memex recall "Vista architecture" # Search all namespaces
- /// rmcp-memex recall "dragon setup" -n memories # Specific namespace
+ /// rmcp-memex recall "host-a setup" -n memories # Specific namespace
/// rmcp-memex recall "auth flow" --limit 20 # More sources
Recall {
/// What to recall (search query)
@@ -684,7 +684,7 @@ pub enum Commands {
/// Examples:
/// rmcp-memex merge --source ~/db1 --source ~/db2 --target ~/merged
/// rmcp-memex merge --source ~/db1 --source ~/db2 --target ~/merged --dedup
- /// rmcp-memex merge --source ~/dragon-db --target ~/merged --namespace-prefix "dragon:"
+ /// rmcp-memex merge --source ~/host-a-db --target ~/merged --namespace-prefix "host-a:"
/// rmcp-memex merge --source ~/db1 --target ~/merged --dry-run
Merge {
/// Source database paths (can specify multiple times)
@@ -699,7 +699,7 @@ pub enum Commands {
#[arg(long, short = 'd')]
dedup: bool,
- /// Prefix to add to source namespaces (e.g., "dragon:" -> "dragon:memories")
+ /// Prefix to add to source namespaces (e.g., "host-a:" -> "host-a:memories")
#[arg(long, short = 'p')]
namespace_prefix: Option,
@@ -977,7 +977,7 @@ pub enum Commands {
/// ONCE on creation and can never be retrieved again.
///
/// Examples:
- /// rmcp-memex auth create --description "iPhone" --scopes read,write --namespaces kb:claude,kb:mikserka
+ /// rmcp-memex auth create --description "iPhone" --scopes read,write --namespaces kb:claude,kb:notes
/// rmcp-memex auth list
/// rmcp-memex auth revoke --id monika-iphone
/// rmcp-memex auth rotate --id monika-iphone
diff --git a/src/bin/rmcp_memex.rs b/src/bin/rmcp_memex.rs
index fb34b32..a2fdf12 100644
--- a/src/bin/rmcp_memex.rs
+++ b/src/bin/rmcp_memex.rs
@@ -13,7 +13,7 @@
// Usage:
// rmcp-memex [args]
//
-// Vibecrafted with AI Agents by VetCoders (c)2026 VetCoders
+// Vibecrafted with AI Agents by Vetcoders (c)2026
use anyhow::Result;
use clap::Parser;
diff --git a/src/engine.rs b/src/engine.rs
index 3a59137..be3e46d 100644
--- a/src/engine.rs
+++ b/src/engine.rs
@@ -676,7 +676,7 @@ impl MemexEngine {
/// # Example
///
/// ```rust,ignore
- /// let results = engine.search_hybrid("when did we buy dragon", 10).await?;
+ /// let results = engine.search_hybrid("when did we buy host-a", 10).await?;
/// for r in results {
/// println!("{}: combined={:.3}, vector={:?}, bm25={:?}",
/// r.id, r.combined_score, r.vector_score, r.bm25_score);
@@ -721,7 +721,7 @@ impl MemexEngine {
/// use rmcp_memex::SearchMode;
///
/// // Keyword-only for exact matches
- /// let results = engine.search_with_mode("dragon", 10, SearchMode::Keyword).await?;
+ /// let results = engine.search_with_mode("host-a", 10, SearchMode::Keyword).await?;
/// ```
pub async fn search_with_mode(
&self,
diff --git a/src/http/mod.rs b/src/http/mod.rs
index 54cc691..ff76b93 100644
--- a/src/http/mod.rs
+++ b/src/http/mod.rs
@@ -29,7 +29,7 @@
//! - GET /mcp/ - SSE stream for MCP messages (sends endpoint event)
//! - POST /mcp/messages/ - JSON-RPC POST endpoint with session_id
//!
-//! Vibecrafted with AI Agents by VetCoders (c)2026 VetCoders
+//! Vibecrafted with AI Agents by Vetcoders (c)2026
use std::collections::HashMap;
use std::convert::Infallible;
@@ -435,7 +435,7 @@ const DASHBOARD_HTML: &str = r##"
diff --git a/src/query/mod.rs b/src/query/mod.rs
index 555595d..90d8443 100644
--- a/src/query/mod.rs
+++ b/src/query/mod.rs
@@ -22,7 +22,7 @@
//! use rmcp_memex::query::{detect_intent, QueryIntent, QueryRouter};
//!
//! // Quick intent detection
-//! let intent = detect_intent("when did we buy dragon");
+//! let intent = detect_intent("when did we buy host-a");
//! assert!(matches!(intent, QueryIntent::Temporal));
//!
//! // Full routing with recommendations
diff --git a/src/query/router.rs b/src/query/router.rs
index 7a3002a..634954b 100644
--- a/src/query/router.rs
+++ b/src/query/router.rs
@@ -15,7 +15,7 @@
//! ```rust
//! use rmcp_memex::query::{QueryIntent, detect_intent, QueryRouter, RoutingDecision};
//!
-//! let intent = detect_intent("when did we buy dragon");
+//! let intent = detect_intent("when did we buy host-a");
//! assert!(matches!(intent, QueryIntent::Temporal));
//!
//! let router = QueryRouter::new();
@@ -237,7 +237,7 @@ fn semantic_keywords() -> &'static HashSet<&'static str> {
/// ```rust
/// use rmcp_memex::query::detect_intent;
///
-/// let intent = detect_intent("when did we buy dragon");
+/// let intent = detect_intent("when did we buy host-a");
/// // Returns QueryIntent::Temporal
/// ```
pub fn detect_intent(query: &str) -> QueryIntent {
@@ -519,7 +519,7 @@ mod tests {
#[test]
fn test_temporal_intent_detection() {
assert_eq!(
- detect_intent("when did we buy dragon"),
+ detect_intent("when did we buy host-a"),
QueryIntent::Temporal
);
assert_eq!(
@@ -568,12 +568,12 @@ mod tests {
#[test]
fn test_exact_intent_detection() {
assert_eq!(detect_intent(r#"find "exact phrase""#), QueryIntent::Exact);
- assert_eq!(detect_intent("search 'dragon'"), QueryIntent::Exact);
+ assert_eq!(detect_intent("search 'host-a'"), QueryIntent::Exact);
}
#[test]
fn test_hybrid_default() {
- assert_eq!(detect_intent("dragon mac studio"), QueryIntent::Hybrid);
+ assert_eq!(detect_intent("host-a mac studio"), QueryIntent::Hybrid);
assert_eq!(detect_intent("how to configure memex"), QueryIntent::Hybrid);
}
@@ -581,7 +581,7 @@ mod tests {
fn test_router_confidence() {
let router = QueryRouter::new();
- let decision = router.route("when exactly did we buy dragon in 2024");
+ let decision = router.route("when exactly did we buy host-a in 2024");
assert_eq!(decision.intent, QueryIntent::Temporal);
assert!(decision.confidence > 0.5);
diff --git a/src/rag/mod.rs b/src/rag/mod.rs
index 3c3f21e..f65b3bc 100644
--- a/src/rag/mod.rs
+++ b/src/rag/mod.rs
@@ -3851,12 +3851,12 @@ mod tests {
#[test]
fn keyword_extraction_splits_paths_and_filters_session_tokens() {
let keywords = extract_keywords(
- "/Users/silver/Git/tools/TwinSweep session 2ff4de8b9a4e1234567890abcdef notes",
+ "/Users/tester/projects/toolkit session 2ff4de8b9a4e1234567890abcdef notes",
10,
);
assert!(keywords.contains(&"users".to_string()));
- assert!(keywords.contains(&"twinsweep".to_string()));
+ assert!(keywords.contains(&"toolkit".to_string()));
assert!(!keywords.iter().any(|keyword| keyword.contains("2ff4de8b")));
}
@@ -3874,7 +3874,7 @@ mod tests {
"vista"
));
assert!(metadata_matches_project(
- &json!({"project_id": "VetCoders"}),
+ &json!({"project_id": "Vetcoders"}),
"vetcoders"
));
assert!(!metadata_matches_project(
@@ -3889,18 +3889,18 @@ mod tests {
#[test]
fn markdown_transcript_extraction_builds_role_aware_turn_docs() {
- let raw = r#"[project: VetCoders/vibecrafted | agent: codex | date: 2026-03-30]
+ let raw = r#"[project: vetcoders/vibecrafted | agent: codex | date: 2026-03-30]
[signals]
Results:
-- AICX lookup działa
+- AICX lookup succeeded
[/signals]
-[09:14:00] assistant: Tak, i to właśnie jest sedno: `aicx-dragon` to żywy endpoint MCP.
-[09:15:33] user: ziom ale ty sobie sam skonfigurowałeś ~/.codex/config.toml
-[09:15:47] assistant: Sprawdzam teraz lokalny kontrakt konfiguracji MCP dla Codexa.
+[09:14:00] assistant: Right, that is the core point: the MCP endpoint is live and reachable.
+[09:15:33] user: ok but the local client config was set up automatically
+[09:15:47] assistant: Checking the local MCP configuration contract now.
[09:15:55] reasoning: **Checking config contract**
-[09:16:06] assistant: Składnia configu wygląda już poprawnie według samego Codexa.
+[09:16:06] assistant: The config syntax already looks correct.
"#;
let docs = extract_markdown_transcript_documents(raw, Path::new("sample.md"))
@@ -3912,7 +3912,7 @@ Results:
assert!(docs[1].1.contains("Reasoning focus:"));
assert_eq!(docs[1].2["format"], "markdown_transcript");
assert_eq!(docs[1].2["type"], "transcript_turn");
- assert_eq!(docs[1].2["project"], "VetCoders/vibecrafted");
+ assert_eq!(docs[1].2["project"], "vetcoders/vibecrafted");
}
#[test]
@@ -3942,7 +3942,7 @@ Results:
let metadata = json!({
"type": "transcript_turn",
"format": "markdown_transcript",
- "project": "VetCoders/rmcp-memex",
+ "project": "vetcoders/rmcp-memex",
"agent": "codex"
});
let config = OnionSliceConfig {
@@ -3969,7 +3969,7 @@ Results:
#[test]
fn json_conversation_docs_flow_through_structured_semantic_slices() {
let conversation = json!({
- "project": "VetCoders/rmcp-memex",
+ "project": "vetcoders/rmcp-memex",
"sessions": [
{
"info": {
diff --git a/src/rag/structured.rs b/src/rag/structured.rs
index 88f163b..981613e 100644
--- a/src/rag/structured.rs
+++ b/src/rag/structured.rs
@@ -641,7 +641,7 @@ mod tests {
"format": "claude_web",
"role": "assistant",
"title": "Pipeline progress",
- "project": "VetCoders/rmcp-memex"
+ "project": "vetcoders/rmcp-memex"
});
let content = "Decision: use semantic cards for outer retrieval. Next action: add JSON regression tests and keep plain-text fallback.";
diff --git a/src/search/hybrid.rs b/src/search/hybrid.rs
index 9fd5735..935e1cb 100644
--- a/src/search/hybrid.rs
+++ b/src/search/hybrid.rs
@@ -911,7 +911,7 @@ mod tests {
"vista"
));
assert!(matches_project_filter(
- &json!({"project_id": "VetCoders"}),
+ &json!({"project_id": "Vetcoders"}),
"vetcoders"
));
assert!(!matches_project_filter(
diff --git a/src/tui/app.rs b/src/tui/app.rs
index ec6f423..43d27ad 100644
--- a/src/tui/app.rs
+++ b/src/tui/app.rs
@@ -434,9 +434,9 @@ fn get_hostname() -> String {
/// Database path mode for multi-host setups
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum DbPathMode {
- /// Single shared path (e.g., ~/.ai-memories/lancedb)
+ /// Single shared path (e.g., ~/.rmcp-servers/rmcp-memex/lancedb)
Shared,
- /// Per-host path with hostname suffix (e.g., ~/.ai-memories/lancedb.dragon)
+ /// Per-host path with hostname suffix (e.g., ~/.rmcp-servers/rmcp-memex/lancedb.host-a)
PerHost,
}
@@ -470,7 +470,7 @@ impl Default for MemexCfg {
let hostname = get_hostname();
Self {
// New default path per requirements
- db_path: "~/.ai-memories/lancedb".to_string(),
+ db_path: "~/.rmcp-servers/rmcp-memex/lancedb".to_string(),
cache_mb: 4096,
log_level: "info".to_string(),
max_request_bytes: 10 * 1024 * 1024, // 10MB
diff --git a/src/tui/monitor.rs b/src/tui/monitor.rs
index 29bf9ea..53175c1 100644
--- a/src/tui/monitor.rs
+++ b/src/tui/monitor.rs
@@ -147,6 +147,10 @@ struct GpuMetrics {
memory_total: Option,
}
+// On non-macOS targets the cfg'd early return makes the macOS ioreg body below
+// unreachable by design; allow it so `-D warnings` stays green cross-platform
+// without dead-coding the macOS-only helpers.
+#[cfg_attr(not(target_os = "macos"), allow(unreachable_code))]
fn probe_gpu() -> Result {
#[cfg(not(target_os = "macos"))]
return Err(GpuStatus::Unavailable {
diff --git a/tests/auth_tokens.rs b/tests/auth_tokens.rs
index bfa8206..b98ab78 100644
--- a/tests/auth_tokens.rs
+++ b/tests/auth_tokens.rs
@@ -29,7 +29,7 @@ async fn token_create_hash_roundtrip() {
.create_token(
"roundtrip-test".to_string(),
vec![Scope::Read, Scope::Write],
- vec!["kb:claude".to_string(), "kb:mikserka".to_string()],
+ vec!["kb:claude".to_string(), "kb:notes".to_string()],
None,
"Round-trip test".to_string(),
)
@@ -45,7 +45,7 @@ async fn token_create_hash_roundtrip() {
assert_eq!(entry.scopes, vec![Scope::Read, Scope::Write]);
assert_eq!(
entry.namespaces,
- vec!["kb:claude".to_string(), "kb:mikserka".to_string()]
+ vec!["kb:claude".to_string(), "kb:notes".to_string()]
);
// Hash is an argon2id string (not plaintext)
@@ -243,10 +243,10 @@ async fn v1_migration_preserves_access() {
}),
),
(
- "kb:mikserka".to_string(),
+ "kb:notes".to_string(),
serde_json::json!({
- "namespace": "kb:mikserka",
- "token": "ns_mikserka_token",
+ "namespace": "kb:notes",
+ "token": "ns_notes_token",
"created_at": 1700000001_u64,
"description": null
}),
@@ -277,11 +277,8 @@ async fn v1_migration_preserves_access() {
// Migrated tokens get wildcard scopes
assert!(claude_entry.scopes.contains(&Scope::Admin));
- let mikserka_entry = store
- .lookup_by_plaintext("ns_mikserka_token")
- .await
- .unwrap();
- assert_eq!(mikserka_entry.id, "migrated-kb:mikserka");
+ let notes_entry = store.lookup_by_plaintext("ns_notes_token").await.unwrap();
+ assert_eq!(notes_entry.id, "migrated-kb:notes");
// v1 backup should exist
let backup_path = format!("{}.v1.bak", store_path.to_str().unwrap());
diff --git a/tests/e2e_pipeline.rs b/tests/e2e_pipeline.rs
index e0dc193..c8adee8 100644
--- a/tests/e2e_pipeline.rs
+++ b/tests/e2e_pipeline.rs
@@ -5,7 +5,7 @@
//!
//! Run with: cargo test --test e2e_pipeline -- --ignored
//!
-//! Vibecrafted with AI Agents by VetCoders (c)2026 VetCoders
+//! Vibecrafted with AI Agents by Vetcoders (c)2026
use rmcp_memex::{
ChromaDocument, EmbeddingClient, EmbeddingConfig, ProviderConfig, StorageManager,
diff --git a/tests/transport_parity.rs b/tests/transport_parity.rs
index 0d9cd81..0853630 100644
--- a/tests/transport_parity.rs
+++ b/tests/transport_parity.rs
@@ -8,7 +8,7 @@
//! These tests require a running embedding server (Ollama with qwen3-embedding:8b, 4096 dims).
//! Run with: cargo test --test transport_parity -- --ignored
//!
-//! Vibecrafted with AI Agents (c)2026 VetCoders
+//! Vibecrafted with AI Agents (c)2026 Vetcoders
use rmcp_memex::{
EmbeddingConfig, HybridConfig, McpTransport, NamespaceSecurityConfig, ProviderConfig,