WitNote / docs /dashboard.md
AUXteam's picture
Upload folder using huggingface_hub
6a7089a verified
# Dashboard
PinchTab includes a built-in web dashboard for monitoring instances, managing profiles, and editing configuration.
The dashboard is part of the full server:
- `pinchtab` or `pinchtab server` starts the full server and serves the dashboard
- `pinchtab bridge` does not serve the dashboard
You can open the dashboard at:
- `http://localhost:9867`
- `http://localhost:9867/dashboard`
---
## Dashboard overview
The current dashboard exposes three main pages:
1. **Monitoring**
2. **Profiles**
3. **Settings**
The UI is a React SPA served by the Go server.
---
## Monitoring page
![Dashboard Instances](media/dashboard-instances.jpeg)
The Monitoring page is the default view.
It shows:
- running and stopped instances
- selected-instance details
- open tabs for the selected instance
- charted monitoring data
- optional memory metrics when enabled in settings
What you can do:
- select an instance
- inspect its port, mode, and status
- view its open tabs
- stop a running instance
Operational data comes from:
- SSE updates on `GET /api/events`
- instance lists from `GET /instances`
- tab data from `GET /instances/{id}/tabs`
- optional memory data from `GET /instances/metrics`
---
## Profiles page
![Dashboard Profiles](media/dashboard-profiles.jpeg)
The Profiles page manages saved browser profiles.
It shows:
- available profiles
- launch and stop actions
- profile metadata such as name, path, size, source, and account details
What you can do:
- create a new profile
- launch a profile as a managed instance
- stop the running instance for a profile
- edit profile metadata
- delete a profile
- open a profile details modal
The launch flow uses the server APIs behind the scenes:
```bash
curl -X POST http://localhost:9867/profiles \
-H "Content-Type: application/json" \
-d '{"name":"work","useWhen":"Team account workflows"}'
# Response
{
"status": "created",
"id": "prof_278be873",
"name": "work"
}
```
```bash
curl -X POST http://localhost:9867/instances/start \
-H "Content-Type: application/json" \
-d '{"profileId":"prof_278be873","mode":"headed"}'
# CLI Alternative
pinchtab instance start --profileId prof_278be873 --mode headed
# Response
{
"id": "inst_ea2e747f",
"profileId": "prof_278be873",
"profileName": "work",
"port": "9868",
"headless": false,
"status": "starting"
}
```
---
## Profile details modal
Profile details are shown in a modal, not as a separate top-level page.
The modal currently includes tabs for:
- **Profile**
- **Live**
- **Logs**
From there you can:
- view the profile ID and metadata
- edit name and `useWhen`
- inspect live tabs for a running instance
- open a screencast tile for tab previews
---
## Settings page
![Dashboard Settings](media/dashboard-settings.jpeg)
The Settings page combines local dashboard preferences with backend configuration.
It includes sections for:
- Dashboard
- Instance Defaults
- Orchestration
- Security
- Profiles
- Network & Attach
- Browser Runtime
- Timeouts
What you can do:
- change local dashboard preferences such as monitoring and screencast settings
- load backend config from `GET /api/config`
- save backend config through `PUT /api/config`
- see whether a restart is required for server-level changes
The health payload also surfaces summary info:
```bash
curl http://localhost:9867/health | jq .
# Response
{
"status": "ok",
"mode": "dashboard",
"profiles": 3,
"instances": 1,
"agents": 0,
"restartRequired": false
}
```
---
## Event stream
The dashboard uses Server-Sent Events, not WebSockets.
Primary stream endpoint:
```bash
curl http://localhost:9867/api/events
```
This stream carries:
- `init`
- `action`
- `system`
- `monitoring`
---
## Build note
If the React dashboard assets are not built into the binary, the server serves a fallback page telling you to build the dashboard bundle.
---
## Troubleshooting
### Dashboard not loading
```bash
curl http://localhost:9867/health
```
If the server is up, try:
- `http://localhost:9867`
- `http://localhost:9867/dashboard`
### No instances visible
Start one:
```bash
curl -X POST http://localhost:9867/instances/start \
-H "Content-Type: application/json" \
-d '{"mode":"headless"}'
# CLI Alternative
pinchtab instance start
```
### No live profile preview
The profile must have a running instance before the Live tab in the profile details modal can show live tab data.