--- title: "Memory infrastructure for AI agents" description: "Ingest timestamped text and query its current state, with source evidence." canonical: https://past.dev last-updated: 2026-09-30 --- # Frontier memory for AI agents. #1 on BEAM, the hardest memory benchmark > past.dev remembers everything your agents see: what's true now, what changed and when, who can see it, and where it came from. Go beyond markdown files and RAG and give your agents a real past. Highest published scores at every scale on [BEAM](https://past.dev/benchmarks). **92.08% at 100K tokens · 90.65% at 1M · 85.03% at 10M** Managed or self-hosted. SOC 2 Type II, ISO 27001, ISO 27701: https://past.dev/security. ## Benchmark results - 92.08%: BEAM accuracy at 100K tokens, ranked #1 - 90.65%: BEAM accuracy at 1M tokens, ranked #1 - 85.03%: BEAM accuracy at 10M tokens, ranked #1 ### What this means - **Higher accuracy than every published memory system.** [BEAM](https://arxiv.org/abs/2510.27246) is the benchmark for long-term memory in AI agents. On it, past.dev answers more questions correctly than every memory system that has published a result, at every history size from 100K to 10M tokens. [The comparison](https://past.dev/benchmarks) - **Fewer tokens on every call.** Your agent answers from memory, and sends far fewer tokens than re-reading its whole history on every call. ### Published BEAM results | System | 100K | 500K | 1M | 10M | Source | | --- | --- | --- | --- | --- | --- | | past.dev | 92.08% | 89.63% | 90.65% | 85.03% | [past.dev](/benchmarks) | | Exabase M-1 | 76.9% | not published | 75.0% | 68.0% | [exabase.io](https://exabase.io/blog/exabase-m1-achieves-state-of-the-art-on-beam-benchmark) | | Hindsight | 75.0% | 71.1% | 73.9% | 64.1% | [benchmarks.hindsight.vectorize.io](https://benchmarks.hindsight.vectorize.io/) | | Honcho | 63.0% | 64.9% | 63.1% | 40.6% | [plasticlabs.ai](https://plasticlabs.ai/blog/research/Benchmarking-Honcho) | | mem0 | not published | not published | 64.1% | 48.6% | [mem0.ai](https://mem0.ai/blog/ai-memory-benchmarks-in-2026) | Each competitor figure is that vendor's own published number, linked above. These are separately published runs rather than one harness. [How to reproduce this](https://past.dev/benchmarks/methodology) Source: https://past.dev/ ## The API - `POST /api/v1/ingest`: raw text plus its original timestamp - `GET /api/v1/ingest/{ingestionId}`: poll until `status` is `completed` - `DELETE /api/v1/ingest/{ingestionId}`: remove the ingestion's data points and every memory that rests only on them - `POST /api/v1/recall`: return ranked evidence for your application or model ```bash curl -X POST https://api.past.dev/api/v1/ingest \ -H "Authorization: Bearer $PAST_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "id": "call-8820", "content": "Nadia confirmed the Acme pilot ships March 14. Budget is 32k.", "label": "Account review call", "timestamp": "2026-02-03T09:00:00Z", "audience": "sales" }' curl -X POST https://api.past.dev/api/v1/ingest \ -H "Authorization: Bearer $PAST_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "id": "call-8821", "content": "Budget for the Acme pilot moved to 40k.", "label": "Email from Nadia", "timestamp": "2026-07-28T16:00:00Z", "audience": "sales" }' ``` ```bash curl -X POST https://api.past.dev/api/v1/recall \ -H "Authorization: Bearer $PAST_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "what is the Acme pilot budget?", "identity": "demo-user", "level": "medium" }' ``` ```json { "asOf": "2026-07-29T00:00:00Z", "usedEvidenceTokens": 18, "results": [ { "id": "39d9d745-c9f4-4884-a602-e538def76815", "rank": 1, "occurredAt": "2026-07-28T16:00:00Z", "content": "Acme pilot budget: currently 40k.", "artifact": { "id": "9f74f854-d11d-4bc4-bf68-5b2012ac9c15", "kind": "claim", "occurredAt": "2026-07-28T16:00:00Z" }, "sources": [ { "sourceId": "call-8821", "occurredAt": "2026-07-28T16:00:00Z", "label": "Email from Nadia", "excerpts": [ "Budget for the Acme pilot moved to 40k." ] } ] } ] } ``` ## Quickstart past.dev determines which values are current, keeps previous values, cites dated sources, and filters results by audience. 1. **Get a key**: Sign up for an account. Then create a project key in the console. 2. **Ingest data**: POST text and its original timestamp to `/api/v1/ingest`. Backfilled data keeps its original date. 3. **Query the data**: POST a question and identity to `/api/v1/recall` to retrieve ranked evidence with dated sources. ## Included capabilities - **Backdatable ingestion**: Backfill existing data using its original timestamps. - **Audience filtering**: Each data point can name an audience. Reads return memory visible to the requested identity. - **Dated evidence**: Every recall result includes dated source evidence. - **Per-call usage**: The console dashboard records each ingest and recall. - **Evidence for grounded answers**: Recall returns source-backed evidence so your model can cite the information it uses and abstain when that evidence is insufficient. - **MCP access**: Connect an MCP client to your past.dev account. Product developers can also call `/recall` from their own MCP server. MCP: The address below is the authenticated MCP endpoint for your past.dev account. Claude, Cursor, VS Code and other clients that support remote MCP servers connect to it with OAuth. Admin endpoint: https://app.past.dev/mcp. For your end users to reach memory over MCP, see the docs. https://past.dev/docs/mcp/overview ## Managed and self-hosted | Component | Managed | Self-hosted | | --- | --- | --- | | API and console | api.past.dev | the past Docker image | | Memory and data | Hosted and operated by past.dev | Operated in your environment | | Processing and maintenance | Managed for you | Configured by your team | | Sign-in | Hosted sign-in | Local accounts | Managed and self-hosted deployments use the same API. Self-hosting keeps operation and data under your control. The interfaces are identical in both deployment modes: POST /api/v1/*, api.past.dev/mcp, past.dev/mcp, openapi.json. For self-hosting: Run the self-hosted package in your environment using the deployment guide. Docs: https://past.dev/docs/memory-api/self-hosting ## Why it is different ### Current-state tracking past.dev tracks current and previous values, including their dates and sources. ### Identity-aware recall Name the identity making a request. past.dev returns the memory available to that identity, with dated sources. ### Published benchmarks The harness runs BEAM at every size and LoCoMo on corrected keys, with baselines and judges in the same table. ## Plans ### Pay as you go: $0 / month For starting with your own data and growing at your own pace. Buy credits when you need them. - 150,000 credits ($45) to start - 400,000 credits ($120) if you sign up with a work email - Buy more from 100,000 credits for $30, valid for 90 days - 1 credit per 10 recall calls ### Flex: $99 / month For an application in production. Credits meter ingestion. Recall calls are unlimited. - 400,000 credits per month - Buy more from 100,000 credits for $30, valid for 365 days - Unlimited recall calls - Up to 8,000 tokens per recall ### Enterprise: Custom The whole engine, from 5,000,000 credits a month, priced against your deployment and your terms. - From 5,000,000 credits per month - Unlimited recall calls - Up to 32,000 tokens per recall - Unlimited projects Full pricing: https://past.dev/pricing ## Frequently asked questions ### What do I send? Text plus a timestamp: emails, meeting transcripts, Slack messages, support threads, CRM notes, documents. There is no schema to define, no embedding model to choose and no chunking pipeline to build. ### What comes back? `/recall` returns ranked, sourced evidence for your model. The response includes `asOf`, `usedEvidenceTokens`, and `results`; each result is one document with content, artifact context and dated source evidence. ### How is this different from search or RAG? past.dev lets your application retrieve source-backed memories across conversations and updates. Dated evidence gives your model context about current and prior information. ### Whose memory is it? Memory belongs to the project selected by your key. Each data point can name an audience, and each read names an identity. Audiences can contain specific identities or use rules over their traits. Use separate projects for separate authorization domains. ### How much does it cost? Pay as you go starts with 150,000 credits ($45), or 400,000 credits ($120) if you sign up with a work email. No card is required. After that you buy credits when you need them, from 100,000 for $30, and each recall call costs 0.1 credit. Flex is $99 a month with 400,000 credits and unlimited recall. The console dashboard shows your usage, and every plan is listed on the pricing page. ### How do I get access? Sign up for an account and create a project key in the console. New accounts start on Pay as you go. ### Is past.dev the same as Past AI? Yes. The name is written past.dev; people also write Past AI, pastdev or past dev. One company, one product: memory infrastructure for AI agents.