Documentation

OsprioView

OsprioView is a tabbed OSDP workspace application. It combines live monitor workflows, emulator workflows, offline capture review, help content, and hardware-specific utility flows inside one shell instead of splitting them into separate tools.

Workspace model

How the app is organized

The shell is the product. Individual jobs run inside workspace tabs.

  • Capture is for live monitor-device traffic collection and read-only review of saved .ovb captures.
  • Emulator is for profile and slot driven emulator control.
  • Help opens documentation tabs alongside operational work.
  • App Switcher is used when Osprio Mini hardware needs to change between monitor and emulator firmware.

Typical workflow

  1. Open a new tab and choose the workspace that matches the job.
  2. Pair or connect hardware if the workspace needs a device.
  3. Perform the task in that workspace.
  4. Save captures or profiles when needed.
  5. Open help tabs without leaving the current shell.

System architecture

OsprioView is built around a single WorkspaceShell that owns the top tab strip, active tab state, global diagnostics, theme, and tab-close lifecycle.

Each operational area is implemented as a dedicated workspace runner with its own flow boundary:

  • CaptureWorkspaceRunner
  • EmulatorWorkspaceRunner
  • AppSwitcherWorkspaceRunner

Workspace logic is split under client/src/lib/workspace/ so the shell controls tab and session lifecycle while each workspace controls only its own UX and mode-specific actions.

Device and session behavior

The current app separates device ownership from workspace state:

  • deviceManager owns discovery, pairing, transports, static device info, firmware update, and live device feeds.
  • sessionManager owns sessionId -> deviceId binding and cross-tab exclusivity.
  • Workspaces do not hold raw USB handles or talk to concrete devices directly.

This matters because busy state in the UI is based on session binding and lease state, not just whether a transport happens to be open.

If a device disconnects while a workspace is using it, the tab is not thrown away. The session is marked orphaned so the user keeps captured state and can decide what to do next.

Runtime and hardware

Runtime model

OsprioView supports two runtime modes:

  • Web mode uses WebUSB in a Chromium-based browser.
  • Desktop mode uses the Tauri build with native USB access through nusb.

The same workspace model exists in both runtimes. The USB backend changes, but the shell, tabs, and workspace flows stay consistent.

Supported hardware model

The current device catalog recognizes:

  • Osprio Pro with VID 0x1209 / PID 0xF70F
  • Osprio Mini with VID 0x1209 / PID 0xF70E

Osprio Pro can expose monitor and emulator capabilities without app switching. Osprio Mini runs one app at a time, so the app-switching flow matters when moving between capture and emulator work.

Start here