AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
OpenHands V1 기반 AI 에이전트 구축을 위한 깔끔하고 모듈형 SDK입니다
A clean, modular SDK for building AI agents with OpenHands V1.
개발 도구Python · TypeScriptGitHub @OpenHands직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The OpenHands Software Agent SDK provides Python, TypeScript, and REST APIs for building agents that work with code.
You can use the OpenHands Software Agent SDK for:
Importantly, agents can either use the local machine as their workspace, or run inside ephemeral workspaces (e.g. in Docker or Kubernetes) using the Agent Server.
You can even use the SDK to build new developer experiences: it’s the engine behind the OpenHands CLI and OpenHands Cloud.
Get started with some examples or check out the docs to learn more.
Here's what building with the SDK looks like:
import os
from openhands.sdk import LLM, Agent, Conversation, Tool
from openhands.tools.file_editor import FileEditorTool
from openhands.tools.task_tracker import TaskTrackerTool
from openhands.tools.terminal import TerminalTool
llm = LLM(
model="gpt-5.5",
api_key=os.getenv("LLM_API_KEY"),
)
agent = Agent(
llm=llm,
tools=[
Tool(name=TerminalTool.name),
Tool(name=FileEditorTool.name),
Tool(name=TaskTrackerTool.name),
],
)
cwd = os.getcwd()
conversation = Conversation(agent=agent, workspace=cwd)
conversation.send_message("Write 3 facts about the current project into FACTS.txt.")
conversation.run()
print("All done!")
For installation instructions and detailed setup, see the Getting Started Guide.
For local development from this repository, run make build to install the workspace dependencies and pre-commit hooks.
This repository owns the canonical Python SDK and Agent Server implementation as well as the browser-compatible TypeScript client. It owns agents, tools, conversations, workspaces, events, the REST/WebSocket API, and typed client access to that API. OpenHands/OpenHands consumes the TypeScript client as Agent Canvas, while OpenHands/automation owns scheduling, webhooks, run history, and dispatching. The SDK/Agent Server executes the conversations dispatched by automation.
The normal flow is SDK/Agent Server → OpenAPI contract → clients/typescript → Agent Canvas. Backend behavior and endpoints belong in the Python SDK or Agent Server packages; browser-compatible client access belongs in clients/typescript, UI in Agent Canvas, and automation lifecycle behavior in automation.
For detailed documentation, tutorials, and API reference, visit:
https://docs.openhands.dev/sdk
The documentation includes:
The examples/ directory contains comprehensive usage examples:
examples/01_standalone_sdk/) - Basic agent usage, custom tools, and core workflowsexamples/02_remote_agent_server/) - Client-server architecture and WebSocket connectionsexamples/03_github_workflows/) - CI/CD integration and automated workflowsexamples/05_skills_and_plugins/) - AgentSkills, plugins, and marketplace examplesIf you enable public skills with AgentContext(load_public_skills=True), the default
OpenHands/extensions marketplace includes, for example, uv and deno skills.
Agents can automatically pick up current package-management guidance for repositories
that use markers like uv.lock, deno.json, deno.jsonc, or deno.lock.
See examples/01_standalone_sdk/03_activate_skill.py for a minimal example that
turns on public skill loading.
For development setup, testing, and contribution guidelines, see DEVELOPMENT.md.
@misc{wang2025openhandssoftwareagentsdk,
title={The OpenHands Software Agent SDK: A Composable and Extensible Foundation for Production Agents},
author={Xingyao Wang and Simon Rosenberg and Juan Michelini and Calvin Smith and Hoang Tran and Engel Nyst and Rohit Malhotra and Xuhui Zhou and Valerie Chen and Robert Brennan and Graham Neubig},
year={2025},
eprint={2511.03690},
archivePrefix={arXiv},
primaryClass={cs.SE},
url={https://arxiv.org/abs/2511.03690},
}