# Instance Charts This page captures the current instance model in PinchTab. It is intentionally limited to the instance types and relationships that exist now in the codebase. ## Chart 1: Current Instance Types ```mermaid flowchart TD I["Instance"] --> M["Managed"] I --> A["Attached"] M --> MB["Bridge-backed"] A --> EX["External Chrome registration"] ``` Current meaning: - **managed** means PinchTab launches and owns the runtime lifecycle - **attached** means PinchTab registers an already running external Chrome - **bridge-backed** means the server reaches the browser through a `pinchtab bridge` runtime ## Chart 2: Managed Instance Shape ```mermaid flowchart LR S["PinchTab Server"] --> O["Orchestrator"] O --> B["pinchtab bridge child"] B --> C["Chrome"] C --> T["Tabs"] O --> P["Profile directory"] ``` For managed instances today: - the orchestrator launches a bridge child process - the bridge owns one browser runtime - tabs live inside that runtime - browser state is tied to the associated profile directory ## Chart 3: Attached Instance Shape ```mermaid flowchart LR S["PinchTab Server"] --> O["Orchestrator"] O -. "attach via CDP URL" .-> E["External Chrome"] E --> T["Tabs"] ``` For attached instances today: - PinchTab does not launch the browser - PinchTab stores registration metadata in the instance registry - ownership of the external browser process stays outside PinchTab - attached registration exists today, but the normal managed-instance tab proxy path is still centered on bridge-backed instances ## Chart 4: Ownership Model ```mermaid flowchart TD I["Instance"] --> L["Lifecycle owner"] L --> P["PinchTab"] L --> X["External process owner"] P --> M["Managed instance"] X --> A["Attached instance"] ``` This is the key distinction: - managed instances are lifecycle-owned by PinchTab - attached instances are tracked by PinchTab but not process-owned by PinchTab ## Chart 5: Routing Relationship ```mermaid flowchart TD I["Instance"] --> T["Tabs"] T --> R["Tab-scoped routes"] R --> O["Owning instance resolution"] ``` The important runtime rule is: - tabs belong to one instance - for managed bridge-backed instances, tab-scoped server routes are resolved to the owning instance before proxying ## Current Instance Fields The main instance fields surfaced by the current API are: - `id` - `profileId` - `profileName` - `port` - `headless` - `status` - `startTime` - `error` - `attached` - `cdpUrl` Useful interpretation: - `attached: false` usually means a managed bridge-backed instance - `attached: true` means an externally registered instance - `port` is relevant for managed bridge-backed instances - `cdpUrl` is relevant for attached instances