Skip to content

Conversation

@tofarr
Copy link
Collaborator

@tofarr tofarr commented Nov 7, 2025

Example:

Use use the agent_server_ui:

export OH_STATIC_FILES_PATH="scripts/agent_server_ui/static"
uv run python -m openhands.agent_server 

Start a new Conversation with an invalid LLM Key

image
{
  "agent": {
    "kind": "Agent",
    "llm": {
      "model": "litellm_proxy/prod/claude-sonnet-4-20250514",
      "api_key": "NOT_A_REAL_KEY",
      "base_url": "https://llm-proxy.app.all-hands.dev",
      "api_version": null,
      "aws_access_key_id": null,
      "aws_secret_access_key": null,
      "aws_region_name": null,
      "openrouter_site_url": "https://docs.all-hands.dev/",
      "openrouter_app_name": "OpenHands",
      "num_retries": 5,
      "retry_multiplier": 8.0,
      "retry_min_wait": 8,
      "retry_max_wait": 64,
      "timeout": null,
      "max_message_chars": 30000,
      "temperature": 0.0,
      "top_p": 1.0,
      "top_k": null,
      "custom_llm_provider": null,
      "max_input_tokens": 1000000,
      "max_output_tokens": 64000,
      "input_cost_per_token": null,
      "output_cost_per_token": null,
      "ollama_base_url": null,
      "drop_params": true,
      "modify_params": true,
      "disable_vision": null,
      "disable_stop_word": false,
      "caching_prompt": true,
      "log_completions": false,
      "log_completions_folder": "logs/completions",
      "custom_tokenizer": null,
      "native_tool_calling": true,
      "reasoning_effort": "high",
      "extended_thinking_budget": 200000,
      "seed": null,
      "safety_settings": null,
      "service_id": "agent",
      "OVERRIDE_ON_SERIALIZE": [
        "api_key",
        "aws_access_key_id",
        "aws_secret_access_key"
      ]
    },
    "mcp_config": {
      "mcpServers": {
        "fetch": {
          "command": "uvx",
          "args": [
            "mcp-server-fetch"
          ]
        },
        "repomix": {
          "command": "npx",
          "args": [
            "-y",
            "[email protected]",
            "--mcp"
          ]
        }
      }
    },
    "filter_tools_regex": "^(?!repomix)(.*)|^repomix.*pack_codebase.*$",
    "agent_context": null,
    "system_prompt_filename": "system_prompt.j2",
    "system_prompt_kwargs": {
      "cli_mode": false
    },
    "security_analyzer": {
      "kind": "LLMSecurityAnalyzer"
    },
    "condenser": {
      "kind": "LLMSummarizingCondenser",
      "llm": {
        "model": "litellm_proxy/prod/claude-sonnet-4-20250514",
        "api_key": "NOT_A_REAL_KEY",
        "base_url": "https://llm-proxy.app.all-hands.dev",
        "api_version": null,
        "aws_access_key_id": null,
        "aws_secret_access_key": null,
        "aws_region_name": null,
        "openrouter_site_url": "https://docs.all-hands.dev/",
        "openrouter_app_name": "OpenHands",
        "num_retries": 5,
        "retry_multiplier": 8.0,
        "retry_min_wait": 8,
        "retry_max_wait": 64,
        "timeout": null,
        "max_message_chars": 30000,
        "temperature": 0.0,
        "top_p": 1.0,
        "top_k": null,
        "custom_llm_provider": null,
        "max_input_tokens": 1000000,
        "max_output_tokens": 64000,
        "input_cost_per_token": null,
        "output_cost_per_token": null,
        "ollama_base_url": null,
        "drop_params": true,
        "modify_params": true,
        "disable_vision": null,
        "disable_stop_word": false,
        "caching_prompt": true,
        "log_completions": false,
        "log_completions_folder": "logs/completions",
        "custom_tokenizer": null,
        "native_tool_calling": true,
        "reasoning_effort": "high",
        "extended_thinking_budget": 200000,
        "seed": null,
        "safety_settings": null,
        "service_id": "condenser",
        "OVERRIDE_ON_SERIALIZE": [
          "api_key",
          "aws_access_key_id",
          "aws_secret_access_key"
        ]
      },
      "max_size": 80,
      "keep_first": 4
    }
  },
  "workspace": {
    "kind": "LocalWorkspace",
    "working_dir": "workspace"
  },
  "confirmation_policy": {
    "kind": "NeverConfirm"
  },
  "initial_message": null,
  "max_iterations": 500,
  "stuck_detection": true
}

UI Now Receives Explicit ConversationErrorEvent

image image

Agent Server images for this PR

GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server

Variants & Base Images

Variant Architectures Base Image Docs / Tags
java amd64, arm64 eclipse-temurin:17-jdk Link
python amd64, arm64 nikolaik/python-nodejs:python3.12-nodejs22 Link
golang amd64, arm64 golang:1.21-bookworm Link

Pull (multi-arch manifest)

# Each variant is a multi-arch manifest supporting both amd64 and arm64
docker pull ghcr.io/openhands/agent-server:9335bad-python

Run

docker run -it --rm \
  -p 8000:8000 \
  --name agent-server-9335bad-python \
  ghcr.io/openhands/agent-server:9335bad-python

All tags pushed for this build

ghcr.io/openhands/agent-server:9335bad-golang-amd64
ghcr.io/openhands/agent-server:9335bad-golang_tag_1.21-bookworm-amd64
ghcr.io/openhands/agent-server:9335bad-golang-arm64
ghcr.io/openhands/agent-server:9335bad-golang_tag_1.21-bookworm-arm64
ghcr.io/openhands/agent-server:9335bad-java-amd64
ghcr.io/openhands/agent-server:9335bad-eclipse-temurin_tag_17-jdk-amd64
ghcr.io/openhands/agent-server:9335bad-java-arm64
ghcr.io/openhands/agent-server:9335bad-eclipse-temurin_tag_17-jdk-arm64
ghcr.io/openhands/agent-server:9335bad-python-amd64
ghcr.io/openhands/agent-server:9335bad-nikolaik_s_python-nodejs_tag_python3.12-nodejs22-amd64
ghcr.io/openhands/agent-server:9335bad-python-arm64
ghcr.io/openhands/agent-server:9335bad-nikolaik_s_python-nodejs_tag_python3.12-nodejs22-arm64
ghcr.io/openhands/agent-server:9335bad-golang
ghcr.io/openhands/agent-server:9335bad-java
ghcr.io/openhands/agent-server:9335bad-python

About Multi-Architecture Support

  • Each variant tag (e.g., 9335bad-python) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., 9335bad-python-amd64) are also available if needed

…nt, with behavior differences for app and LLM

Co-authored-by: openhands <[email protected]>
Copy link
Collaborator

@enyst enyst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

I added some docstring; still not fully happy with it, but maybe the right place to expand on this is in the actual docs...

@tofarr tofarr merged commit 3aa647e into main Nov 8, 2025
20 checks passed
@tofarr tofarr deleted the add-error-event branch November 8, 2025 00:39
@enyst
Copy link
Collaborator

enyst commented Nov 8, 2025

Cc: @malhotra5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants