Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/screenpipe/screenpipe/llms.txt

Use this file to discover all available pages before exploring further.

Screenpipe provides two CLI tools for development:
  1. screenpipe - Core server and capture engine
  2. screenpipe-dev - Development tools for building pipes and apps

Screenpipe Server

The main screenpipe CLI runs the capture engine and API server.

Basic Usage

screenpipe
This starts the server with default settings:
  • API server on http://localhost:3030
  • Default audio and video capture enabled
  • Data stored in ~/.screenpipe/

Common Options

--port
number
default:"3030"
Port for the API server
--data-dir
string
default:"~/.screenpipe"
Directory for storing captured data and database
--disable-audio
boolean
default:"false"
Disable audio capture
--disable-vision
boolean
default:"false"
Disable screen capture

Examples

screenpipe --port 3035

Screenpipe Dev CLI

The screenpipe-dev CLI provides tools for building applications and plugins.

Installation

npm install -g @screenpipe/dev
# or
bun add -g @screenpipe/dev

Commands

login

Authenticate with Screenpipe services.
screenpipe-dev login
Supports two authentication methods:
  • Browser - OAuth flow via browser
  • API Key - Direct API key input
Example:
$ screenpipe-dev login
? Select login type › Browser
 Login complete

logout

Remove stored credentials.
screenpipe-dev logout

Pipe Commands

Pipes are lightweight plugins that process Screenpipe data.

pipe create

Create a new pipe from a template.
screenpipe-dev pipe create
Interactive prompts:
  1. Pipe name
  2. Target directory
Example:
$ screenpipe-dev pipe create

welcome to screenpipe!

? what is your pipe name? my-awesome-pipe
? where would you like to create your pipe? › ./my-awesome-pipe
 pipe created successfully!

to get started:
cd ./my-awesome-pipe
bun install
bun dev
The generated pipe includes:
  • TypeScript configuration
  • Example code with @screenpipe/js SDK
  • package.json with dependencies
  • Development server setup

pipe register

Register a pipe with the Screenpipe store.
screenpipe-dev pipe register
Requires:
  • Valid authentication (run screenpipe-dev login first)
  • pipe.json in current directory

pipe publish

Publish a new version of your pipe.
screenpipe-dev pipe publish
Requires:
  • Registered pipe
  • Valid authentication

pipe list-versions

List all published versions of a pipe.
screenpipe-dev pipe list-versions

App Commands

Create full desktop applications that embed Screenpipe.

app create

Create a new desktop app from templates.
screenpipe-dev app create [options]
Options:
-a, --name
string
Name of your app (optional, prompts if not provided)
-t, --appType
string
Type of desktop app: electron or tauri
Interactive mode:
$ screenpipe-dev app create
? what type of desktop app would you like to create? › tauri
? what is your project name? › my-screenpipe-app
 project created successfully! 🎉

credits to the template authors:
tauri template by: Lorenzo @ https://github.com/LorenzoBloedow

to get started:
cd my-screenpipe-app
npm install
npm run dev
Direct mode:
screenpipe-dev app create --name my-app --appType electron
Available Templates:
Electron Template
  • Modern Electron + React setup
  • TypeScript support
  • Screenpipe SDK pre-configured
Template by: NeoRepository: screenpipe-electron

Components Commands

Manage UI components (uses shadcn/ui registry).

components add

Add UI components to your project.
screenpipe-dev components add [component-name]
Example:
screenpipe-dev components add button
screenpipe-dev components add dialog card
This command:
  1. Detects your project configuration
  2. Downloads the component from the registry
  3. Installs required dependencies
  4. Adds the component to your project

Testing & Development

Running Tests

For Rust code:
cargo test
For TypeScript/JavaScript:
bun test

Development Build

Build the core engine:
cargo build --release
Build with platform-specific features:
cargo build --release --features metal,apple-intelligence

Running from Source

Run Screenpipe directly from source:
./target/release/screenpipe

Desktop App Development

Build the Tauri desktop app:
cd apps/screenpipe-app-tauri
bun install
bun tauri dev    # Development mode
bun tauri build  # Production build

Environment Variables

SCREENPIPE_DATA_DIR
string
Override default data directory
SCREENPIPE_PORT
number
Override default API port
RUST_LOG
string
default:"info"
Set log level: error, warn, info, debug, trace
Example:
RUST_LOG=debug screenpipe

Debugging

Memory Debugging

Using tokio-console:
# Terminal 1
RUST_LOG="tokio=debug,runtime=debug" \
RUSTFLAGS="--cfg tokio_unstable" \
cargo run --bin screenpipe --features debug-console

# Terminal 2
cargo install tokio-console
tokio-console

Address Sanitizer

RUSTFLAGS="-Z sanitizer=address" cargo run --bin screenpipe

Leak Sanitizer

RUSTFLAGS="-Z sanitizer=leak" cargo run --bin screenpipe

Database Migrations

Create Migration

cargo install sqlx-cli
sqlx migrate add migration_name

Fix Migration Issues

If you encounter missing migration errors:
# Remove specific migration
sqlite3 ~/.screenpipe/db.sqlite "DELETE FROM _sqlx_migrations WHERE version = XXXXXXXXXX;"

# Verify migrations
sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM _sqlx_migrations;"

Performance Monitoring

Using cargo-instruments on macOS:
cargo install cargo-instruments

# Track leaks over 60 minutes
cargo instruments -t Leaks \
  --bin screenpipe \
  --features metal \
  --time-limit 600000 \
  --open
View results in Xcode Instruments.

Benchmarks

Run performance benchmarks:
cargo bench
View benchmark history: screenpipe.github.io/screenpipe/dev/bench

Next Steps

JavaScript SDK

Build with the TypeScript SDK

Contributing

Contribute to Screenpipe

API Reference

Complete API documentation

Examples

Code examples and tutorials