Skip to content

Commit 072aa4d

Browse files
authored
Merge branch 'main' into main
2 parents 75bfe68 + 848f692 commit 072aa4d

File tree

84 files changed

+1373
-298
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+1373
-298
lines changed

.github/ISSUE_TEMPLATE/bug_template.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ body:
4545
description: What version of OpenHands are you using?
4646
placeholder: ex. 0.9.8, main, etc.
4747

48+
- type: input
49+
id: model-name
50+
attributes:
51+
label: Model Name
52+
description: What model are you using?
53+
placeholder: ex. gpt-4o, claude-3-5-sonnet, openrouter/deepseek-r1, etc.
54+
4855
- type: dropdown
4956
id: os
5057
attributes:

README.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,14 @@ works best, but you have [many options](https://docs.all-hands.dev/usage/llms).
8585

8686
## 💡 Other ways to run OpenHands
8787

88-
> [!CAUTION]
88+
> [!WARNING]
8989
> OpenHands is meant to be run by a single user on their local workstation.
9090
> It is not appropriate for multi-tenant deployments where multiple users share the same instance. There is no built-in authentication, isolation, or scalability.
9191
>
92-
> If you're interested in running OpenHands in a multi-tenant environment, please
93-
> [get in touch with us](https://docs.google.com/forms/d/e/1FAIpQLSet3VbGaz8z32gW9Wm-Grl4jpt5WgMXPgJ4EDPVmCETCBpJtQ/viewform)
94-
> for advanced deployment options.
92+
> If you're interested in running OpenHands in a multi-tenant environment, check out the source-available, commercially-licensed
93+
> [OpenHands Cloud Helm Chart](https://github.com/all-Hands-AI/OpenHands-cloud)
9594
96-
You can also [connect OpenHands to your local filesystem](https://docs.all-hands.dev/usage/runtimes/docker#connecting-to-your-filesystem),
95+
You can [connect OpenHands to your local filesystem](https://docs.all-hands.dev/usage/runtimes/docker#connecting-to-your-filesystem),
9796
run OpenHands in a scriptable [headless mode](https://docs.all-hands.dev/usage/how-to/headless-mode),
9897
interact with it via a [friendly CLI](https://docs.all-hands.dev/usage/how-to/cli-mode),
9998
or run it on tagged issues with [a github action](https://docs.all-hands.dev/usage/how-to/github-action).

config.template.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,25 @@ model = "gpt-4o"
200200
# https://github.com/All-Hands-AI/OpenHands/pull/4711
201201
#native_tool_calling = None
202202

203+
204+
# Safety settings for models that support them (e.g., Mistral AI, Gemini)
205+
# Example for Mistral AI:
206+
# safety_settings = [
207+
# { "category" = "hate", "threshold" = "low" },
208+
# { "category" = "harassment", "threshold" = "low" },
209+
# { "category" = "sexual", "threshold" = "low" },
210+
# { "category" = "dangerous", "threshold" = "low" }
211+
# ]
212+
#
213+
# Example for Gemini:
214+
# safety_settings = [
215+
# { "category" = "HARM_CATEGORY_HARASSMENT", "threshold" = "BLOCK_NONE" },
216+
# { "category" = "HARM_CATEGORY_HATE_SPEECH", "threshold" = "BLOCK_NONE" },
217+
# { "category" = "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold" = "BLOCK_NONE" },
218+
# { "category" = "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold" = "BLOCK_NONE" }
219+
# ]
220+
#safety_settings = []
221+
203222
[llm.draft_editor]
204223
# The number of times llm_editor tries to fix an error when editing.
205224
correct_num = 5

dev_config/python/.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ repos:
33
rev: v5.0.0
44
hooks:
55
- id: trailing-whitespace
6-
exclude: docs/modules/python
6+
exclude: ^(docs/|modules/|python/|openhands-ui/)
77
- id: end-of-file-fixer
8-
exclude: docs/modules/python
8+
exclude: ^(docs/|modules/|python/|openhands-ui/)
99
- id: check-yaml
1010
args: ["--allow-multiple-documents"]
1111
- id: debug-statements

docs/docs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,12 @@
151151
}
152152
]
153153
},
154+
{
155+
"tab": "Success Stories",
156+
"pages": [
157+
"success-stories/index"
158+
]
159+
},
154160
{
155161
"tab": "API Reference",
156162
"openapi": "/openapi.json"

docs/success-stories/index.mdx

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
---
2+
title: "Success Stories"
3+
description: "Real-world examples of what you can achieve with OpenHands"
4+
---
5+
6+
Discover how developers and teams are using OpenHands to automate their software development workflows. From quick fixes to complex projects, see what's possible with AI-powered development assistance.
7+
8+
Check out the [#success-stories](https://www.linen.dev/s/openhands/c/success-stories) channel on our Slack for more!
9+
10+
<Update label="2025-06-13 OpenHands helps frontline support" description="@Joe Pelletier">
11+
12+
## One of the cool things about OpenHands, and especially the Slack Integration, is the ability to empower folks who are on the ‘front lines’ with customers.
13+
14+
For example, often times Support and Customer Success teams will field bug reports, doc questions, and other ‘nits’ from customers. They tend to have few options to deal with this, other than file a feedback ticket with product teams and hope it gets prioritized in an upcoming sprint.
15+
16+
Instead, with tools like OpenHands and the Slack integration, they can request OpenHands to make fixes proactively and then have someone on the engineering team (like a lead engineer, a merge engineer, or even technical product manager) review the PR and approve it — thus reducing the cycle time for ‘quick wins’ from weeks to just a few hours.
17+
18+
Here's how we do that with the OpenHands project:
19+
20+
<iframe
21+
width="560"
22+
height="560"
23+
src="https://www.linen.dev/s/openhands/t/29118545/seems-mcp-config-from-config-toml-is-being-overwritten-hence#629f8e2b-cde8-427e-920c-390557a06cc9"
24+
frameborder="0"
25+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
26+
allowfullscreen
27+
></iframe>
28+
29+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29124350/one-of-the-cool-things-about-openhands-and-especially-the-sl#25029f37-7b0d-4535-9187-83b3e06a4011)
30+
31+
</Update>
32+
33+
34+
<Update label="2025-06-13 Ask OpenHands to show me some love" description="@Graham Neubig">
35+
36+
## Asked openhands to “show me some love” and...
37+
38+
Asked openhands to “show me some love” and it coded up this app for me, actually kinda genuinely feel loved
39+
40+
<video
41+
controls
42+
autoplay
43+
className="w-full aspect-video"
44+
src="/success-stories/stories/2025-06-13-show-love/v1.mp4"
45+
></video>
46+
47+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100731/asked-openhands-to-show-me-some-love-and-it-coded-up-this-ap#1e08af6b-b7d5-4167-8a53-17e6806555e0)
48+
49+
</Update>
50+
51+
<Update label="2025-06-11 OpenHands does 100% of my infra IAM research for me" description="@Xingyao Wang">
52+
53+
## Now, OpenHands does 100% of my infra IAM research for me
54+
55+
Got an IAM error on GCP? Send a screenshot to OH... and it just works!!!
56+
Can't imagine going back to the early days without OH: I'd spend an entire afternoon figuring how to get IAM right
57+
58+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100732/now-openhands-does-100-of-my-infra-iam-research-for-me-sweat#20482a73-4e2e-4edd-b6d1-c9e8442fccd1)
59+
60+
![](/success-stories/stories/2025-06-11-infra-iam/s1.png)
61+
![](/success-stories/stories/2025-06-11-infra-iam/s2.png)
62+
63+
</Update>
64+
65+
<Update label="2025-06-08 OpenHands builds an interactive map for me" description="@Rodrigo Argenton Freire (ODLab)">
66+
67+
## Very simple example, but baby steps....
68+
69+
I am a professor of architecture and urban design. We built, me and some students, an interactive map prototype to help visitors and new students to find important places in the campus. Considering that we lack a lot of knowledge in programming, that was really nice to build and a smooth process.
70+
We first created the main components with all-hands and then adjusted some details locally. Definitely, saved us a lot of time and money.
71+
That's a prototype but we will have all the info by tuesday.
72+
https://buriti-emau.github.io/Mapa-UFU/
73+
74+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100736/very-simple-example-but-baby-steps-i-am-a-professor-of-archi#8f2e3f3f-44e6-44ea-b9a8-d53487470179)
75+
76+
![](/success-stories/stories/2025-06-08-map/s1.png)
77+
78+
</Update>
79+
80+
81+
<Update label="2025-06-06 Web Search Saves the Day" description="@Ian Walker">
82+
83+
## Tavily adapter helps solve persistent debugging issue
84+
85+
Big congratulations to the new [Tavily adapter](https://www.all-hands.dev/blog/building-a-provably-versatile-agent)... OpenHands and I have been beavering away at a Lightstreamer client library for most of this week but were getting a persistent (and unhelpful) "unexpected error" from the server.
86+
87+
Coming back to the problem today, after trying several unsuccessful fixes prompted by me, OH decided all by itself to search the web, and found the cause of the problem (of course it was simply CRLF line endings...). I was on the verge of giving up - good thing OH has more stamina than me!
88+
89+
This demonstrates how OpenHands' web search capabilities can help solve debugging issues that would otherwise require extensive manual research.
90+
91+
<iframe
92+
width="560"
93+
height="560"
94+
src="https://www.linen.dev/s/openhands/t/29100737/big-congratulations-to-the-new-tavily-adapter-openhands-and-#87b027e5-188b-425e-8aa9-719dcb4929f4"
95+
title="YouTube video player"
96+
frameborder="0"
97+
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
98+
allowfullscreen
99+
></iframe>
100+
101+
102+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100737/big-congratulations-to-the-new-tavily-adapter-openhands-and-#76f1fb26-6ef7-4709-b9ea-fb99105e47e4)
103+
104+
</Update>
105+
106+
<Update label="2025-06-05 OpenHands updates my personal website for a new paper" description="@Xingyao Wang">
107+
108+
## I asked OpenHands to update my personal website for the "OpenHands Versa" paper.
109+
110+
It is an extremely trivial task: You just need to browse to arxiv, copy the author names, format them for BibTeX, and then modify the papers.bib file. But now I'm getting way too lazy to even open my IDE and actually do this one-file change!
111+
112+
[Original Tweet/X thread](https://x.com/xingyaow_/status/1930796287919542410)
113+
114+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100738/i-asked-openhands-to-update-my-personal-website-for-the-open#f0324022-b12b-4d34-b12b-bdbc43823f69)
115+
116+
</Update>
117+
118+
<Update label="2025-06-02 OpenHands makes an animated gif of swe-bench verified scores over time" description="@Graham Neubig">
119+
120+
## I asked OpenHands to make an animated gif of swe-bench verified scores over time.
121+
122+
It took a bit of prompting but ended up looking pretty nice I think
123+
124+
<video width="560" height="315" autoPlay loop muted src="/success-stories/stories/2025-06-02-swebench-score/s1.mp4"></video>
125+
126+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100744/i-asked-openhands-to-make-an-animated-gif-of-swe-bench-verif#fb3b82c9-6222-4311-b97b-b2ac1cfe6dff)
127+
128+
</Update>
129+
130+
<Update label="2025-05-30 AWS Troubleshooting" description="@Graham Neubig">
131+
132+
## Quick AWS security group fix
133+
134+
I really don't like trying to fix issues with AWS, especially security groups and other finicky things like this. But I started up an instance and wasn't able to ssh in. So I asked OpenHands:
135+
136+
> Currently, the following ssh command is timing out:
137+
>
138+
> $ ssh -i gneubig.pem [email protected]
139+
> ssh: connect to host XXX.us-east-2.compute.amazonaws.com port 22: Operation timed out
140+
>
141+
> Use the provided AWS credentials to take a look at i-XXX and examine why
142+
143+
And 2 minutes later I was able to SSH in!
144+
145+
This shows how OpenHands can quickly diagnose and fix AWS infrastructure issues that would normally require manual investigation.
146+
147+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100747/i-really-don-t-like-trying-to-fix-issues-with-aws-especially#d92a66d2-3bc1-4467-9d09-dc983004d083)
148+
149+
</Update>
150+
151+
152+
<Update label="2025-05-04 Chrome Extension Development" description="@Xingyao Wang">
153+
154+
## OpenHands builds Chrome extension for GitHub integration
155+
156+
I asked OpenHands to write a Chrome extension based on our [OpenHands Cloud API](https://docs.all-hands.dev/modules/usage/cloud/cloud-api). Once installed, you can now easily launch an OpenHands cloud session from your GitHub webpage/PR!
157+
158+
This demonstrates OpenHands' ability to create browser extensions and integrate with external APIs, enabling seamless workflows between GitHub and OpenHands Cloud.
159+
160+
![Chrome extension](/success-stories/stories/2025-05-04-chrome-extension/s1.png)
161+
![Chrome extension](/success-stories/stories/2025-05-04-chrome-extension/s2.png)
162+
163+
[GitHub Repository](https://github.com/xingyaoww/openhands-chrome-extension)
164+
165+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100755/i-asked-openhands-to-write-a-chrome-extension-based-on-our-h#88f14b7f-f8ff-40a6-83c2-bd64e95924c5)
166+
167+
</Update>
168+
169+
170+
<Update label="2025-04-11 Visual UI Testing" description="@Xingyao Wang">
171+
172+
## OpenHands tests UI automatically with visual browsing
173+
174+
Thanks to visual browsing -- OpenHands can actually test some simple UI by serving the website, clicking the button in the browser and looking at screenshots now!
175+
176+
Prompt is just:
177+
```
178+
I want to create a Hello World app in Javascript that:
179+
* Displays Hello World in the middle.
180+
* Has a button that when clicked, changes the greeting with a bouncing animation to fun versions of Hello.
181+
* Has a counter for how many times the button has been clicked.
182+
* Has another button that changes the app's background color.
183+
```
184+
185+
Eager-to-work Sonnet 3.7 will test stuff for you without you asking!
186+
187+
This showcases OpenHands' visual browsing capabilities, enabling it to create, serve, and automatically test web applications through actual browser interactions and screenshot analysis.
188+
189+
![Visual UI testing](/success-stories/stories/2025-04-11-visual-ui/s1.png)
190+
191+
[Original Slack thread](https://www.linen.dev/s/openhands/t/29100764/thanks-to-u07k0p3bdb9-s-visual-browsing-openhands-can-actual#21beb9bc-1a04-4272-87e9-4d3e3b9925e7)
192+
193+
</Update>
194+
195+
<Update label="2025-03-07 Proactive Error Handling" description="@Graham Neubig">
196+
197+
## OpenHands fixes crashes before you notice them
198+
199+
Interesting story, I asked OpenHands to start an app on port 12000, it showed up on the app pane. I started using the app, and then it crashed... But because it crashed in OpenHands, OpenHands immediately saw the error message and started fixing the problem without me having to do anything. It was already fixing the problem before I even realized what was going wrong.
200+
201+
This demonstrates OpenHands' proactive monitoring capabilities - it doesn't just execute commands, but actively watches for errors and begins remediation automatically, often faster than human reaction time.
202+
203+
</Update>
204+
205+
<Update label="2024-12-03 Creative Design Acceleration" description="@Rohit Malhotra">
206+
207+
## Pair programming for interactive design projects
208+
209+
Used OpenHands as a pair programmer to do heavy lifting for a creative/interactive design project in p5js.
210+
211+
I usually take around 2 days for high fidelity interactions (planning strategy + writing code + circling back with designer), did this in around 5hrs instead with the designer watching curiously the entire time.
212+
213+
This showcases how OpenHands can accelerate creative and interactive design workflows, reducing development time by 75% while maintaining high quality output.
214+
215+
[Original Tweet](https://x.com/rohit_malh5/status/1863995531657425225)
216+
217+
</Update>
Loading
Loading
Loading
Binary file not shown.
Loading
Loading
Loading
Binary file not shown.

docs/usage/how-to/cli-mode.mdx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,34 @@ for scripting.
1414
**Note** - OpenHands requires Python version 3.12 or higher (Python 3.14 is not currently supported)
1515

1616
1. Install OpenHands using pip:
17-
1817
```bash
1918
pip install openhands-ai
2019
```
2120

22-
Or if you prefer not to manage your own Python environment, you can use `uvx`:
21+
Or if you prefer not to manage your own Python environment, you can use `uvx`:
2322

2423
```bash
2524
uvx --python 3.12 --from openhands-ai openhands
2625
```
2726

2827
2. Launch an interactive OpenHands conversation from the command line:
29-
3028
```bash
3129
openhands
3230
```
3331

34-
3. Set your model, API key, and other preferences using the UI (or alternatively environment variables, below).
32+
<Note>
33+
If you have cloned the repository, you can also run the CLI directly using Poetry:
3534

36-
This command opens an interactive prompt where you can type tasks or commands and get responses from OpenHands.
35+
poetry run python -m openhands.cli.main
36+
</Note>
3737

38-
#### For Developers
38+
3. Set your model, API key, and other preferences using the UI (or alternatively environment variables, below).
3939

40-
If you have cloned the repository, you can run the CLI directly using Poetry:
40+
This command opens an interactive prompt where you can type tasks or commands and get responses from OpenHands.
41+
The first time you run the CLI, it will take you through configuring the required LLM
42+
settings. These will be saved for future sessions.
4143

42-
```bash
43-
poetry run python -m openhands.cli.main
44-
```
44+
The conversation history will be saved in `~/.openhands/sessions`.
4545

4646
### Running with Docker
4747

@@ -68,12 +68,17 @@ docker run -it \
6868
python -m openhands.cli.main --override-cli-mode true
6969
```
7070

71-
> **Note**: If you used OpenHands before version 0.44, you may want to run `mv ~/.openhands-state ~/.openhands` to migrate your conversation history to the new location.
71+
<Note>
72+
If you used OpenHands before version 0.44, you may want to run `mv ~/.openhands-state ~/.openhands` to migrate your
73+
conversation history to the new location.
74+
</Note>
7275

73-
This launches the CLI in Docker, allowing you to interact with OpenHands as described above.
76+
This launches the CLI in Docker, allowing you to interact with OpenHands.
7477

7578
The `-e SANDBOX_USER_ID=$(id -u)` ensures files created by the agent in your workspace have the correct permissions.
7679

80+
The conversation history will be saved in `~/.openhands/sessions`.
81+
7782
## Interactive CLI Overview
7883

7984
### What is CLI Mode?

docs/usage/llms/llms.mdx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,15 @@ We have a few guides for running OpenHands with specific model providers:
7373
- [OpenAI](/usage/llms/openai-llms)
7474
- [OpenRouter](/usage/llms/openrouter)
7575

76+
## Model Customization
77+
78+
LLM providers have specific settings that can be customized to optimize their performance with OpenHands, such as:
79+
80+
- **Custom Tokenizers**: For specialized models, you can add a suitable tokenizer
81+
- **Native Tool Calling**: Toggle native function/tool calling capabilities
82+
83+
For detailed information about model customization, see [LLM Configuration Options](configuration-options#llm-customization).
84+
7685
### API retries and rate limits
7786

7887
LLM providers typically have rate limits, sometimes very low, and may require retries. OpenHands will automatically

0 commit comments

Comments
 (0)