docs: add Phase 5 ACP roadmap + deploy OpenHands agent-server on Dokploy
- Added Phase 5: ACP Harness & Runtime Agnosticism to roadmap - Created docker/docker-compose.agent-server.yml for CT 102 deployment - Updated worker default AGENT_SERVER_URL to internal Docker DNS (http://agent-server:8001) - Worker now runs OpenHands sessions directly on the server, no laptop/Traefik needed
This commit is contained in:
parent
3fc7d01585
commit
4efaf6c0c8
3 changed files with 84 additions and 6 deletions
|
|
@ -38,11 +38,11 @@ const envSchema = z.object({
|
||||||
.enum(["minimal", "openhands"])
|
.enum(["minimal", "openhands"])
|
||||||
.optional()
|
.optional()
|
||||||
.default("minimal"),
|
.default("minimal"),
|
||||||
/** OpenHands agent-server URL (local: http://localhost:18000, Cloud: from conversation). */
|
/** OpenHands agent-server URL. Docker: http://agent-server:8001, Local: http://localhost:18000 */
|
||||||
AGENT_SERVER_URL: z
|
AGENT_SERVER_URL: z
|
||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
.transform((value) => value?.trim() || "http://localhost:18000"),
|
.transform((value) => value?.trim() || "http://agent-server:8001"),
|
||||||
/** OpenHands session API key for agent-server auth. */
|
/** OpenHands session API key for agent-server auth. */
|
||||||
SESSION_API_KEY: z
|
SESSION_API_KEY: z
|
||||||
.string()
|
.string()
|
||||||
|
|
|
||||||
51
docker/docker-compose.agent-server.yml
Normal file
51
docker/docker-compose.agent-server.yml
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# OpenHands Agent Server for Submatter
|
||||||
|
# Deploys on Dokploy (CT 102) alongside the existing stack
|
||||||
|
# Worker connects via internal Docker DNS: http://agent-server:8001
|
||||||
|
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
agent-server:
|
||||||
|
image: ghcr.io/open-hands/agent-server:0.19.0 # pin to stable version
|
||||||
|
container_name: echodo-agent-server
|
||||||
|
ports:
|
||||||
|
- "8001:8001" # agent-server API
|
||||||
|
environment:
|
||||||
|
# Server config
|
||||||
|
- AGENT_SERVER_HOST=0.0.0.0
|
||||||
|
- AGENT_SERVER_PORT=8001
|
||||||
|
- LOCAL_BACKEND_API_KEY=${LOCAL_BACKEND_API_KEY}
|
||||||
|
# LLM config for the agent-server's own operations
|
||||||
|
- LLM_MODEL=${OMNIROUTE_MODEL:-auto/coding}
|
||||||
|
- LLM_API_KEY=${OMNIROUTE_API_KEY}
|
||||||
|
- LLM_BASE_URL=${OMNIROUTE_BASE_URL}
|
||||||
|
# Sandbox config
|
||||||
|
- SANDBOX_TYPE=docker
|
||||||
|
- SANDBOX_DOCKER_IMAGE=ghcr.io/open-hands/sandbox:latest
|
||||||
|
- SANDBOX_TIMEOUT=300
|
||||||
|
# Workspace persistence
|
||||||
|
- WORKSPACE_BASE=/workspace
|
||||||
|
volumes:
|
||||||
|
- agent-server-workspace:/workspace
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock # for sandbox containers
|
||||||
|
networks:
|
||||||
|
- echodo-network
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8001/server_info"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 10s
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 2G
|
||||||
|
cpus: '2'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
agent-server-workspace:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
echodo-network:
|
||||||
|
external: true
|
||||||
|
|
@ -435,15 +435,42 @@ By end of Phase 4:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Phase 5: ACP Harness & Runtime Agnosticism (post-v0.1)
|
||||||
|
|
||||||
|
**Goal:** Make submatter runtime-agnostic via Agent Client Protocol (ACP).
|
||||||
|
|
||||||
|
**Why:** ACP is an emerging standard that allows OpenHands, Claude Code, Gemini CLI, and other runtimes to be swapped via a single protocol. This prevents vendor lock-in and lets operators choose the best runtime per task.
|
||||||
|
|
||||||
|
**Tasks:**
|
||||||
|
|
||||||
|
1. Add `HarnessType: "acp"` to shared types
|
||||||
|
2. Create `apps/worker/src/executor/acp-executor.ts` — implements ACP client (connects to any ACP-compatible server)
|
||||||
|
3. Support ACP discovery via `/.well-known/agent.json` (runtime metadata)
|
||||||
|
4. Add `acp` harness type to executor registry
|
||||||
|
5. Support sub-agents via ACP Task Tool Set
|
||||||
|
|
||||||
|
**ACP-compatible runtimes:**
|
||||||
|
- OpenHands (primary)
|
||||||
|
- Claude Code (Anthropic)
|
||||||
|
- Gemini CLI (Google)
|
||||||
|
- Cursor (experimental)
|
||||||
|
- Custom (any ACP server)
|
||||||
|
|
||||||
|
**This is NOT required for v0.1 testing.** Ships after v0.1 ships and proves out.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Rollout & Scaling
|
## Rollout & Scaling
|
||||||
|
|
||||||
Once Phase 4 succeeds:
|
Once Phase 4 succeeds:
|
||||||
|
|
||||||
1. **Publish to v0.1** — Mark the orchestrator + worker as production-ready for autonomous convoys
|
1. **Publish to v0.1** — Mark the orchestrator + worker as production-ready for autonomous convoys
|
||||||
2. **Scale briefs** — Extend to 5–6 briefs per convoy (architect → implementer → reviewer → ops-copilot → etc.)
|
2. **Deploy OpenHands Agent Server** — Docker container on Dokploy (CT 102), worker connects via internal Docker DNS
|
||||||
3. **Scale roles** — Add `role-docs-writer`, `role-security-auditor`, `role-performance-reviewer` as needed
|
3. **Scale briefs** — Extend to 5–6 briefs per convoy (architect → implementer → reviewer → ops-copilot → etc.)
|
||||||
4. **Scale models** — Extend omniroute integration to support Claude/OpenAI/Gemini APIs side-by-side
|
4. **Scale roles** — Add `role-docs-writer`, `role-security-auditor`, `role-performance-reviewer` as needed
|
||||||
5. **Migrate Cursor convoys** — For convoys that have historically run in Cursor, run them via OpenHands instead (backward compat: human-initiated, not automated)
|
5. **Scale models** — Extend omniroute integration to support Claude/OpenAI/Gemini APIs side-by-side
|
||||||
|
6. **Migrate Cursor convoys** — For convoys that have historically run in Cursor, run them via OpenHands instead (backward compat: human-initiated, not automated)
|
||||||
|
7. **ACP harness** — After v0.1 ships, add ACP support to enable runtime-agnostic agent execution
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue