Skip to content

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.

The memory system operates in two directions: writing (extraction) and reading (retrieval).

After every response the primary agent generates, an extraction process runs fire-and-forget in the background:

  1. The completed exchange (user message plus agent response) is sent to the LLM with an extraction prompt
  2. The LLM identifies entities, facts about them, relationships between them, and commitments with due dates
  3. Everything is written into the vault’s knowledge graph
  4. 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.

When you send a message, before generating a response:

  1. Usejarvis extracts search terms from your message
  2. Terms are matched against entity names and against fact predicates and objects in the vault
  3. Matched entities (up to 10 per turn) are expanded with all their facts and relationships and assembled into a knowledge context block
  4. 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 vault is a graph, not a flat notes table:

TableContents
entitiesTyped nodes: person, project, tool, place, concept, event
factsSubject/predicate/object rows about an entity, with confidence
relationshipsTyped edges between entities
commitmentsThings you said you would do, with due dates and priority
observationsAwareness-derived observations
vectorsEmbeddings 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.

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.

The Memory room in the dashboard shows entities and their facts. Directly:

Terminal window
sqlite3 ~/.jarvis/jarvis.db "SELECT * FROM entities LIMIT 20"
sqlite3 ~/.jarvis/jarvis.db "SELECT * FROM facts LIMIT 20"

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.