OpenHands Compatibility Matrix

Python SDK (openhands-sdk) vs Agent Server (openhands-agent-server) feature support · April 2, 2026

Supported Partial / Indirect Not exposed
Feature Python SDK Agent Server Notes
LLM
LLM completion (chat) Server uses LLM internally; no direct completion endpointExposed indirectly via conversations
Streaming responses WebSocket streaming via /ws/events
Fallback strategies Automatic model fallback on failure
Token usage tracking Tracked internally; exposed via conversation metrics
Model/provider listing /api/llm/providers, /models, /verified-models
Agent & Conversation
Agent creation & configuration Agent passed in StartConversationRequest
Conversation lifecycle (start/pause/run/delete) Full CRUD via /api/conversations
Conversation search & pagination Search, count, batch-get endpoints
Title generation POST /api/conversations/{id}/generate-title
Ask agent (one-shot) POST /api/conversations/{id}/ask
ACP (Agent Communication Protocol) Separate router: /api/acp/conversations
Sub-agents & delegation SDK-only: register_agent, load_agents_from_dir
Critic / iterative refinement SDK-only: CriticBase, APIBasedCritic, etc.
Stuck detector Runs inside server conversations automatically
Condenser (context management) POST /api/conversations/{id}/condense
Events
Event search & pagination /api/events/search, count, batch-get
Send message / user actions POST /api/events/message
Confirmation responses POST /api/events/confirmation
Real-time WebSocket events /ws/events/{id} with pub/sub
Event persistence & serialization JSON event store on disk
Tools
Tool registry & resolution GET /api/tools/ lists registered tools
Terminal (bash execution) Dedicated /api/bash router + WebSocket
File editor Default & Gemini-style variants registered
Browser (browser_use) Chromium preloaded by tool_preload_service
Glob & Grep Gemini preset tools
Task tracker Registered in default & gemini presets
Planning file editor Registered via planning preset
Delegate tool (sub-agents) SDK-only delegation to sub-agents
Custom tool registration SDK: @register_tool decorator for custom tools
MCP (Model Context Protocol)
MCP server integration Via Agent.mcp_config; plugins also merge MCP config
MCP client (direct API) SDK-only: MCPClient for programmatic MCP access
Files & Git
File upload/download /api/file/upload, /download
Trajectory download GET /api/file/trajectory
Git changes & diff /api/git/changes, /diff
Cached git repo SDK-only: CachedRepo for efficient git ops
Skills & Plugins
Skill loading (project/user/public) POST /api/skills/ — loads from multiple sources
Skill sync (marketplace) POST /api/skills/sync
Plugin system (install/uninstall/manage) SDK-only: full plugin lifecycle management
Plugin marketplace SDK-only: Marketplace, MarketplaceEntry
Hooks
Hook loading (project/user) POST /api/hooks/
Hook execution engine Executor runs inside conversations; no direct API
Security
Confirmation policies PUT /api/conversations/{id}/confirmation-policy
Security analyzer (LLM / GraySwan) PUT /api/conversations/{id}/security-analyzer
Security risk assessment Runs inline; not a standalone endpoint
Secret management PUT /api/conversations/{id}/secrets