docs/mintlify/docs-mintlify-mig-tmp/openclaw.mdx
OpenClaw is a self-hosted personal AI assistant that connects to your messaging apps (WhatsApp, Telegram, Discord, iMessage, etc.) and can take actions on your behalf.
With screenpipe, OpenClaw can recall what you've seen on screen, reference past conversations, and answer questions about your digital history.
<iframe width="315" height="560" src="https://www.youtube.com/embed/EJ0BTyhFtfk" title="OpenClaw + screenpipe demo" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen style={{ borderRadius: "12px", margin: "0 auto", display: "block" }} ></iframe>If OpenClaw and screenpipe run on the same machine, setup is straightforward.
Add screenpipe to your OpenClaw MCP config:
{
"mcpServers": {
"screenpipe": {
"command": "npx",
"args": ["-y", "screenpipe-mcp"]
}
}
}
Restart OpenClaw — it will now have access to your screen history, audio transcriptions, and more.
You can test the MCP server independently:
npx @modelcontextprotocol/inspector npx screenpipe-mcp
Create ~/openclaw/skills/screenpipe/skill.md:
---
name: screenpipe
description: Search screen recordings and audio transcriptions from the user's computer
tools:
- Bash
---
# screenpipe skill
Query the user's screen history via the local API at http://localhost:3030.
## search content
```bash
curl -s "http://localhost:3030/search?q=QUERY&limit=20"
```
## get recent activity
```bash
curl -s "http://localhost:3030/search?limit=10&content_type=ocr"
```
Restart OpenClaw to load the skill.
If OpenClaw runs on a different machine (e.g., a VPS or home server) than screenpipe, there are two ways to connect them:
If both machines are on the same network, OpenClaw can query screenpipe's API directly. Use a custom skill:
Create ~/openclaw/skills/screenpipe/skill.md:
---
name: screenpipe
description: Search screen recordings and audio transcriptions from the user's computer
tools:
- Bash
---
# screenpipe skill
Query the user's screen history via their screenpipe REST API at http://SCREENPIPE_IP:3030.
## search content
```bash
curl -s "http://SCREENPIPE_IP:3030/search?q=QUERY&limit=20"
```
## filter by type
```bash
# screen content (accessibility + OCR)
curl -s "http://SCREENPIPE_IP:3030/search?q=QUERY&content_type=all"
# audio transcriptions
curl -s "http://SCREENPIPE_IP:3030/search?q=QUERY&content_type=audio"
```
## activity summary
```bash
curl -s "http://SCREENPIPE_IP:3030/activity-summary?start_time=2024-01-15T10:00:00Z&end_time=2024-01-15T18:00:00Z"
```
## list meetings
```bash
curl -s "http://SCREENPIPE_IP:3030/meetings?limit=20"
```
Replace SCREENPIPE_IP with the IP of the machine running screenpipe. If the machines aren't on the same network, use Tailscale to create a private network between them.
Use screenpipe's built-in cloud sync feature to synchronize your data to the machine running OpenClaw:
localhost:3030 as if it were running on the same machineWhen connected via MCP (same machine setup), OpenClaw gets access to these tools:
| Tool | Description |
|---|---|
| search-content | Search screen text (accessibility/OCR), audio transcriptions, user input. Supports time range, app, window, and speaker filters. |
| activity-summary | Lightweight overview of app usage, audio speakers, and recent texts for a time range (~200 tokens). |
| search-elements | Search structured UI elements (buttons, links, text fields) from the accessibility tree. |
| frame-context | Get full accessibility tree, URLs, and text for a specific frame. |
| list-meetings | List detected meetings with duration, app, and attendees. |
| export-video | Export screen recordings as MP4 for a time range. |
The MCP server also provides resources (screenpipe://context for current time, screenpipe://guide for search strategy) and prompts (search-recent, find-in-app, meeting-notes).
Once configured, message OpenClaw from any chat app:
MCP not connecting?
npx @modelcontextprotocol/inspector npx screenpipe-mcpcurl http://localhost:3030/healthremote machine can't reach screenpipe?
tailscale statuscurl http://localhost:3030/health on the remoteno results from queries?
curl http://localhost:3030/health