Skip to content

feat: fix default and free models - #16922

Merged
neubig merged 11 commits into
mainfrom
change-deepseek-default
Aug 27, 2026
Merged

feat: fix default and free models#16922
neubig merged 11 commits into
mainfrom
change-deepseek-default

Conversation

@neubig

@neubig neubig commented Aug 26, 2026

Copy link
Copy Markdown
Member

HUMAN:

I tested the onboarding LLM settings and verified the OpenAI / GPT-5.6 Sol default and Free model badge behavior.

AGENT:

Why

The OpenHands source default should use the OpenAI provider with GPT-5.6 Sol, matching the requested product decision. DeepSeek V4 Flash remains available as the sole free OpenHands-routed model.

Summary

  • Make openai/gpt-5.6-sol the Canvas and onboarding default.
  • Keep only openhands/deepseek-v4-flash in the frontend free-model labels.
  • Update mocks, translations, specs, and affected tests.

Issue Number

Fixes #16914

How to Test

  • npm run make-i18n
  • npx vitest run __tests__/api/settings-service.test.ts __tests__/components/settings/llm-profiles/llm-settings-local-view.test.tsx __tests__/utils/format-model-name.test.ts
  • npm run typecheck

Video/Screenshots

OpenAI / GPT-5.6 Sol selected by default

Only DeepSeek V4 Flash marked Free

Verification screenshots

Validation

  • 66 targeted tests passed.
  • TypeScript typecheck passed.
  • git diff --check passed.

The SaaS pricing PR remains OpenHands/saas-deploy#801. The enterprise PR remains OpenHands/enterprise#253 and intentionally keeps its DeepSeek migration.

This pull request was created by an AI agent (OpenHands) on behalf of the user.


🐳 Docker images for this PR

GHCR package: https://github.com/OpenHands/OpenHands/pkgs/container/agent-canvas

Component Value
Image ghcr.io/openhands/agent-canvas
Architectures amd64, arm64
Agent Server ghcr.io/openhands/agent-server:1.42.1-python
Automation openhands-automation==1.8.0
Commit 76d5404bfcdff804abf239d0b523d3f78942747e

Pull (multi-arch manifest)

# Multi-arch manifest — Docker automatically pulls the correct architecture
docker pull ghcr.io/openhands/agent-canvas:sha-76d5404

Run

docker run -it --rm \
  -p 8000:8000 \
  ghcr.io/openhands/agent-canvas:sha-76d5404

All tags pushed for this build

ghcr.io/openhands/agent-canvas:sha-76d5404-amd64
ghcr.io/openhands/agent-canvas:change-deepseek-default-amd64
ghcr.io/openhands/agent-canvas:pr-16922-amd64
ghcr.io/openhands/agent-canvas:sha-76d5404-arm64
ghcr.io/openhands/agent-canvas:change-deepseek-default-arm64
ghcr.io/openhands/agent-canvas:pr-16922-arm64
ghcr.io/openhands/agent-canvas:sha-76d5404
ghcr.io/openhands/agent-canvas:change-deepseek-default
ghcr.io/openhands/agent-canvas:pr-16922

About Multi-Architecture Support

  • Each tag (e.g., sha-76d5404) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., sha-76d5404-amd64) are also available if needed

@github-actions github-actions Bot added the type: feat A new feature label Aug 26, 2026
@all-hands-bot

Copy link
Copy Markdown
Collaborator

👋 This PR needs a couple of things fixed before OpenHands can review it:

  • the PR description's HUMAN: section needs at least 20 characters describing what you tested, not just the template placeholder

Push an update once this is addressed and this check re-runs automatically.

This is an automated check - no AI was used to generate this comment.

Make Kimi K3 and GLM 5.2 billable while retaining DeepSeek V4 Flash as the free OpenHands default.

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig
neubig force-pushed the change-deepseek-default branch from 6a5defc to 7e4d62d Compare August 26, 2026 11:33
@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

✅ Mock-LLM Docker E2E Test Results

66/66 passed

Commit: 76d5404b · Workflow run · Test artifacts

