Memory & Knowledge
Usejarvis maintains a persistent knowledge vault stored in SQLite. After every response, it automatically extracts entities, facts, relationships, and commitments from the conversation and stores them. Relevant knowledge is injected into the system prompt of future conversations so Usejarvis always has context about you, your projects, and your preferences, without you repeating yourself.
How Memory Works
Section titled “How Memory Works”The memory system operates in two directions: writing (extraction) and reading (retrieval).
Writing: Automatic Extraction
Section titled “Writing: Automatic Extraction”After every response the primary agent generates, an extraction process runs fire-and-forget in the background:
- The completed exchange (user message plus agent response) is sent to the LLM with an extraction prompt
- The LLM identifies entities, facts about them, relationships between them, and commitments with due dates
- Everything is written into the vault’s knowledge graph
- The extraction does not delay or block your next message
Usejarvis learns from every conversation automatically. Goal completions are also extracted into the vault. Extraction is the write path; there are no agent-facing “store memory” tools.
Reading: Retrieval and Injection
Section titled “Reading: Retrieval and Injection”When you send a message, before generating a response:
- Usejarvis extracts search terms from your message
- Terms are matched against entity names and against fact predicates and objects in the vault
- Matched entities (up to 10 per turn) are expanded with all their facts and relationships and assembled into a knowledge context block
- This block is injected into the system prompt for the current turn
Messages that refer to yourself (“I”, “my”, “me”) additionally pull in your stored user profile entity, so personal context is always available.
The Knowledge Graph
Section titled “The Knowledge Graph”The vault is a graph, not a flat notes table:
| Table | Contents |
|---|---|
entities | Typed nodes: person, project, tool, place, concept, event |
facts | Subject/predicate/object rows about an entity, with confidence |
relationships | Typed edges between entities |
commitments | Things you said you would do, with due dates and priority |
observations | Awareness-derived observations |
vectors | Embeddings for semantic similarity (being wired into retrieval) |
So “Vieri works at usejarvis and prefers concise answers” is stored as a person entity with facts attached, not as a free-text note.
Explicit Memory
Section titled “Explicit Memory”You can always tell Usejarvis to remember something. The extraction pass treats direct statements (“remember that…”, “my API key rotation day is Monday”) as high-priority material for the vault.
Inspecting the Vault
Section titled “Inspecting the Vault”The Memory room in the dashboard shows entities and their facts. Directly:
sqlite3 ~/.jarvis/jarvis.db "SELECT * FROM entities LIMIT 20"sqlite3 ~/.jarvis/jarvis.db "SELECT * FROM facts LIMIT 20"Privacy
Section titled “Privacy”The vault is a local SQLite file (~/.jarvis/jarvis.db). Nothing is synced anywhere. Extraction and retrieval use your configured LLM provider, so exchanges pass through that provider like any other message.