# Archilas > Archilas gives context to the agents you already run. It keeps what was decided, who said it, when, and what an agent was told and did. Compatible with any MCP-capable AI. Contact: hermes@archilas.com. X: https://x.com/archilas1. Site: https://www.archilas.com/ Slack, GitHub, Gmail, Notion, Linear, Google Calendar, Google Drive, and AI chats are connected. Compatible with any AI that supports MCP. Cursor, Claude Code, ChatGPT, and Codex are examples. Start free at https://www.archilas.com/signup?next=/app/connect. Free is 100 context deliveries a month, one integration, plus all AI chat context. Every paid plan includes all integrations. On one LoCoMo development split the preprint records 49 answer-stage failures where the gold evidence session was already in the prompt, and 22 retrieval-stage failures (14 ranked too low, 8 dropped by the context budget). It does not claim Archilas beats Mem0. # Research # Evidence in Context Is Not Enough: Why Small Language Models Fail at Long-Term Conversational Memory [OPERATOR NAME], Archilas Preprint, October 2026. Not peer reviewed. https://www.archilas.com/research PDF: https://www.archilas.com/research/evidence-in-context-is-not-enough.pdf ## Abstract Memory layers for conversational agents are usually evaluated end to end, with large readers, and with a single accuracy number. That hides where a pipeline fails. We study a retrieval-based memory agent whose reader is a 4-billion-parameter instruction-tuned model (Qwen3-4B-Instruct-2507) answering from stored conversation notes under an interactive latency constraint. On a 233-question non-adversarial split of LoCoMo (conversations conv-26 and conv-30), our frozen baseline answers 160/233 (68.7%) correctly, judged by an LLM; on a disjoint 233-question sample from eight other conversations it answers 168/233 (72.1%). We classify all 73 errors on the first split by pipeline stage. 22 are retrieval-stage failures: the evidence never reached the prompt, either because it ranked too low (14) or because it was ranked but evicted by the context budget (8). 49 are answer-stage failures, and 2 were labelled gold or judge errors. In all 49 answer-stage failures the gold evidence session was in the prompt. No answer was truncated, and neither context length nor evidence position separates failures from successes at our roughly 9k-token context length. The dominant answer-stage modes are abstaining or hedging while the fact is present, and committing to a near-duplicate "sibling" event from another session. We then report a set of interventions evaluated against gates written and hashed before measurement, with gold labels used only for scoring and no post-hoc rescue. None beat the baseline under its gate: parameter-efficient fine-tuning (−18 questions), quote-before-answer prompting (−7), a gated self-correction retry (net 0), an anti-abstention instruction (8 wins, 12 losses), LLM-rewritten notes, retrieval re-scoring and diversity methods, deterministic note annotation, a fact-log representation, and turn-level packing. Second-pass retrieval gained +11 on the development split but did not hold on held-out conversations. Two larger readers were ruled out on speed alone before any accuracy test. The only large gain we observed came from changing the representation of the notes, not the reader or the prompt: deterministic resolution of relative dates moved held-out accuracy from 136/233 to 150/233. We argue that small-model memory is limited by two things. One is retrieval depth under a fixed raw-context budget. The other is evidence conversion: whether the reader uses evidence that is already in its prompt. Offline coverage proxies can measure the first but not the second, and in our data they over-predicted gains. We report noise explicitly: a single prompt line changed 20 of 233 answers, so we treat differences of about ±5 questions on our development split as noise. ## Summary The preprint studies a retrieval-based memory pipeline whose reader is a small instruction-tuned model. Its own judge and samples are in the paper, and it makes no state-of-the-art claim. The preprint classifies individual failures — evidence already in the prompt, evidence ranked too low, evidence dropped for budget — and does not claim a win over Mem0. It is not that paper’s strict-judge split. One added prompt line changed 20 of 233 answers, so the paper treats a swing of about five questions as noise. It says the numbers are not comparable to published LoCoMo scores that use different readers, judges, and protocols. Most errors on the development split happened with the evidence already in the prompt. The reader abstained or hedged while the fact was present, or it committed to a similar event from another session. A smaller share of errors were retrieval failures: the evidence ranked too low, or it was ranked and then left out of the context that was packed. Interventions that did not beat the baseline, under gates written before measurement, included fine-tuning, quote-before-answer prompting, a self-correction retry, an instruction to stop abstaining, rewritten notes, and retrieval re-scoring. A second retrieval pass improved the development split and did not hold on other conversations. The large gain came from the notes: deterministic resolution of relative dates, without discarding the original text. The author works on Archilas. The study reports negative results and makes no comparative claim against other memory systems. Full text: the HTML page and the PDF linked above. # Blog # The small reader missed facts that were already in the prompt https://www.archilas.com/blog/small-models-fail-at-agent-memory 2026-10-11 · [OPERATOR NAME] Putting the evidence in the prompt did not fix a small reader. In the preprint, two thirds of the errors on the development split happened with the gold session already loaded. 86% on LoCoMo using the Mem0-paper judge (2-conversation sample) is a separate measured figure. It is not a comparison with Mem0. I kept seeing memory demos reported as one accuracy number. That hides whether the retriever failed or the reader failed. The preprint Evidence in Context Is Not Enough (https://www.archilas.com/research) splits those cases for a small reader. It is not peer reviewed. ## The evidence was often already there On the development split, two thirds of the errors happened with the gold evidence session already loaded. The answers were not cut off for length. The common misses were abstaining while the fact was present, and picking a near-duplicate from another session. Several camping trips, several paintings. The sibling looks plausible. ## What I tried that did not hold Fine-tuning, asking the model to quote first, a self-check retry, an instruction to stop abstaining, rewritten notes, and retrieval re-scoring did not beat the baseline under gates I wrote before measuring. A second retrieval pass looked better on the development split and did not hold on other conversations. The change that held was in the notes. Resolving “yesterday” to a calendar date, and keeping the original wording, improved a held-out sample before I froze the baseline. Changing the reader did less than changing what the note said. ## Read the number as noisy 86% on LoCoMo using the Mem0-paper judge (2-conversation sample) is a measured figure from that setup. It is not the paper’s strict-judge split, and it is not a claim that Archilas beats Mem0. One added prompt line changed 20 of 233 answers. I treat a swing of about five questions as noise. These numbers are not comparable to published LoCoMo scores that use different readers and judges. The product side of this is simpler: keep the date on the note, and mark the older decision when a newer one replaces it. That write-up is Decisions change (https://www.archilas.com/blog/stale-memory-current-fact). --- # How I actually built the memory https://www.archilas.com/blog/how-archilas-works 2026-10-11 · [OPERATOR NAME] Archilas stores notes from the tools you connect, from AI chats, and from what an agent was told and did. A later note can mark an earlier one as replaced. Both dates stay. Any AI that supports MCP can receive the current context. Cursor, Claude Code, ChatGPT, and Codex are examples. I did not want another search box over a dump of Slack. I wanted the agent I already run to show up already knowing which decision is current. ## What goes in Slack, GitHub, Gmail, Notion, Linear, Google Calendar, and Google Drive are connected. AI chats are a source. So are agent actions: the instruction the agent was given, and what it did next. Gmail, Calendar, and Drive go through Composio. The others use their own OAuth apps. Discord and Teams are not in this build. ## What a note keeps The text, who said it, the date, and where it came from. If a later decision replaces an earlier one, the old note stays and is marked replaced. I do not drop the first date. That is the whole superseding rule. ## How an AI gets it The hosted endpoint is https://www.archilas.com/api/mcp. Any client that can call a remote MCP server can use it. I use the same URL for Cursor, Claude Code, ChatGPT, and Codex. The key is a bearer token from the workspace. The full key is shown once. If the notes do not contain the fact, the path is to say so. This repo does not train a model on the notes. When an answer is generated, the relevant notes go to OpenRouter. Setup is in the docs (https://www.archilas.com/docs). --- # The agent was useful the second time, not the first https://www.archilas.com/blog/how-memory-makes-agents-useful 2026-10-11 · [OPERATOR NAME] An agent without memory restarts from the prompt you type today. I built Archilas so the second session already has the decision, the date, and what the agent itself did last time. I watched the same SSO thread get re-explained in Cursor, then again in a chat, then again in a terminal agent. The decision had not changed. The prompt had. ## What I keep - The decision, and the decision it replaced. - Who said it, and the date. - The chat where it was argued. - What the agent was told to do, and what it actually did. Free is 100 of those deliveries a month, one integration, and the AI chats. The product meters deliveries as questions. That number is the cap, not a benchmark. --- # The old decision was still in the notes https://www.archilas.com/blog/stale-memory-current-fact 2026-10-11 · [OPERATOR NAME] Archilas keeps the earlier note and marks it replaced when a later one contradicts it. The date stays on both. The context an agent receives prefers the current note. The failure I kept hitting was not “no memory.” It was the wrong memory. A note from last quarter was still worded like policy. The Slack message that changed it was sitting in another tool. ## The rule I shipped A newer decision marks the older one. I do not delete the older one, because I want to see what changed and when. The 1 October Notion note stays, struck as replaced. The 2 October Slack note is current. A Linear ticket on 6 October can sit beside it without erasing either date. Agent actions follow the same rule. If I told the agent to leave custom SAML out of the first release, that instruction is a note, with the date. A later instruction can replace it. --- # I did not want a store I have to query https://www.archilas.com/blog/memory-agent-vs-memory-store 2026-10-11 · [OPERATOR NAME] Archilas is not a database you query. It gives context to the agent, and to you when you open the workspace. The agent does not have to know which table to search. A memory store is useful if you enjoy writing the retrieval call. I do not. The agents I run already have a prompt window. They need the current decision put in front of them, with the source. ## What that changes The MCP server is the delivery. The client calls the tool because the work might depend on a prior decision. The tool returns the notes, or it says nothing matched. I would rather an empty result than a sentence the model invented to be helpful. Mem0, Zep, and Letta are stores other people build agents on. I am not publishing a score against them. The preprint classifies failures of my own small reader. It does not claim a win. The longer note is How this differs (https://www.archilas.com/blog/archilas-vs-mem0-zep-letta). --- # Mem0, Zep, Letta, and what I am not claiming https://www.archilas.com/blog/archilas-vs-mem0-zep-letta 2026-10-11 · [OPERATOR NAME] Mem0, Zep, and Letta keep memory an application can retrieve. Archilas keeps dated notes, marks a newer decision as current, and gives that context to any MCP client. I do not claim Archilas beats them. People ask me for a table with a winner. I do not have one. Those projects and this one do different jobs. Theirs is a store your code queries. Mine is the context I want already attached when Cursor, Claude Code, ChatGPT, Codex, or another MCP client starts. ## The part I will stand behind - A note has a date and a source. - A later decision marks the earlier one. Both stay. - If the note is missing, the result says so. - The preprint’s failure counts are about my reader, not a ranking. On one LoCoMo development split the preprint records 49 answer-stage failures where the gold evidence session was already in the prompt, and 22 retrieval-stage failures (14 ranked too low, 8 dropped by the context budget). That is a classification, not a leaderboard. --- # I use more than one AI in a day https://www.archilas.com/blog/persistent-memory-for-everyday-ai 2026-08-12 · [OPERATOR NAME] Archilas keeps one workspace memory and gives it to whatever AI supports MCP. I do not pick a single chat app as the home of the context. Monday is the editor. Tuesday is a long chat. Wednesday something in the terminal. I am not going to re-teach each of them the SSO decision. ## One server The notes stay in the workspace. Each client gets the endpoint and a key. When a new MCP client shows up, I add the URL. I do not migrate a history out of someone else’s chat product. Sources today: Slack, GitHub, Gmail, Notion, Linear, Calendar, Drive, AI chats, and the record of what an agent was told and did. If you want the install lines, they are in the docs (https://www.archilas.com/docs). --- # I would rather the agent say it does not know https://www.archilas.com/blog/memory-that-does-not-fabricate 2026-08-10 · [OPERATOR NAME] If the workspace has no note for the fact, Archilas is built to abstain. I do not fill the gap. The preprint is full of cases where a small reader abstained even when the evidence was loaded, so this is a design rule, not a claim that it never fails. The embarrassing failures were confident. The model named a person who had not been in the thread. It sounded like memory. It was a guess. ## The rule Return the note, with who said it and when, or say the memory does not have it. A replaced note can still be shown, marked replaced, so the agent does not treat last quarter’s plan as current. I am not promising the model on the other side of OpenRouter will always obey that. I am promising the tool result will not invent a source. --- # MCP is the socket, not the memory https://www.archilas.com/blog/what-is-mcp 2026-08-08 · [OPERATOR NAME] MCP (Model Context Protocol) is an open way for an AI app to call a server. Archilas exposes one HTTP server at /api/mcp. Any client that supports MCP can use it. I do not ship a separate integration per logo. I wasted a week treating MCP as a feature I would add later for one editor. It is a socket. Once the server is up, the client is whoever implements the socket. ## What I run https://www.archilas.com/api/mcp with a bearer key. Claude Code has a one-line `claude mcp add`. Cursor takes a JSON block. Codex takes a TOML block. ChatGPT, if the client lets you add a remote MCP server, uses the same URL and the same header. The docs have the commands: Docs (https://www.archilas.com/docs). The tool name in the server is `archilas.ask`. That is the function the client calls. The product around it is the context, not a search box. --- # The context died when I closed the tab https://www.archilas.com/blog/why-agents-lose-context 2026-08-06 · [OPERATOR NAME] Agents lose context because the session is the memory. I keep the decision outside the session, then hand it to the next MCP client. I would finish a long chat, close it, and open the editor. The editor’s agent had none of it. I pasted. Then I pasted again the next morning. The pasting was the product, and it was bad. ## Where I put it instead The note lives in the workspace. The next client, whichever one speaks MCP, receives it. I do not need the same vendor on both sides. Cursor in the afternoon and another client at night can read the same note, including what the first agent was told to do. --- # Search found the paragraph. It did not know which decision won https://www.archilas.com/blog/ai-memory-vs-rag 2026-08-04 · [OPERATOR NAME] Retrieval finds text that looks relevant. It does not, by itself, mark an older decision as replaced. I keep that status on the note, then give the current note to the agent. I still use search. If I need the paragraph in a spec, retrieval is the right tool. The bug I kept shipping was treating that paragraph as the decision, after Slack had already changed it. ## What I added A note can be current or replaced. The replaced note stays, with its date, so I can see the change. The agent receives the current one, and can be shown the one it replaced. That is a small piece of state search does not keep unless you build it. Chats and agent actions are in the same pile. A retrieval index over Slack alone never saw the instruction I gave the agent at 11pm.