Details
Status Test Duration
automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 1: setup LLM profile and register automation trajectory 6.6s
automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 2: create automation and dispatch run via the UI 36.7s
automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 3: verify automation and run on the automations page 6.0s
automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversation 15.8s
automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › direct slash command from home page triggers skill activation 12.6s
backends/mock-llm-auth-modes.spec.ts › auth mode: fresh install with runtime-injected key › reaches the onboarding modal without pre-seeded localStorage 1.4s
backends/mock-llm-auth-modes.spec.ts › auth mode: non-public key rotation › recovers when localStorage has a stale session API key 5.5s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › shows first-run onboarding before the auth screen when no key is configured 1.4s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › rejects an incorrect key with an inline error 1.5s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › allows access after pasting the correct key 1.7s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › skips auth screen for returning user with valid stored key 1.3s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › re-prompts when the server rotates its key (stale localStorage) 1.6s
backends/mock-llm-cross-connect.spec.ts › cross-connect: frontend-only → backend-only › frontend-only connects to a separate backend-only instance 24.2s
backends/mock-llm-cross-connect.spec.ts › cross-connect: frontend-only → multiple backends › connects to two separate backends and switches between them 23.0s
backends/mock-llm-cross-connect.spec.ts › cross-connect: sidebar links pin their backend › cmd-clicking a sidebar conversation opens it on the owning backend 31.6s
backends/mock-llm-partial-stack.spec.ts › partial stack: --frontend-only › serves the frontend but returns 503 for backend routes 7.4s
backends/mock-llm-partial-stack.spec.ts › partial stack: --backend-only › serves backend APIs but returns 503 for the frontend root 16.1s
backends/mock-llm-partial-stack.spec.ts › partial stack: port conflict › fails with a clear error when the ingress port is occupied 104ms
backends/mock-llm-partial-stack.spec.ts › partial stack: port conflict › starts successfully on a free port after a conflict 6.0s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 1: create an LLM profile pointing at the mock LLM server 6.3s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 2: activate the mock-llm profile and verify settings API 6.3s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 3: run a conversation with the mock LLM 6.5s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 4: resume conversation from sidebar after navigating away 6.0s
conversations/mock-llm-image-upload.spec.ts › mock-LLM image upload › attaching an image embeds it as base64 in the LLM completion call 12.7s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 1: ensure mock LLM profile is configured 6.4s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 2: start conversation and attach workspace metadata 11.7s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 3: conversation overview shows workspace and git identity 26.2s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 4: commits tab opens for attached workspace 5.8s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 5: browser tab shows empty state 6.4s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 6: files tab defaults to file-tree view without attached workspace 7.0s
home/mock-llm-folder-workspace.spec.ts › mock-LLM folder browser → workspace → conversation › step 1: browse to a folder, add it as a workspace, and launch a conversation with the correct working_dir 7.2s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 1: GitHub card is visible on the MCP marketplace page 5.6s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 2: clicking GitHub add control opens the install modal with correct fields 5.8s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 3: full install flow — fill PAT, submit, verify installed 12.1s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 4: installed GitHub server can be deleted 5.9s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › regression: sibling create, edit, and delete preserve GitHub credentials with one MCP request each 12.9s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: invalid Slack credentials are blocked with a credential-check error 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: a valid token missing only a scope still installs (missing_scope is not a credential failure) 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: an older agent server that omits tool_result still installs (compat) 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › edit: Test Connection verifies the stored credentials and surfaces a credential failure 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › edit: Test Connection reports success for valid stored credentials 5.7s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › custom (non-catalog) server: Test Connection attaches no verification probe 5.8s
onboarding/mock-llm-onboarding-happy-path.spec.ts › onboarding happy path › completes the full onboarding flow and launches a conversation 4.3s
onboarding/mock-llm-onboarding-regressions.spec.ts › onboarding recent regressions › keeps the modal open on backdrop click and Escape 1.6s
onboarding/mock-llm-onboarding-regressions.spec.ts › onboarding recent regressions › defaults the LLM setup step to OpenAI GPT-5.6 Sol 1.6s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › scopes standalone styles to the agent-server-ui shell 1.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › renders critic results on agent messages and finish actions 1.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › loads older events when scrolling up 2.0s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › selected workspace persists after navigating away and returning 2.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › cleared sessionStorage yields empty workspace selection 1.3s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 1: configure ACP agent via Settings → Agent UI 13.3s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 2: reload and verify ACP settings are persisted in UI 5.8s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 3: start ACP conversation and verify agent reply 8.8s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 4: resume ACP conversation from sidebar after navigating away 5.9s
settings/mock-llm-acp-auth-banner.spec.ts › mock-LLM ACP credentials-configured banner (#1244) › Claude credential in the store surfaces a 'configured' banner, never 'signed in' 6.9s
settings/mock-llm-cloud-providers-pagination.spec.ts › cloud LLM provider-picker pagination › surfaces providers past page 1 (e.g. xai) in the picker on a cloud backend 6.3s
settings/mock-llm-cloud-providers-pagination.spec.ts › cloud LLM provider-picker pagination › does not regress the local path: 150+ providers render in the picker 5.8s
settings/mock-llm-model-switch.spec.ts › mock-LLM /model slash command › step 1: configure LLM, create switch-target profile, register trajectory 7.1s
settings/mock-llm-model-switch.spec.ts › mock-LLM /model slash command › step 2: start conversation, switch profile via /model, verify switch 6.8s
settings/mock-llm-profile-management.spec.ts › active profile deletion + reconciliation › active profile is deletable and reconciliation activates another profile 8.1s
settings/mock-llm-profile-management.spec.ts › same-model profile identity › chat header shows the correct profile when two profiles share the same model 14.5s
settings/mock-llm-profile-management.spec.ts › OpenHands provider hidden base_url preservation › re-saving an OpenHands profile from Basic view preserves hidden base_url 7.4s
settings/mock-llm-provider-connection-selector.spec.ts › provider connection selector › selects a supported provider in Add provider 8.2s
skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › project skill in workspace/.agents/skills/ triggers on matching keyword 12.9s
skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › user skill in ~/.openhands/skills/ triggers on matching keyword 7.7s
skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › deleting a user skill removes it from subsequent conversations 7.6s

Posted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses)

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

