Ambient Tracking, Learning, and Structured Memory System — local-first, cross-tool project memory for AI-assisted development
Project description
ATLAS
Ambient Tracking, Learning, and Structured Memory System
A local-first, cross-tool, structured project memory system. ATLAS stores decisions, facts, architecture notes, blockers, and more — queryable by any AI tool via MCP, REST API, or CLI.
Why ATLAS?
AI coding assistants forget everything between sessions. ATLAS gives them (and you) a persistent, structured memory that tracks what matters: decisions and their rationale, system architecture, active blockers, team preferences, rejected alternatives, and more.
- Local-first — all data lives in
~/.atlas/(SQLite + optional Qdrant vectors) - Cross-tool — works with Claude Code, Cursor, and any MCP-compatible tool
- Structured — 12 memory types with confidence scores, relationships, and temporal validity
- Searchable — hybrid FTS5 + semantic vector search with Reciprocal Rank Fusion
- Self-maintaining — automatic decay engine archives stale memories, contradiction detection flags conflicts
Quick Start
# Install
pip install -e "."
# Initialize for your project
cd your-project
atlas init
# Store a memory
atlas remember "Chose PostgreSQL for the order service — need ACID for financial data" \
--type decision --confidence 0.95 --tags "database,orders"
# Search memories
atlas recall "database choice"
# See project context
atlas context
Memory Types
| Type | Description |
|---|---|
decision |
A choice made between alternatives |
fact |
Verifiable statement about the project/system |
event |
Something that happened (deployment, incident, meeting) |
observation |
A noticed pattern or metric |
blocker |
Something preventing progress |
architecture |
How the system is built/structured |
preference |
Team/project convention or preference |
rejection |
Alternative explicitly rejected and why |
task_state |
Current progress on an ongoing task |
user |
User role, expertise, and preferences |
feedback |
Guidance on approach — corrections and confirmations |
reference |
Pointers to external resources (dashboards, docs, trackers) |
Architecture
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CLI │ │ MCP Server │ │ REST API │ │ Web Inspector│
│ (Click) │ │ (11 tools) │ │ (FastAPI) │ │ (SPA) │
└──────┬───────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │ │
└─────────────────┴────────────────┴────────────────┘
│
┌─────────┴─────────┐
│ Service Layer │
│ │
│ Hybrid Search │ FTS5 + Qdrant + RRF
│ Extraction │ LLM-powered (Ollama)
│ Contradiction │ Conflict detection
│ Decay Engine │ Strategic forgetting
│ Claude Sync │ Memory/transcript import
│ File/Git Watch │ Automatic capture
│ Team Sync │ .atlas/ export/import
└─────────┬─────────┘
│
┌──────────────┴──────────────┐
│ │
┌──────┴──────┐ ┌───────┴──────┐
│ SQLite │ │ Qdrant │
│ + FTS5 │ │ (vectors) │
└─────────────┘ └──────────────┘
Interfaces
CLI
The primary user interface. Full command list:
atlas init # Initialize project
atlas remember CONTENT # Store a memory
atlas recall QUERY # Hybrid search (FTS5 + vectors)
atlas list # List active memories
atlas show ID # Full memory details
atlas supersede ID CONTENT # Replace a memory, keep history
atlas forget ID # Archive a memory
atlas context # Project context summary
atlas decisions # Active decisions and rationale
atlas timeline # Chronological event history
atlas contradictions # Unresolved conflicts
atlas status # Memory statistics
# Ingestion
atlas scan # Extract memories from git history
atlas import FILE # Import from markdown/JSON/text
atlas extract TEXT --store # LLM extraction from text
# Claude Code Integration
atlas sync-claude # Import Claude Code memory files
atlas watch-claude # Watch Claude memory dirs for changes
atlas ingest-transcripts # Extract memories from Claude Code transcripts
# Maintenance
atlas gc # Archive decayed memories
atlas analyze # Show decay scores
atlas reindex # Rebuild vector index
# Team
atlas sync-export # Export .atlas/ for team sharing
atlas sync-import # Import .atlas/ from team
# Servers
atlas serve # REST API + web inspector (port 5700)
atlas mcp # MCP server (stdio transport)
MCP Server
11 tools for Claude Code, Cursor, and other MCP-compatible AI tools:
atlas_recall— Search memories (hybrid)atlas_remember— Store a memoryatlas_update— Modify existing memoryatlas_supersede— Replace with historyatlas_context— Load project contextatlas_decisions— Active decisionsatlas_blockers— Active blockersatlas_timeline— Event historyatlas_entities— Named entities and relationshipsatlas_contradictions— Unresolved conflictsatlas_decay_analysis— Memories at risk of archival
REST API
FastAPI server with OpenAPI docs at /docs:
GET /api/v1/projects/{project}/recall?q=QUERY
POST /api/v1/projects/{project}/remember
GET /api/v1/projects/{project}/memories
GET /api/v1/projects/{project}/context
GET /api/v1/projects/{project}/decisions
GET /api/v1/projects/{project}/contradictions
Web Inspector
Single-page dark-themed UI at http://localhost:5700 — search, filter, browse, and inspect memories with no build step required.
Search
ATLAS uses hybrid search combining two strategies with Reciprocal Rank Fusion:
- FTS5 (always available) — full-text keyword search on content, summary, and tags
- Qdrant vectors (optional) — semantic similarity via
nomic-embed-textembeddings
RRF merging applies recency boost (newer memories rank higher) and confidence weighting to produce the final ranking.
Claude Code Integration
ATLAS can sync bidirectionally with Claude Code's built-in memory system:
# One-shot import of all Claude Code memory files
atlas sync-claude
# Watch for new/changed memory files in real-time
atlas watch-claude
# Extract memories from conversation transcripts
atlas ingest-transcripts
Memory files at ~/.claude/projects/*/memory/*.md are parsed (YAML frontmatter + markdown body), mapped to ATLAS types, and deduplicated on re-import.
Transcript ingestion reads JSONL files from ~/.claude/projects/, extracts user/assistant exchanges, and runs them through the LLM extraction pipeline with incremental cursor tracking.
Stack
| Component | Technology |
|---|---|
| Database | SQLite + FTS5 |
| Vectors | Qdrant (cosine similarity) |
| Embeddings | Ollama (nomic-embed-text) |
| LLM Extraction | Ollama (qwen2.5:7b) |
| CLI | Click + Rich |
| API | FastAPI + Uvicorn |
| MCP | MCP SDK (stdio) |
| Web | Vanilla JS + HTML/CSS |
| File Watching | Watchdog |
| Git Analysis | GitPython |
Development
# Setup
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check src/ tests/
Optional services
Vector search and LLM extraction require local services:
# Qdrant (vector database)
docker run -p 6333:6333 qdrant/qdrant
# Ollama (embeddings + extraction)
ollama pull nomic-embed-text
ollama pull qwen2.5:7b
ATLAS degrades gracefully — it works with just SQLite/FTS5 if Qdrant or Ollama aren't available.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atlas_ai_memory-0.1.0.tar.gz.
File metadata
- Download URL: atlas_ai_memory-0.1.0.tar.gz
- Upload date:
- Size: 109.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c98f4a5251936d141f5aee0dc786920c85ced652375a44eb548c9a3f9330846d
|
|
| MD5 |
9ba398d99be7a0afae8c1a5b78fdfb2a
|
|
| BLAKE2b-256 |
cdcf62a8c9af529688dadcf2a9973846c51081a112ecfd6d03d4a3e946cb3829
|
File details
Details for the file atlas_ai_memory-0.1.0-py3-none-any.whl.
File metadata
- Download URL: atlas_ai_memory-0.1.0-py3-none-any.whl
- Upload date:
- Size: 93.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d994bc74fd724fa1643ed6a52e122ad10ddb6db699c159e54e672accd1a727b1
|
|
| MD5 |
c5cc5dbac2faeff9e0f1f75a1046786a
|
|
| BLAKE2b-256 |
dfe4345a060fd079ffc6b33f29b4008543b2354b1c11ac3e4b37ab4422f8abbc
|