opencode update/upgrade times out behind corporate npm mirror: installer hard-codes registry.npmjs.org and ignores configured registry
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- bash, typescript
Research direction
Read the curl installer at install, especially the registry URLs at lines 195, 199, and 212, and check how it receives npm configuration. Reproduce with a configured registry mirror and confirm the installer uses it for both availability checks and tarball downloads. Done when the update path can use the configured registry and still falls back to npmjs when none is configured.
Written by the indexing model from the issue text.
Description
Description
opencode update (and the opencode upgrade step it shells out to) times out on networks where registry.npmjs.org is unreachable, even though the machine has a fully working corporate npm mirror (JFrog Artifactory) configured in ~/.npmrc.
Root cause: the curl installer script hard-codes https://registry.npmjs.org in three places, ignoring the configured npm registry:
installline 195 — version availability check:https://registry.npmjs.org/$package_scope%2fcli-$target/$specific_versioninstallline 199 — legacy package name fallback, same hard-coded hostinstallline 212 — tarball download:url="https://registry.npmjs.org/$package_name/-/$filename"
On my network registry.npmjs.org connections hang until timeout (the corporate egress proxy never completes the TLS handshake to that host), so both the availability check and the tarball download fail. opencode update reports only "Timed out" with no indication of which URL/host failed, and no way to point it at the internal mirror.
Evidence from this network:
$ curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://registry.npmjs.org/@opencode%2fcli-linux-x64/2.2.5
HTTP 000 / connection hangs (killed after 15 s)
$ curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://api.github.com/ # control
HTTP 200 0.55 s
The internal mirror serves the exact same package and tarball (same path shape, same checksums):
$ curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" \
https://<internal-artifactory>/api/npm/npm-group-all/@opencode%2fcli-linux-x64/2.2.5
HTTP 200 2.2 s
Workaround I used: download the GitHub release tarball manually and install it with install --binary, which correctly skips the npm download path.
This is the installer-side instance of the registry problem tracked in #57797 (which covers the Desktop SSH bootstrap). Suggested fix, same as proposed there: respect NPM_CONFIG_REGISTRY / npm_config_registry (and ideally ~/.npmrc registry=) with fallback to https://registry.npmjs.org:
registry="${NPM_CONFIG_REGISTRY:-${npm_config_registry:-https://registry.npmjs.org/}}"
registry="${registry%/}"
then use $registry in place of the three hard-coded URLs. Additionally, failing fast with a clear error naming the unreachable host (instead of a generic "Timed out") would make this class of problem diagnosable.
Steps to reproduce
- Be on a network where
registry.npmjs.orgis unreachable (direct or via corporate egress proxy that cannot reach it), with a working npm mirror set in~/.npmrc. - Run
opencode updatewith any version prior to the target. - The
opencode upgrade --method curlstep shells out to the install script, which hangs onregistry.npmjs.organd is killed by the updater's timeout.
┌ Upgrade
│ ● Using method: curl
│ ● From 2.0.18 → 2.2.5
│ ■ Upgrade failed
│ ■ The OpenCode installer failed
│ │ Timed out
│ │ Command opencode upgrade 2.2.5 --method curl
└ Failed
OpenCode version
2.0.18 → 2.2.5 (upgrade attempt); affected installer script served at https://opencode.ai/v2/install
Operating System
RHEL 8 x86_64 (linux-x64)
Terminal
bash
- Dominant language
- TypeScript
- Stars
- 224k
- Forks
- 30k
- Avg merge
- 4h 44m
- Merged PRs (30d)
- 513
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing 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 anomalyco/opencode
-
pending close triaging
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
anomalyco/opencode#62582 · 1 comment ·
Maintainers usually reply within 1 day
-
reproduced
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
anomalyco/opencode#62516 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
anomalyco/opencode#62374 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
anomalyco/opencode#62362 · 1 comment ·
Maintainers usually reply within 1 day
-
reproduced
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
anomalyco/opencode#62343 · 1 comment ·
Maintainers usually reply within 1 day
All issues in anomalyco/opencode
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
feature request
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
callstack/react-native-paper#5189 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
live-codes/livecodes#1079 · 1 comment ·
Maintainers usually reply within 1 day
-
Add: ESP 2 ROOpenapproved check:passed streams:add
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day