❌ Mock-LLM E2E Tests

63/66 passed · 1 failed · 2 skipped

Commit: 76d5404b · Workflow run · Test artifacts

Details
Status Test Duration
automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 1: setup LLM profile and register automation trajectory 6.6s
automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 2: create automation and dispatch run via the UI 39.3s
⏭️ automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 3: verify automation and run on the automations page 0ms
automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversation 15.9s
automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › direct slash command from home page triggers skill activation 13.1s
backends/mock-llm-auth-modes.spec.ts › auth mode: fresh install with runtime-injected key › reaches the onboarding modal without pre-seeded localStorage 1.5s
backends/mock-llm-auth-modes.spec.ts › auth mode: non-public key rotation › recovers when localStorage has a stale session API key 5.5s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › shows first-run onboarding before the auth screen when no key is configured 1.4s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › rejects an incorrect key with an inline error 1.6s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › allows access after pasting the correct key 1.5s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › skips auth screen for returning user with valid stored key 1.0s
backends/mock-llm-auth-modes.spec.ts › auth mode: public gate › re-prompts when the server rotates its key (stale localStorage) 1.3s
backends/mock-llm-cross-connect.spec.ts › cross-connect: frontend-only → backend-only › frontend-only connects to a separate backend-only instance 17.1s
backends/mock-llm-cross-connect.spec.ts › cross-connect: frontend-only → multiple backends › connects to two separate backends and switches between them 21.6s
backends/mock-llm-cross-connect.spec.ts › cross-connect: sidebar links pin their backend › cmd-clicking a sidebar conversation opens it on the owning backend 32.0s
backends/mock-llm-partial-stack.spec.ts › partial stack: --frontend-only › serves the frontend but returns 503 for backend routes 7.4s
backends/mock-llm-partial-stack.spec.ts › partial stack: --backend-only › serves backend APIs but returns 503 for the frontend root 15.1s
backends/mock-llm-partial-stack.spec.ts › partial stack: port conflict › fails with a clear error when the ingress port is occupied 102ms
backends/mock-llm-partial-stack.spec.ts › partial stack: port conflict › starts successfully on a free port after a conflict 6.0s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 1: create an LLM profile pointing at the mock LLM server 6.3s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 2: activate the mock-llm profile and verify settings API 6.4s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 3: run a conversation with the mock LLM 6.8s
conversations/mock-llm-conversation.spec.ts › mock-LLM agent-server conversation › step 4: resume conversation from sidebar after navigating away 5.9s
conversations/mock-llm-image-upload.spec.ts › mock-LLM image upload › attaching an image embeds it as base64 in the LLM completion call 13.1s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 1: ensure mock LLM profile is configured 6.4s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 2: start conversation and attach workspace metadata 11.9s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 3: conversation overview shows workspace and git identity 26.2s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 4: commits tab opens for attached workspace 5.9s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 5: browser tab shows empty state 6.4s
files/mock-llm-files-and-git.spec.ts › files tab, conversation overview git, and browser tab › step 6: files tab defaults to file-tree view without attached workspace 7.3s
home/mock-llm-folder-workspace.spec.ts › mock-LLM folder browser → workspace → conversation › step 1: browse to a folder, add it as a workspace, and launch a conversation with the correct working_dir 7.7s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 1: GitHub card is visible on the MCP marketplace page 5.6s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 2: clicking GitHub add control opens the install modal with correct fields 5.7s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 3: full install flow — fill PAT, submit, verify installed 12.0s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › step 4: installed GitHub server can be deleted 5.9s
mcp/mock-llm-mcp-github.spec.ts › MCP GitHub server install flow › regression: sibling create, edit, and delete preserve GitHub credentials with one MCP request each 12.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: invalid Slack credentials are blocked with a credential-check error 5.9s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: a valid token missing only a scope still installs (missing_scope is not a credential failure) 5.9s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › install: an older agent server that omits tool_result still installs (compat) 5.9s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › edit: Test Connection verifies the stored credentials and surfaces a credential failure 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › edit: Test Connection reports success for valid stored credentials 5.8s
mcp/mock-llm-mcp-slack-credentials.spec.ts › MCP Test Connection credential verification (Slack) › custom (non-catalog) server: Test Connection attaches no verification probe 5.8s
onboarding/mock-llm-onboarding-happy-path.spec.ts › onboarding happy path › completes the full onboarding flow and launches a conversation 5.1s
onboarding/mock-llm-onboarding-regressions.spec.ts › onboarding recent regressions › keeps the modal open on backdrop click and Escape 1.6s
onboarding/mock-llm-onboarding-regressions.spec.ts › onboarding recent regressions › defaults the LLM setup step to OpenAI GPT-5.6 Sol 1.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › scopes standalone styles to the agent-server-ui shell 1.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › renders critic results on agent messages and finish actions 1.5s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › loads older events when scrolling up 2.0s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › selected workspace persists after navigating away and returning 2.8s
regressions/mock-llm-ui-regressions.spec.ts › UI regressions › cleared sessionStorage yields empty workspace selection 1.3s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 1: configure ACP agent via Settings → Agent UI 13.4s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 2: reload and verify ACP settings are persisted in UI 5.8s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 3: start ACP conversation and verify agent reply 8.8s
settings/mock-llm-acp-agent.spec.ts › mock-LLM ACP agent conversation › step 4: resume ACP conversation from sidebar after navigating away 5.9s
settings/mock-llm-acp-auth-banner.spec.ts › mock-LLM ACP credentials-configured banner (#1244) › Claude credential in the store surfaces a 'configured' banner, never 'signed in' 6.8s
settings/mock-llm-cloud-providers-pagination.spec.ts › cloud LLM provider-picker pagination › surfaces providers past page 1 (e.g. xai) in the picker on a cloud backend 6.2s
settings/mock-llm-cloud-providers-pagination.spec.ts › cloud LLM provider-picker pagination › does not regress the local path: 150+ providers render in the picker 5.9s
settings/mock-llm-model-switch.spec.ts › mock-LLM /model slash command › step 1: configure LLM, create switch-target profile, register trajectory 7.1s
settings/mock-llm-model-switch.spec.ts › mock-LLM /model slash command › step 2: start conversation, switch profile via /model, verify switch 7.1s
settings/mock-llm-profile-management.spec.ts › active profile deletion + reconciliation › active profile is deletable and reconciliation activates another profile 8.1s
settings/mock-llm-profile-management.spec.ts › same-model profile identity › chat header shows the correct profile when two profiles share the same model 14.7s
settings/mock-llm-profile-management.spec.ts › OpenHands provider hidden base_url preservation › re-saving an OpenHands profile from Basic view preserves hidden base_url 7.6s
settings/mock-llm-provider-connection-selector.spec.ts › provider connection selector › selects a supported provider in Add provider 8.2s
skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › project skill in workspace/.agents/skills/ triggers on matching keyword 13.2s
skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › user skill in ~/.openhands/skills/ triggers on matching keyword 7.8s
⏭️ skills/mock-llm-skills.spec.ts › skill loading: project, user, and deletion › deleting a user skill removes it from subsequent conversations 0ms
🔍 Failure details (1)

❌ automations/mock-llm-automation.spec.ts › mock-LLM automation lifecycle › step 2: create automation and dispatch run via the UI

Error: Created automation ID was not reported after 30000ms

Posted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses)

