Repository navigation
Add oh-my-pi (omp) as a supported coding agent - #513
Open
zhulinchng wants to merge 4 commits into
Open
zhulinchng wants to merge 4 commits into
zhulinchng wants to merge 4 commits into
Conversation
zhulinchng
force-pushed
the
feature/omp-support
branch
from
September 9, 2026 21:00
e86f2cd to
8dcfec8
Compare
zhulinchng
force-pushed
the
feature/omp-support
branch
from
October 7, 2026 12:39
79df2b5 to
0799ecd
Compare
Collaborator
|
@zhulinchng could you rebase with main ? |
Collaborator
|
/ug-review |
Collaborator
|
/integration-test |
UG reviewThe change adds omp launch, YAML configuration, authentication commands, MCP integration, and revert handling. Key risks are configuration loss, interactive signal handling, and dependency-lock consistency. Blocker
Major
Automated advisory review of |
|
Fork integration failure on 0799ecd: https://github.com/databricks/unity-gateway/actions/runs/38763611123 |
zhulinchng
force-pushed
the
feature/omp-support
branch
from
October 15, 2026 16:17
0799ecd to
a2202c6
Compare
Author
hi @rohita5l , i've rebased |
ug can configure, launch, and register MCP servers for oh-my-pi (`omp`,
@oh-my-pi/pi-coding-agent), alongside the existing pi entry.
- agents/omp.py writes a private ~/.ucode/omp-home/.omp/agent/models.yml with
the three Databricks providers (anthropic-messages / openai-responses /
google-generative-ai) and pins the default model via `modelRoles.default` in
config.yml (models.yml root must stay providers-only per omp's schema).
- Each provider's apiKey is the `!ug auth-token ...` command value, so omp mints
a token on demand and re-runs the command when the gateway answers 401 —
nothing that expires is written to models.yml and no refresh thread runs.
- MCP servers register through omp's agent-dir mcp.json ({command, args} only,
per omp's stdioServer schema), including the batched write_user_mcp_servers
path that the workspace-managed MCP flow uses.
- Registry, discovery, launch (`ug omp`), state, revert, and README coverage;
pyyaml becomes a direct dependency for config_io's YAML readers/writers.
zhulinchng
force-pushed
the
feature/omp-support
branch
from
October 21, 2026 12:28
0400178 to
901b141
Compare
Author
|
@rohita5l - any plans to add support for |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
ugcan now configure, launch, validate, and register MCP servers for oh-my-pi (omp,@oh-my-pi/pi-coding-agent), alongside the existingpientry:ug configure --agents omp,ug omp,ug doctor,ug status, andug revertall cover it.The branch is rebased onto current
main(226 commits of drift since it was cut) with the merge conflicts resolved, and the implementation is re-laid on main's structures — see "Rebase notes".How
agents/omp.py(mirrorspi.py, no shared abstraction): isolated~/.ucode/omp-home/.omp/agent, YAMLmodels.ymlwith the three Databricks providers (anthropic-messages/openai-responses/google-generative-ai), default model pinned viamodelRoles.defaultinconfig.yml(models.ymlroot must be providers-only per omp's schema),--printvalidation, and{command, args}-only MCP entries (omp'sstdioServerforbids other keys).pi.pyon currentmain: each provider'sapiKeyis the!ug auth-token …command value, so omp mints a token on demand and re-runs the command when the gateway answers 401. Nothing that expires is written tomodels.ymland no refresh thread runs.base_urls["omp"]; MCP backup restore on revert. NoOAUTH_TOKEN(omp never reads it).pyyamlbecomes a direct dependency, withread_yaml_safe/write_yaml_fileinconfig_iomatching the JSON/TOML readers' contract.uv.lockis left asmainhas it: the committed lock pins Databricks' internal pypi-proxy, which the machine that produced this diff can't reach, and CI re-locks (uv lock) before installing — any localuv lock/uv runadds thepyyamlentry.flowchart LR C[ug configure --agents omp] --> W[agents/omp.write_tool_config] W --> M["models.yml: providers + apiKey: '!ug auth-token …'"] W --> D[config.yml: modelRoles.default] L[ug omp] --> O[omp binary<br/>PI_CODING_AGENT_DIR=omp-home] O -->|runs apiKey command| A[ug auth-token] A --> G[AI Gateway<br/>anthropic/codex/gemini] P[ug configure mcp] --> J[omp-home mcp.json<br/>ug mcp-proxy stdio]Rebase notes
pi.py:!ug auth-token …command value instead of a baked bearer + background refresher.ug(novalidate_all_tools), so the branch's validation hunks andvalidate_envare gone;validate_cmdstays for the live e2e entry point.main, and the server'sCodingAgentproto has no omp variant, so omp stays out of managed config end to end;_AGENT_MODEL_FAMILIES["omp"]mirrorspiso any residual picker path can't diverge.mainbatches managed MCP writes per client (_MCP_CLIENT_MODULES→write_user_mcp_servers), which omp now implements;_run_mcp_listreturnsNonefor clients without a listing subcommand instead of raisingKeyError.Verification
just lint(ruff check + ruff format --check + ty) clean.pytest --ignore=tests/test_e2e.py): 3478 passed, 6 skipped; the 11failures are pre-existing in this sandbox and reproduce on a clean
origin/mainworktree(7
test_claude_pty_replay+ 2test_claude_smart_routing_v2need to bind a local socket,2
test_e2e_user_agentneed a live gateway).omp modelsloads a ug-written agent dir and lists all threedatabricks-*providers with the configured model ids.!commandapiKey and sendsAuthorization: Bearer <command output>; theUser-Agentug writes arrives on theopenai-responsesandgoogle-generative-aiproviders. Foranthropic-messagesomp pins its ownclaude-cli/<version>UA (Claude Code's client fingerprint), same as it does for the built-inanthropicprovider.ug omp --help, the help panel's Launch section, andug statusrender with omp registered.Non-goals
Managed-config support (server proto has no omp variant), OSS models, live e2e additions.