# collabs-inc/collab-public architecture

> Architecture diagram of the GitHub repository collabs-inc/collab-public, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/collabs-inc/collab-public
- Repository: https://github.com/collabs-inc/collab-public

## Overview

Collaborator is a local-first desktop workspace for building with AI agents: users select files in a workspace navigator, open them in a viewer or place them beside persistent terminals on an infinite canvas, then edit and run work in context. The architecture separates Electron’s main-process services from webview interfaces, with preload APIs bridging UI actions to filesystem, workspace, canvas, and PTY operations. Documented capabilities also include graph visualization and replay, settings, and agent integrations. README claims guide unsampled subsystems; source excerpts confirm selected UI, tile, replay, and sidecar behavior.

Main entry points: [`collab-electron/src/preload/universal.ts`](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/preload/universal.ts) (Preload API), [`collab-electron/src/windows/nav/src/App.tsx`](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/nav/src/App.tsx) (Workspace navigator), [`collab-electron/packages/components/src/ItemDetailView/ItemDetailView.tsx`](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/ItemDetailView/ItemDetailView.tsx) (Item detail view), [`collab-electron/src/windows/shell/src/tile-manager.js`](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/shell/src/tile-manager.js) (Tile manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace navigation"]
  node_nav["Workspace navigator<br/>[App.tsx]"]
  node_tree["File tree<br/>[WorkspaceTree.tsx]"]
end

subgraph group_canvas["Canvas workspace"]
  node_shell["Canvas shell<br/>[renderer.js]"]
  node_tile_manager["Tile manager<br/>[tile-manager.js]"]
  node_canvas_state["Canvas persistence"]
  node_canvas_rpc["Canvas IPC<br/>[ipc-canvas.ts]"]
  node_graph["Workspace graph<br/>[workspace-graph.ts]"]
  node_graph_view["Graph and replay UI<br/>[WorkspaceGraph.tsx]"]
  node_replay["Git replay service<br/>[git-replay.ts]"]
end

subgraph group_content["File viewing"]
  node_viewer["File viewer<br/>[App.tsx]"]
  node_item_detail["Item detail view<br/>[ItemDetailView.tsx]"]
  node_markdown["Markdown editor<br/>[Editor.tsx]"]
  node_code_editor["Code editor<br/>[CodeEditorView.tsx]"]
  node_image_view["Image viewer<br/>[ImageView.tsx]"]
end

subgraph group_runtime["Terminal and agents"]
  node_terminal_tile["Terminal tile<br/>[App.tsx]"]
  node_terminal_ui["Terminal interface<br/>[TerminalTab.tsx]"]
  node_pty["PTY service<br/>[pty.ts]"]
  node_sidecar["PTY sidecar<br/>[server.ts]"]
  node_agent["Agent runtime<br/>[acp-agent.ts]"]
end

subgraph group_platform["Local services"]
  node_main["Electron main<br/>[index.ts]"]
  node_preload["Preload API<br/>[universal.ts]"]
  node_filesystem["Filesystem service<br/>[ipc-filesystem.ts]"]
  node_workspace_service["Workspace service<br/>[ipc-workspace.ts]"]
  node_watcher["File watcher<br/>[watcher.ts]"]
  node_config["App configuration<br/>[config.ts]"]
  node_local_disk[("Local state and files")]
  node_settings["Settings interface<br/>[App.tsx]"]
end

node_user(("User"))

node_user -->|"selects files"| node_nav
node_nav -->|"shows workspace"| node_tree
node_nav -->|"opens selection"| node_viewer
node_nav -->|"drops file"| node_shell
node_nav -->|"requests file actions"| node_preload
node_preload -->|"invokes"| node_filesystem
node_preload -->|"manages workspaces"| node_workspace_service
node_filesystem -->|"reads and writes"| node_local_disk
node_workspace_service -->|"updates"| node_config
node_config -->|"persists state"| node_local_disk
node_watcher -->|"watches changes"| node_local_disk
node_viewer -->|"loads and saves"| node_preload
node_viewer -->|"renders item"| node_item_detail
node_item_detail -->|"edits markdown"| node_markdown
node_item_detail -->|"edits code"| node_code_editor
node_item_detail -->|"displays image"| node_image_view
node_user -->|"arranges canvas"| node_shell
node_shell -->|"manages tiles"| node_tile_manager
node_tile_manager -->|"requests canvas actions"| node_canvas_rpc
node_canvas_rpc -->|"persists canvas"| node_canvas_state
node_canvas_state -->|"stores layout"| node_local_disk
node_tile_manager -->|"creates terminal tile"| node_terminal_tile
node_terminal_tile -->|"renders session"| node_terminal_ui
node_terminal_tile -->|"creates or reconnects PTY"| node_preload
node_preload -->|"dispatches terminal calls"| node_pty
node_pty -->|"controls sessions"| node_sidecar
node_user -->|"runs agent"| node_agent
node_terminal_ui -.->|"hosts agent workflow"| node_agent
node_user -->|"explores workspace graph"| node_graph_view
node_graph_view -->|"requests graph and replay"| node_preload
node_preload -->|"fetches graph data"| node_graph
node_preload -->|"controls replay"| node_replay
node_user -->|"configures app"| node_settings
node_settings -->|"reads and changes preferences"| node_preload

click node_nav "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/nav/src/App.tsx"
click node_tree "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/TreeView/WorkspaceTree.tsx"
click node_main "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/index.ts"
click node_preload "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/preload/universal.ts"
click node_filesystem "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-filesystem.ts"
click node_workspace_service "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-workspace.ts"
click node_watcher "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/watcher.ts"
click node_config "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/config.ts"
click node_shell "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/shell/src/renderer.js"
click node_tile_manager "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/shell/src/tile-manager.js"
click node_canvas_state "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/canvas-persistence.ts"
click node_canvas_rpc "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-canvas.ts"
click node_viewer "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/viewer/src/App.tsx"
click node_item_detail "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/ItemDetailView/ItemDetailView.tsx"
click node_markdown "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/Editor/Editor.tsx"
click node_code_editor "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/CodeEditorView/CodeEditorView.tsx"
click node_image_view "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/ImageView/ImageView.tsx"
click node_terminal_tile "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/terminal-tile/src/App.tsx"
click node_terminal_ui "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/Terminal/TerminalTab.tsx"
click node_pty "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/pty.ts"
click node_sidecar "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/sidecar/server.ts"
click node_agent "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/acp-agent.ts"
click node_settings "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/settings/src/App.tsx"
click node_graph "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/workspace-graph.ts"
click node_graph_view "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/WorkspaceGraph/WorkspaceGraph.tsx"
click node_replay "https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/git-replay.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_nav,node_tree,node_user toneBlue
class node_shell,node_tile_manager,node_canvas_state,node_canvas_rpc,node_graph,node_graph_view,node_replay toneAmber
class node_viewer,node_item_detail,node_markdown,node_code_editor,node_image_view toneMint
class node_terminal_tile,node_terminal_ui,node_pty,node_sidecar,node_agent toneRose
class node_main,node_preload,node_filesystem,node_workspace_service,node_watcher,node_config,node_local_disk,node_settings toneIndigo
```

## Components

### Workspace navigation

- [Workspace navigator](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/nav/src/App.tsx): `collab-electron/src/windows/nav/src/App.tsx`
- [File tree](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/TreeView/WorkspaceTree.tsx): `collab-electron/packages/components/src/TreeView/WorkspaceTree.tsx`

### Canvas workspace

- [Canvas shell](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/shell/src/renderer.js): `collab-electron/src/windows/shell/src/renderer.js`
- [Tile manager](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/shell/src/tile-manager.js): `collab-electron/src/windows/shell/src/tile-manager.js`
- [Canvas persistence](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/canvas-persistence.ts): `collab-electron/src/main/canvas-persistence.ts`
- [Canvas IPC](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-canvas.ts): `collab-electron/src/main/ipc-canvas.ts`
- [Workspace graph](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/workspace-graph.ts): `collab-electron/src/main/workspace-graph.ts`
- [Graph and replay UI](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/WorkspaceGraph/WorkspaceGraph.tsx): `collab-electron/packages/components/src/WorkspaceGraph/WorkspaceGraph.tsx`
- [Git replay service](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/git-replay.ts): `collab-electron/src/main/git-replay.ts`

### File viewing

- [File viewer](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/viewer/src/App.tsx): `collab-electron/src/windows/viewer/src/App.tsx`
- [Item detail view](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/ItemDetailView/ItemDetailView.tsx): `collab-electron/packages/components/src/ItemDetailView/ItemDetailView.tsx`
- [Markdown editor](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/Editor/Editor.tsx): `collab-electron/packages/components/src/Editor/Editor.tsx`
- [Code editor](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/CodeEditorView/CodeEditorView.tsx): `collab-electron/packages/components/src/CodeEditorView/CodeEditorView.tsx`
- [Image viewer](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/ImageView/ImageView.tsx): `collab-electron/packages/components/src/ImageView/ImageView.tsx`

### Terminal and agents

- [Terminal tile](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/terminal-tile/src/App.tsx): `collab-electron/src/windows/terminal-tile/src/App.tsx`
- [Terminal interface](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/packages/components/src/Terminal/TerminalTab.tsx): `collab-electron/packages/components/src/Terminal/TerminalTab.tsx`
- [PTY service](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/pty.ts): `collab-electron/src/main/pty.ts`
- [PTY sidecar](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/sidecar/server.ts): `collab-electron/src/main/sidecar/server.ts`
- [Agent runtime](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/acp-agent.ts): `collab-electron/src/main/acp-agent.ts`

### Local services

- [Electron main](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/index.ts): `collab-electron/src/main/index.ts`
- [Preload API](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/preload/universal.ts): `collab-electron/src/preload/universal.ts`
- [Filesystem service](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-filesystem.ts): `collab-electron/src/main/ipc-filesystem.ts`
- [Workspace service](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/ipc-workspace.ts): `collab-electron/src/main/ipc-workspace.ts`
- [File watcher](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/watcher.ts): `collab-electron/src/main/watcher.ts`
- [App configuration](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/main/config.ts): `collab-electron/src/main/config.ts`
- **Local state and files**
- [Settings interface](https://github.com/collabs-inc/collab-public/blob/main/collab-electron/src/windows/settings/src/App.tsx): `collab-electron/src/windows/settings/src/App.tsx`

### Other components

- **User**

## Connections

- User → Workspace navigator: selects files
- Workspace navigator → File tree: shows workspace
- Workspace navigator → File viewer: opens selection
- Workspace navigator → Canvas shell: drops file
- Workspace navigator → Preload API: requests file actions
- Preload API → Filesystem service: invokes
- Preload API → Workspace service: manages workspaces
- Filesystem service → Local state and files: reads and writes
- Workspace service → App configuration: updates
- App configuration → Local state and files: persists state
- File watcher → Local state and files: watches changes
- File viewer → Preload API: loads and saves
- File viewer → Item detail view: renders item
- Item detail view → Markdown editor: edits markdown
- Item detail view → Code editor: edits code
- Item detail view → Image viewer: displays image
- User → Canvas shell: arranges canvas
- Canvas shell → Tile manager: manages tiles
- Tile manager → Canvas IPC: requests canvas actions
- Canvas IPC → Canvas persistence: persists canvas
- Canvas persistence → Local state and files: stores layout
- Tile manager → Terminal tile: creates terminal tile
- Terminal tile → Terminal interface: renders session
- Terminal tile → Preload API: creates or reconnects PTY
- Preload API → PTY service: dispatches terminal calls
- PTY service → PTY sidecar: controls sessions
- User → Agent runtime: runs agent
- Terminal interface → Agent runtime: hosts agent workflow
- User → Graph and replay UI: explores workspace graph
- Graph and replay UI → Preload API: requests graph and replay
- Preload API → Workspace graph: fetches graph data
- Preload API → Git replay service: controls replay
- User → Settings interface: configures app
- Settings interface → Preload API: reads and changes preferences
