---
title: "What is bitemporal memory for AI agents?"
description: "Bitemporal memory tracks two timelines: when a fact was true and when the system learned it. Definition, why agents need both, and how to query each timeline."
canonical: https://past.dev/glossary/bitemporal-memory
last-updated: 2026-08-31
---
# Bitemporal memory

Source: https://past.dev/glossary/bitemporal-memory

Bitemporal memory records valid time, when a fact was true, and knowledge time, when the system learned it. A query about the price in March uses valid time. A query about what the agent knew in March uses knowledge time. Both timelines are required to distinguish a backdated correction from a later change.

## The two timelines, defined

- **Valid time.** The period a fact was true in the world. A budget that changed in July was valid from its announcement until July.
- **Knowledge time.** When the system ingested the fact. A July change ingested in August has one month of difference between the timelines.

Backfilled records often have an event date earlier than their ingestion date. A system that records only ingestion time assigns the wrong valid date to those facts and produces incorrect historical answers.

## Questions only bitemporal memory can answer

- What was true on a given date, regardless of when we learned it. Valid-time query.
- What did the agent know when it made a decision. Knowledge-time query, the question regulators and post-incident reviews ask.
- Which answers changed because of a late correction, without rewriting history.

Financial supervision, litigation and incident review can require both the state at a past date and the information available to a decision-maker at that date.

## How past.dev implements the two timelines

`POST /api/v1/ingest` accepts an explicit timestamp with every record. A backfilled record retains its original valid time while the system records ingestion time separately. Derived facts carry validity windows on the [temporal knowledge graph](/glossary/temporal-knowledge-graph), and [supersession](/glossary/fact-supersession) closes previous windows.

Recall reads the current state by default and supports [point-in-time queries](/glossary/point-in-time-recall) for historical state. The [quickstart](/docs/memory-api/quickstart) shows backdated ingestion in the first four calls; the [benchmarks page](/benchmarks) covers how temporal handling is tested.

## Bitemporal memory vs recency ranking

Recency ranking changes the order of retrieved text. It does not record validity periods or support point-in-time queries. It can also treat a late-arriving backfill as current because it arrived recently. Bitemporal memory stores both event and ingestion time explicitly.

## Frequently asked questions

### Is bitemporal memory only for compliance workloads?

No. Any system that backfills history needs it, because backfilled records arrive long after their valid time. Without two timelines a backfill corrupts every date-sensitive answer. Compliance workloads add the knowledge-time questions on top.

### Where does the term come from?

Bitemporal modeling is an established database technique, standardized in SQL:2011 as system-versioned and application-time tables. Agent memory applies the same model to facts extracted from unstructured text.

## Related

- [Temporal knowledge graph](https://past.dev/glossary/temporal-knowledge-graph)
- [Point-in-time recall](https://past.dev/glossary/point-in-time-recall)
- [Validity window](https://past.dev/glossary/validity-window)
- [What is agent memory?](https://past.dev/what-is-agent-memory)
- [Quickstart](https://past.dev/docs/memory-api/quickstart)