neubig and others added 3 commits August 26, 2026 13:35
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
Co-authored-by: openhands <openhands@all-hands.dev>
@juanmichelini
juanmichelini self-requested a review August 26, 2026 15:04
@all-hands-bot

all-hands-bot commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

🚦 CI is currently failing on this PR's latest commit.

Please fix the failing checks before OpenHands reviews it - this is re-checked automatically once you push a new commit. (A maintainer can also request @all-hands-bot as a reviewer to have it reviewed regardless of CI status.)

This is an automated check - no AI was used to generate this comment.

@juanmichelini

Copy link
Copy Markdown
Contributor

@OpenHands please create an openhands/saas-deploy feature branch for this

@openhands-ai

openhands-ai Bot commented Aug 26, 2026

Copy link
Copy Markdown

I'm on it! juanmichelini can track my progress at all-hands.dev

Copy link
Copy Markdown
Contributor

@juanmichelini Done — created the OpenHands/saas-deploy feature branch add-gpt-5.6-sol and opened draft PR OpenHands/saas-deploy#813 for it.

It registers the gpt-5.6-solopenai/gpt-5.6-sol LiteLLM route (via OPENAI_API_KEY) across development, staging, and production so the SaaS can serve the new default. The pricing side (DeepSeek V4 Flash as the sole free route) remains in OpenHands/saas-deploy#801.

