What the agent “remembers” falls into four categories. Only session memory is configurable; the rest are fixed by design.
| Scope | Storage | Survives restart? | Edited by |
|---|---|---|---|
| Request | None (ephemeral) | No | — |
| Session | memory or postgres |
memory: no, postgres: yes |
Agent (during conversation) |
| Knowledge | Files (semantic_models.yaml, RULES.md, knowledge/*.md) |
Yes | Humans (version-controlled) |
| Feedback | Logfire (optional) | Yes | Agent (traces) + humans (scores) |
Conversation history and runtime state (last query, pending files) live in the session store.
| Option | Use case |
|---|---|
memory (default) |
Local dev, single process. Works out of the box. |
postgres |
Production, multi-worker. Requires POSTGRES_URL in .env. |
Configure in falk_project.yaml:
session:
store: memory # or postgres
postgres_url: ${POSTGRES_URL}
schema: falk_session
ttl: 3600 # seconds before session expires
maxsize: 500 # max sessions (memory store only)
See Project Config for full options.
Loaded at startup from version-controlled files. The agent does not learn from conversations; it reads from:
semantic_models.yaml — metrics, dimensions, synonyms, gotchasRULES.md — behavior, tone, formattingknowledge/business.md, knowledge/gotchas.md — when agent.knowledge.enabled: trueSee Context for what goes where.
👍/👎 reactions and traces go to Logfire (if configured). Used for offline improvement — data stewards review low scores and update config files. The agent does not auto-update from feedback.
See Learning & Feedback for the improvement cycle.