Skip to content
Slipstream agent · Workspace

Memory Gardener

A workspace cleanup agent for Claude Code, Codex and Cursor

The Memory Gardener finds duplicate or conflicting decisions and lessons and stale open items, and proposes merging, superseding or closing them. A run costs 400 credits, charged only when the run succeeds.

Or use it on slipstream.contextstream.io, signed in with your ContextStream account. Version 0.1.0 · Updated

What does Memory Gardener do?

Finds duplicate or conflicting decisions and lessons, and stale todos, plans, tasks and reminders, and proposes merges, supersedes and closures for the person to accept.

What it declines

A task like one of these is declined with a reason, and a declined run is free:

  • Changing, merging or closing anything itself: every change is a proposal the person accepts or turns down.
  • Writing new decisions, lessons, todos or notes.
  • Summarising or explaining what the workspace remembers.
  • Judging whether a decision was a good one.

What does a real run of Memory Gardener look like?

The input, the result (shortened where it is long), how long it took, what it cost and where it ran. Live runs used public or demo material only; a run marked as from the eval suite is not a live run.

Live run on ContextStream

Duplicate decisions about a public repository, as a dry run

Version
0.1.0
Outcome
succeeded
Ran
2026-10-27 17:26 UTC
Took
18.9 s
Cost
400 credits

ContextStream's Demos workspace, in the project for the public mcp-server repository: its decisions about indexing, plus four demo decisions written for this example (two pairs that repeat or contradict each other).

What it ran on

  • Decisions in the Demos workspace's mcp-server project (demo material)
Input
{
  "project_id": "6aad1065-8086-4114-931e-1b16c1d9b234",
  "kinds": [
    "decisions"
  ],
  "dry_run": true,
  "focus": "search decisions"
}

Result

Summary

Drafted 4 merges, 0 supersedes, 0 closures from 8 candidates across 14 decisions, 0 lessons, 0 open todos, 0 open plans, 0 open tasks and 0 open reminders. The workspace's decisions contain several near-duplicate statements about detached project indexing and case-insensitive search, plus one same-day contradiction about case sensitivity that needs the person's judgment.

Proposals (a dry run: nothing was filed or changed)

ProposalItemsWhySure
merge“Show related-project search hits with paths relative to their repository” and “Search results from another project use repository-relative paths”D4 and D5 both say search hits from a related project are shown with repository-relative paths; D5 adds that this is not the machine path it was indexed from, so it says it more completely.0.9
merge“Exhaustive search always matches without regard to case” and “Exhaustive search ignores case”D1 and D2 both state that exhaustive search ignores case and give the same FooBar/foobar example; D2 states it in full, so D1 repeats it.0.9
merge“Run project indexing in a detached child to keep setup responsive.” and “Keep setup responsive by starting project indexing in a detached child”Both decisions say project indexing runs in a detached child so setup stays responsive; D13 records the implementation details (startBackgroundIndexing, unref), so it says it more completely.0.85
merge“Keep project indexing detached from setup completion.” and “Do not make setup await project indexing; keep indexing detached and asynchronous.”D9 and D10 both say setup must not wait for project indexing and that indexing stays detached; D10 states it more completely.0.85
Checks: 4 of 4 passed
  • items_read: Read 14 decisions, 0 lessons, 0 open todos, 0 open plans, 0 open tasks and 0 open reminders.
  • verdicts: Every verdict fits its candidate; 0 unsure changes left alone.
  • proposals_filed: A dry run: nothing was filed.
  • no_direct_writes: Changed nothing itself: every change waits for the person to accept it.
Task
2d3861ea-7367-4397-8577-aef6687368c3
Charged
0: it ran on ContextStream’s own account, which is not billed; a customer pays the price shown

What does Memory Gardener cost?

Memory Gardener costs 400 ContextStream credits a run, charged only when the run succeeds; a declined, failed, cancelled or timed-out run costs nothing. Credits come with every plan: Starter is free with 10,000 a month (25 runs of Memory Gardener, if spent on nothing else), and Pro is $19 a month with 25,000.

Which tools does Memory Gardener work with?

Claude Code, Codex, Cursor and other MCP clients: ContextStream's MCP gives them a slipstream tool that finds, runs and follows Memory Gardener. It also runs from a terminal or an agent's shell with ss run gardener, and from the ContextStream web app.

  • Claude Code, Codex, Cursor and other MCP clients: connect ContextStream's MCP once (setup for each editor), then ask your agent to hand the job to Memory Gardener.
  • A terminal or an agent's shell: ss run gardener, installed with ContextStream's command line.
  • The web app: the workspace's specialist library, where each run shows its price before it starts.

What access does Memory Gardener need?

Memory Gardener gets a short-lived token for one workspace, limited to 4 scopes: Reads tasks, plans, Reads memory, Proposes changes and Models via ContextStream. It works in one project, and only for that run.

Model agent. A program on ContextStream's model proxy, with a short-lived token that acts for you in one workspace. It is stopped after 5 min. You may schedule it to run on its own.

ScopeWhat it lets a run do
items.readList todos, plans and their tasks, tasks and reminders.
memory.readSearch memory, and read decisions and lessons.
memory.proposePropose merging, superseding or closing memory items. Only you accept one; a run cannot.
model.invokeCall models through ContextStream’s model proxy, under the run’s credit cap.

How do I turn Memory Gardener on?

An owner or admin of your ContextStream workspace turns Memory Gardener on in the specialist library of the web app. Specialist agents are opening workspace by workspace; if yours is not open yet, the library says so.

  1. Sign in to ContextStream: the button below opens the specialist library on Memory Gardener.
  2. An owner or admin switches Memory Gardener on for the workspace.
  3. Pick the project it works in, and run it from the library, from your coding agent or with ss run.

How do I call Memory Gardener from Claude Code or Codex?

Ask your coding agent to hand the job to Memory Gardener, or call it yourself: ss run gardener in a terminal, or slipstream(action="run", agent="gardener", input={...}) over MCP. A priced run starts only once its price is accepted.

Connect ContextStream's MCP (it also writes each editor's connection):

curl -fsSL https://contextstream.io/scripts/mcp.sh | bash

The weekly pass: every kind of item, stale after 60 days. Over MCP:

slipstream(action="run", agent="gardener", input={}, accepted_price_credits=400)

In a terminal (curl -fsSL https://contextstream.io/cs/install.sh | sh installs ss):

ss run gardener

Over MCP, a call without accepted_price_credits returns the quote first; ss asks on a terminal, and scripts pass --yes.

Input

FieldTypeWhat it is
kinds"decisions" | "lessons" | "todos" | "plans" | "tasks" | "reminders"[]What to tend. Defaults to all of them.
project_idstringTend only this project's items.
stale_after_daysintegerHow long past its due date an open item must be to look stale (an item with no due date: twice as long untouched). Defaults to 60.
focusstringA topic to tend first, for example "deployment decisions".
dry_runbooleanList the proposals without filing them.
as_ofstringJudge staleness as of this time instead of now.
Workspace

Lens

screenshot and image explainer agent

Lens explains an image a person shared: what it shows, the text in it, what in their workspace it relates to, and what to do next, with citations.

400 credits a runEvals 6/6v0.2.0
Workspace

Plans & Tasks Keeper

plans and tasks status agent

Plans & Tasks Keeper answers one question about the status of the workspace's plans and tasks, citing their ids.

FreeEvals 106/106v0.1.0

Every Slipstream agent