# devin-axis/ipollowork architecture

> Architecture diagram of the GitHub repository devin-axis/ipollowork, 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/devin-axis/ipollowork
- Repository: https://github.com/devin-axis/ipollowork

## Overview

iPolloWork is a local-first agent workbench: users create project tasks, run them through a selected compatible agent engine, review and approve work, and continue editing generated artifacts in the workspace. Its documented product branches include shared project collaboration, portable extensions and Skills, reference ingestion, creative production, and optional cloud or enterprise connections. The graph uses the provided app and server tree plus README claims; most implementation links beyond the sampled engine/RPC code are documented capability-level relationships, not inspected call traces.

Main entry points: [`apps/app/src/react-app/domains/session/surface/session-surface.tsx`](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/surface/session-surface.tsx) (Conversation surface), [`apps/app/src/app/lib/workspace-engine-rpc-client.ts`](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/app/lib/workspace-engine-rpc-client.ts) (Workspace engine RPC), [`apps/app/src/react-app/domains/session/engine/conversation-engine.ts`](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/conversation-engine.ts) (Conversation engine API), [`apps/app/src/react-app/domains/session/chat/session-page.tsx`](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/chat/session-page.tsx) (Session workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace and sessions"]
  node_session["Session workspace<br/>[session-page.tsx]"]
  node_composer["Task composer<br/>[composer.tsx]"]
  node_surface["Conversation surface"]
  node_sync["Session sync<br/>[session-sync.ts]"]
  node_project["Project collaboration<br/>[index.ts]"]
  node_references["Reference ingestion<br/>[ingestion.ts]"]
end

subgraph group_runtime["Agent runtimes"]
  node_engine_select["Engine selection"]
  node_engine_api["Conversation engine API"]
  node_opencode["OpenCode engine"]
  node_dsh["DeepSeek Harness"]
  node_codex["Codex engine"]
  node_rpc["Workspace engine RPC"]
  node_engine_host["Engine host tools"]
end

subgraph group_extensions["Extensions and integrations"]
  node_extensions["Global extensions"]
  node_plugin_workshop["Plugin workshop"]
  node_connections[("Provider connections<br/>[store.ts]")]
end

subgraph group_creation["Editable creation"]
  node_artifacts["Artifact editing<br/>[artifact-panel.tsx]"]
  node_design["Design and decks<br/>[design-panel.tsx]"]
  node_video["Video production<br/>[video-panel.tsx]"]
end

subgraph group_services["Cloud and services"]
  node_cloud["Cloud and enterprise"]
  node_storage["Workspace file transfer<br/>[storage.ts]"]
end

node_user(("People and teams"))
node_agent_runtimes{{"Agent runtimes"}}
node_provider_services{{"Provider services"}}

node_user -->|"opens workspace"| node_session
node_session -->|"starts task"| node_composer
node_composer -->|"submits prompt"| node_surface
node_surface -->|"selects runtime"| node_engine_select
node_engine_select -->|"dispatches"| node_engine_api
node_engine_api -->|"uses"| node_opencode
node_engine_api -.->|"uses"| node_dsh
node_engine_api -.->|"uses"| node_codex
node_opencode -->|"calls"| node_rpc
node_dsh -.->|"calls"| node_rpc
node_codex -.->|"calls"| node_rpc
node_rpc -->|"sends RPC"| node_agent_runtimes
node_agent_runtimes -->|"streams events"| node_rpc
node_engine_host -->|"provides tools"| node_agent_runtimes
node_surface -->|"updates transcript"| node_sync
node_sync -->|"reconciles state"| node_session
node_user -->|"coordinates work"| node_project
node_project -->|"organizes tasks"| node_session
node_user -->|"adds source files"| node_references
node_references -->|"supplies context"| node_surface
node_surface -->|"presents outputs"| node_artifacts
node_user -->|"edits designs"| node_design
node_user -->|"edits video"| node_video
node_user -->|"manages capabilities"| node_extensions
node_extensions -->|"opens workshop"| node_plugin_workshop
node_user -->|"configures providers"| node_connections
node_connections -.->|"connects"| node_provider_services
node_user -.->|"signs in"| node_cloud
node_cloud -.->|"connects services"| node_provider_services
node_engine_host -->|"supports file tools"| node_storage
node_storage -.->|"uploads files"| node_provider_services

click node_session "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/chat/session-page.tsx"
click node_composer "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/surface/composer/composer.tsx"
click node_surface "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/surface/session-surface.tsx"
click node_sync "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/sync/session-sync.ts"
click node_project "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/work/index.ts"
click node_engine_select "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/conversation-engines.ts"
click node_engine_api "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/conversation-engine.ts"
click node_opencode "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/opencode-conversation-engine.ts"
click node_dsh "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/deepseek-harness-conversation-engine.ts"
click node_codex "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/codex-harness-conversation-engine.ts"
click node_rpc "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/app/lib/workspace-engine-rpc-client.ts"
click node_engine_host "https://github.com/devin-axis/ipollowork/blob/main/apps/server/src/engine-host-tools.ts"
click node_extensions "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/settings/extension-registry.tsx"
click node_plugin_workshop "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/plugin-workshop/plugin-workshop.tsx"
click node_connections "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/connections/store.ts"
click node_references "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/references/ingestion.ts"
click node_artifacts "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/artifacts/artifact-panel.tsx"
click node_design "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/design/design-panel.tsx"
click node_video "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/video/video-panel.tsx"
click node_cloud "https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/cloud/den-auth-provider.tsx"
click node_storage "https://github.com/devin-axis/ipollowork/blob/main/apps/server/src/extensions/storage.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_session,node_composer,node_surface,node_sync,node_project,node_references toneBlue
class node_engine_select,node_engine_api,node_opencode,node_dsh,node_codex,node_rpc,node_engine_host toneAmber
class node_extensions,node_plugin_workshop,node_connections toneMint
class node_artifacts,node_design,node_video toneRose
class node_cloud,node_storage,node_user,node_agent_runtimes,node_provider_services toneIndigo
```

## Components

### Workspace and sessions

- [Session workspace](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/chat/session-page.tsx): `apps/app/src/react-app/domains/session/chat/session-page.tsx`
- [Task composer](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/surface/composer/composer.tsx): `apps/app/src/react-app/domains/session/surface/composer/composer.tsx`
- [Conversation surface](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/surface/session-surface.tsx): `apps/app/src/react-app/domains/session/surface/session-surface.tsx`
- [Session sync](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/sync/session-sync.ts): `apps/app/src/react-app/domains/session/sync/session-sync.ts`
- [Project collaboration](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/work/index.ts): `apps/app/src/react-app/domains/work/index.ts`
- [Reference ingestion](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/references/ingestion.ts): `apps/app/src/react-app/domains/session/references/ingestion.ts`

### Agent runtimes

- [Engine selection](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/conversation-engines.ts): `apps/app/src/react-app/domains/session/engine/conversation-engines.ts`
- [Conversation engine API](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/conversation-engine.ts): `apps/app/src/react-app/domains/session/engine/conversation-engine.ts`
- [OpenCode engine](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/opencode-conversation-engine.ts): `apps/app/src/react-app/domains/session/engine/opencode-conversation-engine.ts`
- [DeepSeek Harness](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/deepseek-harness-conversation-engine.ts): `apps/app/src/react-app/domains/session/engine/deepseek-harness-conversation-engine.ts`
- [Codex engine](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/engine/codex-harness-conversation-engine.ts): `apps/app/src/react-app/domains/session/engine/codex-harness-conversation-engine.ts`
- [Workspace engine RPC](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/app/lib/workspace-engine-rpc-client.ts): `apps/app/src/app/lib/workspace-engine-rpc-client.ts`
- [Engine host tools](https://github.com/devin-axis/ipollowork/blob/main/apps/server/src/engine-host-tools.ts): `apps/server/src/engine-host-tools.ts`

### Extensions and integrations

- [Global extensions](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/settings/extension-registry.tsx): `apps/app/src/react-app/domains/settings/extension-registry.tsx`
- [Plugin workshop](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/plugin-workshop/plugin-workshop.tsx): `apps/app/src/react-app/domains/session/plugin-workshop/plugin-workshop.tsx`
- [Provider connections](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/connections/store.ts): `apps/app/src/react-app/domains/connections/store.ts`

### Editable creation

- [Artifact editing](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/artifacts/artifact-panel.tsx): `apps/app/src/react-app/domains/session/artifacts/artifact-panel.tsx`
- [Design and decks](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/design/design-panel.tsx): `apps/app/src/react-app/domains/session/design/design-panel.tsx`
- [Video production](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/session/video/video-panel.tsx): `apps/app/src/react-app/domains/session/video/video-panel.tsx`

### Cloud and services

- [Cloud and enterprise](https://github.com/devin-axis/ipollowork/blob/main/apps/app/src/react-app/domains/cloud/den-auth-provider.tsx): `apps/app/src/react-app/domains/cloud/den-auth-provider.tsx`
- [Workspace file transfer](https://github.com/devin-axis/ipollowork/blob/main/apps/server/src/extensions/storage.ts): `apps/server/src/extensions/storage.ts`

### Other components

- **People and teams**
- **Agent runtimes**
- **Provider services**

## Connections

- People and teams → Session workspace: opens workspace
- Session workspace → Task composer: starts task
- Task composer → Conversation surface: submits prompt
- Conversation surface → Engine selection: selects runtime
- Engine selection → Conversation engine API: dispatches
- Conversation engine API → OpenCode engine: uses
- Conversation engine API → DeepSeek Harness: uses
- Conversation engine API → Codex engine: uses
- OpenCode engine → Workspace engine RPC: calls
- DeepSeek Harness → Workspace engine RPC: calls
- Codex engine → Workspace engine RPC: calls
- Workspace engine RPC → Agent runtimes: sends RPC
- Agent runtimes → Workspace engine RPC: streams events
- Engine host tools → Agent runtimes: provides tools
- Conversation surface → Session sync: updates transcript
- Session sync → Session workspace: reconciles state
- People and teams → Project collaboration: coordinates work
- Project collaboration → Session workspace: organizes tasks
- People and teams → Reference ingestion: adds source files
- Reference ingestion → Conversation surface: supplies context
- Conversation surface → Artifact editing: presents outputs
- People and teams → Design and decks: edits designs
- People and teams → Video production: edits video
- People and teams → Global extensions: manages capabilities
- Global extensions → Plugin workshop: opens workshop
- People and teams → Provider connections: configures providers
- Provider connections → Provider services: connects
- People and teams → Cloud and enterprise: signs in
- Cloud and enterprise → Provider services: connects services
- Engine host tools → Workspace file transfer: supports file tools
- Workspace file transfer → Provider services: uploads files
