Session Persistence
SkillSearchImports OpenClaw session transcripts into a local SQLite database with FTS5 full-text search, the agent never loses a message, even after context compaction or session rollover.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Session Persistence skill
What this skill tells your AI
The instructions your AI receives, as published by archieindian/openclaw-superpowers in skills/openclaw-native/session-persistence/SKILL.md and read by ahel’s review.
What it does
OpenClaw stores session data in JSONL files that are difficult to search and easy to lose track of. Session Persistence imports every message into a local SQLite database with full-text search, making the agent's entire history queryable — across all sessions, all channels, all time.
Inspired by lossless-claw's SQLite message persistence layer, which stores every message with sequence numbers, token counts, and structured message parts.
When to invoke
- Automatically every 15 minutes (cron) — incremental import of new messages
- When the agent needs to search past conversations — use
--search - After a crash or session rollover — verify all messages are persisted
- For analytics — message counts, session timelines, activity patterns
How to use
python3 persist.py --import # Import new messages from session files
python3 persist.py --import --source <dir> # Import from a specific directory
python3 persist.py --search "auth migration" # FTS5 full-text search
python3 persist.py --search "deploy" --role user # Search only user messages
python3 persist.py --recent --hours 24 # Messages from the last 24 hours
python3 persist.py --conversation <id> # Dump a full conversation
python3 persist.py --stats # Database statistics
python3 persist.py --export --format jsonl # Export back to JSONL
python3 persist.py --status # Last import summary
python3 persist.py --format json # Machine-readable output
Database schema
Stored at ~/.openclaw/lcm-db/messages.db:
conversations — id, channel, started_at, last_message_at, message_count
messages — id, conversation_id, seq, role, content, token_estimate, created_at
messages_fts — FTS5 virtual table over messages.content for fast search
import_log — id, imported_at, conversations_added, messages_added, source
Cron wakeup behaviour
Every 15 minutes:
- Scan session directory for JSONL files
- For each file, check
last_imported_seqto skip already-imported messages - Parse new messages and insert into SQLite
- Update FTS5 index
- Update import log and state
Procedure
Step 1 — Initial import
python3 persist.py --import
First run imports all existing session files. Subsequent runs are incremental — only new messages since last import.
Step 2 — Search your history
python3 persist.py --search "how did we handle the database migration"
FTS5 provides ranked results across all sessions and time periods. Results include conversation ID, timestamp, role, and content snippet.
Step 3 — Analyze patterns
python3 persist.py --stats
Shows total messages, conversations, date ranges, messages per role, and activity timeline.
Integration with other skills
- memory-dag-compactor: Can use SQLite messages as source data instead of MEMORY.md, bringing architecture closer to lossless-claw
- dag-recall: Search results feed into DAG expansion for detailed recall
- context-assembly-scorer: Uses message database to measure true coverage
State
Import tracking and database stats stored in ~/.openclaw/skill-state/session-persistence/state.yaml.
Database stored at ~/.openclaw/lcm-db/messages.db.
Fields: last_import_at, db_path, total_messages, total_conversations, import_history.
Notes
- Uses Python's built-in
sqlite3module — no external dependencies - FTS5 used when available; falls back to LIKE queries otherwise
- Idempotent: safe to re-run; tracks per-conversation sequence numbers
- Import lag: up to 15 minutes behind real-time (cron interval)
- Database is local-only — never committed to the repo
Signals
- GitHub stars
- 72
- Forks
- 14
- Last commit
- May 2026
Advanced
- Item type
- skill
- Key
session-persistence- Source
- github.com/archieindian/openclaw-superpowers
github.com/archieindian/openclaw-superpowers