mirror of
https://github.com/lukaszraczylo/claude-mnemonic.git
synced 2026-06-05 23:03:55 +00:00
Release local embeddings and local sqlite-vec without need for chroma.
This commit is contained in:
+9
-5
@@ -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'
|
||||
|
||||
@@ -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
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Install optional dependencies (for semantic search)</summary>
|
||||
|
||||
**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.
|
||||
</details>
|
||||
|
||||
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
|
||||
|
||||
|
||||
+13
-60
@@ -202,14 +202,13 @@
|
||||
<!-- Requirements Section -->
|
||||
<section id="requirements" class="py-20 lg:py-28 px-4 sm:px-6 bg-slate-900/30">
|
||||
<div class="max-w-6xl mx-auto">
|
||||
<SectionHeader title="Requirements" subtitle="Minimal dependencies. Maximum functionality." />
|
||||
<SectionHeader title="Requirements" subtitle="Minimal dependencies. Everything else is built-in." />
|
||||
|
||||
<div class="grid md:grid-cols-2 gap-6 sm:gap-8">
|
||||
<!-- Required -->
|
||||
<div class="max-w-xl mx-auto">
|
||||
<div class="glass rounded-2xl p-5 sm:p-6">
|
||||
<div class="flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-check-circle text-green-500"></i>
|
||||
<span class="text-white font-semibold text-sm sm:text-base">Required</span>
|
||||
<span class="text-white font-semibold text-sm sm:text-base">That's all you need</span>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<div v-for="req in requiredDeps" :key="req.name" class="flex items-start gap-3 p-3 bg-slate-800/50 rounded-lg">
|
||||
@@ -220,57 +219,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optional -->
|
||||
<div class="glass rounded-2xl p-5 sm:p-6">
|
||||
<div class="flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-plus-circle text-amber-500"></i>
|
||||
<span class="text-white font-semibold text-sm sm:text-base">Optional (for semantic search)</span>
|
||||
</div>
|
||||
<div class="space-y-3">
|
||||
<div v-for="req in optionalDeps" :key="req.name" class="flex items-start gap-3 p-3 bg-slate-800/50 rounded-lg">
|
||||
<i :class="[req.icon, 'text-slate-500 mt-0.5']"></i>
|
||||
<div>
|
||||
<code class="text-white text-xs sm:text-sm font-semibold">{{ req.name }}</code>
|
||||
<p class="text-slate-400 text-xs mt-1">{{ req.description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-slate-500 text-xs mt-4">
|
||||
<i class="fas fa-info-circle mr-1"></i>
|
||||
Without these, core functionality (SQLite storage, full-text search) still works.
|
||||
No Python. No external services. Semantic search with local embeddings is built-in.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 sm:mt-8 glass rounded-xl p-4 sm:p-5">
|
||||
<div class="flex items-center gap-2 mb-3">
|
||||
<i class="fas fa-terminal text-amber-500"></i>
|
||||
<span class="text-white font-semibold text-sm">Install optional dependencies</span>
|
||||
</div>
|
||||
<div class="grid sm:grid-cols-3 gap-3 text-xs">
|
||||
<div class="bg-slate-800/50 rounded-lg p-3">
|
||||
<p class="text-slate-400 mb-2">macOS</p>
|
||||
<code class="text-amber-400">brew install python3</code><br>
|
||||
<code class="text-amber-400">pip3 install uv</code>
|
||||
</div>
|
||||
<div class="bg-slate-800/50 rounded-lg p-3">
|
||||
<p class="text-slate-400 mb-2">Linux</p>
|
||||
<code class="text-amber-400">apt install python3</code><br>
|
||||
<code class="text-amber-400">pip3 install uv</code>
|
||||
</div>
|
||||
<div class="bg-slate-800/50 rounded-lg p-3">
|
||||
<p class="text-slate-400 mb-2">Windows</p>
|
||||
<code class="text-amber-400">winget install Python.Python.3</code><br>
|
||||
<code class="text-amber-400">pip install uv</code>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-slate-500 text-xs mt-3">
|
||||
<i class="fas fa-info-circle mr-1"></i>
|
||||
Requires Python 3.13+. Most package managers install the latest version.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -320,18 +274,22 @@
|
||||
<section class="py-20 lg:py-28 px-4 sm:px-6">
|
||||
<div class="max-w-6xl mx-auto">
|
||||
<SectionHeader title="Under the hood" subtitle="Built with simplicity and performance in mind" />
|
||||
<div class="grid sm:grid-cols-3 gap-4 sm:gap-8 text-center">
|
||||
<div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-4 sm:gap-6 text-center">
|
||||
<div class="glass rounded-2xl p-6 sm:p-8 hover:border-amber-500/30 transition-colors">
|
||||
<div class="text-3xl sm:text-4xl font-bold text-amber-500 mb-2">Go</div>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">Worker service and hooks. Fast startup, low memory footprint, zero runtime dependencies.</p>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">Single binary. Fast startup, low memory. Zero runtime dependencies.</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl p-6 sm:p-8 hover:border-amber-500/30 transition-colors">
|
||||
<div class="text-3xl sm:text-4xl font-bold text-amber-500 mb-2">SQLite</div>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">FTS5 full-text search. Single file database. No server to manage. Survives restarts.</p>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">FTS5 full-text search. Single file database. Survives restarts.</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl p-6 sm:p-8 hover:border-amber-500/30 transition-colors">
|
||||
<div class="text-3xl sm:text-4xl font-bold text-amber-500 mb-2">ChromaDB</div>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">Vector embeddings for semantic search. "Fix auth" finds "JWT validation issue" automatically.</p>
|
||||
<div class="text-3xl sm:text-4xl font-bold text-amber-500 mb-2">sqlite-vec</div>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">Embedded vector database. No external services required.</p>
|
||||
</div>
|
||||
<div class="glass rounded-2xl p-6 sm:p-8 hover:border-amber-500/30 transition-colors">
|
||||
<div class="text-3xl sm:text-4xl font-bold text-amber-500 mb-2">MiniLM</div>
|
||||
<p class="text-slate-400 text-xs sm:text-sm">Local embeddings via ONNX. "Fix auth" finds "JWT issue" automatically.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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.' },
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "claude-mnemonic-dashboard",
|
||||
"version": "v0.6.1-11-g7fe679f-dirty",
|
||||
"version": "{{ .Version }}",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user