clipboard-memory
Recall what the user copied on this Mac via the local clipmem archive — text, commands, URLs, file paths, HTML, images, PDFs. Triggers on requests like "what was that command I copied?", "the URL I copied from Safari", "find that snippet before I restarted", or any paraphrase involving copy, paste, or clipboard. Offers ranked recall, chronological timeline, lexical / FTS search, raw-byte export for binary content, cursor pagination, and filters by app, kind, time window, and content shape. Use before reaching for generic web or repo search whenever the user is trying to recover something they previously had on the clipboard.
Rank
62
Safety
84
Downloads
1.8k
Updated
Oct 10, 2026
Version
1.3.9
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.8K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.3.9release · observed Sep 13, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17c3xv8wvvzzbj84z9vcj498n83gnkp:clipboard-memory- Install using `clawhub skill install s17c3xv8wvvzzbj84z9vcj498n83gnkp:clipboard-memory` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/tristanmanchester/clipboard-memory before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-tristanmanchester-clipboard-memory/snapshot"
Documentation
CLAWHUB
149,146 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: clipboard-memory
description: Recall what the user copied on this Mac via the local clipmem archive — text, commands, URLs, file paths, HTML, images, PDFs. Triggers on requests like "what was that command I copied?", "the URL I copied from Safari", "find that snippet before I restarted", or any paraphrase involving copy, paste, or clipboard. Offers ranked recall, chronological timeline, lexical / FTS search, raw-byte export for binary content, cursor pagination, and filters by app, kind, time window, and content shape. Use before reaching for generic web or repo search whenever the user is trying to recover something they previously had on the clipboard.
license: MIT
metadata: {"openclaw":{"emoji":"📋","os":["darwin"],"requires":{"bins":["clipmem"]},"install":[{"id":"brew","kind":"brew","label":"Install clipmem (brew)","bins":["clipmem"],"formula":"clipmem","tap":"tristanmanchester/tap"},{"id":"cargo","kind":"cargo","label":"Install clipmem (cargo)","bins":["clipmem"],"package":"clipmem"}],"version":"1.3.9"}}
---
Recall what the user copied on this Mac before reaching for generic search. `clipmem` maintains a local, privacy-preserving SQLite archive of every clipboard state macOS emits, and exposes a JSON-first CLI built for agents. This package is installed by `clipmem agents openclaw install-skill`; the canonical cross-agent source lives under `skills/clipboard-memory/`.
## Use this skill when
The user asks things like:
- "what was that command I copied?"
- "show me the URL I copied from Safari earlier"
- "find that snippet, path, note, or link I copied yesterday"
- "give me the exact text I copied, not a summary"
- "what did I copy before I restarted?"
- "paste me back that SQL I was looking at"
- "get the PDF I copied last week"
- "show me everything I copied from Xcode today"
## Do not use this skill for
- web search or current-events lookups
- searching the repository or local files the user never copied
- content the user typed but never copied to the clipboard
- anything on a non-macOS machine (`clipmem` captures `NSPasteboard` only)
## Prerequisites
Before querying, confirm the setup is healthy — otherwise empty results may be a stale watcher, not a true miss:
1. Background capture must be running. `clipmem setup` is the canonical fix; Homebrew users can also use `clipmem service start`.
2. The binary `clipmem` must be on PATH with write access to `~/Library/Application Support/clipmem/clipmem.sqlite3`.
3. Run [`scripts/check-setup.sh`](scripts/check-setup.sh) once per session when results look wrong. It exits `0` on a healthy host, `1` if the watcher is stale, `2` if the binary is missing, `3` if `clipmem doctor` fails. The prose equivalent is in [references/setup-check.md](references/setup-check.md).
4. If OpenClaw cannot see the binary, run `clipmem agents openclaw doctor` and follow its remediation lines.
## Command ladder
Always pick the narrowest command that answers the question, and always pass `--format json_meta.json
{
"ownerId": "kn762fvz617r91c4h7qr9bdbp97zar1g",
"slug": "clipboard-memory",
"version": "1.3.9",
"publishedAt": 1789298560819
}references/commands.md
# Clipboard Memory — Commands Reference Full flag and subcommand reference for `clipmem`. This file is kept byte-identical across the OpenClaw-native and portable skill packages. --- ## Decision ladder Pick the narrowest command that answers the question. Always pass `--format json` (or `--format toon` for plain enumeration) when parsing programmatically. 1. `clipmem recall "<query>" --format json` — best-first ranked answer with alternatives. **Start here.** 2. `clipmem timeline --hours <N> --format json` — chronological capture events. Use when the user says "today", "yesterday", "in order", or "every time". 3. `clipmem recent --hours <N> --format json` — deduplicated recent snapshots. Use for "recent unique things". 4. `clipmem search "<query>" --format json` — direct lexical / FTS match. Use when you need precise substring hits. 5. `clipmem get <snapshot_id> --format json` — nested item/representation detail for a snapshot you already have. 6. `clipmem restore <snapshot_id>` — restore the full stored representation set for a snapshot back onto the macOS clipboard. 7. `clipmem export <snapshot_id> --item <n> --uti <uti> --out <path> [--force]` — raw bytes for binary/image/PDF payloads. 8. `clipmem forget <snapshot_id>` — hard-delete one snapshot and its capture history. 9. `clipmem purge --older-than <duration> [--dry-run]` — prune by `last_observed_at`. 10. `clipmem storage compact [--dry-run] --format json` — reclaim SQLite/WAL disk space without changing content. 11. `clipmem storage image-candidates --format json` — inspect image rows eligible for optimization without rewriting bytes. 12. `clipmem storage optimize-images [--dry-run] [--no-compact] [--limit N] [--format json|--progress jsonl]` — convert eligible stored images to lossless WebP and compact by default. 13. `clipmem service providers --format json` — inspect service provider availability without starting or stopping capture. 14. `clipmem service revision --format json` — read archive revision counters without probing service providers. 15. `clipmem settings show --format json` — inspect persistent capture policy. 16. `clipmem app settings show --format json` — inspect menu bar app preferences. 17. `clipmem app settings set KEY VALUE --format json` / `clear KEY --format json` — change app-local preferences and bump app preference revision. 18. `clipmem app launch-at-login show|set|clear --format json` — inspect or change the app-owned launch-at-login preference bridge. 19. `clipmem app update-check show|run|clear --format json` — inspect, run, or clear app update-check state. 20. `clipmem app quit --format json` — request the menu bar app to quit. 21. `clipmem agents context --format json` — one-call agent context: generated_at, service health, settings, app state, recent activity metadata, revision, stats, privacy guidance, and capability summary. 22. `clipmem ocr status --format json` — inspect local OCR queue and result counts. 23. `clipmem ocr candidates --format json`
references/examples.md
# Clipboard Memory — Worked Examples
Concrete input → output walkthroughs. Byte-identical across skill packages.
Each example shows the user's question, the command to run, the shape of the response, and the next step.
---
## Example 1 — "What was that URL I copied from Safari yesterday?"
The user gave a time cue (yesterday) and a source (Safari). Use `recall` with a `--prefer-recent` bias, an `--app` filter, and a generous `--hours` window.
```bash
clipmem recall "url" --prefer-recent --app safari --has-url --hours 48 --format json --limit 5
```
Response (trimmed):
```json
{
"schema_version": 2,
"command": "recall",
"best_candidate": {
"snapshot_id": 812,
"best_text": "https://developer.apple.com/documentation/appkit/nspasteboard",
"urls": ["https://developer.apple.com/documentation/appkit/nspasteboard"],
"app_name": "Safari",
"observed_at": "2026-04-16T17:45:00Z",
"why_matched": "url filter + recency bias"
},
"best_match_confidence": "high",
"alternatives": [ /* ... */ ],
"next_cursor": null
}
```
Report `best_candidate.urls[0]`. If `best_match_confidence` were `"low"`, enumerate `alternatives` instead.
---
## Example 2 — "Show me everything I copied today, in order"
The user wants chronological events, not deduplicated recent snapshots. Use `timeline` and `toon` for efficient enumeration.
```bash
clipmem timeline --hours 24 --format toon --sort asc --limit 50
```
TOON output (one row per line, tab-separated scalar fields):
```
snapshot_id observed_at app_name kind best_text
812 2026-04-17T08:02:11Z Safari url https://developer.apple.com/…
813 2026-04-17T08:04:03Z Terminal text git status
813 2026-04-17T08:11:59Z Terminal text git status
...
```
Notice snapshot `813` appears twice — `timeline` shows each capture event, not each unique snapshot. If `truncated` shows more rows exist, re-run with the last row's time as `--until` or request `--format json` and page via `--cursor`.
---
## Example 3 — "Pull the image I copied from that screenshot tool"
Images have no text projection. Use `recall` to find the snapshot, then `get` to discover the representation `uti` and byte size, then `export` to write raw bytes.
```bash
# 1. find the snapshot
clipmem recall "screenshot" --kind image --hours 72 --format json --limit 3
```
```json
{
"best_candidate": {
"snapshot_id": 901,
"kind": "image",
"best_text": null,
"total_bytes": 138402,
"app_name": "CleanShot X"
}
}
```
```bash
# 2. inspect representations to pick a uti
clipmem get 901 --format json
```
```json
{
"snapshot": {
"items": [
{
"item_index": 0,
"representations": [
{ "uti": "public.png", "size_bytes": 138402, "is_indexed": false },
{ "uti": "public.tiff", "size_bytes": 412004, "is_indexed": false }
]
}
]
}
}
```
```bash
# 3. export raw bytes
clipmem export 901 --item 0 --uti public.png --out ./clipboard.png
clipmem export 901 --item 0 --uti publreferences/json-schema.md
# Clipboard Memory — JSON Schema
Stable response shapes for `--format json`. Current `schema_version` is `2`. This file is kept byte-identical across skill packages.
Breaking changes to these fields will bump `schema_version`. Additive changes (new optional keys) are allowed within the same version.
---
## Shared envelope (`recall`, `search`, `recent`, `timeline`)
```json
{
"schema_version": 2,
"command": "recall",
"generated_at": "2026-04-17T12:34:56Z",
"applied_filters": { "hours": 24, "app": "safari" },
"truncated": false,
"next_cursor": null,
"results": [ /* rows, see below */ ]
}
```
- `schema_version` — integer. Pin to `2` for stability checks.
- `command` — echoes the subcommand.
- `generated_at` — RFC3339 timestamp when the response was produced.
- `applied_filters` — echoes the filters actually applied after argument parsing.
- `truncated` — `true` when more rows exist beyond `--limit`.
- `next_cursor` — opaque string to pass back as `--cursor` when `truncated` is `true`. `null` when there are no more rows.
- `results` — list of flattened snapshot rows.
`recall` adds three extras at the top level:
- `best_candidate` — the top-ranked row (also appears as `results[0]`).
- `why_selected` — short string explaining why `best_candidate` was picked.
- `best_match_confidence` — `"high" | "medium" | "low"`.
- `best_match_score` — float in `[0.0, 1.0]`.
- `quoted_text` — present only when `--quote` is set and usable text exists.
---
## Flattened snapshot row (in `results[]` and `best_candidate`)
Read these first; walk nested `items[].representations[]` only after `get`.
```json
{
"snapshot_id": 42,
"event_id": 1000,
"sha256": "<hex>",
"kind": "text",
"observed_at": "2026-04-17T12:00:00Z",
"first_seen_at": "2026-04-17T11:00:00Z",
"last_seen_at": "2026-04-17T12:00:00Z",
"app_name": "Terminal",
"app_bundle_id": "com.apple.Terminal",
"best_text": "git status",
"best_text_uti": "public.utf8-plain-text",
"text_fragments": [{ "representation": "public.utf8-plain-text", "text": "git status" }],
"urls": [],
"file_paths": [],
"html_text": null,
"rtf_text": null,
"ocr_text": null,
"ocr_status": null,
"text_summary": "git status",
"preview_text": "git status",
"item_count": 1,
"total_bytes": 10,
"capture_count": 3,
"score": 0.95,
"why_matched": "full phrase match",
"matched_fields": ["search_text"],
"snippet": "git status"
}
```
Fields to read first for common questions:
| Intent | Read |
|---|---|
| "what was the text" | `best_text` (fall back to `text_summary`, `preview_text`) |
| "what URL" | `urls` (array) |
| "what file / path" | `file_paths` (array) |
| "which app" | `app_name` / `app_bundle_id` |
| "when" | `observed_at`, `first_seen_at`, `last_seen_at` |
| "is this binary / image / pdf" | `kind`, presence of `best_text`, `total_bytes` |
| "why did recall pick this" | `why_matched`, `matched_fields`, `score` |
`best_text` can come from OCR for image-only snapshots. InAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/tristanmanchester/skills/clipboard-memory",
"sourceUrl": "https://clawhub.ai/tristanmanchester/skills/clipboard-memory",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T01:35:21.186Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-tristanmanchester-clipboard-memory/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-tristanmanchester-clipboard-memory/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T01:35:21.186Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.8K downloads",
"href": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceUrl": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T01:35:21.186Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.3.9",
"href": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceUrl": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-13T11:22:40.819Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-tristanmanchester-clipboard-memory/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-tristanmanchester-clipboard-memory/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.3.9",
"description": "Skill replacement and uninstall now reject unrecognized directories and symlinked paths. Uninstall removes only packaged files, preserving unrelated user files ClawHub skill publication accepts the current version's release notes after Unreleased entries are promoted for a release LaunchAgent configuration stores absolute archive and log paths. Skill discovery expands home-relative paths and respects custom OpenClaw state and Hermes home directories Refresh compatible Rust dependencies, GitHub Actions, ClawHub CLI (0.23.3), and cargo-dist (0.33.0); retain Rust 1.88 compatibility and add latest-stable CI coverage. Use Servo's HTML5 entity table for rich-text projection Package clipboard-memory skill 1.3.9 with updated health checks and service instructions Updated the ClawHub `clipboard-memory` skill package to 1.3.9 so setup guidance no longer promises an implicit clipboard capture and directs explicit current-clipboard capture through `clipmem capture-once`",
"href": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceUrl": "https://clawhub.ai/tristanmanchester/clipboard-memory",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-13T11:22:40.819Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
