Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Session history system for OpenClaw — persistent, browsable, resumable chat sessions with SQLite index, archive/restore, migration, paginated UI, and chat dr...
Session history system for OpenClaw — persistent, browsable, resumable chat sessions with SQLite index, archive/restore, migration, paginated UI, and chat dr...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Transforms OpenClaw's single-slot session model into a multi-session history system with SQLite indexing, archive/restore, and full dashboard UI.
~/.openclaw/agents/{agentId}/sessions/ ├── sessions.json # routing table (unchanged) ├── history.db # SQLite index (auto-created) ├── {activeSessionId}.jsonl # active transcript └── archive/ └── {sessionId}.jsonl # archived transcripts Lifecycle: On /new or session reset → old transcript moves to archive/, metadata indexed in SQLite On archive (from UI) → session deactivated, transcript archived, indexed, removed from store On resume → transcript moves back from archive/, SQLite status flips to active Migration auto-runs on first access: indexes all orphaned .jsonl files
FileReferencePurposesrc/config/sessions/history-db.tsreferences/backend-history-db.ts.txtSQLite CRUD operationssrc/config/sessions/history-migration.tsreferences/backend-history-migration.ts.txtOne-time migration + initHistoryDbWithMigrationsrc/gateway/session-archive.tsreferences/backend-session-archive.ts.txtArchive/restore logic
FileReferencePurposesrc/gateway/protocol/schema/sessions.tsreferences/backend-protocol-schemas.ts.txtTypeBox schemas for new RPCssrc/gateway/server-methods/sessions.tsreferences/backend-rpc-handlers.ts.txt5 RPC handler implementations
FileReferencePurposeui/src/ui/controllers/sessions.tsreferences/frontend-controllers-sessions.ts.txtFull controller with archived session CRUD + paginationui/src/ui/views/sessions.tsreferences/frontend-views-sessions.ts.txtFull view with Session History section, Archive button, paginationui/src/ui/app-view-state.tsreferences/frontend-state-changes.txtState + app.ts + app-render.ts + app-chat.ts + app-settings.ts + app-render.helpers.ts wiring
See references/INSTALL.md for step-by-step instructions.
MethodParamsPurposesessions.archivekeyArchive active session — deactivates, moves transcript, indexes in SQLite, removes from storesessions.archivedagentId?, limit?, offset?, search?, status?List archived sessions with pagination and searchsessions.resumesessionId, agentId?Restore archived session to activesessions.renamesessionId, displayName, agentId?Update session display namesessions.deleteArchivedsessionId, agentId?, deleteTranscript?Delete archived session + optional transcript
Active Sessions grid — with Archive button (hidden for Main Session), History, Delete Session History section — archived sessions with search, Resume/Rename/Delete buttons Pagination — both sections have 10/20/25 page-size dropdown + Prev/Next
Filters out cron/subagent/openai sessions (only user-facing sessions shown) "Recent Sessions" <optgroup> with 10 most recent archived sessions "📋 View All Sessions" link navigates to Sessions tab Selecting an archived session auto-resumes it
SQLite over JSON: Supports search, pagination, and indexing without loading everything into memory Server-side pagination for archives: Pass limit/offset to sessions.archived RPC Client-side pagination for live sessions: Slice the already-loaded array sessionId-based dropdown values: Archived sessions all share the same sessionKey (agent:main:main), so the dropdown uses __archived__:{sessionId} as the option value sessions.archive reuses sessions.delete param schema: Both need just { key }
RPC handler signature: Must use ({ params, respond }) destructuring, not (request, respond) assertValidParams: Takes 4 args: (params, validator, "method.name", respond) Sessions directory: Use resolveSessionTranscriptsDirForAgent(agentId) — NOT resolveGatewaySessionStoreTarget(config) Pagination on every load: All loadArchivedSessions calls must pass limit and offset Page reset: Changing page size or search query must reset page to 1 Archived session dropdown filtering: Filter by sessionId, not sessionKey (all archived sessions share the same sessionKey)
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.