"CatchMe: Make Your AI Agents Truly Personal"
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<p align="right"> <a href="assets/readme/READMEzh.md">中文</a> · <a href="assets/readme/READMEja.md">日本語</a> · <a href="assets/readme/README_es.md">Español</a> · <b>English</b> </p>
<p align="center"> <img src="assets/catchme-logo.png" width="360" alt="CatchMe Logo"/> </p>
<h1 align="center">CatchMe: Make Your AI Agents Truly Personal</h1>
<p align="center"> <b>Capture Your Entire Digital Footprint: Lightweight & Vectorless & Powerful.</b> </p>
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue?style=flat" alt="License"></a> <img src="https://img.shields.io/badge/Python-%E2%89%A53.11-3776AB?style=flat&logo=python&logoColor=white" alt="Python"> <img src="https://img.shields.io/badge/Platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey?style=flat" alt="Platform"> <a href="https://hkuds.github.io/CatchMe"><img src="https://img.shields.io/badge/Blog-online-orange?style=flat" alt="Blog"></a> <img src="https://img.shields.io/badge/Report-coming%20soon-lightgrey?style=flat" alt="Report"> <br> <a href="./COMMUNICATION.md"><img src="https://img.shields.io/badge/Feishu-Group-E9DBFC?style=flat-square&logo=feishu&logoColor=white" alt="Feishu"></a> <a href="./COMMUNICATION.md"><img src="https://img.shields.io/badge/WeChat-Group-C5EAB4?style=flat-square&logo=wechat&logoColor=white" alt="WeChat"></a> <a href="https://discord.gg/2vDYc2w5"><img src="https://img.shields.io/badge/Discord-Join-7289DA?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a> </p>
<p align="center"> <a href="#-key-features">Features</a> · <a href="#%EF%B8%8F-how-it-works">How It Works</a> · <a href="#-llm-configuration">LLM Config</a> · <a href="#-get-started">Get Started</a> · <a href="#-cost--efficiency">Cost</a> · <a href="#-community">Community</a> </p>
<p align="center"><i>「 <b>Just do your thing. CatchMe captures everything else — stored locally to ensure privacy and security. </b> 」</i></p>
<p align="center"> <img src="assets/terminal_demo.svg" alt="CatchMe Terminal Demo"/> </p>
🦞 Makes Your Agents Truly Personal. CatchMe는 CLI 에이전트(OpenClaw, NanoBot, Claude, Cursor 등)를 위한 에이전트 호환 스킬로 제공됩니다. CatchMe를 독립적으로 실행하세요. 에이전트는 CLI 명령어를 통해서만 메모리를 조회합니다. ##
<table width="100%"> <tr> <td align="center" width="25%" valign="top"> <img src="assets/usecasecoding.png" height="150" alt="Coding"/><br> <h3>💻 Personal Coding Assistant</h3> <b><i>"What was I coding in Claude Code today?"</i></b><br><br> <div align="left"> • Code session replay<br> • Recall your edited files<br> • Trace what you typed </div> </td> <td align="center" width="25%" valign="top"> <img src="assets/usecaseresearch.png" height="150" alt="Research"/><br> <h3>🔍 Personal Deep Research</h3> <b><i>"What was I reading about AI yesterday?"</i></b><br><br> <div align="left"> • Web/PDF viewed<br> • Search queries typed<br> • Reading info tracked </div> </td> <td align="center" width="25%" valign="top"> <img src="assets/usecasefiles.png" height="150" alt="Files"/><br> <h3>📁 Personal Files Manager</h3> <b><i>"Which files did I change today?"</i></b><br><br> <div align="left"> • File changes tracked<br> • Docs accessed<br> • Edits reviewed </div> </td> <td align="center" width="25%" valign="top"> <img src="assets/usecasedigital_life.png" height="150" alt="Digital Life"/><br> <h3>🧩 Digital Life Overview</h3> <b><i>"How did I spend my afternoon?"</i></b><br><br> <div align="left"> • App usage tracked<br> • Workflows replayed<br> • Activities recalled </div> </td> </tr> </table>
<p align="center"> <img src="assets/web.png" width="100%" alt="CatchMe Web Dashboard"/> </p>
CatchMe transforms raw digital activity into structured, searchable memory through three concurrent stages:
Capture. Six background recorders silently track your activity. They monitor window focus, keystrokes, mouse movement, screenshots, clipboard, and notifications.
Index. Raw events auto-organize into a Hierarchical Activity Tree: Day → Session → App → Location → Action. Each node gets LLM-generated summaries. Fast, meaningful recall without vector embeddings.
Retrieve. You ask a question. The LLM traverses your memory tree top-down. It selects relevant nodes and inspects raw data like screenshots or keystrokes. Then synthesizes a precise answer.
<p align="center"> <img src="assets/catchme-pipe.png" width="680" alt="CatchMe Pipeline: Capturing → Indexing → Retrieving"/> </p>
The Activity Tree is CatchMe's memory core. It provides structured, multi-level views of your digital life. Browse high-level summaries or dive into granular details.
<p align="center"> <img src="assets/fig1activitytree.png" width="800" alt="Hierarchical Activity Tree Structure"/> </p>
CatchMe skips traditional vector search. Instead, the LLM directly navigates your Activity Tree. This enables complex, cross-day reasoning. Precise evidence gathering from raw activity history.
<p align="center"> <img src="assets/fig2_retrieval.png" width="800" alt="Tree-based Retrieval Process"/> </p>
📖 Learn More: Detailed design insights and technical deep-dive available in our blog.
• 100% Local Storage: All raw data (screenshots, keystrokes, activity trees) stays in ~/data/ and never leaves your machine.
• Offline-First Options: Local LLMs (Ollama, vLLM, LM Studio) enable fully offline operation without any cloud dependency.
• ⚠️Cloud Provider Caution: If used, cloud APIs will be used to summarize your daily activities. Untrusted endpoints may expose private data — review data policies of your provider carefully.
• Multimodal support: Your model should be able to handle text + images.
• Context window: Make sure the context window of your model exceed max_tokens limits in config.json.
• Cost control: For forced cost control, set limits via llm.maxcalls or increase filter.mousecluster_gap to reduce summarization frequency.
CatchMe requires an LLM for background summarization and intelligent retrieval. Use catchme init (in <a href="#-get-started">Get Started</a>)for guided setup or follow the manual configuration steps below.
For cloud API services:
{
"llm": {
"provider": "openrouter",
"api_key": "sk-or-...",
"api_url": null,
"model": "google/gemini-3-flash-preview"
}
}
For local/offline operation:
{
"llm": {
"provider": "ollama",
"api_key": null,
"api_url": null,
"model": "gemma3:4b"
}
}
<details> <summary><b>Supported LLM Providers</b></summary>
| Provider | Config name | Default API URL | Get Key | ||
|---|---|---|---|---|---|
| OpenRouter (gateway) | openrouter |
https://openrouter.ai/api/v1 |
openrouter.ai/keys | ||
| AiHubMix (gateway) | aihubmix |
https://aihubmix.com/v1 |
aihubmix.com | ||
| SiliconFlow (gateway) | siliconflow |
https://api.siliconflow.cn/v1 |
cloud.siliconflow.cn | ||
| OpenAI | openai |
https://api.openai.com/v1 |
platform.openai.com | ||
| Anthropic | anthropic |
https://api.anthropic.com/v1 |
console.anthropic.com | ||
| DeepSeek | deepseek |
https://api.deepseek.com/v1 |
platform.deepseek.com | ||
| Gemini | gemini |
https://generativelanguage.googleapis.com/v1beta |
aistudio.google.com | ||
| Groq | groq |
https://api.groq.com/openai/v1 |
console.groq.com | ||
| Mistral | mistral |
https://api.mistral.ai/v1 |
console.mistral.ai | ||
| Moonshot / Kimi | moonshot |
https://api.moonshot.ai/v1 |
platform.moonshot.cn | ||
| MiniMax | minimax |
https://api.minimax.io/v1 |
platform.minimaxi.com | ||
| Zhipu AI (GLM) | zhipu |
https://open.bigmodel.cn/api/paas/v4 |
open.bigmodel.cn | ||
| DashScope (Qwen) | dashscope |
https://dashscope.aliyuncs.com/compatible-mode/v1 |
dashscope.console.aliyun.com | ||
| VolcEngine | volcengine |
https://ark.cn-beijing.volces.com/api/v3 |
console.volcengine.com | ||
| VolcEngine Coding | volcenginecodingplan |
https://ark.cn-beijing.volces.com/api/coding/v3 |
console.volcengine.com | ||
| BytePlus | byteplus |
`https://ark.ap-southeast.bytepluses.com/api/ |