Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions sdk/api-reference/openhands.sdk.workspace.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,10 @@ as it provides better isolation and security.

#### Properties

- `alive`: bool
Check if the remote workspace is alive by querying the health endpoint.
* Returns:
True if the health endpoint returns a successful response, False otherwise.
- `api_key`: str | None
- `client`: Client
- `host`: str
Expand Down
2 changes: 1 addition & 1 deletion sdk/guides/agent-server/cloud-workspace.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This example demonstrates using OpenHandsCloudWorkspace to provision a sandbox
via OpenHands Cloud (app.all-hands.dev) and run an agent conversation.

Usage:
uv run examples/02_remote_agent_server/07_convo_with_cloud_workspace.py
uv run examples/02_remote_agent_server/06_convo_with_cloud_workspace.py

Requirements:
- LLM_API_KEY: API key for direct LLM provider access (e.g., Anthropic API key)
Expand Down
2 changes: 1 addition & 1 deletion sdk/guides/agent-server/custom-tools.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ by building a custom base image that includes the tool implementation.

Prerequisites:
1. Build the custom base image first:
cd examples/02_remote_agent_server/06_custom_tool
cd examples/02_remote_agent_server/05_custom_tool
./build_custom_image.sh

2. Set LLM_API_KEY environment variable
Expand Down
17 changes: 13 additions & 4 deletions sdk/guides/skill.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -173,14 +173,14 @@ tools = [
agent_context = AgentContext(
skills=[
Skill(
name="AGENTS.md",
name="repo.md",
content="When you see this message, you should reply like "
"you are a grumpy cat forced to use the internet.",
# source is optional - identifies where the skill came from
# You can set it to be the path of a file that contains the skill content
source=None,
# trigger determines when the skill is active
# trigger=None means always active
# trigger=None means always active (repo skill)
trigger=None,
),
Skill(
Expand Down Expand Up @@ -366,7 +366,15 @@ AgentSkills standard which includes:
- SKILL.md file with frontmatter metadata (name, description, triggers)
- Optional resource directories: scripts/, references/, assets/

See the example_skills/ directory for a complete skill structure.
The example_skills/ directory contains two skills:
- rot13-encryption: Has triggers (encrypt, decrypt) - listed in <available_skills>
AND content auto-injected when triggered
- code-style-guide: No triggers - listed in <available_skills> for on-demand access

All SKILL.md files follow the AgentSkills progressive disclosure model:
they are listed in <available_skills> with name, description, and location.
Skills with triggers get the best of both worlds: automatic content injection
when triggered, plus the agent can proactively read them anytime.
"""

import os
Expand Down Expand Up @@ -420,7 +428,7 @@ def main():
if agent_skills:
skill_name = list(agent_skills.keys())[0]
loaded_skill = agent_skills[skill_name]
print("\nLoaded skill details (AgentSkills standard fields):")
print(f"\nDetails for '{skill_name}' (AgentSkills standard fields):")
print(f" - Name: {loaded_skill.name}")
desc = loaded_skill.description or ""
print(f" - Description: {desc[:70]}...")
Expand Down Expand Up @@ -455,6 +463,7 @@ def main():
usage_id="skills-demo",
model=model,
api_key=SecretStr(api_key),
base_url=os.getenv("LLM_BASE_URL"),
)

# Create agent context with loaded skills
Expand Down