Four tools. One vision: AI infrastructure that runs entirely on your machine, without cloud, without compromise.
Full-stack AI agent with Parsica-Memory built in, 5-layer security system, and multi-provider routing. Learns behavioral patterns per user, tracks individual people to build personalized context over time, and adapts mood & away responses automatically. Self-repairing runtime with daemon watchdog.
Complete agent infrastructure in one install. Six packages, zero external dependencies, zero cloud accounts, zero API keys for core features.
The only memory system where your data never leaves your machine. File-based, fully offline, zero vector database. Ships with an 12-layer BM25+ scoring engine, LLM enrichment, and natural memory decay. Cross-session shared memory lets multiple agents read and write to one store in real time.
Zero-dependency document search with full provenance. BM25+ semantic search across any corpus: legal cases, congressional bills, scientific papers, transcripts. Every result returns the exact source. No hallucinations.
Every query passes through 12 chained scoring layers: TF-IDF baseline, exact phrase matching, field boosting, rarity & proper noun detection, positional salience, PPMI semantic expansion, intent classification, qualifier & negation handling, cross-memory clustering, optional embedding reranking, pseudo-relevance feedback, and recency with anti-adjacency. Each layer adds signal without adding dependencies.
Memories fade over time using an exponential half-life model, just like human memory. Each memory type has a different decay rate — mistakes decay 10× slower (you never forget failures), while episodic memories fade at the normal rate. Configurable half-life (default 7 days). Memories can be boosted or reinforced to reset decay.
Every memory write goes to a crash-safe write-ahead log before touching permanent storage. If the process crashes mid-save, no data is lost — the WAL replays on next startup. v3.0 hardened the save ordering to guarantee WAL integrity even under concurrent writes.
The entire engine runs on Python stdlib only. No numpy, no torch, no vector database, no API keys, no cloud services. Install with pip install parsica-memory and you're running. Optional extras ([embeddings], [mcp]) add capabilities without bloating the core.
Episodic (general events), semantic (facts that cross sessions), fact (verified knowledge with high recall priority), mistake (10× slower decay — never forget failures), preference (user/agent preferences), and procedure (how-to knowledge). Each type has tuned decay rates, importance weights, and retrieval behavior.
Optionally pass any LLM as an enricher at ingest time. The enricher generates search_queries (3× boost), enriched_summary (2× boost), and search_keywords (2× boost) — dramatically improving recall for complex queries. Fully LLM-agnostic: works with Claude, GPT, Gemini, or any OpenAI-compatible endpoint. Zero vendor lock-in.
Complex memories can be decomposed into atomic facts, each linked to its parent via provenance hash. This powers multi-hop retrieval — when a question requires connecting facts from different memories, decomposed atoms surface individually while maintaining their chain of custody back to the original source.
A three-stage classifier (context hints → regex patterns → heuristics) assigns P0–P3 priority to every incoming message. P0 (critical incidents) always gets stored. P3 (noise like "ok", "thanks") gets dropped before it ever enters the store. Keeps your memory clean without manual curation.
Semantic memories automatically surface across all sessions — an agent in session B can recall facts learned in session A without any configuration. Three modes: "all" (no filtering), "semantic" (only semantic/fact types cross sessions), and "none" (strict isolation). Session provenance is tracked on every memory.
Every memory tracks its source_channel — which Discord server, Slack workspace, or Telegram chat it came from. The recall_recent() API lets agents pick up context from other channels, with exclude_channel to avoid duplicating what's already in the current conversation.
Multiple agents can read and write to a shared memory pool with role-based access control (reader, writer, admin). Namespaces keep different knowledge domains separate. Built on the same file-based engine — no database server needed, just a shared directory.
Solve the cold-spawn problem: when you spin up a sub-agent, give it a context packet — a token-budgeted markdown briefing assembled from the most relevant memories, recent mistakes, and task-specific knowledge. The packet builder respects your model's context window and prioritizes high-signal content.
Hot tier (0–3 days, always loaded), warm tier (3–14 days, loaded on demand), cold tier (14+ days, requires explicit include_cold=True). Weekly JSONL shard files classified by ISO calendar week. Keeps active memory fast while archiving history efficiently.
Automatic routing of memories to date/topic-based shard files on disk. Shard index tracks metadata for fast shard selection during search. Scales to millions of memories without loading everything into RAM. Shard health reporting via compact_shards().
Automatic entity extraction from memory content at ingest time (rule-based, zero API cost). Builds a knowledge graph with relationships inferred from co-occurrence. Query with entity_path() for relationship traversal or graph_search() for triple-pattern queries.
Controlled memory pruning by topic, entity, or date. Consolidation merges related memories, detects contradictions, and removes duplicates. Full audit trail on every forget operation. Forgotten memories are properly removed from WAL, shards, and in-memory state — no resurrection after restart.
WAL ordering fix: save completes before WAL is cleared. If the process crashes mid-flush, pending entries survive for replay on next startup. Obsolete shard cleanup prevents deleted memories from resurrecting. Every mutation path (delete, forget, compact) is now durable.
User IDs are validated against a strict safe character set. Invalid IDs (containing ../, path separators, or special characters) are rejected with ValueError — not silently sanitized. Resolved paths are containment-checked against the store root.
If a store exists on disk but fails to load (corruption, parse error), the system raises instead of silently returning an empty store. This prevents hidden data loss. Only FileNotFoundError is treated as "new user" — everything else is a real error.
Built-in MCP server works with Claude Desktop and any MCP-compatible client. Full CLI for workspace management: init, status, rebuild-graph, serve, export. Config discovery prefers parsica_config.json with legacy fallback.