250k stars is insane but I ran into the exact same wall last week when I spun it up, the memory just… drifts. Had it handling a simple multi-step task and it straight-up forgot a key detail from the same conversation 20 minutes earlier.
Dimension 10 of 16
Memory
Remembers your preferences, people and past requests across sessions.
The test: Recall preferences and track context across the thread
Two probes: (1) Tell it once: 'I always want aisle seats and I don't eat pork.' A week later, ask for a flight and a dinner reservation. (2) After a Chicago hotel or trip is planned in the same thread, later ask for dinner that weekend in NY—does the agent ask or confirm city because it remembers Chicago plans?
Passes when
- Preference recall: picks aisle seat and respects diet without being reminded
- City conflict: notices or confirms the city mismatch between Chicago trip and NY dinner request
Anchors
Before you compare
- One memory score; when both probes are run, final score is the minimum of the two subscores.
- Notes must cover both probes when both are tested.
Ranking
18 tested.
Public opinion
Share of positive public quotes. Founder posts excluded.
Not yet tested
Doesn't apply
Out of scope for these products.
What people say
50 quotes about this.
If memory access was enabled when a run began and the operator disabled it midway through, that run could continue reading memory until it ended. The fix was to make tools check the current setting whenever they act.
My bots can have the right tools and still work from the wrong business context. I made that mistake: jobs and tools before a knowledge base. Yeoman is my Grok Bot operator for keeping that knowledge layer clean. Its territory includes: 1. The GitHub knowledge base my agents run from. 2. Notion, where I keep the roster, brand, content library, and missions. 3. My website It looks for stale material, contradictions, bloat, and duplicate sources of truth. The useful part is what happens before an edit. Yeoman returns a file plan. I review it before it prepares a pull request or Notion update. Nothing merges or publishes without my approval. Finding a contradiction doesn't authorize the fix. For a smaller first assignment, I'd ask a bot to list inconsistencies in business documents and link to the passages. I can review that list before letting it change anything. That's useful work without handing over the whole knowledge base on day one.
@grok @bot still has no real /compact. If you run an orchestrator style bot like grok ship/firstmate by @kunchenguid the chat gets bloated. The harness will auto-summarize when tokens get build up, but that is not the same as using /compact in other agents. I had grok bot poke the sand harness on the machine. Compaction is real under the hood: token thresholds, background summarization, `preCompact` hooks. Still no user slash to force it. The force path is eval/debug wiring, not a supported switch. So when I felt it was time to spin up a new firstmate bot, I built what does work: dense memory + a reusable skill. A pack the next bot reads on first wake with four focuses: - Standing = role boundaries so the new chat doesn’t grind work it shouldn’t - Open now = only loops that still need a human or another agent - Locks = rules you already decided (don’t re-argue pricing/routing) - Just closed = stop the new bot from reopening settled crap What it is not: - It does not shrink the live context window - It is not a dump of secrets, tokens, or webhook keys - It is not a substitute for product /compact How to use it: 1. Save the skill below in Grok Bot (Skills) 2. In the fat chat, say “handoff” / “cutover” / “compact” 3. Spin the new thinner bot 4. First message to the new bot: Read /home/box/agent-data/handoffs/ship-state.md, then ack open loops only Skill body (save as a user skill; folder slug can be ship-state-handoff): ```markdown --- name: Chat handoff pack description: >- Use this when the user wants compact, handoff, cutover, or a fresh thinner bot without losing continuity. Write a dense state pack (memory + handoffs file) because there is no production /compact. --- # Chat handoff pack Build a dense state pack so a **new chat** (or a replacement bot) can work without the old fat transcript. This is a DIY stand-in for a missing `/compact`. It does **not** shrink the live context window. It preloads the next conversation. ## When to run User says compact, handoff, cutover, start fresh, or spin up a thinner bot and keep continuity. ## Do 1. Gather standing rules from agent memory + shared user memory (role boundaries, anti-jobs, hard locks). 2. List **open loops** only: paused routines, threads waiting on a human, pending decisions, stale todos still wanted. 3. List **locks** (pricing rules, routing rules, do-not-contact / do-not-retry, which surface owns what etc). 4. List **just closed** in one short block so the next chat does not re-litigate them. 5. Write the pack to both: - shared user memory: one log fact starting with `Handoff pack (YYYY-MM-DD):` … - `/home/box/agent-data/handoffs/ship-state.md` (overwrite; keep under ~80 lines) 6. Forget or replace any older `Handoff pack (` / `Ship-state handoff (` fact so only the newest remains. 7. Reply in chat with: path written, a one-screen TLDR, and “next bot should Read that file on first wake.” ## Format (keep tight) Standing: … Open now: - … Locks: - … Just closed: - … ## Don’t - Do not dump full episode logs or PR blow-by-blow. - Do not put secrets, tokens, webhook keys, or passwords in the pack. - Do not claim this compacts the current prompt; it only seeds the next chat. - Do not fan out messages to other agents unless the user asked for a cutover ping. ``` Optional first-wake promp for the new bot: ``` You’re the replacement bot. Previous bot is retired. First wake only: 1. Read `/home/box/agent-data/handoffs/ship-state.md` 2. RecallMemory query `Handoff pack` (shared user memory) 3. Skill for later refreshes: Chat handoff pack (`ship-state-handoff`) After you’ve read the handoff, reply with a short ack of open loops only. Don’t restate the whole file. ``` Afaik until /compact ships, this is the best option. Steal it, tweak the paths if your layout differs, keep the pack short. If you are interested in grok ship and pstack by @poteto the post in replies shows the practical way to combine then.
@bot I created a secretary that has access to my email and calendar and to-do lists. He even knows what kind of food I have in the office and can suggest things to pick up on the way into work.
Instinct has shown me that it can derive context and establish a sense of timing. I haven't seen another agent combine the two this successfully. I've been using it for a week. ... Instinct has done a phenomenal job of recognizing when a conversation from last week coincides with my calendar for next week. It recognizes these events as part of the same story, and it is proactive in texting me before I've even realized there was something to address. ... Example: on Day 2 after only having access to my inbox, it figured out my entire trip to Italy and proactively offered to schedule the train rides between cities, which I hadn't done yet.
I am shocked. After playing with Muse by Meta for an hour in just chat mode, I was impressed enough to: I never use Apple Reminders so I gave Muse read access to Reminders. I asked Muse to schedule repeating tasks that only involve web search e.g., every other morning find sci-fi movies playing in my city, 3pm EST stock market summary, etc. I also permanently set my food preferences and just naming any restaurant in town gets me an accurate list of recommendations with costs and descriptions.
with my setup I have 9 persistent agents each agent was consistently consuming something like 1.5G so the mac mini was starting to page. i am doing an openclaw/hermes type setup with dedicated agents (bots essentially) for comms, finance, health, coding, marketing, customer support, etc. which leads to persistent agents (tmux helps with this) which was worthy of memory pressure. Otherwise it would not have been an issue.






















