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 to help reuse context about you, your projects and your preferences. Extraction and retrieval are selective and can miss or misinterpret information.

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 attempts to extract useful knowledge from completed conversations. 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, to improve retrieval of personal context when that profile exists.

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 lives on the machine running the brain, commonly in ~/.jarvis/jarvis.db. For self-hosting, that is your chosen machine or server. On a hosted plan, the brain and its stored knowledge run on the hosting servers.

Extraction uses the configured model provider; retrieved facts can become part of the context sent with a model request. Self-hosting alone does not make external model or speech providers local. See privacy and data flows.

Persistent means knowledge can survive a conversation or restart. It does not mean every fact is extracted, every source is current or every relevant fact is retrieved on each turn. Corrections in a new conversation may need to be checked in the Memory room. For a critical task, supply the source explicitly and inspect the output.

Start in the dashboard Memory room to inspect the entities and facts available to the brain. Check names, values and source context before relying on a remembered claim. Use the controls supported by your installed version to manage entries; deleting a memory entry does not retract content already sent to a model provider or remove copies in conversation history.

For a hosted data correction, export or deletion request, use the process in your rights and controls. Self-hosters manage their brain’s database and backups. Deleting the entire database also removes other runtime state; it is not a targeted memory correction.