# outsourc-e/hermes-workspace architecture

> Architecture diagram of the GitHub repository outsourc-e/hermes-workspace, 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/outsourc-e/hermes-workspace
- Repository: https://github.com/outsourc-e/hermes-workspace

## Overview

Hermes Workspace is a self-hosted AI-agent command center: a user works through a browser or desktop workspace, which exposes chat, sessions, files, memory, skills and operational controls over a local API to Hermes services. Chat is the central interaction; separate screens support agent orchestration, swarm dispatch, task tracking, dashboards, MCP and terminal work. The README documents these product capabilities and the gateway/dashboard split. The sampled excerpts show task and MCP-source interactions, but not most route handlers or service wiring, so uncertain internal links are omitted.

Main entry points: [`src/screens/chat/chat-screen.tsx`](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/chat/chat-screen.tsx) (Chat workspace), [`src/routes/api/hermes-tasks.ts`](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/hermes-tasks.ts) (Task endpoints), [`src/screens/gateway/conductor.tsx`](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/gateway/conductor.tsx) (Conductor missions), [`src/routes/api/swarm-dispatch.ts`](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/swarm-dispatch.ts) (Swarm endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace UI"]
  node_chat["Chat workspace<br/>[chat-screen.tsx]"]
  node_files["Files browser<br/>[files-screen.tsx]"]
  node_memory["Memory browser"]
  node_skills["Skills manager<br/>[skills.tsx]"]
  node_terminal["Terminal workspace"]
  node_dashboard["Usage dashboard"]
  node_mcp["MCP manager<br/>[mcp-screen.tsx]"]
  node_taskui["Task board<br/>[tasks-screen.tsx]"]
end

subgraph group_api["Workspace API"]
  node_send["Chat endpoints<br/>[send-stream.ts]"]
  node_sessions["Session endpoints<br/>[sessions.ts]"]
  node_memoryapi["Memory endpoints<br/>[memory.ts]"]
  node_filesapi["File endpoints<br/>[files.ts]"]
  node_taskapi["Task endpoints<br/>[hermes-tasks.ts]"]
  node_swarmapi["Swarm endpoints<br/>[swarm-dispatch.ts]"]
end

subgraph group_operations["Agent Operations"]
  node_conductor["Conductor missions<br/>[conductor.tsx]"]
  node_swarm["Swarm control<br/>[swarm.tsx]"]
  node_agentops["Agent operations"]
  node_jobui["Jobs manager<br/>[jobs-screen.tsx]"]
end

subgraph group_services["Agent Services"]
  node_gatewayapi["Gateway client<br/>[gateway-api.ts]"]
  node_hermes{{"Hermes gateway"}}
  node_dashboardservice{{"Hermes dashboard"}}
  node_taskstore[("Task store")]
  node_desktop["Desktop shell<br/>[main.cjs]"]
end

subgraph group_state["Workspace State"]
  node_taskclient["Task API client<br/>[tasks-api.ts]"]
end

node_user(("Workspace user"))

node_user -->|"starts chat"| node_chat
node_user -->|"browses files"| node_files
node_user -->|"browses memory"| node_memory
node_user -->|"manages skills"| node_skills
node_user -->|"opens terminal"| node_terminal
node_user -->|"reviews usage"| node_dashboard
node_user -->|"manages MCP"| node_mcp
node_user -->|"tracks tasks"| node_taskui
node_user -->|"dispatches missions"| node_conductor
node_chat -->|"sends messages"| node_send
node_chat -->|"manages sessions"| node_sessions
node_send -->|"forwards requests"| node_gatewayapi
node_gatewayapi -->|"calls gateway"| node_hermes
node_memory -->|"reads and edits"| node_memoryapi
node_files -->|"browses files"| node_filesapi
node_taskui -->|"loads and updates"| node_taskclient
node_taskclient -->|"selects backend"| node_taskapi
node_taskapi -->|"reads and writes"| node_taskstore
node_taskapi -.->|"loads linked history"| node_dashboardservice
node_conductor -->|"dispatches missions"| node_swarmapi
node_conductor -.->|"uses mission API"| node_dashboardservice
node_swarm -->|"controls workers"| node_swarmapi
node_swarmapi -->|"dispatches agents"| node_hermes
node_agentops -->|"controls agents"| node_hermes
node_jobui -->|"manages jobs"| node_hermes
node_dashboard -->|"loads analytics"| node_dashboardservice
node_mcp -->|"manages servers"| node_hermes
node_desktop -->|"checks gateway"| node_hermes
node_desktop -->|"checks dashboard"| node_dashboardservice

click node_chat "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/chat/chat-screen.tsx"
click node_files "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/files/files-screen.tsx"
click node_memory "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/memory/memory-browser-screen.tsx"
click node_skills "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/skills.tsx"
click node_terminal "https://github.com/outsourc-e/hermes-workspace/blob/main/src/components/terminal/terminal-workspace.tsx"
click node_dashboard "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/dashboard/dashboard-screen.tsx"
click node_mcp "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/mcp/mcp-screen.tsx"
click node_send "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/send-stream.ts"
click node_sessions "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/sessions.ts"
click node_memoryapi "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/memory.ts"
click node_filesapi "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/files.ts"
click node_taskapi "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/hermes-tasks.ts"
click node_taskui "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/tasks/tasks-screen.tsx"
click node_conductor "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/gateway/conductor.tsx"
click node_swarm "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/swarm.tsx"
click node_agentops "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/agents/operations-screen.tsx"
click node_jobui "https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/jobs/jobs-screen.tsx"
click node_swarmapi "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/swarm-dispatch.ts"
click node_gatewayapi "https://github.com/outsourc-e/hermes-workspace/blob/main/src/lib/gateway-api.ts"
click node_taskclient "https://github.com/outsourc-e/hermes-workspace/blob/main/src/lib/tasks-api.ts"
click node_taskstore "https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/hermes-tasks.%24taskId.ts"
click node_desktop "https://github.com/outsourc-e/hermes-workspace/blob/main/electron/main.cjs"

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_chat,node_files,node_memory,node_skills,node_terminal,node_dashboard,node_mcp,node_taskui,node_user toneBlue
class node_send,node_sessions,node_memoryapi,node_filesapi,node_taskapi,node_swarmapi toneAmber
class node_conductor,node_swarm,node_agentops,node_jobui toneMint
class node_gatewayapi,node_hermes,node_dashboardservice,node_taskstore,node_desktop toneRose
class node_taskclient toneIndigo
```

## Components

### Workspace UI

- [Chat workspace](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/chat/chat-screen.tsx): `src/screens/chat/chat-screen.tsx`
- [Files browser](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/files/files-screen.tsx): `src/screens/files/files-screen.tsx`
- [Memory browser](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/memory/memory-browser-screen.tsx): `src/screens/memory/memory-browser-screen.tsx`
- [Skills manager](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/skills.tsx): `src/routes/skills.tsx`
- [Terminal workspace](https://github.com/outsourc-e/hermes-workspace/blob/main/src/components/terminal/terminal-workspace.tsx): `src/components/terminal/terminal-workspace.tsx`
- [Usage dashboard](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/dashboard/dashboard-screen.tsx): `src/screens/dashboard/dashboard-screen.tsx`
- [MCP manager](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/mcp/mcp-screen.tsx): `src/screens/mcp/mcp-screen.tsx`
- [Task board](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/tasks/tasks-screen.tsx): `src/screens/tasks/tasks-screen.tsx`

### Workspace API

- [Chat endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/send-stream.ts): `src/routes/api/send-stream.ts`
- [Session endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/sessions.ts): `src/routes/api/sessions.ts`
- [Memory endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/memory.ts): `src/routes/api/memory.ts`
- [File endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/files.ts): `src/routes/api/files.ts`
- [Task endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/hermes-tasks.ts): `src/routes/api/hermes-tasks.ts`
- [Swarm endpoints](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/swarm-dispatch.ts): `src/routes/api/swarm-dispatch.ts`

### Agent Operations

- [Conductor missions](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/gateway/conductor.tsx): `src/screens/gateway/conductor.tsx`
- [Swarm control](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/swarm.tsx): `src/routes/swarm.tsx`
- [Agent operations](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/agents/operations-screen.tsx): `src/screens/agents/operations-screen.tsx`
- [Jobs manager](https://github.com/outsourc-e/hermes-workspace/blob/main/src/screens/jobs/jobs-screen.tsx): `src/screens/jobs/jobs-screen.tsx`

### Agent Services

- [Gateway client](https://github.com/outsourc-e/hermes-workspace/blob/main/src/lib/gateway-api.ts): `src/lib/gateway-api.ts`
- **Hermes gateway**
- **Hermes dashboard**
- [Task store](https://github.com/outsourc-e/hermes-workspace/blob/main/src/routes/api/hermes-tasks.%24taskId.ts): `src/routes/api/hermes-tasks.$taskId.ts`
- [Desktop shell](https://github.com/outsourc-e/hermes-workspace/blob/main/electron/main.cjs): `electron/main.cjs`

### Workspace State

- [Task API client](https://github.com/outsourc-e/hermes-workspace/blob/main/src/lib/tasks-api.ts): `src/lib/tasks-api.ts`

### Other components

- **Workspace user**

## Connections

- Workspace user → Chat workspace: starts chat
- Workspace user → Files browser: browses files
- Workspace user → Memory browser: browses memory
- Workspace user → Skills manager: manages skills
- Workspace user → Terminal workspace: opens terminal
- Workspace user → Usage dashboard: reviews usage
- Workspace user → MCP manager: manages MCP
- Workspace user → Task board: tracks tasks
- Workspace user → Conductor missions: dispatches missions
- Chat workspace → Chat endpoints: sends messages
- Chat workspace → Session endpoints: manages sessions
- Chat endpoints → Gateway client: forwards requests
- Gateway client → Hermes gateway: calls gateway
- Memory browser → Memory endpoints: reads and edits
- Files browser → File endpoints: browses files
- Task board → Task API client: loads and updates
- Task API client → Task endpoints: selects backend
- Task endpoints → Task store: reads and writes
- Task endpoints → Hermes dashboard: loads linked history
- Conductor missions → Swarm endpoints: dispatches missions
- Conductor missions → Hermes dashboard: uses mission API
- Swarm control → Swarm endpoints: controls workers
- Swarm endpoints → Hermes gateway: dispatches agents
- Agent operations → Hermes gateway: controls agents
- Jobs manager → Hermes gateway: manages jobs
- Usage dashboard → Hermes dashboard: loads analytics
- MCP manager → Hermes gateway: manages servers
- Desktop shell → Hermes gateway: checks gateway
- Desktop shell → Hermes dashboard: checks dashboard
