Skip to content

Remote-hub ocx connect always times out downloading a large catalog (hard-coded 5s, no override, ~18KB base_instructions per model) #3288

Closed as not planned

Description

@tizerluo

Environment

  • opencodex 2.40.0 on both sides
  • Hub: macOS, role=hub, catalog = 416 models ≈ 8.4 MB serialized (each entry carries a full base_instructions block of ~18KB)
  • Client: macOS on another continent, direct tailnet link ~1.4 MB/s (healthy link, 18ms RTT, direct per tailscale status)

What happens

$ ocx connect <data-plane-url> --management-url <https-origin> --admin-token-stdin
Error: The operation timed out.

downloadClientCatalog() in src/client/connect.ts uses DEFAULT_TIMEOUT_MS = 5_000 (src/client/hub-client.ts) with no CLI flag or env override. The hub serves the same catalog locally in 0.15 s; over a ~1.4 MB/s link the 8.4 MB body needs ~6 s — past the cap, so connect deterministically fails and rolls back (clean rollback, to be fair).

Workaround we used

Shrank the catalog below the budget: disabled liveModels on two aggregator providers (416 → 90 models, 8.4 MB → 1.9 MB, ~1.4 s transfer) and connect succeeded immediately.

Suggestions

  1. Expose the client fetch timeout (flag or env) so slow links / large catalogs can be accommodated.
  2. Consider serving GET /v1/catalog gzipped — the JSON is highly compressible and this would also shrink the footprint for every client.
  3. Consider documenting a catalog-size budget for remote clients, or warning on ocx sync when the persisted catalog exceeds it.

Related context: each routed model inheriting the full base_instructions template is what makes the per-entry cost ~18 KB; if that block were deduplicated or omitted for routed entries on the download path, catalogs would shrink by ~90%.

Activity

  1. added
    catalogModel catalog, slugs, visibility, routed entries
    cliCLI, config inject, packaging flags
    on Sep 2, 2026
  2. github-actions commented on Sep 2, 2026

    @github-actions
    Contributor

    Issue closed: use an issue template

    Thanks for taking the time to submit this issue. It was closed automatically because it was not opened with a recognized issue template (Bug report, Feature request, Documentation, or Provider compatibility). Freeform and API-opened issues cannot skip this check.

    • This issue does not use a recognized issue template.

    Please edit the issue to add:

    • Open a new issue with the Bug report, Feature request, Documentation, or Provider compatibility template.
    • Or edit this issue so the body uses the template section headings for the kind of report you are filing.

    See the Contributing guide for details.

    Once the report passes the automated checks, it will be reopened automatically unless a maintainer has changed its state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    catalogModel catalog, slugs, visibility, routed entriescliCLI, config inject, packaging flags

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions