mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 05:37:20 +08:00
Co-authored-by: openhands <openhands@all-hands.dev> Co-authored-by: Saurya <saurya@openhands.dev> Co-authored-by: Ray Myers <ray.myers@gmail.com>
2.6 KiB
2.6 KiB
System Architecture Overview
OpenHands supports multiple deployment configurations. This document describes the core components and how they interact.
Local/Docker Deployment
The simplest deployment runs everything locally or in Docker containers:
flowchart TB
subgraph Server["OpenHands Server"]
API["REST API<br/>(FastAPI)"]
ConvMgr["Conversation<br/>Manager"]
Runtime["Runtime<br/>Manager"]
end
subgraph Sandbox["Sandbox (Docker Container)"]
AES["Action Execution<br/>Server"]
Browser["Browser<br/>Environment"]
FS["File System"]
end
User["User"] -->|"HTTP/WebSocket"| API
API --> ConvMgr
ConvMgr --> Runtime
Runtime -->|"Provision"| Sandbox
Server -->|"Execute actions"| AES
AES --> Browser
AES --> FS
Core Components
| Component | Purpose | Location |
|---|---|---|
| Server | REST API, conversation management, runtime orchestration | openhands/server/ |
| Runtime | Abstract interface for sandbox execution | openhands/runtime/ |
| Action Execution Server | Execute bash, file ops, browser actions | Inside sandbox |
| EventStream | Central event bus for all communication | openhands/events/ |
Scalable Deployment
For production deployments, OpenHands can be configured with a separate Runtime API service:
flowchart TB
subgraph AppServer["App Server"]
API["REST API"]
ConvMgr["Conversation<br/>Manager"]
end
subgraph RuntimeAPI["Runtime API (Optional)"]
RuntimeMgr["Runtime<br/>Manager"]
WarmPool["Warm Pool"]
end
subgraph Sandbox["Sandbox"]
AS["Agent Server"]
AES["Action Execution<br/>Server"]
end
User["User"] -->|"HTTP"| API
API --> ConvMgr
ConvMgr -->|"Provision"| RuntimeMgr
RuntimeMgr --> WarmPool
RuntimeMgr --> Sandbox
User -.->|"WebSocket"| AS
AS -->|"HTTP"| AES
This configuration enables:
- Warm pool: Pre-provisioned runtimes for faster startup
- Direct WebSocket: Users connect directly to their sandbox, bypassing the App Server
- Horizontal scaling: App Server and Runtime API can scale independently
Runtime Options
OpenHands supports multiple runtime implementations:
| Runtime | Use Case |
|---|---|
| DockerRuntime | Local development, single-machine deployments |
| RemoteRuntime | Connect to externally managed sandboxes |
| ModalRuntime | Serverless execution via Modal |
See the Runtime documentation for details.