Orbitrum / Browser fleet
Worker control
Live browser presence and ChatGPT session detection from the rendered page.
Read-only · unlock with a server token or tenant-admin user key
One-time secret
Copy this key now
This value will not be shown by the dashboard again.
What “signed in” means: the worker confirmed the ChatGPT session when it connected or immediately before accepting work. A visible authenticated profile control is sufficient even when ChatGPT's compact sidebar does not expose the account name. Offline and stale observations are shown as unknown, with the last observation retained only as history.
Live inventory
Browser workers
Not refreshed yet
Select a worker
No worker selected
ChatGPT status unknown
Waiting for worker inventory
- Expected account
- —
- Session verified
- —
- ChatGPT tabs
- —
- Extension
- —
- Worker seen
- —
Choose a tenant in step 02
People first Identity registry Create a person once, before granting access to any organization. 0 identities
Canonical people
All identities
Loading identities…
Organization boundary Tenants Create an organization with an existing identity as its first administrator. 0 tenants
Registry
Choose tenant
Loading tenants…
Organization access Roles & memberships Add an identity as a member or administrator, then promote or demote it safely. Select tenant
Select a tenant first. Every role is a tenant-scoped membership.
Membership registry
Administrators and members
No tenant selected.
Product access User API credentials Issue a one-time key only after the identity has the correct tenant role. Select tenant
Select a tenant first. Each user key belongs to one membership.
Credential registry
User auth keys
No tenant selected.
External app boundary Apps & callback endpoints Register each source app and its signed result-delivery endpoint. Select tenant
Select a tenant first. Source apps cannot cross tenant boundaries.
Source registry
Tenant apps
No tenant selected.
Platform identity ownership
External user links
A valid user key refreshes the current platform-user link automatically. Use this form only to correct the projection before another request arrives; historical jobs never change.
| Source app | Platform user ID | Current owner | Claim evidence | Reassignment |
|---|---|---|---|---|
| No tenant selected. | ||||
Browser authorization Worker allocation, key & owners Bind one browser profile, authenticate it, and choose whose work it may run. Select tenant
Select a worker tenant first. Every worker key belongs to one tenant.
Host startup selection
Worker activation
Enable an allocated worker here to make it eligible for new work and include it on the next app start. A worker without a current access key must also receive and install a new key below before it can connect.
Select a tenant to manage worker activation.
Authentication & tenant binding
Install worker access
Select the worker you are installing. If it already has access, this issues a safe replacement for that same worker; it never reuses another worker's key.
No bound worker selected.
Authorization registry
Worker access keys
Not refreshed yet
One current credential is shown per worker, ordered by worker name. The public prefix is only an identifier and cannot authorize a worker. The worker selected on the Board is carried here as the install target. Confirm that target, then use Install new key; the current key remains valid until that same worker verifies the new full secret.
| Worker | Tenant | Authorized by | Public key ID (not secret) | Status | Last used | Actions |
|---|---|---|---|---|---|---|
| Loading worker access… | ||||||
Limits apply to each worker separately. New worker-local project copies are balanced across workers that are currently eligible. An accessible copy stays with its worker through cooldown or daily limits; when the user has no accessible copy, Orbitrum balances a new one across eligible workers. Recent usage follows the browser-worker account across tenant reallocations; project counts remain scoped to the selected tenant. Startup controls are host-wide: a disabled worker receives no new work and is skipped the next time the app starts, while work it already accepted is allowed to finish.
Select a tenant first. Scheduling settings and worker usage are always isolated to one organization.
Worker-account usage
Worker capacity
Unlock the dashboard and select a tenant to load its current calendar-day window.
| Worker | Current projects | Queued / active | Today / cap | 24h / 7d / 30d | Last finish | Next eligible / status | Startup |
|---|---|---|---|---|---|---|---|
| Scheduling report not loaded. | |||||||
Open a job type, then open a subtype to edit its system prompt. The saved prompt is appended to future user requests for that subtype. Every job keeps the revision that was active when it was created.
Select a tenant first. Job subtype prompts are isolated to one organization.
Autonomous recovery
Codex remediation incidents
Problem families are deduplicated and leased to one visible Codex thread rooted in the exact VS Code Solution workspace. Prompts, raw results, credentials, and callback URLs stay out of incident evidence. Select any incident for its live activity, retained history, and VS Code handoff.
| Problem family | Severity | Jobs | Status | Last seen | Remediation | Actions |
|---|---|---|---|---|---|---|
| Loading incidents… | ||||||
Durable queue
Jobs
Advanced: reset saved ChatGPT project and conversation links
| Job | Source | User | Subtype | Project | Worker | Status | Callback | Updated | Actions |
|---|---|---|---|---|---|---|---|---|---|
| Loading jobs… | |||||||||
External app API
Create a project scoring job
Authenticate as an internal user, identify the source app, and send the first ChatGPT text-generation subtype.
POST /api/v1/jobs
Authorization: Bearer <userAuthKey>
Idempotency-Key: <unique request key>
Content-Type: application/json
{
"tenantId": "<tenant UUID>",
"appSourceId": "<app UUID>",
"userSourceId": "<external user ID>",
"userId": "<internal user ID>",
"jobTypeId": 1,
"jobSubTypeId": 1,
"projectId": "<source project ID>",
"projectName": "<project name>",
"prompt": "<scoring prompt>"
}
Result delivery
App callbacks
Loading callback routes…