File size: 4,435 Bytes
6a7089a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# 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.