Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
b830d1c
fix(frontend): hide api key field for openhands provider and auto-pop…
hieptl Nov 24, 2025
639de81
feat(frontend): add blue border to Planning Agent events (#11788)
hieptl Nov 24, 2025
7782f2a
Fix links in readme (#11802)
enyst Nov 24, 2025
f6e4d00
fix: prevent newline accumulation in XML parameter serialization (#11…
aoi127 Nov 25, 2025
9cc8687
fix: handle None return from version_info.get('Components') in docker…
mamoodi Nov 25, 2025
c58e215
feat(frontend): display skill ready for v1 conversations (#11815)
hieptl Nov 25, 2025
b532a5e
fix(backend): github token not working for v1 conversations (#11814)
hieptl Nov 25, 2025
d737141
SDK Fixes (#11813)
tofarr Nov 26, 2025
5ef45cf
refactor(frontend): support TerminalObservation event (#11819)
hieptl Nov 26, 2025
2e29507
fix(frontend): fileeditorobservationevent rendering issue (#11820)
hieptl Nov 26, 2025
3219834
fix(frontend): resolve issue preventing cost from displaying (V1) (#1…
hieptl Nov 26, 2025
865ddaa
fix(backend): unable to start a new V0 conversation (#11824)
hieptl Nov 26, 2025
0148843
fix(frontend): Remove azure devops integration button from cloud sett…
hieptl Nov 26, 2025
9906a1d
V1: Support v1 conversations in github resolver (#11773)
malhotra5 Nov 26, 2025
4962421
fix(migration): add server_default to v1_enabled column migration (#1…
malhotra5 Nov 26, 2025
ed094b6
Fix v1_enabled migration failures by making column nullable (#11829)
malhotra5 Nov 26, 2025
974bcdf
SWE-fficiency benchmark implementation (#11716)
18jeffreyma Nov 27, 2025
d0b1d29
fix(backend): the SaaS codebase is currently non-functional. (#11834)
hieptl Nov 28, 2025
156d068
fix(frontend): the content of the BrowserObservation event is not bei…
hieptl Nov 28, 2025
d62bb81
feat(backend): implement API to fetch contents of PLAN.md (#11795)
hieptl Nov 30, 2025
6d8cca4
fix: add Azure GPT-5 family to stop words unsupported patterns (#11842)
vinisdl Dec 1, 2025
991f1a2
feat(llm): added Claude Opus 4.5 model and corresponding test (#11841)
adshrc Dec 1, 2025
2759049
chore: update posthog-js from 1.290.0 to 1.298.1 (#11830)
raymyers Dec 1, 2025
e7e49c9
fix(frontend): AppConversationStartTask timezone display in ui (#11847)
hieptl Dec 1, 2025
d9731b6
feat(frontend): show plan content in the planning tab (#11807)
hieptl Dec 1, 2025
96f13b1
Revert "chore(backend): Add better PostHog tracking" (#11749)
amanape Dec 1, 2025
6c821ab
fix(frontend): the content of the FinishObservation event is not bein…
hieptl Dec 1, 2025
6c2862a
feat(frontend): add handler for 'create a plan' button click (#11806)
hieptl Dec 1, 2025
33eec7c
feat(frontend): automatically scroll to bottom of container on plan c…
hieptl Dec 1, 2025
fd6e0ca
Fix V1 MCP services (Fix tavily search) (#11840)
tofarr Dec 1, 2025
8f361b3
Fix git checkout error in workspace setup (#11855)
tofarr Dec 1, 2025
1a3460b
fix(frontend): image attachments not working in v1 conversations (#11…
hieptl Dec 2, 2025
1f93503
refactor(frontend): hide agent dropdown when v1 is enabled (#11860)
hieptl Dec 2, 2025
f76ac24
fix(backend): conversation statistics are currently not being persist…
hieptl Dec 2, 2025
6139e39
fix(backend): git settings not applying in v1 conversations (#11866)
hieptl Dec 2, 2025
fd13c91
fix(backend): apply user-defined condenser_max_size in new v1 convers…
hieptl Dec 2, 2025
72555e0
APP-193: add X-Access-Token header support to get_api_key_from_header…
tofarr Dec 3, 2025
eaea8b3
fix(frontend): buying credits does not work on staging (#11873)
hieptl Dec 3, 2025
14695a8
refactor/bugfix: simplify hasOpenHandsSuffix with provider lookup for…
vinisdl Dec 3, 2025
cd9a3b0
feat(frontend): display command in observation block in ui (#11884)
hieptl Dec 3, 2025
97e6cb1
chore(frontend): isolate MINOR dependency bumps from #11869 (#11888)
amanape Dec 3, 2025
816d8ac
chore(frontend): isolate PATCH dependency bumps from #11869 (#11890)
amanape Dec 3, 2025
8f91db8
Replace USE_V1_CONVERSATION_API feature flag with user setting (#11893)
tofarr Dec 3, 2025
d0496fe
chore: update sdk to latest version (#11897)
hieptl Dec 3, 2025
6ec477d
fix: enable terminal scrollback to view command history (#11883)
naaa760 Dec 4, 2025
0a98f16
chore(frontend): isolate MAJOR dependency bumps from #11869 (#11887)
amanape Dec 4, 2025
3a9aa90
Bumped SDK to V1.4.1 (#11903)
tofarr Dec 4, 2025
59ca8bd
refactor: derive deterministic key id from secret itself (#11905)
hieptl Dec 4, 2025
1d9cf72
JPMC Modifications (#11882)
chuckbutkus Dec 5, 2025
e1b2838
fix: conversation tab state sync across browser tabs (#11680)
naaa760 Dec 5, 2025
17821f7
feat: display command in observation block (#11885)
naaa760 Dec 5, 2025
4344f5a
chore(deps): bump the version-all group across 1 directory with 9 upd…
dependabot[bot] Dec 5, 2025
7811a62
refactor(frontend): remove max_budget_per_task input element for v1 (…
hieptl Dec 5, 2025
72c7d9c
APP-216 Support multiple git providers in conversation secrets (#11908)
tofarr Dec 5, 2025
d7b36c9
fix: switching from own model to breaks functionality (#11916)
hieptl Dec 6, 2025
1a983d2
APP-190 Add browser screenshot support for V1 conversations (#11919)
tofarr Dec 6, 2025
584517e
docs: fix broken architecture diagram link in openhands/README.md (#1…
Chesars Dec 7, 2025
ed7adb3
GitHub V1 Callbacks not trigger by v1 enabled flag (#11923)
malhotra5 Dec 8, 2025
db64abc
Refactor webhook endpoints to use session API key authentication (#11…
tofarr Dec 8, 2025
d31950c
chore(deps): bump the version-all group in /frontend with 6 updates (…
dependabot[bot] Dec 8, 2025
16125f2
Refactor(frontend): move settings-service into api folder and update …
AVBharath10 Dec 8, 2025
959d610
fix(frontend): set v1_enable correctly when saving mcp settings (#11948)
hieptl Dec 8, 2025
bf06b7e
fix(frontend): hide api key input field in advanced settings when pro…
hieptl Dec 8, 2025
8559efa
Remove loud red x icon on agent commands (#11962)
ak684 Dec 8, 2025
9b57a0b
Remove error icon from ExpandableMessage component (#11964)
ak684 Dec 8, 2025
3743d10
Fix: don't double count v1 conversation metadata (#11970)
malhotra5 Dec 9, 2025
a9c76d0
APP-240 Fix GitHub webhook timeout issue to prevent client disconnect…
tofarr Dec 9, 2025
e181680
fix(frontend): skip flaky WebSocket broadcast tests (#11972)
amanape Dec 9, 2025
df92923
Refactor return statement to simplify get_supported_llm_models method…
VascoSch92 Dec 9, 2025
0aaad16
Fix V1 resolver custom secrets validation error (#11976)
malhotra5 Dec 9, 2025
7875df4
chore(deps): bump the version-all group in /frontend with 2 updates (…
dependabot[bot] Dec 10, 2025
92c9147
Add GitHub Actions workflow for frontend E2E tests with Playwright (#…
amanape Dec 10, 2025
272a37d
refactor(frontend): remove certain security analyzer options for v1 c…
hieptl Dec 10, 2025
853547b
fix(frontend): fix highlighted in terminal is missing background colo…
HeyItsChloe Dec 10, 2025
1d1eb6d
Fix dup conversations for v1 PR comment resolver jobs (#11995)
malhotra5 Dec 10, 2025
b308307
chore: update sdk to latest version (#11999)
hieptl Dec 10, 2025
a593730
Add environment variable kill switch for V1 conversation creation (#1…
malhotra5 Dec 10, 2025
f7c3a36
feat: remember last selected git provider in homepage dropdown (#11979)
tofarr Dec 11, 2025
09e50b8
fix: app unawareness of custom secrets in v1 conversations (#11914)
hieptl Dec 11, 2025
f4dd538
fix(frontend): Fix empty state showing alongside error in `RecentConv…
amanape Dec 11, 2025
b16845f
refactor(frontend): Refactor tests to use Zustand's native state sett…
KyeongJooni Dec 11, 2025
f76016a
chore: remove unused frontend dependencies (#11940)
naaa760 Dec 11, 2025
94086f1
fix(frontend): Fix avatar context menu closing on diagonal mouse move…
amanape Dec 11, 2025
62f594b
chore(deps): bump the version-all group across 1 directory with 2 upd…
dependabot[bot] Dec 11, 2025
60491e3
chore: update sdk to latest version (#12013)
hieptl Dec 11, 2025
8a202b9
fix(frontend): animate loading spinner for in-progress tasks (#12001)
nathannewyen Dec 12, 2025
6917d45
refactor(frontend): consolidate settings navigation items logic into …
AVBharath10 Dec 12, 2025
976d9d1
Refactor(mocks): modularize MSW handlers into domain-specific files (…
AVBharath10 Dec 12, 2025
5a21c59
refactor(frontend): Consolidate duplicate Settings type definitions (…
abhayymishraa Dec 12, 2025
c6a8fc3
feat: support security analyzer settings for v1 conversations (#12008)
hieptl Dec 12, 2025
5daada1
chore(deps): bump the version-all group in /frontend with 8 updates (…
dependabot[bot] Dec 12, 2025
d772dd6
fix(frontend): fix fetching the number of events on the front end (v1…
hieptl Dec 12, 2025
d57880f
Agent server image from env (#12003)
tofarr Dec 13, 2025
eb9a22e
fix(backend): unable to use custom mcp servers (v1 conversations) (#1…
hieptl Dec 14, 2025
f2def8f
fix(backend): organizational skills do not trigger (v1 conversations)…
hieptl Dec 14, 2025
b937d34
fix(backend): initial titles show full uuids instead of shortened uui…
hieptl Dec 14, 2025
67c9b6c
refactor(frontend): websocket error message (v1 conversations) (#12045)
hieptl Dec 14, 2025
47914c3
chore: remove pnpm settings from npmrc (#12028)
naaa760 Dec 15, 2025
f52d989
Consolidate scattered test files into a unified frontend/__tests__/ d…
abhayymishraa Dec 15, 2025
089d9c1
Add deprecation warning to evaluation README (#11997)
neubig Dec 15, 2025
5c377f3
Update SWEBench score in README (#12051)
xingyaoww Dec 15, 2025
a12170e
refactor(frontend): Extracted useQuery and useMutation from the main …
abhayymishraa Dec 15, 2025
9753ad3
Removed Legacy Conversation Manager (#12053)
tofarr Dec 15, 2025
ee97542
chore(deps): bump the version-all group in /frontend with 7 updates (…
dependabot[bot] Dec 15, 2025
49740a4
fix(frontend): clicking think block in conversation pane breaks ui (v…
hieptl Dec 16, 2025
3b7b2fd
fix(frontend): Separate pause state from agent loading (#12041)
Mariam-Saeed Dec 16, 2025
2a98c95
Release OpenHands v1.0.0 (#12052)
tofarr Dec 16, 2025
7853b41
Add OAuth 2.0 Device Flow backend for CLI authentication (#11984)
malhotra5 Dec 16, 2025
281ac91
Bump sdk 1.6.0 (#12067)
tofarr Dec 16, 2025
dc14624
Fix for frontend stall (#12069)
tofarr Dec 17, 2025
435e537
fix: Prevent old instructions from being re-executed after conversati…
nathannewyen Dec 17, 2025
2c83e41
chore(deps): bump the version-all group across 1 directory with 5 upd…
dependabot[bot] Dec 17, 2025
0607614
feat(frontend): add refresh button to changes tab (#12036)
hieptl Dec 17, 2025
f98e7fb
fix(frontend): observation events and action events (v1 conversations…
hieptl Dec 17, 2025
9ef11bf
feat: show available skills for v1 conversations (#12039)
hieptl Dec 17, 2025
2ed5c60
Add variable to disable vscode plugin (#11812)
chuckbutkus Dec 17, 2025
28dc3be
Fixed performance bug in remote sandbox service (#12076)
tofarr Dec 18, 2025
2ce6c98
fix: load settings (#12077)
hieptl Dec 18, 2025
43f7a6f
fix(frontend): resolve overlap between conversation panel and account…
hieptl Dec 18, 2025
afce58a
refactor(frontend): move frontend/src/ui/microagent-management-servic…
hieptl Dec 18, 2025
aff9d69
feat(frontend): add prefer-optional-chain ESLint rule and apply fixes…
xingyaoww Dec 18, 2025
d90579b
fix: make local runtime use host-writable paths and local cache defau…
Wangmerlyn Dec 18, 2025
c2e4172
feat: Add sk-oh- prefix to OpenHands Cloud API keys (#12092)
xingyaoww Dec 18, 2025
d063ee5
chore: set default model to claude-opus-4-5-20251101 (#12093)
xingyaoww Dec 19, 2025
88c053b
Speed up docker build of enterprise server (#12074)
chuckbutkus Dec 19, 2025
ec9daf3
Fix tool call validation error handling for Groq LLM provider (#10927)
enyst Dec 19, 2025
107d555
chore(deps): bump the version-all group in /frontend with 7 updates (…
dependabot[bot] Dec 19, 2025
58340b3
refactor(frontend): consolidate state stores into stores directory (#…
hieptl Dec 19, 2025
f870246
feat: improve accessibility of served tab buttons (#12103)
aditya-gaharawar Dec 19, 2025
0246b1b
hotfix(frontend): update websocket handler test mocks to use correct …
amanape Dec 19, 2025
800e861
Replace manual pagination loops with page_iterator utility function (…
tofarr Dec 19, 2025
a873af3
Update CODEOWNERS (#12106)
mamoodi Dec 19, 2025
adff395
fix: eliminate N+1 performance bug in RemoteSandboxService with batch…
tofarr Dec 19, 2025
3053965
Fix flaky test_tool_call_validation_error_handling test (#12110)
neubig Dec 20, 2025
fa2567b
Fix xterm dimensions error with explicit checks instead of try-catch …
neubig Dec 20, 2025
0677ceb
More efficiency (#12112)
tofarr Dec 20, 2025
6605070
Fix fastmcp stateless_http deprecation warning (#12108)
neubig Dec 20, 2025
fca2254
Handle localhost websocket host for remote access
GuyPaddock Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 4 additions & 8 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
# CODEOWNERS file for OpenHands repository
# See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# Frontend code owners
/frontend/ @amanape
/openhands-ui/ @amanape

# Evaluation code owners
/frontend/ @amanape @hieptl
/openhands-ui/ @amanape @hieptl
/openhands/ @tofarr @malhotra5 @hieptl
/enterprise/ @chuckbutkus @tofarr @malhotra5
/evaluation/ @xingyaoww @neubig

# Documentation code owners
/docs/ @mamoodi
47 changes: 47 additions & 0 deletions .github/workflows/fe-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Workflow that runs frontend e2e tests with Playwright
name: Run Frontend E2E Tests

on:
push:
branches:
- main
pull_request:
paths:
- "frontend/**"
- ".github/workflows/fe-e2e-tests.yml"

concurrency:
group: ${{ github.workflow }}-${{ (github.head_ref && github.ref) || github.run_id }}
cancel-in-progress: true

jobs:
fe-e2e-test:
name: FE E2E Tests
runs-on: blacksmith-4vcpu-ubuntu-2204
strategy:
matrix:
node-version: [22]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: useblacksmith/setup-node@v5
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
working-directory: ./frontend
run: npm ci
- name: Install Playwright browsers
working-directory: ./frontend
run: npx playwright install --with-deps chromium
- name: Run Playwright tests
working-directory: ./frontend
run: npx playwright test --project=chromium
- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: frontend/playwright-report/
retention-days: 30
2 changes: 1 addition & 1 deletion .openhands/microagents/repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Frontend:
- We use TanStack Query (fka React Query) for data fetching and cache management
- Data Access Layer: API client methods are located in `frontend/src/api` and should never be called directly from UI components - they must always be wrapped with TanStack Query
- Custom hooks are located in `frontend/src/hooks/query/` and `frontend/src/hooks/mutation/`
- Query hooks should follow the pattern use[Resource] (e.g., `useConversationMicroagents`)
- Query hooks should follow the pattern use[Resource] (e.g., `useConversationSkills`)
- Mutation hooks should follow the pattern use[Action] (e.g., `useDeleteConversation`)
- Architecture rule: UI components → TanStack Query hooks → Data Access Layer (`frontend/src/api`) → API endpoints

Expand Down
2 changes: 1 addition & 1 deletion Development.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ poetry run pytest ./tests/unit/test_*.py
To reduce build time (e.g., if no changes were made to the client-runtime component), you can use an existing Docker
container image by setting the SANDBOX_RUNTIME_CONTAINER_IMAGE environment variable to the desired Docker image.

Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/openhands/runtime:0.62-nikolaik`
Example: `export SANDBOX_RUNTIME_CONTAINER_IMAGE=ghcr.io/openhands/runtime:1.0-nikolaik`

## Develop inside Docker container

Expand Down
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<a name="readme-top"></a>

<div align="center">
<img src="https://raw.githubusercontent.com/All-Hands-AI/docs/main/openhands/static/img/logo.png" alt="Logo" width="200">
<img src="https://raw.githubusercontent.com/OpenHands/docs/main/openhands/static/img/logo.png" alt="Logo" width="200">
<h1 align="center" style="border-bottom: none">OpenHands: AI-Driven Development</h1>
</div>


<div align="center">
<a href="https://github.com/OpenHands/OpenHands/blob/main/LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-20B2AA?style=for-the-badge" alt="MIT License"></a>
<a href="https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=811504672#gid=811504672"><img src="https://img.shields.io/badge/SWEBench-72.8-00cc00?logoColor=FFE165&style=for-the-badge" alt="Benchmark Score"></a>
<a href="https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=811504672#gid=811504672"><img src="https://img.shields.io/badge/SWEBench-77.6-00cc00?logoColor=FFE165&style=for-the-badge" alt="Benchmark Score"></a>
<br/>
<a href="https://docs.openhands.dev/sdk"><img src="https://img.shields.io/badge/Documentation-000?logo=googledocs&logoColor=FFE165&style=for-the-badge" alt="Check out the documentation"></a>
<a href="https://arxiv.org/abs/2511.03690"><img src="https://img.shields.io/badge/Paper-000?logoColor=FFE165&logo=arxiv&style=for-the-badge" alt="Tech Report"></a>
Expand All @@ -35,9 +35,9 @@ There are a few ways to work with OpenHands:
### OpenHands Software Agent SDK
The SDK is a composable Python library that contains all of our agentic tech. It's the engine that powers everything else below.

Define agents in code, then run them locally, or scale to 1000s of agents in the cloud
Define agents in code, then run them locally, or scale to 1000s of agents in the cloud.

[Check out the docs](https://docs.openhands.dev/sdk) or [view the source](https://github.com/All-Hands-AI/agent-sdk/)
[Check out the docs](https://docs.openhands.dev/sdk) or [view the source](https://github.com/OpenHands/software-agent-sdk/)

### OpenHands CLI
The CLI is the easiest way to start using OpenHands. The experience will be familiar to anyone who has worked
Expand All @@ -52,18 +52,15 @@ The experience will be familiar to anyone who has used Devin or Jules.
[Check out the docs](https://docs.openhands.dev/openhands/usage/run-openhands/local-setup) or view the source in this repo.

### OpenHands Cloud
This is a commercial deployment of OpenHands GUI, running on hosted infrastructure.
This is a deployment of OpenHands GUI, running on hosted infrastructure.

You can try it with a free $10 credit by [signing in with your GitHub account](https://app.all-hands.dev).

OpenHands Cloud comes with source-available features and integrations:
- Deeper integrations with GitHub, GitLab, and Bitbucket
- Integrations with Slack, Jira, and Linear
- Multi-user support
- RBAC and permissions
- Collaboration features (e.g., conversation sharing)
- Usage reporting
- Budgeting enforcement

### OpenHands Enterprise
Large enterprises can work with us to self-host OpenHands Cloud in their own VPC, via Kubernetes.
Expand Down
2 changes: 1 addition & 1 deletion containers/dev/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ services:
- SANDBOX_API_HOSTNAME=host.docker.internal
- DOCKER_HOST_ADDR=host.docker.internal
#
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/openhands/runtime:0.62-nikolaik}
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-ghcr.io/openhands/runtime:1.0-nikolaik}
- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234}
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
ports:
Expand Down
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ services:
image: openhands:latest
container_name: openhands-app-${DATE:-}
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.openhands.dev/openhands/runtime:0.62-nikolaik}
- SANDBOX_RUNTIME_CONTAINER_IMAGE=${SANDBOX_RUNTIME_CONTAINER_IMAGE:-docker.openhands.dev/openhands/runtime:1.0-nikolaik}
#- SANDBOX_USER_ID=${SANDBOX_USER_ID:-1234} # enable this only if you want a specific non-root sandbox user but you will have to manually adjust permissions of ~/.openhands for this user
- WORKSPACE_MOUNT_PATH=${WORKSPACE_BASE:-$PWD/workspace}
ports:
Expand Down
3 changes: 1 addition & 2 deletions enterprise/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,8 @@ RUN pip install alembic psycopg2-binary cloud-sql-python-connector pg8000 gsprea
"pillow>=11.3.0"

WORKDIR /app
COPY enterprise .
COPY --chown=openhands:openhands --chmod=770 enterprise .

RUN chown -R openhands:openhands /app && chmod -R 770 /app
USER openhands

# Command will be overridden by Kubernetes deployment template
Expand Down
1 change: 1 addition & 0 deletions enterprise/allhands-realm-github-provider.json.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,7 @@
"https://$WEB_HOST/oauth/keycloak/callback",
"https://$WEB_HOST/oauth/keycloak/offline/callback",
"https://$WEB_HOST/slack/keycloak-callback",
"https://$WEB_HOST/oauth/device/keycloak-callback",
"https://$WEB_HOST/api/email/verified",
"/realms/$KEYCLOAK_REALM_NAME/$KEYCLOAK_CLIENT_ID/*"
],
Expand Down
2 changes: 1 addition & 1 deletion enterprise/enterprise_local/convert_to_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def convert_yaml_to_env(yaml_file, target_parameters, output_env_file, prefix):
lines.append('ENABLE_PROACTIVE_CONVERSATION_STARTERS=true')
lines.append('MAX_CONCURRENT_CONVERSATIONS=10')
lines.append('LITE_LLM_API_URL=https://llm-proxy.eval.all-hands.dev')
lines.append('LITELLM_DEFAULT_MODEL=litellm_proxy/claude-sonnet-4-20250514')
lines.append('LITELLM_DEFAULT_MODEL=litellm_proxy/claude-opus-4-5-20251101')
lines.append(f'LITE_LLM_API_KEY={lite_llm_api_key}')
lines.append('LOCAL_DEPLOYMENT=true')
lines.append('DB_HOST=localhost')
Expand Down
38 changes: 26 additions & 12 deletions enterprise/integrations/github/github_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
HOST_URL,
OPENHANDS_RESOLVER_TEMPLATES_DIR,
)
from integrations.v1_utils import get_saas_user_auth
from jinja2 import Environment, FileSystemLoader
from pydantic import SecretStr
from server.auth.constants import GITHUB_APP_CLIENT_ID, GITHUB_APP_PRIVATE_KEY
Expand Down Expand Up @@ -164,8 +165,13 @@ async def receive_message(self, message: Message):
)

if await self.is_job_requested(message):
payload = message.message.get('payload', {})
user_id = payload['sender']['id']
keycloak_user_id = await self.token_manager.get_user_id_from_idp_user_id(
user_id, ProviderType.GITHUB
)
github_view = await GithubFactory.create_github_view_from_payload(
message, self.token_manager
message, keycloak_user_id
)
logger.info(
f'[GitHub] Creating job for {github_view.user_info.username} in {github_view.full_repo_name}#{github_view.issue_number}'
Expand Down Expand Up @@ -282,8 +288,15 @@ async def start_job(self, github_view: ResolverViewInterface):
f'[Github]: Error summarizing issue solvability: {str(e)}'
)

saas_user_auth = await get_saas_user_auth(
github_view.user_info.keycloak_user_id, self.token_manager
)

await github_view.create_new_conversation(
self.jinja_env, secret_store.provider_tokens, convo_metadata
self.jinja_env,
secret_store.provider_tokens,
convo_metadata,
saas_user_auth,
)

conversation_id = github_view.conversation_id
Expand All @@ -292,18 +305,19 @@ async def start_job(self, github_view: ResolverViewInterface):
f'[GitHub] Created conversation {conversation_id} for user {user_info.username}'
)

# Create a GithubCallbackProcessor
processor = GithubCallbackProcessor(
github_view=github_view,
send_summary_instruction=True,
)
if not github_view.v1:
# Create a GithubCallbackProcessor
processor = GithubCallbackProcessor(
github_view=github_view,
send_summary_instruction=True,
)

# Register the callback processor
register_callback_processor(conversation_id, processor)
# Register the callback processor
register_callback_processor(conversation_id, processor)

logger.info(
f'[Github] Registered callback processor for conversation {conversation_id}'
)
logger.info(
f'[Github] Registered callback processor for conversation {conversation_id}'
)

# Send message with conversation link
conversation_link = CONVERSATION_URL.format(conversation_id)
Expand Down
Loading
Loading