v1.0.0 Release
Official V1 SDK Release 🎉
- Documentation: https://docs.openhands.dev/
- Evaluation: https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=811504672#gid=811504672
- Paper: https://arxiv.org/abs/2511.03690
What's Changed
- Agent Server UUIDs without hyphens by @tofarr in #960
- Enhance README with branding and resources by @xingyaoww in #961
- Default to function calling enabled, remove FUNCTION_CALLING_PATTERNS allowlist by @xingyaoww in #956
- Rename SecretsManager to SecretRegistry by @enyst in #965
- Rename ConversationState field to secret_registry with read-alias by @enyst in #969
- Add codex-mini-latest to RESPONSES_API_PATTERNS by @YakshithK in #934
- Fix double dollar sign in visualizer metrics display by @xingyaoww in #938
- fix browser tool cleanup by @dinmukhamedm in #942
- feat: Add
llm_response_idto all LLM generated events by @ApGa in #930 - Fix formatting: remove extra blank line in model_features.py by @xingyaoww in #973
- Fix VNC security vulnerability by defaulting to disabled by @rbren in #974
- Fix wrong server path for file upload endpoint by @ryanhoangt in #951
- Fix bash executor session reuse by resetting closed sessions by @softpudding in #964
- Fix duplicate reviewer assignment in assign-reviews workflow by @neubig in #827
- Add logging for file upload and download actions by @rbren in #993
- sdk(llm): Stop model-name whack-a-mole: revert to core family substring matching by @enyst in #879
- Add glm4.6 to FORCE_STRING_SERIALIZER by @simonrosenberg in #994
- update patterns in FORCE_STRING_SERIALIZER_PATTERNS by @simonrosenberg in #995
- Add tests for string serializer by @enyst in #996
- Add cost reporting for
run-examples.ymland schedule scripts to run daily by @ryanhoangt in #977 - Remove default MCP servers from preset agents by @xingyaoww in #984
- Bug: fix Visualizer "Message To User" that should be "Message from User" by @simonrosenberg in #1002
- Tweak review workflow for draft PRs by @enyst in #997
- Fix(llm):When LLM calls are retried, it can lead to inaccurate records. by @CLFutureX in #949
- Normalize SDK errors for clients by @enyst in #980
- Add Datadog debugging example with API integration tools by @neubig in #272
- Add Sphinx-compatible docstrings to core SDK classes by @rbren in #1006
- Refactor ToolDefinition architecture to use subclass pattern for all tools by @xingyaoww in #971
- Fix datadog debugging workflow example by @neubig in #1009
- feat(backend): enhance search_conversation_events functions with timestamp filtering support by @hieptl in #695
- Add comprehensive unit tests for conversation_router.py endpoints by @tofarr in #1010
- Update example API key in README by @SmartManoj in #1013
- Migrate to Blacksmith official Docker actions with native multi-platform builds by @xingyaoww in #990
- Fix/remove docstring for OpenHands tool package by @rbren in #1018
- feat(llm): forward extra_headers to LiteLLM completion and responses by @enyst in #733
- refactor: rename
AgentExecutionStatus->ConversationExecutionStatus& state'sagent_status->executiong_statusby @simonrosenberg in #839 - Add OpenTelemetry with Laminar SDK by @dinmukhamedm in #681
- More agent_status to execution_status_updates, and error state by @tofarr in #1019
- Recognize GPT‑5 context overflow and trigger condenser (Fixes #776) by @enyst in #783
- Rename metadata field to litellm_extra_body and add custom config support by @li-boxuan in #837
- Fix error in 422 logs due to blank bearer token by @tofarr in #1022
- Fix abbreviation formatting in visualizer by @SmartManoj in #989
- Implement automatic tool registration on import by @malhotra5 in #862
- feat: Add automatic loading of user skills from home directory by @whywaita in #950
- Fix multi-arch manifest merge to use correct tag names by @xingyaoww in #1024
- Disable Copilot chat command center icon by default (parity with OpenHands PR #11589) by @enyst in #1032
- Fix Docker cache tag length exceeding 128 character limit by @xingyaoww in #1029
- Fix Laminar span stack warning in LocalConversation by @jpshackelford in #1039
- Include 03_browser_use_with_docker_sandboxed_server.py in test-examples workflow by @xingyaoww in #1021
- A couple of fixes for OpenAI o3 by @enyst in #1031
- refactor: standardize Observation base class by @simonrosenberg in #929
- Fix: Make reasoning_effort optional by @Chesars in #1004
- Simplify hello world example by @rbren in #1047
- Add reviewer trigger for PR review workflow by @simonrosenberg in #1037
- Fix RemoteConversation stats field mismatch and state updates by @xingyaoww in #1042
- Rename execute_bash to terminal & rename BashTool to TerminalTool by @SmartManoj in #1033
- Improve visualization API: allow passing ConversationVisualizer directly by @xingyaoww in #1025
- v1.0.0 release by @xingyaoww in #1056
New Contributors
- @YakshithK made their first contribution in #934
- @ApGa made their first contribution in #930
- @softpudding made their first contribution in #964
- @CLFutureX made their first contribution in #949
- @SmartManoj made their first contribution in #1013
- @whywaita made their first contribution in #950
- @Chesars made their first contribution in #1004
Full Changelog: 1.0.0a5...1.0.0