open-index/open-npm huggingface dataset:
npm package: @screenpipe-ui/cli
Description: CLI for screenpipe. Part of screenpipe-ui — also includes TUI and web interfaces.
Latest version: 0.1.5

# @screenpipe-ui/cli

Command-line interface for querying [screenpipe](https://github.com/screenpipe/screenpipe) from your terminal.

Part of [screenpipe-ui](https://github.com/remoun/screenpipe-ui). Also available: **TUI** (`bunx @screenpipe-ui/tui`) and **Web** (run `bun web` from the [repo](https://github.com/remoun/screenpipe-ui)).

## Quick start

```bash
# No install needed
npx @screenpipe-ui/cli search "meeting notes"
npx @screenpipe-ui/cli health

# Or with bun
bunx @screenpipe-ui/cli search "meeting notes"
```

## Commands

### search

Search screen captures (OCR) and audio transcriptions.

```bash
screenpipe-ui search "query"
screenpipe-ui search "github" --type ocr --limit 20
screenpipe-ui search "slack" --app Chrome
```

Options:
- `--type <type>` — filter by `ocr`, `audio`, or `all` (default: `all`)
- `--limit <n>` — max results (default: 20)
- `--app <name>` — filter by application name
- `--url <url>` — screenpipe server URL (or set `SCREENPIPE_BASE_URL`)

### health

Check screenpipe server status.

```bash
screenpipe-ui health
```

Shows status (healthy/degraded/unhealthy), frame and audio capture status, and last capture timestamps.

### activity

Show activity summary grouped by application.

```bash
screenpipe-ui activity --today
screenpipe-ui activity --app "VS Code"
```

Options:
- `--today` — show today's activity only
- `--app <name>` — filter by application name

## Configuration

Connects to `http://localhost:3030` by default. Override with:

- `--url <url>` — per-command (e.g. `screenpipe-ui search "query" --url http://custom:3030`)
- `SCREENPIPE_BASE_URL` — environment variable

## License

MIT
npm package: @screenpipe-ui/core
Description: Framework-agnostic core library for [screenpipe](https://github.com/screenpipe/screenpipe) UIs. Provides a REST client, Zustand vanilla stores, and formatting utilities — no React dependency.
Latest version: 0.1.5

# @screenpipe-ui/core

Framework-agnostic core library for [screenpipe](https://github.com/screenpipe/screenpipe) UIs. Provides a REST client, Zustand vanilla stores, and formatting utilities — no React dependency.

## Install

```bash
bun add @screenpipe-ui/core
```

## Usage

### Client

```ts
import { createClient } from "@screenpipe-ui/core";

const client = createClient(); // defaults to localhost:3030

const results = await client.search({ q: "meeting notes", content_type: "audio" });
const health = await client.health();
```

### Stores

Zustand vanilla stores that work anywhere — call `.getState()` in scripts, or subscribe reactively in UI frameworks.

```ts
import { createSearchStore, createClient } from "@screenpipe-ui/core";

const client = createClient();
const store = createSearchStore();

// Imperative usage (CLI, scripts)
await store.getState().executeSearch(client);
console.log(store.getState().results);

// Reactive usage (subscribe to changes)
store.subscribe((state) => console.log(state.results));
```

Available stores: `createSearchStore`, `createTimelineStore`, `createHealthStore`.

### Formatters

```ts
import { timeAgo, truncate, contentPreview, formatTable } from "@screenpipe-ui/core";

timeAgo("2024-01-01T12:00:00Z"); // "3 months ago"
truncate("long text...", 10);      // "long te..."
contentPreview(contentItem);       // formatted preview string
```

### Content helpers

```ts
import { getContentText, getContentTimestamp, getContentAppName } from "@screenpipe-ui/core";

// Extract fields from ContentItem regardless of type (OCR, Audio, UI)
const text = getContentText(item);
const time = getContentTimestamp(item);
const app = getContentAppName(item);
```

## API

### Client

- `createClient(config?)` — create a `ScreenpipeUIClient`
- `client.search(params)` — search screen captures and audio transcriptions
- `client.health()` — check screenpipe server status
- `client.getFrameUrl(frameId)` — get URL for a captured frame

### Stores

- `createSearchStore()` — search state with `executeSearch`, `nextPage`, `prevPage`, `reset`
- `createTimelineStore()` — timeline state with `loadTimeline`
- `createHealthStore()` — health state with `checkHealth`

### Formatters

- `timeAgo`, `formatDuration`, `formatTime`, `formatDate`, `formatDateTime`, `todayRange`
- `truncate`, `contentTypeLabel`, `highlightMatch`, `stripAnsi`, `contentPreview`
- `formatTable(rows, columns)` — aligned text table

## License

MIT
npm package: @screenpipe-ui/react
Description: React hooks for [screenpipe](https://github.com/screenpipe/screenpipe), bridging `@screenpipe-ui/core` stores to React via `useSyncExternalStore`. Used by both the TUI (Ink) and Web (React DOM) packages.
Latest version: 0.1.5

# @screenpipe-ui/react

React hooks for [screenpipe](https://github.com/screenpipe/screenpipe), bridging `@screenpipe-ui/core` stores to React via `useSyncExternalStore`. Used by both the TUI (Ink) and Web (React DOM) packages.

## Install

```bash
bun add @screenpipe-ui/react @screenpipe-ui/core
```

## Usage

```tsx
import { createClient } from "@screenpipe-ui/core";
import { useSearch, useHealth, useTimeline } from "@screenpipe-ui/react";

const client = createClient();

function SearchPage() {
  const { query, results, loading, setQuery, executeSearch } = useSearch(client);

  return (
    <div>
      <input value={query} onChange={(e) => setQuery(e.target.value)} />
      <button onClick={executeSearch} disabled={loading}>Search</button>
      {results.map((item, i) => <div key={i}>{item.type}</div>)}
    </div>
  );
}
```

## Hooks

### `useSearch(client)`

Returns search state and actions: `query`, `contentType`, `results`, `loading`, `error`, `pagination`, `setQuery`, `setContentType`, `executeSearch`, `nextPage`, `prevPage`, `reset`.

### `useHealth(client)`

Returns health state and actions: `status`, `loading`, `error`, `checkHealth`.

### `useTimeline(client)`

Returns timeline state and actions: `results`, `loading`, `error`, `load`.

## Peer dependencies

- `react` ^18.0.0 || ^19.0.0

## License

MIT
npm package: @screenpipe-ui/tui
Description: Interactive TUI for screenpipe. Part of screenpipe-ui — also includes CLI and web interfaces.
Latest version: 0.1.5

# @screenpipe-ui/tui

Interactive terminal UI for [screenpipe](https://github.com/screenpipe/screenpipe), built with Ink (React for terminals).

Part of [screenpipe-ui](https://github.com/remoun/screenpipe-ui). Also available: **CLI** (`bunx @screenpipe-ui/cli`) and **Web** (run `bun web` from the [repo](https://github.com/remoun/screenpipe-ui)).

## Quick start

```bash
# No install needed
npx @screenpipe-ui/tui
bunx @screenpipe-ui/tui
```

## Keyboard shortcuts

| Key | Action |
|-----|--------|
| `Tab` | Switch between Search / Timeline / Meetings |
| `j` / `k` or ↑ / ↓ | Navigate down / up |
| `n` / `p` or → / ← | Next / prev (page in Search; item in detail view) |
| `/` | Focus search input |
| `Enter` | View / select item |
| `t` | Cycle content type (Search: all / ocr / audio / ui) |
| `d` | Cycle date range preset |
| `r` | Reload (Timeline, Meetings) |
| `q` | Quit |

## Views

- **Search** — full-text search across screen captures and audio transcriptions
- **Timeline** — browse recent activity chronologically
- **Meetings** — view detected meetings and transcripts

## Configuration

Connects to `http://localhost:3030` by default. Override with:

- `--url <url>` — e.g. `bunx @screenpipe-ui/tui --url http://custom:3030`
- `SCREENPIPE_BASE_URL` — environment variable

## License

MIT