Qorven’s memory system is built for conversations that never end. A Qor talking to you for six months shouldn’t perform worse than one talking to you for six days. This page is the practical companion to architecture/memory-system — what operators actually do.

The mental model

Every Qor has three stores that grow together:

Rolling window

The N most-recent turns sent to the LLM on every call. Bounded by the model’s context window. Stays small.

Typed memories

Durable, searchable facts. Every important thing from a conversation gets written here. Bounded by Postgres storage (effectively unlimited).

Knowledge graph

Entities + edges extracted from memories. Answers relational queries like “what do we know about Project Apollo?”

Operator touch points

1

The Memory tab on each Qor

Web UI → Qor → Memory. Browse, search, edit, delete memories.
2

The in-chat 🧠 search

Toolbar above the composer. Semantic search; click a result to drop it into context.
3

qorven memory CLI

Scripted inspection + editing. Good for debugging retrieval.
4

Dreaming schedule

Per-Qor setting (default 6h). Controls when the Qor consolidates its day into durable memories.

Memory types

fact

Durable truth. “Priya’s laptop is a 2024 M3 MacBook Pro.”

preference

How someone likes things. “Priya prefers bullet points.”

decision

What was decided. “2026-04-20: ship v0.4 with Telegram only.”

identity

Who the Qor is. Injected into every system prompt.

event

Something happened. Decays over time.

observation

Weaker than fact, unverified. Low importance by default.

goal

Ongoing objective. Retrieved when planning.

todo

Actionable item. Lives until marked done.
Full type reference →

How retrieval works

Hybrid: pgvector cosine similarity + BM25 full-text, merged via Reciprocal Rank Fusion. In practice beats either alone.
  • Semantic hits catch paraphrases (“budget” matches “spending limit”)
  • Keyword hits catch exact terms (“Apollo” matches “Apollo” but not “launch”)
  • RRF picks the best of both without tuning weights
The top-K (default 5) most-relevant memories get injected into the LLM context for each turn.

Scope rules

Memories have a scope that controls who sees them:
ScopeWho retrieves
agentOnly this Qor (default)
teamQors in the same team
taskScoped to one task run
sessionScoped to one session
primeVisible to the Chief-of-Staff Qor
Scopes are enforced at the query level. A bug in a retrieval handler can’t leak cross-scope. Scopes + privacy →

Where next

Types

Each type, when to use, examples.

Compaction

How long chats stay fresh.

Search

UI + API + CLI.

Knowledge graph

Entities, edges, traversal.

Dreaming

Nightly consolidation.

Privacy

Scopes + PII redaction.