Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -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]: "
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -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]: "
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/loctree-ci.yml
Original file line number Diff line number Diff line change
@@ -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 <void@div0.space> & Klaudiusz <the1st@whoai.am>
# Co-Authored-By: Vetcoders <hello@vetcoders.io>

name: Loctree CI

Expand Down
10 changes: 5 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- Copyright (c) 2025-2026 VetCoders (https://vetcoders.io) -->
<!-- Copyright (c) 2025-2026 Vetcoders (https://vetcoders.io) -->
# Contributing

Thanks for helping improve `rmcp-memex`.
Expand Down
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion LICENSE-APACHE
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
16 changes: 8 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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"

Expand Down Expand Up @@ -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)
Expand Down
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# rmcp-memex
[![Crates.io](https://img.shields.io/crates/v/rmcp-memex)](https://crates.io/crates/rmcp-memex) [![License](https://img.shields.io/crates/l/rmcp-memex)](LICENSE) [![Downloads](https://img.shields.io/crates/d/rmcp-memex)](https://crates.io/crates/rmcp-memex) [![CI](https://github.com/VetCoders/rmcp-memex/actions/workflows/ci.yml/badge.svg)](https://github.com/VetCoders/rmcp-memex/actions)
[![Crates.io](https://img.shields.io/crates/v/rmcp-memex)](https://crates.io/crates/rmcp-memex) [![License](https://img.shields.io/crates/l/rmcp-memex)](LICENSE) [![Downloads](https://img.shields.io/crates/d/rmcp-memex)](https://crates.io/crates/rmcp-memex) [![CI](https://github.com/vetcoders/rmcp-memex/actions/workflows/ci.yml/badge.svg)](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.

Expand All @@ -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)
Expand All @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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)

Expand Down Expand Up @@ -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

Expand All @@ -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:**
Expand Down Expand Up @@ -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 <hello@vetcoders.io>
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- Copyright (c) 2025-2026 VetCoders (https://vetcoders.io) -->
<!-- Copyright (c) 2025-2026 Vetcoders (https://vetcoders.io) -->
# Security Policy

## Supported Versions
Expand All @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions ai-hooks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
6 changes: 3 additions & 3 deletions ai-hooks/memex-context.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
#
Expand All @@ -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
Expand All @@ -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}"

Expand Down
4 changes: 2 additions & 2 deletions ai-hooks/memex-startup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ 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

# ============================================================================
# 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"
Expand Down
6 changes: 3 additions & 3 deletions docs/01_security.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
]
```
Expand Down Expand Up @@ -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 <hello@vetcoders.io>
6 changes: 3 additions & 3 deletions docs/02_configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
]

Expand Down Expand Up @@ -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 <hello@vetcoders.io>
Loading
Loading