Skip to main content
Documentation · v0.2.1

Get to a working dashboard in under an hour.

ProdView ships one agent and one API. This page is everything you need to know to put both in production — from brew install to your first webhook firing into PagerDuty.

Last updated · May 16, 2026 Edge of stable · ships every Tuesday

Quickstart

For most teams under 100 people, the path from signed-up to "showing the team in our Friday review" is four steps:

  1. Create a tenant at prodview.app/signup. Free for 21 days, full feature set, no card.
  2. Install the agent on your own device first (commands below).
  3. Roll it out to the team — either by sending a one-line install script in Slack, or via your MDM.
  4. Open Overview. Within ~5 minutes of agent install, data starts populating.
↳ Want a guided demo? Book a 15-minute call with one of our deploy engineers — we'll do the first install with you on a screenshare and answer questions in flight. Schedule →

Install · macOS (12 Monterey or newer)

# Install the agent
brew install prodview/tap/agent

# Register against your tenant
prodview-agent register --tenant "acme" --token $PV_TOKEN

# Start (also runs on every boot)
prodview-agent start
# One-line install
curl -fsSL https://get.prodview.app/agent.sh | sh -s -- \
  --tenant "acme" --token $PV_TOKEN
# Notarised .pkg for MDM, manual, or restricted-network installs
curl -O https://dl.prodview.app/agent/0.2.1/prodview-agent.pkg
sudo installer -pkg prodview-agent.pkg -target /

Install · Windows (10 / 11)

# PowerShell as Administrator
iwr -useb https://get.prodview.app/agent.ps1 | iex
prodview-agent register --tenant "acme" --token $env:PV_TOKEN

Agent runs as a Windows service (prodview-agent.exe) under NT AUTHORITY\NetworkService. Auto-update is on by default and respects WSUS policy.

Install · Linux (Ubuntu 20.04+ / Debian 11+)

# Add the apt repo
echo "deb [signed-by=/usr/share/keyrings/prodview.gpg] https://apt.prodview.app stable main" \
  | sudo tee /etc/apt/sources.list.d/prodview.list

curl -fsSL https://apt.prodview.app/gpg | sudo gpg --dearmor -o /usr/share/keyrings/prodview.gpg
sudo apt update && sudo apt install prodview-agent

Deploy via MDM

Silent install scripts ready to drop into your fleet manager:

MDMRecipeAvg. rollout
Jamf ProComposer package + smart group~12 min
KandjiCustom App + Auto-Install~8 min
Microsoft IntuneWin32 .intunewin~22 min
Workspace ONEUEM "Product" deploy~18 min
Munkipkginfo template provided~10 min

Data model

ProdView aggregates raw OS signals into a small, opinionated data model. Every metric in the dashboard rolls up from these four tables:

TableGrainDescription
sessionsperson × app × focus blockContinuous foreground time on one app. The atom for "focus time".
activityperson × 1-min bucketActive / idle / off-hours classification.
eventsdevice × eventUSB inserts, logins, policy changes, etc.
devicesdevice × dayHealth snapshot — agent version, queue, CPU, RAM.

Raw signals (keystroke counts, screen contents, message bodies, file metadata) are never written by the agent — see the privacy model for the explicit exclude list.

App categories

Every app and domain is classified into one of five buckets:

  • Productive · code editors, design tools, terminals, docs
  • Communication · Slack, Zoom, Gmail
  • Neutral · file browsers, music, OS utilities
  • Distracting · YouTube, Reddit, social
  • Idle · no input for ≥3 min

The default taxonomy covers 15,000+ apps and 4M+ domains. You can override per-team — Figma is Productive for designers and Neutral for sales, for instance.

Focus time

A focus block is a run of ≥25 contiguous minutes on a single Productive-category app with no idle, no app-switch, and no meeting overlap. We treat it as the closest proxy for actual deep work that we can compute without seeing screen contents.

↳ A note on accuracy Focus time is a lower bound. A developer working in VS Code and Terminal will register continuous focus only inside the larger app; cross-app rapid debugging will look like context-switching. We're working on a "focus session" detection that spans related apps — coming in 0.3.

Privacy model

The full data manifest is published and version-controlled at github.com/prodview/manifest. Auditors get read access to the live production schema.

API · authentication

All endpoints under https://api.prodview.app/v1 require a bearer token. Tokens are scoped (read / write / admin), can be IP-allow-listed, and rotate on a 90-day cadence by default.

# Set your token
export PV_TOKEN="pv_live_a82f1c3..."

# Sanity check
curl https://api.prodview.app/v1/me \
  -H "Authorization: Bearer $PV_TOKEN"

People endpoints

GET/v1/people — list every person in your tenant.

GET/v1/people/:id — one person, current activity, last 28 days.

POST/v1/people/:id/pause — pause data collection for a person.

# Get the current activity for one person
curl https://api.prodview.app/v1/people/p01 \
  -H "Authorization: Bearer $PV_TOKEN"

# Response (abridged)
{
  "id": "p01",
  "name": "Amelia Okafor",
  "team": "Platform",
  "activity": {
    "active_hours_today": 7.4,
    "focus_hours_today": 5.2,
    "idle_ratio": 0.12,
    "score": 88
  }
}

Metrics endpoints

GET/v1/metrics/:name — query any rolled-up metric with a flexible window + groupBy.

curl "https://api.prodview.app/v1/metrics/productive_hours?window=P28D&groupBy=team" \
  -H "Authorization: Bearer $PV_TOKEN"

Security events

GET/v1/events — list security events with filters by severity, type, person.

POST/v1/events/:id/ack — mark as triaged + add a note for the audit log.

Webhooks

Every metric and alert can fire a webhook. Payloads are signed with HMAC-SHA256 using your endpoint secret.

# Create a webhook for high-severity events
curl -X POST https://api.prodview.app/v1/webhooks \
  -H "Authorization: Bearer $PV_TOKEN" \
  -d '{
    "event": "security.event.high",
    "url": "https://events.pagerduty.com/v2/enqueue",
    "secret": "whsec_..."
  }'

Currently emitted event types: security.event.{low,medium,high}, person.overwork.detected, device.stale, policy.changed.

Policy & retention

Per-tenant policy YAML controls collection intervals, retention windows, off-hours definitions, blocked-domain lists, and screenshot policy (off by default).

SIEM export

Push every event in real time to Splunk, Datadog, or any HEC-compatible endpoint. Sub-second latency for high-severity events.

Terraform provider

terraform {
  required_providers {
    prodview = { source = "prodview/prodview", version = "~> 0.2" }
  }
}

resource "prodview_policy" "default" {
  screenshot_interval = "never"
  retention_days      = 425
  off_hours_window    = "19:00-07:00"
}

Troubleshooting

Most issues we see fall into three buckets. Run prodview-agent doctor first — it prints a coloured triage report.

SymptomCauseFix
agent not reportingfirewall blocking 443allow *.prodview.app
0 focus minutesidle threshold misconfiguredset idle_threshold: 180s
stale device flagNTP drift > 5 minresync system clock

Still stuck? Email support@prodview.app — we answer in <4h on Business and <1h on Enterprise.