Similar Tools

Scry is most honestly understood in relation to the other approaches to the agent context problem — not as the only answer, but as one shape among several. This page is that comparison.

Eight categories below, each classified peer, adjacent, or subordinate against scry’s marker contract, with named systems and the precise place each one is genuinely strong or genuinely limited. The classification key sits at the top; a summary at the bottom names where the alternatives are strongest and where the marker contract has the clearest edge.

Classification key

  • PeerSolves the same problem (curated, durable, queryable knowledge of what already exists in the project) with a different primary mechanism. Someone evaluating tools for this would compare it head-to-head with the marker contract.
  • Partial PeerSolves a substantially overlapping problem with a different shape — close enough that the comparison is direct, distinct enough that the categories do not fully collapse.
  • AdjacentSolves a related problem (raw retrieval, code navigation, larger context, ambient memory) that overlaps with agent context but is not the same thing. Often complementary.
  • SubordinateA technique the marker contract can use as an implementation detail rather than compete with. Calling it a competitor confuses categories.

Scry’s answer is a marker contract with three marker types. @scry.entry declares an artifact and carries the curated fields (id, summary, tags, applies, seeded questions) an indexer pulls into a queryable cache. @scry.anchor turns any code comment or in-file point of interest into a named, queryable location — a primitive for making arbitrary in-file locations findable. @scry.bind is the typed edge — implements, depends_on, supersedes — that makes the graph bidirectional. The agent queries the cache by structured fields, not by similarity. Authoring is deliberate; every marker is part of the file under version control.

01RAG and vector databases

Subordinate

Justification:RAG returns nearest-neighbour chunks by embedding similarity; the marker contract can use embeddings as one ranking signal among structured fields. RAG-as-implementation is fine; RAG-as-substitute confuses retrieval with curation.

What it is

Retrieval-Augmented Generation: chunk the corpus, embed each chunk with a model (OpenAI text-embedding-3, Voyage, BGE, etc.), store vectors in an index, and at query time embed the query and return the nearest-neighbour chunks as additional context to the LLM.

Named systems

FAISS (Meta, library), pgvector (Postgres extension), Pinecone, Weaviate, Chroma, Qdrant, Milvus, LanceDB, ElasticSearch’s dense_vector, OpenAI Assistants File Search, LlamaIndex and LangChain retriever abstractions sitting atop any of the above.

How it approaches the problem

Similarity in embedding space is treated as a proxy for relevance. The corpus is not curated; the index is the curator, by way of the embedding model’s learned geometry.

Limitations relative to the marker contract

Why subordinate, not peer

Production RAG against a frozen index is deterministic — the same query returns the same chunks. The honest weakness is not raw non-determinism but the opacity of the ranking and the silent sensitivity to embedding-model upgrades: change the embedding model and the same query returns different chunks without anything in the system saying so. A marker contract can use embeddings as one ranking signal among structured fields. Scry’s own scry__file_fts is full-text; a future tier could embed marker summaries and add nearest-neighbour lookup. RAG is a mechanism the marker contract can absorb, not an alternative shape of the same answer.

02Code intelligence

Adjacent

Justification:Code intel names what exists and where; the marker contract names what something is and why. Different layers. They compose.

What it is

Tooling that indexes a codebase by symbol — what functions exist, where they’re defined, where they’re called, what types they have — so an editor or search UI can jump to the right place.

Named systems

How it approaches the problem

“What exists” is answered at the level of program structure — symbols, definitions, types, references — not the level of intent, decision, or lesson.

Limitations relative to the marker contract

Why adjacent, not peer

An agent often needs both. A marker can bind to a symbol that LSP resolves, and code intel can be the substrate a marker-aware agent uses to follow implements edges into the implementation.

03Knowledge graphs

Partial Peer

Justification:The closest paradigm match to scry. Scry is, viewed sideways, a knowledge graph whose nodes are in-file YAML markers and whose edges are implements / depends_on / supersedes references. The difference is location: scry’s graph lives in the source, not in a sidecar store.

What it is

Represent the corpus as nodes (entities, files, concepts) and typed edges (depends-on, implements, supersedes) in a graph database; query with a graph language.

Named systems

How it approaches the problem

Curated or extracted typed relationships between things. Querying becomes graph traversal (“which lessons are bound to specs that this PR’s files implement?”) rather than similarity.

Limitations relative to the marker contract

Honest comparison point

Joern’s CPG and GraphRAG are genuinely doing similar work for different problems. GraphRAG is the most direct prior art for “structured graph above raw retrieval, queryable by an agent.” Scry’s bet against it is the location bet — in-source vs sidecar — not a claim that structured curation is novel.

04Agent-memory frameworks

Peer

Justification:The projects most likely to be named in the same sentence as scry. The line worth drawing precisely: agent-memory frameworks are the right tool for memory of interaction; the marker contract is the right tool for memory of artifact.

What it is

Libraries and services that give an LLM agent durable, structured memory across sessions — facts, preferences, prior decisions — separate from the model’s context window.

Named systems

How they approach the problem

Treat memory as the agent’s self-managed substrate. The agent reads and writes via tools. Storage is typically a vector store, sometimes a graph, sometimes a JSON document the framework hands back on each turn.

Limitations relative to the marker contract

Where mem0 and scry overlap most directly

Project-scoped fact recall. mem0’s positioning increasingly extends past chat into “memory for coding agents.” That is the line scry sits on. The distinguishing question becomes: does the memory live in the source tree (scry), or in a sidecar service (mem0)? A mature agent could use both, for different things.

