Toggle individual CLIs on/off (extend ENABLE_HERMES pattern to Codex/OpenCode/Gemini)
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 78/100
Research direction
Start with the existing ENABLE_HERMES gate in setup_hermes.py, then compare setup_codex.py, setup_opencode.py, and setup_gemini.py. Add matching opt-out handling and document all four toggles together in app.yaml; verify the default path remains unchanged and false, 0, and no exit cleanly without installing the CLI.
Written by the indexing model from the issue text.
Description
Motivation
setup_hermes.py already supports ENABLE_HERMES=false to skip its install. The other three secondary CLIs (Codex, OpenCode, Gemini) don't have an equivalent, so an operator who knows their workspace can't actually run a particular agent has to either:
- live with the broken install + dead UI, or
- fork and gut the setup script.
Real triggering case: workspace adb-7405613340366915.15.azuredatabricks.net serves only databricks-gpt-oss-* models. Codex is configured with wire_api = "responses", but:
$ curl -X POST .../serving-endpoints/responses -d '{"model":"databricks-gpt-oss-120b",...}'
{"error_code":"BAD_REQUEST","message":"Responses API passthrough is not supported for model databricks-gpt-oss-120b."}
HTTP 400
So Codex on this workspace won't function regardless of which model it picks. An operator needs ENABLE_CODEX=false to cleanly skip the install rather than ship a broken agent into the terminal UI.
Fix shape (PR coming)
Replicate the Hermes pattern. 4-line gate at the top of each of setup_codex.py, setup_opencode.py, setup_gemini.py:
if os.environ.get("ENABLE_<CLI>", "true").strip().lower() in ("false", "0", "no"):
print("ENABLE_<CLI>=false — skipping <CLI> setup")
raise SystemExit(0)
app.yaml documents all four toggles together. Defaults to "true" for all → existing deployments are unchanged.
Out of scope
- Claude Code stays always-on.
setup_claude.pyalso creates~/projects, writes~/.claude.jsonwith MCP servers (used app-wide), and copies subagent definitions. Some of that is non-Claude-specific. AddingENABLE_CLAUDE=falsewould require disentangling those side effects first. Can be a follow-up if there's demand for a "no-Claude" deploy. - No UI surfacing. A skipped agent's setup-status step still shows
complete(becauseraise SystemExit(0)is a clean exit). The print line is in the step's stdout buffer; users who care can read it. Adding a "skipped" state to the UI is more invasive — keep this PR small.
- Dominant language
- Python
- Stars
- 40
- Forks
- 11
- Avg merge
- 1m
- Merged PRs (30d)
- 1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from databrickslabs/coding-agents-databricks-apps
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in databrickslabs/coding-agents-databricks-apps
Similar issues
-
agent-ready documentation needs-triage
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 91/100
-
workflow-status page template still says reusable workflows are "triggered only by workflow_call:" Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
instance instance add
Difficulty 1/5 Under an hour Newbie friendliness 72/100
searxng/searx-instances#939 · 1 comment ·
-
area-deployment area-integrations triage:bot-seen
Difficulty 2/5 Half a day Newbie friendliness 86/100