One dev-catalog note surfaced in the PR body: development/values.yaml lacks gpt-5.3-codex/gpt-5.4/gpt-5.6, so gpt-5.6-sol was inserted after gpt-5.5 there.

This comment was created by an AI agent (OpenHands) on behalf of the user.

@openhands-ai

openhands-ai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Handled the PR comment. juanmichelini asked for an openhands/saas-deploy feature branch corresponding to frontend PR #16922 (which makes openai/gpt-5.6-sol the OpenHands default model).

What I did:

  1. Explored context: Frontend PR feat: fix default and free models #16922 changes the default model to openai/gpt-5.6-sol and keeps only openhands/deepseek-v4-flash as the free route. The referenced SaaS pricing PR (saas-deploy#801) handles the "DeepSeek-only free" pricing side; what was missing on the SaaS side was a LiteLLM route for the new default model.
  2. Cloned OpenHands/saas-deploy and created branch add-gpt-5.6-sol.
  3. Added the gpt-5.6-solopenai/gpt-5.6-sol route (using OPENAI_API_KEY) to all three LiteLLM catalogs:
    • app/litellm/environments/development/values.yaml (noted: dev lacks gpt-5.3-codex/gpt-5.4/gpt-5.6, so the new entry sits after gpt-5.5)
    • app/litellm/environments/staging/values.yaml (next to gpt-5.6)
    • app/litellm/environments/production/values.yaml (next to gpt-5.6)
  4. Validated: YAML parses in all three files, new gpt-5.6-sol entry confirmed in each model_list, git diff --check clean.
  5. Pushed the branch and opened draft PR OpenHands/saas-deploy#813 ("feat(litellm): add gpt-5.6-sol route across environments"), left as a draft since production changes require human review and the user didn't ask to mark it ready.
  6. Replied to the comment on OpenHands/OpenHands#16922 with the branch + PR links and the dev-catalog caveat.

No changes were needed in the checked-out frontend workspace; the work lived entirely in the saas-deploy repository.

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig

neubig commented Aug 27, 2026

Copy link
Copy Markdown
Member Author

Updated the onboarding regression assertion to expect gpt-5.6-sol, fixing the deterministic Mock-LLM timeout. This comment was created by an AI agent (OpenHands) on behalf of the user.

@neubig

neubig commented Aug 27, 2026

Copy link
Copy Markdown
Member Author

needs human approval. Please replace the HUMAN: section placeholder with at least 20 characters describing what you tested; repository policy reserves this section for human contributors.

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig

neubig commented Aug 27, 2026

Copy link
Copy Markdown
Member Author

Fixed the remaining onboarding regression assertions to expect the OpenAI provider, GPT-5.6 Sol, and no OpenHands account helper. Pushed as c4258ce8a. This comment was created by an AI agent (OpenHands) on behalf of the user.

@neubig neubig changed the title feat: make DeepSeek V4 Flash the default OpenHands model feat: fix default and free models Aug 27, 2026
@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

PR Artifacts Cleaned Up

The .pr/ directory has been removed after approval.

@@ -17,15 +17,15 @@ interface SetupLlmStepProps {

/**
* Pre-fills the LLM form with the OpenHands provider's free default model

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment will no longer be correct when the model changes to openai/gpt-5.6-sol since it will not be pre-filled to a free default model.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in commit a3062b0: corrected the JSDoc to describe the OpenAI GPT-5.6 Sol default and removed the stale OpenHands/free-model wording. This reply was created by an AI agent (OpenHands) on behalf of the user.

@neubig
neubig enabled auto-merge (squash) August 27, 2026 15:47
@neubig
neubig merged commit d104ffd into main Aug 27, 2026
17 of 18 checks passed
@neubig
neubig deleted the change-deepseek-default branch August 27, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: feat A new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Onboarding LLM step says GLM-5.2 is pre-selected, but it pre-selects Kimi K3

4 participants