2.5 KiB
2.5 KiB
JarvisChat v1.4.0
Lightweight Ollama coding companion with FTS5 memory system.
New in v1.4.0
- FTS5 Memory System: Say "remember that..." to store facts, they're automatically retrieved by relevance
- Forget command: Say "forget about..." to remove memories
- Memory toggle: Enable/disable memory injection from topbar
- Refactored structure: Separated frontend from backend for maintainability
File Structure
/opt/jarvischat/
├── app.py # FastAPI backend (~600 lines)
├── jarvischat.db # SQLite database (auto-created)
├── static/
│ └── logo.jpg # Your logo (optional)
└── templates/
└── index.html # Frontend
Installation
# Backup existing
cd /opt/jarvischat
cp app.py app.py.bak
# Create directories
mkdir -p templates static
# Copy new files (from wherever you downloaded them)
cp /path/to/new/app.py .
cp /path/to/new/templates/index.html templates/
# Extract logo from old app.py if you want (or just let it fail gracefully)
# The frontend handles missing logo with onerror="this.style.display='none'"
# Restart service
sudo systemctl restart jarvischat
Memory Commands
In chat, you can say:
- "remember that I prefer Rust over Go" → stores as preference
- "remember that JarvisChat runs on port 8080" → stores as infrastructure
- "note that the deadline is Friday" → stores as general
- "forget about the deadline" → removes matching memories
Memories are automatically searched and injected based on your message content.
API Endpoints
Memory
GET /api/memories- List all memoriesPOST /api/memories- Add memory{"fact": "...", "topic": "general"}DELETE /api/memories/{rowid}- Delete memoryGET /api/memories/search?q=rust- Search memoriesGET /api/memories/stats- Get counts by topic
Existing
GET /api/models- List Ollama modelsPOST /api/chat- Send message (streaming)GET /api/profile- Get profilePUT /api/settings- Update settings
Dependencies
pip install fastapi uvicorn httpx psutil jinja2 python-multipart --break-system-packages
Testing Memory
# Add a memory via API
curl -X POST http://jarvis:8080/api/memories \
-H "Content-Type: application/json" \
-d '{"fact": "User prefers native installs over Docker", "topic": "preference"}'
# Search memories
curl "http://jarvis:8080/api/memories/search?q=docker"
# Or in chat, just say:
# "remember that I hate yaml"
# Then ask: "what markup languages should I avoid?"