[Feature]: Extend background catalogAutoRefresh to fan out to enabled client integrations (Grok, Claude Desktop, Cline, etc.)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- backend
Research direction
Start in src/codex/catalog-auto-refresh.ts, where startCatalogAutoRefresh's tick() only converges the Codex catalog when outcome.changed is true. Then read syncEnabledClientIntegrations in src/server/management/config-routes.ts and refreshOwnedCatalogIntegrations in src/integrations/catalog-refresh.ts to reuse their fan-out. Done means a changed background refresh also updates enabled client files, with a failure in one client logged without stopping the others.
Written by the indexing model from the issue text.
Description
Area
Catalog / models
What are you trying to accomplish?
I use OpenCodex with multiple client integrations and agent harnesses simultaneously on the same machine (e.g. Codex, Grok CLI, Claude Desktop, Cline, and OpenCode). When upstream model providers release new models or update available rosters, I want all configured client harnesses to automatically receive the updated model catalog without requiring me to run manual CLI commands or restart/reconfigure OpenCodex.
What prevents this today?
While manual commands like ocx sync and dashboard config mutations perform multi-client fan-out sync via syncEnabledClientIntegrations (propagating changes to Grok, Claude Desktop, and owned integrations such as Cline, OpenCode, Pi, etc.), the background periodic auto-refresh mechanism (startCatalogAutoRefresh in src/codex/catalog-auto-refresh.ts) only converges the Codex client catalog (createManagementConvergeCodex with scope: 'catalog').
As a result, when new models appear from upstream providers in the background, only Codex receives the update. Other connected client harnesses continue to hold stale model lists until a manual ocx sync is executed.
What should OpenCodex do?
When the periodic background catalog refresh detects updated upstream models (outcome.changed === true), it should automatically fan out the refreshed catalog to all enabled and owned client integrations (mirroring the behaviour of syncEnabledClientIntegrations), with isolated error handling so failures in non-critical client files do not disrupt the background cycle.
Observable result: Newly released models from configured providers become immediately visible and selectable across all active client harnesses (e.g. Grok and Claude Desktop) in the background, without requiring a manual ocx sync trigger.
Example usage or interface
Workflow comparison:
Before:
- Upstream provider releases a new model (e.g. claude-sonnet-5-5 or deepseek-v4).
- OpenCodex background catalog auto-refresh detects the change and updates the Codex catalog in CODEX_HOME.
- Grok (~/.grok/config.toml) and Claude Desktop (claude_desktop_config.json) remain unchanged with stale model lists.
- User must manually run ocx sync to push the new models to Grok/Claude Desktop.
After:
- Upstream provider releases a new model.
- Background catalog auto-refresh detects the change, updates Codex, and triggers fan-out synchronization to all enabled client integrations.
- Grok, Claude Desktop, and other enabled clients immediately see the new models without manual user intervention.
Alternatives or workarounds
Running ocx sync manually in a terminal whenever upstream model rosters change.
Additional context
- Relevant source: src/codex/catalog-auto-refresh.ts (startCatalogAutoRefresh / ick())
- Multi-client sync implementation: src/server/management/config-routes.ts (syncEnabledClientIntegrations) and src/integrations/catalog-refresh.ts (
efreshOwnedCatalogIntegrations)
Checks
- I searched existing issues and documentation.
- This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
- I removed secrets and personal data.
- Dominant language
- TypeScript
- Stars
- 16.9k
- Forks
- 1.3k
- Avg merge
- 7h 50m
- Merged PRs (30d)
- 645
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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 lidge-jun/opencodex
-
[Bug]: Business Premium seat plan self_serve_business_prolite is counted at baseline capacity weight 1 instead of 5Possibly taken A pull request linked to this issue is open or already merged. Openaccount-pool bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
lidge-jun/opencodex#7440 · 2 comments ·
Maintainers usually reply within 1 day
-
[Docs]: translate the #7395 OpenGateway and Mistral provider-guide sectionsPossibly taken @MannXo claimed this 1 day ago. Opendocumentation
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
lidge-jun/opencodex#7405 · 3 comments ·
Maintainers usually reply within 1 day
-
[Bug]: resolveCodexRuntime test depends on the host's installed CodexPossibly taken A pull request linked to this issue is open or already merged. Openbug cli
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
lidge-jun/opencodex#7403 · 2 comments ·
Maintainers usually reply within 1 day
-
account-pool enhancement needs-design proxy
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
lidge-jun/opencodex#6737 · 1 comment ·
Maintainers usually reply within 1 day
-
bug streaming
Difficulty 4/5 3-5 days Newbie friendliness 45/100
lidge-jun/opencodex#7462 · 4 comments ·
Maintainers usually reply within 1 day
All issues in lidge-jun/opencodex
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 1-3 hours Newbie friendliness 72/100
zts212653/clowder-ai#1678 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
Progressive-Victory/the-website#680 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100