RecallLoom
RecallLoom is a portable context harness for session-based agents.
It provides a lightweight file model for project continuity across sessions without requiring heavy infrastructure.
The goal is not to remember everything. The goal is to keep the right project state durable, readable, and recoverable across sessions.
Package Scope
This file is the agent-facing entrypoint for the installable
skill package.
Install and trigger this package through your host agent's normal skill discovery flow.
RecallLoom itself does not require a custom host-specific launcher inside the package.
The package may still ship optional native wrapper templates for supported hosts.
This installable package is intentionally kept lean.
Human-facing repository landing pages and marketing docs may exist upstream, but they are not bundled into the installed skill directory.
In the source repository,
and
are concise public
front doors,
is the compatibility entry,
is the
full map, and
is the operator guide.
Those files describe the same helper contract as this installed package
entrypoint rather than defining a second logic set.
For package inventory, protocol details, and helper-script behavior, rely on the files that ship inside the package itself:
references/file-contracts.md
references/operation-playbooks.md
references/package-support-policy.md
Package Facts
<!-- RecallLoom metadata sync start: package-metadata -->
- package version:
- protocol version:
- supported protocol versions:
<!-- RecallLoom metadata sync end: package-metadata -->
Runtime Assumptions
<!-- RecallLoom metadata sync start: runtime-assumptions -->
- Python 3.10 or newer
- supported workspace languages:
- supported bridge targets:
.github/copilot-instructions.md
<!-- RecallLoom metadata sync end: runtime-assumptions -->
Package Support Gate
RecallLoom package support is separate from project sidecar protocol compatibility.
- Helpers MUST perform the package-support check and MUST NOT write support state into project .
- If support is , mutating helpers MUST block while diagnostic and read-only helpers MAY continue.
- If support is , only diagnostic helpers SHOULD continue.
- If support is , diagnostic and read-only actions MAY continue, but mutating actions MUST block until support can be verified.
- Blocked actions MUST return the shared failure contract with
blocked_reason: package_support_blocked
and a object. See references/package-support-policy.md
.
Write Protocol Red Lines
- Managed sidecar writes MUST use helper scripts. Do not bypass them with blind file replacement, blind patching, or hand-built sidecar files.
- Daily-log writes MUST use
append_daily_log_entry.py
or dispatcher . Do not handwrite markers.
- Overwrite-style managed files MUST use revision-aware helper commits. Do not handwrite markers.
- and MUST NOT be hand-edited during normal operation.
- Protocol daily-log counters are file-local: is within one daily log and canonical is . Do not treat either as globally unique.
- Keep
state.json.daily_logs.entry_count
as ; it means the entry marker count in the latest active daily log, not a global cumulative count.
- If a helper write fails, diagnose, fix, retry, then surface the helper failure contract if it still cannot complete.
- Manual repair is allowed only for explicit damaged-sidecar repair; repair marker and state cursor fields as one consistency set, then rerun .
When To Use It
Use RecallLoom when you need to:
- continue an existing project after a pause
- restore project context from maintained files
- maintain current-state project memory
- record meaningful milestone progress
- reduce context drift across sessions or tools
Typical triggers include:
- continue this project
- restore project context
- pick up where we left off
- rl-init
- update the project memory
- record today’s progress
- prepare a clean next-step handoff inside the maintained project files
First Attach Behavior
On first explicit invocation in a project, RecallLoom should not assume the workspace is already initialized.
The correct flow is:
- detect whether a valid RecallLoom sidecar already exists
- if it exists, continue normally without making initialization into extra ceremony
- if it does not exist, explain that the project is not initialized yet and ask whether initialization should be performed
- if the user explicitly confirms, or directly says , run the standard initialization action
- if the environment cannot provide Python , stop with a blocked runtime result instead of hand-building a sidecar
SHOULD mean: initialize the sidecar, validate the workspace, and return next recommended actions. Treat it as a stable high-level action name even when the host does not expose native slash commands.
Current Action Surface
For the current package line, the stable operator-facing wrapper targets are:
is the primary operator-friendly first-attach action name.
The others are operator-facing stable action names that can be interpreted by the host agent or mapped into native custom commands when the host supports that surface.
remains the canonical dispatcher/helper action label for bridge work, but this package line does not promise a universal native wrapper or deterministic first-hop routing for that label.
Natural language remains the default public phrasing for these actions.
The dispatcher command surface also includes
,
,
, and
sync-current-state-after-append
.
Use
for current-state snapshots,
for milestone logging,
write --type ... --source-file <prepared-file> --dry-run
or
write --type ... --stdin --dry-run
before typed managed-file writes, and
sync-current-state-after-append --stdin --input-format json
only after preflight allows
.
These dispatcher additions are optional for existing
projects and do not change sidecar protocol
.
Native wrappers for
,
,
, and
are convenience entrypoints only. They must delegate to the same dispatcher and
must not replace natural-language restore requests, bypass helpers, or create a
host-specific product logic copy.
Initialized-Project Restore Contract
When a host or agent sees a generic initialized-project restore request:
- check for a valid RecallLoom sidecar before broad skill fan-out
- if the sidecar is valid, route into the normal RecallLoom fast path
- let broader memory or workflow systems participate only when the sidecar is missing, conflicting, clearly insufficient, or the user explicitly asks for deeper review
For the current package line,
is the single stable operator-facing action name for that initialized-project restore checkpoint.
Natural-language restore requests are still the primary public path.
Do not invent a manual sidecar fallback or a host-local restore alias that is not backed by the package contract.
Public Interaction Rules
RecallLoom should default to user task language, not implementation language.
- Prefer “initialize”, “restore”, “import existing project reality”, “continue”, and “record progress”.
- Do not lead with helper names, section keys, or the label unless the user is explicitly doing operator/debug work.
- Keep the first response result-first and action-light: one clear next move is better than exposing routing details.
- Do not invent a manual sidecar fallback when runtime requirements are missing; surface the blocked state and stop.
- This is not hand-building a sidecar; it is the packaged restore and helper contract.
Fast And Deep Paths
RecallLoom should treat fast path as the default interaction mode.
- Fast path: smallest trustworthy source set, shortest interaction, lowest interruption cost.
- Deep path: only when sources conflict, source coverage is insufficient, risk is too high for a direct recommendation, or the user explicitly asks for deeper review.
- Host-memory inputs remain opt-in and hint-only; their presence should bias the agent toward explicit review instead of silent promotion.
Resume mode selection:
- Use ambient or when the next agent needs the normal tiered read-plan guidance before deciding what to read.
- Use when current-state orientation is enough and the next safe move can be chosen from plus .
- Use when stable framing, source-of-truth routing, or project-local guidance is needed before action.
- Keep daily-log evidence on demand through ; fast and full resume modes should not expand into daily logs by default.
Core File Model
RecallLoom uses three primary memory layers:
STORAGE_ROOT/context_brief.md
: stable project framing
STORAGE_ROOT/rolling_summary.md
: overwrite-style current-state snapshot
STORAGE_ROOT/daily_logs/YYYY-MM-DD.md
: append-only milestone evidence
- : machine-readable workspace settings
- : machine-readable sidecar state for concurrency-aware helpers
STORAGE_ROOT/update_protocol.md
: recommended project-local override layer for read and write behavior
File responsibilities in one sentence:
- explains what this project is and how it should be approached.
- explains what is true right now.
- explain what happened at milestone level.
- keeps storage and language settings stable.
- tracks workspace revision and helper-visible sidecar state.
- , when present, can narrow or strengthen the default read/write rules for this specific project.
is either
PROJECT_ROOT/.recallloom/
or
. Exactly one valid storage root MAY exist; if both exist, stop instead of guessing.
Machine-readable markers, not heading labels, are the normative file contract. Protocol
supports workspace languages
and
. See
references/file-contracts.md
.
Minimum Cold-Start Flow
- Find the project root.
- Read .
- Read .
- Read
STORAGE_ROOT/rolling_summary.md
.
- If
STORAGE_ROOT/update_protocol.md
exists, surface it before expanding beyond the minimum continuity set.
- Read
STORAGE_ROOT/context_brief.md
only when the current task needs framing, scope, source-of-truth, or phase context that the summary does not already cover.
- Read the latest active daily log only when milestone evidence, workday judgment, or external-writer reconciliation requires it.
- Run a quick freshness check before trusting older context or before a major write.
Cold start should restore and judge first.
It should not automatically continue
or execute project work just because continuity files were read.
See
references/operation-playbooks.md
for the full flow.
Current Read-Side Helpers
Three read-side helpers matter here:
preflight_context_check.py
: revision-aware freshness review before formal writes; returns handoff-first digests, suggested read targets, write-tier guidance, and trust/drift state.
summarize_continuity_status.py
: ambient continuity status surface on the same freshness baseline; returns the same digest family plus shared workday-state and trust/drift guidance.
- : read-only continuity recall surface; returns answer-first recall with , supporting citations, and a risk/freshness note. It also returns hits, token estimate, budget hint, freshness/conflict state, trust/drift state, an output variant label, and override review targets. Daily-log citations include explicit values, current-state files win ties, and the context window stays bounded.
All attach-safe continuity text returned through these read-side surfaces is expected to respect the shared attached-text scan rules.
Minimum Write Rules
- Before choosing a write target, read
STORAGE_ROOT/update_protocol.md
if it exists.
- changes usually target .
- changes usually target .
- usually targets the daily log.
- Do not update context files for trivial reads or minor edits with no durable change.
Default exits before any write should stay explicit:
- is a normal successful result
- updates
- appends to the daily log
- and stop automatic writes rather than guessing
Read-side trust notes:
- stays in helper JSON, not in protocol
continuity_drift_risk_level
is a review signal, not proof that the sidecar is damaged
- helps hosts route low-risk read vs review-first vs write-after-preflight flows
Project-local overrides MAY narrow read order, write order, or archive behavior, but they do not replace the core file contract.
Agent Layered Write Judgment
Before writing continuity content, the agent should make the layer decision itself. Helpers can provide safe write context and static write-tier guidance, but they must not replace agent judgment about what the content means.
Use this quick check before editing managed files:
- Is there a new durable fact, or is the right result?
- If writing is needed, is the main content , , or ?
- Does the event span multiple layers, so it needs a ?
- Is the same fact already present, so the right action is merge instead of duplicate?
- Is the layer uncertain enough to or rather than guess?
Layer defaults:
- : long-lived workflow rules, source-of-truth routing, project boundaries, or recovery facts. Default target: .
- : what is true now, including current phase, active risks, active judgments, and next steps. Default target: .
- : completed validations, approvals, releases, accepted decisions, or other durable evidence. Default target: daily log.
- , , and are valid outcomes when nothing durable changed, the discussion is unstable, or the boundary needs explicit approval.
When more than one layer is valid, split different facts across layers and do not duplicate the same sentence.
For the detailed rules, conflict order, self-review template, and anonymized calibration cases, see
references/operation-playbooks.md
.
For protocol
,
is a human-reviewed override layer; helpers surface it but do not automatically execute its natural-language rules.
RecallLoom prefers the smallest valid write set. The agent decides what should change and prepares content; helpers decide whether the write is still safe to apply.
When generating workspace files, prefer the user's workspace language when it is supported by protocol
(
,
).
When Not To Update Context
Do not update context files just because:
- you performed a cold start
- you answered a short question with no durable project change
- you explored without reaching a stable conclusion
- you made wording-only edits
The protocol is designed to reduce noise, not to turn every session into documentation work.
Profiles
RecallLoom provides four profiles:
profiles/general-project-continuity.md
profiles/research-writing.md
profiles/product-doc-collaboration.md
profiles/software-project-coordination.md
Profiles refine emphasis, evidence handling, and drift risk. Use
general-project-continuity.md
by default; switch to a specialized profile only when the project shape is a high-confidence match.
What RecallLoom Does Not Try To Be
RecallLoom does not try to be:
- a general-purpose memory server
- a full agent execution runtime
- a replacement for platform-specific instruction files
- a heavy autonomous coding framework
It is the project continuity layer, not the whole agent stack.
Where To Read More
references/file-contracts.md
references/operation-playbooks.md
references/anti-patterns.md
License
This package is released under Apache License 2.0.