diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 0eeae12..1edb684 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -13,11 +13,13 @@ before: - bash -c "cd ui && npm ci --silent && npm run build" - bash -c "rm -rf internal/worker/static && mkdir -p internal/worker/static && cp -r ui/dist/* internal/worker/static/" -# Generate versioned plugin configuration files (GoReleaser Pro feature) +# Generate versioned plugin configuration files (GoReleaser Pro) template_files: - - src: plugin/.claude-plugin/plugin.json.tpl + - id: plugin-json + src: plugin/.claude-plugin/plugin.json.tpl dst: .claude-plugin/plugin.json - - src: plugin/.claude-plugin/marketplace.json.tpl + - id: marketplace-json + src: plugin/.claude-plugin/marketplace.json.tpl dst: .claude-plugin/marketplace.json builds: @@ -212,7 +214,8 @@ builds: archives: - id: default - format: tar.gz + formats: + - tar.gz name_template: >- {{ .ProjectName }}_ {{- .Version }}_ @@ -227,7 +230,8 @@ archives: strip_parent: true format_overrides: - goos: windows - format: zip + formats: + - zip checksum: name_template: 'checksums.txt' diff --git a/README.md b/README.md index e247afb..5cd9af9 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,8 @@ It captures what Claude learns during your coding sessions - bug fixes, architec |------------|----------|---------| | **Claude Code CLI** | Yes | Host application (this is a plugin) | | **jq** | Yes | JSON processing during installation | -| **Python 3.13+** | Optional | ChromaDB semantic search | -| **uvx** | Optional | Python package runner for ChromaDB | -The installer will check for these and provide installation commands if missing. +That's it. No Python. No external services. Everything runs locally. > **No API keys needed!** Claude Mnemonic uses Claude Code CLI, which works with your existing Claude Pro or Max subscription. No separate API costs. @@ -53,30 +51,6 @@ make build && make install Requires: Go 1.24+, Node.js 18+, CGO-compatible compiler -
-Install optional dependencies (for semantic search) - -**macOS:** -```bash -brew install python@3.13 -pip3 install uv -``` - -**Linux (Ubuntu/Debian):** -```bash -sudo apt install python3 python3-pip -pip3 install uv -``` - -**Windows:** -```powershell -winget install Python.Python.3.13 -pip install uv -``` - -Note: Requires Python 3.13+. Most package managers install the latest version. -
- After install, open **http://localhost:37777** to see the dashboard. Start a new Claude Code session - memory is now active. ### Verifying Release Signatures @@ -115,7 +89,7 @@ Mnemonic captures it automatically Next session: Claude remembers ``` -Behind the scenes: hooks capture Claude's observations → SQLite stores with full-text search → ChromaDB enables semantic search → relevant context is injected at session start. +Behind the scenes: hooks capture Claude's observations → SQLite stores with full-text search → sqlite-vec enables semantic search with local embeddings (all-MiniLM-L6-v2) → relevant context is injected at session start. ## Configuration @@ -149,7 +123,7 @@ Example: A bug fix in your auth module stays local. "Always validate JWT server- ## MCP Tools -When ChromaDB is available, these search tools work via MCP: +These search tools are available via MCP: - `search` - semantic search across all memories - `timeline` - browse by time @@ -170,9 +144,6 @@ cat /tmp/claude-mnemonic-worker.log # view logs rm -f ~/.claude-mnemonic/*.db-wal ~/.claude-mnemonic/*.db-shm ``` -**ChromaDB not working?** -Needs Python 3.13+ and `uvx`. On macOS: `brew install python@3.13` - ## Uninstall ```bash @@ -183,6 +154,15 @@ curl -sSL https://raw.githubusercontent.com/lukaszraczylo/claude-mnemonic/main/s curl -sSL https://raw.githubusercontent.com/lukaszraczylo/claude-mnemonic/main/scripts/uninstall.sh | bash -s -- --keep-data ``` +## Architecture + +- **SQLite + FTS5** - Full-text search for exact matches +- **sqlite-vec** - Vector database embedded in SQLite +- **all-MiniLM-L6-v2** - Local embedding model (384 dimensions) via ONNX Runtime +- **Go** - Single binary, no external dependencies + +Everything runs locally. No Python. No external vector database. No API calls for embeddings. + ## Platform support | Platform | Status | @@ -190,8 +170,8 @@ curl -sSL https://raw.githubusercontent.com/lukaszraczylo/claude-mnemonic/main/s | macOS Intel | Supported | | macOS Apple Silicon | Supported | | Linux amd64 | Supported | +| Linux arm64 | Supported | | Windows amd64 | Supported | -| Linux arm64 | Not supported (CGO limitation) | ## Development diff --git a/docs/src/App.vue b/docs/src/App.vue index 96ad4ba..c11bd2f 100644 --- a/docs/src/App.vue +++ b/docs/src/App.vue @@ -202,14 +202,13 @@
- + -
- +
- Required + That's all you need
@@ -220,57 +219,12 @@
-
- - -
-
- - Optional (for semantic search) -
-
-
- -
- {{ req.name }} -

{{ req.description }}

-
-
-

- Without these, core functionality (SQLite storage, full-text search) still works. + No Python. No external services. Semantic search with local embeddings is built-in.

- -
-
- - Install optional dependencies -
-
-
-

macOS

- brew install python3
- pip3 install uv -
-
-

Linux

- apt install python3
- pip3 install uv -
-
-

Windows

- winget install Python.Python.3
- pip install uv -
-
-

- - Requires Python 3.13+. Most package managers install the latest version. -

-
@@ -320,18 +274,22 @@
-
+
Go
-

Worker service and hooks. Fast startup, low memory footprint, zero runtime dependencies.

+

Single binary. Fast startup, low memory. Zero runtime dependencies.

SQLite
-

FTS5 full-text search. Single file database. No server to manage. Survives restarts.

+

FTS5 full-text search. Single file database. Survives restarts.

-
ChromaDB
-

Vector embeddings for semantic search. "Fix auth" finds "JWT validation issue" automatically.

+
sqlite-vec
+

Embedded vector database. No external services required.

+
+
+
MiniLM
+

Local embeddings via ONNX. "Fix auth" finds "JWT issue" automatically.

@@ -466,11 +424,6 @@ const requiredDeps = [ { name: 'jq', description: 'JSON processor used during installation. Usually pre-installed on most systems.', icon: 'fas fa-code' }, ] -const optionalDeps = [ - { name: 'Python 3.13+', description: 'Required for ChromaDB semantic search. Natural language queries like "that auth bug" work.', icon: 'fab fa-python' }, - { name: 'uv', description: 'Python package manager for ChromaDB MCP server. Provides the uvx command.', icon: 'fas fa-box' }, -] - const faqs = [ { question: 'Will it confuse Claude with wrong context?', answer: 'No. Mnemonic uses project isolation and semantic relevance scoring. Only memories from the current project (or global best practices) are injected, and only when they\'re actually relevant to your prompt.' }, { question: 'What exactly gets saved?', answer: 'Bug fixes with context ("Fixed race condition by adding mutex"), architecture decisions ("Using repository pattern for data access"), conventions ("All API routes prefixed with /api/v1"), and learnings you want to preserve.' }, diff --git a/internal/worker/static/placeholder.html b/internal/worker/static/placeholder.html deleted file mode 100644 index e69de29..0000000 diff --git a/ui/package.json b/ui/package.json index 216071c..a9520b8 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,6 +1,6 @@ { "name": "claude-mnemonic-dashboard", - "version": "v0.6.1-11-g7fe679f-dirty", + "version": "{{ .Version }}", "private": true, "type": "module", "scripts": {