05Long-context approaches

Adjacent

Justification:Long context is the substrate inside which retrieval and curation operate. Scry decides what to include; the context window decides what fits. They compose.

What it is

Skip retrieval; put everything in the prompt. Rely on model context windows large enough to hold the relevant slice of the codebase or document set.

Named systems

How it approaches the problem

Curation is the model’s job at inference time. Stuff the window; let attention sort it out.

Limitations relative to the marker contract

06Hand-maintained memory files

Partial Peer

Justification:The marker contract is this pattern pulled apart into one marker per artifact, with a schema. Many CLAUDE.md files are scry markers waiting to be extracted.

What it is

Markdown files at known paths that agents are instructed to read at session start. The simplest possible solution; massively deployed.

Named systems

How it approaches the problem

Pre-load fixed context. Curation is manual; format is freeform prose. Newer conventions support selective imports and hierarchical loading. This is a genuinely viable selection function, albeit a manually curated one.

Limitations relative to the marker contract

07Grep / ripgrep / full-text search

Adjacent

Justification:Grep is the universal floor; the marker contract is the curated ceiling. Scry’s own scry_grep is body FTS underneath, with marker FTS above. They compose.

What it is

Search the source tree by literal or regex pattern. Fast; ubiquitous; the floor every agent already has.

Named systems

GNU grep, ripgrep (rg), ag (the silver searcher), ack, OpenGrok, livegrep, Sourcegraph’s text search, SQLite FTS5, ElasticSearch BM25.

How it approaches the problem

No curation; the corpus is the index. Find by token, not by meaning.

Limitations relative to the marker contract

08Task graphs for coding agents

Adjacent

Justification:Same audience (long-horizon coding agents), same marketing language (“persistent, structured memory for coding agents”) — different layer. A task graph tracks what needs doing; the marker contract indexes what already exists. They compose; they do not substitute.

What it is

A dependency-aware issue tracker built for AI agents rather than humans. Tasks are nodes in a graph with typed edges (blocks, relates_to, duplicates, supersedes); ready-task detection falls out of the graph. Storage is a versioned SQL database so multiple agents on multiple branches can write concurrently without merge collisions.

Named systems

Beads (bd). Dolt-backed (the version-controlled SQL database) in embedded or server mode; hash-based task IDs (bd-a3f8.1.1) sidestep the merge-collision problem that hits sequential IDs in multi-writer workflows. Targets Claude Code, Copilot CLI, Factory.ai and similar agents.

How it approaches the problem

Treat agent context as the set of pending tasks and their dependencies. The agent queries the graph for the next ready task, marks progress, threads messages against tasks, and lets closed tasks compact away as “memory decay.” State the agent maintains about its own work is durable and queryable across sessions.

Limitations relative to the marker contract

Why adjacent, not peer

The honest read is that beads and scry are complementary tools that share an audience. A mature coding-agent setup could plausibly run both: beads as the work queue, scry as the artifact index. The categories overlap in marketing copy and diverge in mechanics.

One convergence worth noting: beads and scry independently arrived at the same answer for stable identity under concurrent multi-agent writes. Beads mints hash-based task IDs (bd-a3f8); scry mints collision-checked hash-suffixed marker IDs (design.auth-flow~abcd1234) via scry_mint. Two tools built independently in the agent-tooling space, converging on the same ID design — observation, not endorsement, but it is a signal the shape of the problem rewards the shape of the answer.

09Honourable mentions

Where each side wins

Where the alternatives are genuinely strong

  • Long context raises the floor for how much an agent can hold at once, and that is real progress. It does not remove the curation problem. A project that fits in 200k tokens is not a project with a 200k-token working budget — the conversation itself consumes tokens, every tool call returns tokens, and loading a 25% slice of the project (~50k) before the conversation even begins is routine. Context compaction then discards that slice and the agent must reload. Worse, an agent without a curated index falls back to grepping the tree, crawling directories, and reading entire files to find what it needs — spending tokens on prose it does not need to win the bytes it does. Scry’s advantage holds even with a 1M-token window: each marker carries summary / rationale / applies / weight, and the agent uses those fields to decide which files to read and which to skip — never reading whole files blind. Long context makes scry cheaper to use, not unnecessary.
  • Agent-memory frameworks (Letta, mem0, Zep) are doing excellent work on the interaction-memory problem and are legitimately winning that category. Their drift into artifact-memory is real and worth tracking.
  • GraphRAG is the most serious prior art for structured curation above raw retrieval. Scry’s bet against it is the location bet — in-source vs sidecar — not a claim that structured curation is novel.

Where the marker contract has the clearest edge

  • In-source authorship. No drift between code and metadata because they ship together. Because the markers live in the source files, they are version-controlled like the code they annotate — a marker change shows up in a pull request diff and stays in git history, so it can be reviewed, blamed, and reverted like any other change.
  • Per-artifact granularity. Not “one memory file per repo” and not “one node per extracted entity” — one marker per artifact, written by the artifact’s author.
  • Composability with the rest of the stack. Markers are not hostile to RAG, KG, LSP, or long context. They are the curation layer those mechanisms can operate against.

Scry’s own tradeoffs

Stated honestly, because a comparison page that hides them would not be the page it claims to be. The marker contract has three marker types — @scry.entry declares an artifact, @scry.anchor names a queryable point inside a file, and @scry.bind is the typed edge that makes the graph bidirectional — and each carries its own slice of the cost: