Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
The only memory skill that watches on its own. An agent skill from gavdalf/total-recall.
$ npx skills add gavdalf/total-recall --skill total-recall -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gavdalf/total-recall total-recall --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .claude/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gavdalf/total-recall --skill total-recall -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gavdalf/total-recall total-recall --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .agents/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gavdalf/total-recall --skill total-recall -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gavdalf/total-recall total-recall --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .cursor/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gavdalf/total-recall --skill total-recall -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gavdalf/total-recall total-recall --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .gemini/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gavdalf/total-recall total-recallInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gavdalf/total-recall --skill total-recall -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .github/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gavdalf/total-recall --skill total-recall -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gavdalf/total-recall total-recall --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "total-recall" agent skill from https://github.com/gavdalf/total-recall/tree/main into .opencode/skills/total-recall/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "total-recall", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
total-recallThe only memory skill that watches on its own. An agent skill from gavdalf/total-recall.
Total Recall is an agent skill from gavdalf/total-recall. The only memory skill that watches on its own. No database. No vectors. No manual saves. Just an LLM observer that compresses your conversations into prioritised notes, consolidates when they grow, and recovers anything missed. Five layers of redundancy, zero maintenance. ~$0.00/month (using free-tier models). While other memory skills ask you to remember to remember, this one just pays attention.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 54 other files, including scripts (for example `CHANGELOG.md`, `CODE_OF_CONDUCT.md` and `CONTRIBUTING.md`).
It works with Linux. The repository describes itself as: Total Recall — Autonomous Agent Memory. The only memory system that watches on its own. Five-layer observational memory for OpenClaw agents. ~$0.10/month. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 437ab36. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
bashaptFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
openrouter.aiapi.groq.comAlso links to:
gavlahh.substack.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENROUTER_API_KEYLLM_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Total Recall loads about 3.6k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 1,301 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
Add to your `.env` or OpenClaw config:sudo apt install inotify-toolsAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from gavdalf/total-recall at commit 437ab36, republished under its MIT licence (© gavdalf). 1,301 words, ~3,610 tokens.
.claude/skills/total-recall/SKILL.md (or your agent's skills folder). This skill also uses 50 other files; get the full folder from GitHub.The only memory skill that watches on its own.
No database. No vectors. No manual saves. Just an LLM observer that compresses your conversations into prioritised notes, consolidates when they grow, and recovers anything missed. Five layers of redundancy, zero maintenance. ~$0.00/month (using free-tier models).
While other memory skills ask you to remember to remember, this one just pays attention.
Layer 1: Observer (cron, every 15-30 min)
↓ compresses recent messages → observations.md
Layer 2: Reflector (auto-triggered when observations > 8000 words)
↓ consolidates, removes superseded info → 40-60% reduction
Layer 3: Session Recovery (runs on every /new or /reset)
↓ catches any session the Observer missed
Layer 4: Reactive Watcher (inotify daemon, Linux only)
↓ triggers Observer after 40+ new JSONL writes, 5-min cooldown
Layer 5: Pre-compaction hook (memoryFlush)
↓ emergency capture before OpenClaw compacts contextobservations.md with priority levels (high, medium, low)clawdhub install total-recallAdd to your .env or OpenClaw config:
OPENROUTER_API_KEY=sk-or-v1-xxxxxbash skills/total-recall/scripts/setup.shThis will:
memory/, logs/, backups)Add to your agent's workspace context (e.g., MEMORY.md or system prompt):
At session startup, read `memory/observations.md` for cross-session context.Or use OpenClaw's memoryFlush.systemPrompt to inject a startup instruction.
| Platform | Observer + Reflector + Recovery | Reactive Watcher |
|---|---|---|
| Linux (Debian/Ubuntu/etc.) | Full support | With inotify-tools |
| macOS | Full support | Not available (cron-only) |
All core scripts use portable bash. stat, date, and md5 commands are handled cross-platform via _compat.sh.
All scripts read from environment variables with sensible defaults:
| Variable | Default | Description |
|---|---|---|
OPENROUTER_API_KEY | (required) | OpenRouter API key for LLM calls |
MEMORY_DIR | $OPENCLAW_WORKSPACE/memory | Where observations.md lives |
SESSIONS_DIR | ~/.openclaw/agents/main/sessions | OpenClaw session transcripts |
OBSERVER_MODEL | stepfun/step-3.5-flash:free | Primary model for compression (free) |
OBSERVER_FALLBACK_MODEL | nvidia/nemotron-3-nano-30b-a3b:free | Fallback if primary fails (free) |
OBSERVER_LOOKBACK_MIN | 15 | Minutes to look back (daytime) |
OBSERVER_MORNING_LOOKBACK_MIN | 480 | Minutes to look back (before 8am) |
OBSERVER_LINE_THRESHOLD | 40 | Lines before reactive trigger (Linux) |
OBSERVER_COOLDOWN_SECS | 300 | Cooldown between reactive triggers (Linux) |
REFLECTOR_WORD_THRESHOLD | 8000 | Words before reflector runs |
REFLECTOR_MODEL | nvidia/nemotron-3-super-120b-a12b:free | Model for consolidating observations (free) |
REFLECTOR_FALLBACK_MODEL | openrouter/hunter-alpha | Fallback if reflector model fails (free) |
OPENCLAW_WORKSPACE | ~/your-workspace | Workspace root |
Total Recall uses any OpenAI-compatible chat completion API. Switch providers by setting environment variables:
| Variable | Default | Description |
|---|---|---|
LLM_BASE_URL | https://openrouter.ai/api/v1 | API endpoint |
LLM_API_KEY | falls back to OPENROUTER_API_KEY | API key |
LLM_MODEL | deepseek/deepseek-v3.2 | Model to use |
# OpenRouter (default)
export OPENROUTER_API_KEY="your-key"
# Ollama (local)
export LLM_BASE_URL="http://localhost:11434/v1"
export LLM_API_KEY="ollama"
export LLM_MODEL="llama3.1:8b"
# Groq
export LLM_BASE_URL="https://api.groq.com/openai/v1"
export LLM_API_KEY="your-groq-key"
export LLM_MODEL="llama-3.3-70b-versatile"memory/
observations.md # The main observation log (loaded at startup)
observation-backups/ # Reflector backups (last 10 kept)
.observer-last-run # Timestamp of last observer run
.observer-last-hash # Dedup hash of last processed messages
logs/
observer.log
reflector.log
session-recovery.log
observer-watcher.logThe setup script creates these OpenClaw cron jobs:
| Job | Schedule | Description |
|---|---|---|
memory-observer | Every 15 min | Compress recent conversation |
memory-reflector | Hourly | Consolidate if observations are large |
The reactive watcher uses inotifywait to detect session activity and trigger the observer faster than cron alone. Requires Linux with inotify-tools installed.
# Install inotify-tools (Debian/Ubuntu)
sudo apt install inotify-tools
# Check watcher status
systemctl --user status total-recall-watcher
# View logs
journalctl --user -u total-recall-watcher -fUsing the default free models via OpenRouter:
The scripts include defensive handling for both .content and .reasoning fields in API responses. While most models return content in the standard .content field, the fallback to .reasoning ensures compatibility with models that may use different response formats.
observations.md/new or /resetinotifywait to monitor session directoryThe observer and reflector system prompts are in prompts/:
prompts/observer-system.txt — controls how conversations are compressedprompts/reflector-system.txt — controls how observations are consolidatedEdit these to match your agent's personality and priorities.
The Dream Cycle is an optional nightly agent that runs after hours to consolidate observations.md. It archives stale items and adds semantic hooks so nothing useful is actually lost. Context stays lean; everything remains findable.
Multi-Hook Retrieval — 4-5 alternative search phrasings per archived item. Searches using different words than the original still find the memory.
Confidence Scoring — every observation gets a confidence score (0.0-1.0) and source type (explicit, implicit, inference, weak, uncertain). High-confidence items are preserved longer; low-confidence items are archived sooner.
Memory Type System — 7 types with per-type TTLs: event (14d), fact (90d), preference (180d), goal (365d), habit (365d), rule (never), context (30d). Embedded as invisible HTML metadata comments in observations.md.
Observation Chunking — clusters of 3+ related observations are compressed into single summary entries. Source observations are archived; a chunk hook replaces them. Achieves up to 75% token reduction.
Importance Decay — per-type daily decay applied to importance scores before each archival decision. Items that decay below the archive threshold are queued for removal. Rates: event (-0.5/day), fact (-0.1/day), preference (-0.02/day), rule/habit/goal (no decay).
Pattern Promotion — scans recent dream logs for recurring themes (3+ occurrences across 3+ separate days). Writes promotion proposals to memory/dream-staging/ for human review. Use staging-review.sh to list, show, approve, or reject proposals. The context type is never promoted automatically.
Run bash skills/total-recall/scripts/setup.sh — creates Dream Cycle directories automatically.
Add the nightly cron job as a full agent turn:
# Dream Cycle — nightly (3am recommended; adjust to your timezone)
# The dream cycle runs as a full agent turn — NOT as a direct bash call.
# dream-cycle.sh is a file operations helper called BY the agent, not the entry point.
#
# 0 3 * * * bash -c 'source ~/.openclaw/shared/secrets/openclaw-secrets.env \
# && openclaw agent --agent main \
# --message "Run the Total Recall Dream Cycle. Follow the instructions in \
# $WORKSPACE/skills/total-recall/prompts/dream-cycle-prompt.md exactly. \
# Use READ_ONLY_MODE=false and DREAM_PHASE=1." \
# --json >> $WORKSPACE/logs/dream-cycle.log 2>&1'Configure your cron agent using prompts/dream-cycle-prompt.md as the system prompt. Recommended models: Claude Sonnet for the Dreamer (analysis + decisions), DeepSeek v3.2 for the Observer (cheap, fast).
Start with READ_ONLY_MODE=true for the first few nights. Check memory/dream-logs/ after each run to verify what it would have archived.
Switch to READ_ONLY_MODE=false once satisfied.
| Variable | Default | Description |
|---|---|---|
DREAM_TOKEN_TARGET | 8000 | Token target for observations.md after consolidation |
READ_ONLY_MODE | false | Set true for dry-run analysis without writes |
| File | Description |
|---|---|
scripts/dream-cycle.sh | Shell helper called by the agent (not a standalone runner): preflight, archive, update-observations, write-log, write-metrics, validate, rollback |
prompts/dream-cycle-prompt.md | Agent prompt for the nightly Dream Cycle run |
dream-cycle/README.md | Dream Cycle quick reference |
schemas/observation-format.md | Extended observation metadata format |
memory/
archive/
observations/ # Archived items (one .md file per night)
chunks/ # Chunked observation groups
dream-logs/ # Nightly run reports
dream-staging/ # Pattern promotion proposals awaiting human review
.dream-backups/ # Pre-run safety backups
research/
dream-cycle-metrics/
daily/ # JSON metrics per nightObserver not running?
logs/observer.log for errorsOPENROUTER_API_KEY is set and validcrontab -lObservations not being loaded at session start?
memory/observations.mdMEMORY_DIR points to the right locationReactive watcher not triggering (Linux)?
systemctl --user status total-recall-watcherinotify-tools is installed: which inotifywaitjournalctl --user -u total-recall-watcher -fDream Cycle archiving too aggressively?
READ_ONLY_MODE=true and review dream logs before going liveDREAM_TOKEN_TARGET upward to archive less per runDream Cycle not archiving enough?
DREAM_TOKEN_TARGET to trigger more aggressive consolidationThis system is inspired by how human memory works during sleep — the hippocampus (observer) captures experiences, and during sleep consolidation (reflector), important memories are strengthened while noise is discarded.
Read more: Your AI Has an Attention Problem
"Get your ass to Mars." — Well, get your agent's memory to work.
© gavdalf, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 50 other files (scripts) in the repository root of gavdalf/total-recall.
Open the folder on GitHubat commit 437ab36
Total Recall next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Total Recall this skillgavdalf/total-recall | 274 | — | ~3.6k | Automated safety check: Notes | MIT | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Model Usageopenclaw/openclaw | 392k | 1 repos | ~637 | Automated safety check: Pass | MIT | |
| Engine Whats Newflutter/flutter | 179k | — | ~978 | Automated safety check: Pass | BSD-3-Clause | |
| Openclaw Live Updateropenclaw/openclaw | 392k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Upgrade Browserflutter/flutter | 179k | — | ~1.1k | Automated safety check: Pass | BSD-3-Clause |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
openclaw/openclaw
Summarize CodexBar local cost logs by model for Codex or Claude, including current or full breakdowns.
flutter/flutter
Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).
openclaw/openclaw
Maintain the canonical live OpenClaw main checkout, macOS LaunchAgent-managed Gateway, local macOS app, exact-head main CI, and recurring full release validation.
flutter/flutter
Upgrade browser versions (Chrome or Firefox) in the Flutter Web Engine and/or Framework tests.
Cybereason-Public/owLSM
Comprehensive guide for implementing NetworkPolicy, PodSecurityPolicy, RBAC, and Pod Security Standards in Kubernetes.
Works with
The only memory skill that watches on its own. An agent skill from gavdalf/total-recall. Total Recall is an agent skill from gavdalf/total-recall. The only memory skill that watches on its own.
Run `npx skills add gavdalf/total-recall --skill total-recall -a claude-code`. Or copy the skill folder (the gavdalf/total-recall repository) into .claude/skills/total-recall in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gavdalf/total-recall --skill total-recall -a codex`. Or copy the skill folder (the gavdalf/total-recall repository) into .agents/skills/total-recall in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gavdalf/total-recall --skill total-recall -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/total-recall, .gemini/skills/total-recall, .github/skills/total-recall and .opencode/skills/total-recall in your project.
Going by SKILL.md and its folder, Total Recall needs the command-line tools its instructions call (bash and apt) and credentials named OPENROUTER_API_KEY and LLM_API_KEY. Our summary lists: A credential in OPENROUTER_API_KEY; A credential in LLM_API_KEY.
SKILL.md names 3 domains. In commands or code: openrouter.ai and api.groq.com; the agent is likely to contact these when it follows the instructions. As links in the text: gavlahh.substack.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; runs commands with sudo), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Total Recall is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Total Recall: Configuring Horizon (coollabsio/coolify, 63k stars), Model Usage (openclaw/openclaw, 392k stars), Engine Whats New (flutter/flutter, 179k stars) and Openclaw Live Updater (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gavdalf (a GitHub user) maintains it in gavdalf/total-recall, which has 274 GitHub stars. The repository was last updated on April 1, 2026.
Source: gavdalf/total-recall on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.