# Streaming and Visualizer

Streaming is a core Luxonis Hub capability, but the recommended customer-facing integration pattern is specific: your backend
fetches connection bootstrap data from Hub, and your frontend uses that derived payload to connect.

## Recommended flow

For a customer portal:

 1. Your frontend asks your backend for a session.
 2. Your backend calls the Hub GraphQL control API.
 3. Your backend returns the bootstrap payload to the frontend.
 4. Your frontend connects with that payload.

Use:

 * requestDeviceWebrtcConfig for device sessions such as Web Terminal and live logs
 * requestDeviceAppConnection for app sessions and visualizer sessions

> **Backend-mediated by default**
> Do not call these bootstrap flows directly from the browser with a Hub API key. The backend should own Hub credentials and
return only the derived connection payload.

## Visualizer is the default recommendation

For customer portals, visualizer is the recommended rendering primitive.

It is the best default when you need more than a raw video player, including:

 * camera streams
 * detections and overlays
 * richer outputs such as point clouds

If your app ships a custom static frontend, Hub can expose that frontend. If it does not, Hub opens the default visualizer
instead.

## When to use custom rendering

Custom rendering is still supported, but it should be treated as the advanced/custom path.

Choose it when:

 * you need a fully bespoke UI
 * your stack is not centered on the JavaScript visualizer path
 * you want to own the full rendering pipeline yourself

## Connection modes

There are two common paths:

 * Hub-mediated remote access over WebRTC for remote portals, Hub UI, and customer-facing cloud products
 * Same-LAN direct access over websocket for local/device-side access patterns

Same-LAN direct access is useful as a fallback, but it is not the canonical remote integration model.

## Related Hub features

 * Web Terminal uses the device session path.
 * Live app logs use the device session path.
 * App frontends and visualizer sessions use the app connection path.

## Next steps

### Live View and Static Frontend

See how Hub opens a shipped app frontend or falls back to the default visualizer.

[Live View and Static Frontend](https://docs.luxonis.com/cloud/features/application-management/live-view-and-static-frontend.md)

### OAK Visualizer

Learn more about the visualizer component used for remote rendering.

[OAK Visualizer](https://docs.luxonis.com/software-v3/depthai/tools/oak-visualizer.md)
