screenpipe-tauri
screenpipe-tauri manages Tauri command handlers and TypeScript bindings for the screenpipe desktop application. Use this skill when adding or modifying #[tauri::command] functions in Rust, updating exported types, or regenerating frontend bindings via the automated tauri-helper crate and bun scripts.
git clone --depth 1 https://github.com/screenpipe/screenpipe /tmp/screenpipe-tauri && cp -r /tmp/screenpipe-tauri/.claude/skills/screenpipe-tauri ~/.claude/skills/screenpipe-tauriSKILL.md
# Screenpipe Tauri (desktop app)
Path: `apps/screenpipe-app-tauri/`
Command registration is automated via the `tauri-helper` crate. **Do not** edit manual invoke-handler or specta command lists in `main.rs`.
## Adding a command
1. Add **both** markers to the handler function in any `src-tauri/src/**/*.rs` module:
```rust
#[tauri::command]
#[specta::specta] // required — without this the command is skipped in tauri.ts
pub async fn your_command(...) { ... }
```
2. From `apps/screenpipe-app-tauri/`:
```bash
bun run bindings:generate # write lib/utils/tauri.ts
bun run bindings:check # verify no drift
bun run typecheck # verify frontend types
```
3. Commit Rust + `lib/utils/tauri.ts` together
## Scripts
| Command | Purpose |
|---------|---------|
| `bun run bindings:check` | Fail if checked-in `lib/utils/tauri.ts` does not match Rust |
| `bun run bindings:generate` | Regenerate `lib/utils/tauri.ts` after command/type changes |
| `bun run typecheck` | Frontend TypeScript check |
## Key files
- `src-tauri/build.rs` — `tauri_helper::generate_command_file` (build-time scan)
- `src-tauri/src/main.rs` — `specta_collect_commands!()` / `tauri_collect_commands!()`
- `src-tauri/src/specta_bindings.rs` — export helpers and drift tests
- `lib/utils/tauri.ts` — generated TypeScript bindings (checked in)
Debug builds also auto-export bindings on startup when content changes.Release the screenpipe monorepo. Bumps versions, triggers GitHub Actions for app, CLI, MCP, and JS packages.
Query the user's local and synced-device data via the screenpipe REST API at localhost:3030 — recordings, audio, UI, meetings, connected services, and memory. Use for screen activity, other-device or cross-device history, productivity, media export, connections, or durable memory.
Set up and operate screenpipe from the terminal, including always-on recording, service modes, capture health, storage, local search, pipes, and connections. Use when the user asks to install, run, inspect, query, automate, or debug screenpipe without relying on the desktop app.
Check Screenpipe health status, process state, and diagnose common issues
Retrieve and analyze Screenpipe CLI backend logs and desktop app logs for debugging
Use the native Screenpipe CLI to query Enterprise team activity or safely preview, deploy, and schedule managed team Pipes. Injected only by the Enterprise app for active admins.
Produce a human-facing visual report — a chart, dashboard, scorecard, or styled summary — that renders as a live page in the screenpipe viewer instead of plain text. Use when the task asks for a visual/graphical output rather than a plain note; do NOT use for plain text or raw data (prefer a markdown note for those).
Develop and test Screenpipe Windows-native changes on a disposable Azure VM created from the prepared Screenpipe Windows dev image. Use for Windows compiler, process, service, local API, desktop, capture, installer, or permission behavior. Do not use for React-only work proved by the browser mock.