Run a local Agent Server when you want a backend process to host OpenHands conversations over HTTP and WebSocket. This is the simplest setup for testing Agent Canvas-style backends, local integrations, and client-server SDK applications.Documentation Index
Fetch the complete documentation index at: https://allhandsai-codex-agent-server-user-docs.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Install
Create a Python environment and install the same release of the server package and SDK packages it uses:Start Without Authentication
For local development on your own machine, start the server on loopback:http://127.0.0.1:8000/docs.
If SESSION_API_KEY or OH_SESSION_API_KEYS_* is already set in your shell, the server will require that key for /api/* requests. Unset those variables for unauthenticated local-only testing.
Start With an API Key
Set a session API key before starting the server:/api/* must include the session key. This request returns the conversation count when the key is accepted:
OH_SECRET_KEY whenever you want conversations and stored settings to survive restarts with their sensitive values intact. Keep this value stable and store it in your normal secret manager.
Connect From the SDK
UseWorkspace(host=..., api_key=...) to connect SDK code to the server:
OH_SESSION_API_KEYS_0, omit api_key.
Connect From Another Service
For a backend service, configure two values:- The Agent Server URL, for example
http://127.0.0.1:8000. - The session API key, passed as
X-Session-API-Keyon API requests or asapi_keywhen using the SDKWorkspace.
127.0.0.1 when the backend runs on the same machine. If the backend runs on another host, use a private network or reverse proxy, enable TLS, and restrict network access to trusted callers.
Configure CORS
Most backends call the Agent Server from server-side code and do not need CORS. If browser code calls the Agent Server directly, allow that origin:127.0.0.1 origins are allowed automatically.
Run From the SDK Repository
When developingOpenHands/software-agent-sdk itself:
Ready-to-Run Example
This example is available on GitHub: examples/02_remote_agent_server/01_convo_with_local_agent_server.py.
Workspace(host=...), and runs a RemoteConversation.
You can run the example code as-is.
The model name should follow the LiteLLM convention:
provider/model_name (e.g., anthropic/claude-sonnet-4-5-20250929, openai/gpt-4o).
The LLM_API_KEY should be the API key for your chosen provider.Troubleshooting
- 401 Unauthorized: Check that the client sends
X-Session-API-Keyand that it matchesOH_SESSION_API_KEYS_0. - Secrets are missing after restart: Set a stable
OH_SECRET_KEYbefore starting the server. - The server is reachable locally but not from another machine: Use
--host 0.0.0.0only behind trusted network controls, then check firewall and proxy rules. - CORS errors in a browser: Set
OH_ALLOW_CORS_ORIGINS_0to the browser app origin. - Port conflict: Start with another port, for example
--port 8001.
Next Steps
- Agent Server Package - Installation, security, and operational guidance.
- Docker Sandboxed Server - Run the server in an isolated Docker workspace.
- API Sandboxed Server - Start hosted runtime workspaces.
- Agent Server API Reference - Browse generated endpoint docs.

