You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The documented quick-start install path fails on Linux with an HTTP 404. A fresh Ubuntu server that follows the README verbatim cannot install Ourocode:
==> ourocode install
==> downloading release ourocode-v0.1.13-linux-x86_64
...
curl: (22) The requested URL returned error: 404
The installer resolves the platform correctly (linux-x86_64) and requests the matching release tarball, but no Linux asset has ever been published, so curl -fL returns 404 and set -euo pipefail aborts the install.
Root cause
bootstrap/install.sh (identical to repo install.sh) builds the download URL from platform_name():
# linux
$ curl -IL .../v0.1.13/ourocode-v0.1.13-linux-x86_64.tar.gz -> 404
# darwin
$ curl -IL .../v0.1.13/ourocode-v0.1.13-darwin-arm64.tar.gz -> 200
Q00/ourocode transparently redirects to Ouro-labs/ourocode, so the default REPO is not the problem — the Linux asset simply does not exist.
Contributing factors:
There is no CI release workflow in the repository (no .github/ at all), so release artifacts are produced manually.
scripts/package.sh only builds for the host OS/arch (uname -s / uname -m). When a maintainer packages on macOS, only darwin-arm64 is ever produced; Linux (and Intel macOS) tarballs are never generated.
The pipe-to-bash path has no source tree, so the installer skips the build fallback and goes straight to download_release(), making the missing asset a hard failure rather than a graceful degrade.
Version drift: install.sh defaults to VERSION=0.1.13 while mix.exs is already at 0.1.14. Even if a new release is cut, Linux assets are still absent, so both versions 404 on Linux.
Current evidence
Installer / packaging:
install.sh -> platform_name() maps Linux x86_64 to linux-x86_64.
install.sh -> download_release() requests ourocode-v${VERSION}-${platform}.tar.gz with curl -fL (fails hard on 404 under set -euo pipefail).
The installer already handles the Erlang/OTP prerequisite via ensure_erlang_runtime() (apt/dnf best effort), so the only missing piece is a downloadable Linux release asset.
Proposed scope
Produce and publish Linux release tarballs alongside the macOS ones, at least ourocode-v<version>-linux-x86_64.tar.gz (+ .sha256); arm64 (linux-arm64) is a natural follow-up.
Add a CI release workflow (.github/workflows/) that builds the escript + ourocode_tty on a Linux runner and uploads the tarball + checksum to the GitHub Release, so future versions ship Linux assets automatically instead of depending on a maintainer's host OS.
Align versions: make the installer default VERSION track mix.exs (or derive it), and cut a release whose tag matches the installer default so the documented path never points at a version without assets.
Make a missing-asset download degrade with an actionable message (e.g. "no prebuilt release for ; build from source or set OUROCODE_RELEASE_URL") instead of a bare curl: (22) 404.
Update README (Quick Start / Requirements / Package A Release) to reflect the platforms that actually ship binaries.
Acceptance criteria
A Linux release asset ourocode-v<version>-linux-x86_64.tar.gz (+ .sha256) exists on the GitHub Release matching the installer's default version.
curl -fsSL .../bootstrap/install.sh | bash completes on a clean Ubuntu x86_64 host and ourocode --detect runs.
The installer's default VERSION and the latest published release with Linux assets are consistent (no version drift 404).
A CI workflow builds and uploads Linux artifacts on release so this does not regress.
A missing prebuilt asset produces a clear, actionable error rather than a raw curl 404.
Non-goals for the first PR
Bundling the Erlang/OTP runtime into the tarball (the escript still requires escript/erl on PATH; that is tracked by the existing runtime story).
Problem
The documented quick-start install path fails on Linux with an HTTP 404. A fresh Ubuntu server that follows the README verbatim cannot install Ourocode:
curl -fsSL https://raw.githubusercontent.com/Q00/ourocode/release/bootstrap/install.sh | bashThe installer resolves the platform correctly (
linux-x86_64) and requests the matching release tarball, but no Linux asset has ever been published, socurl -fLreturns 404 andset -euo pipefailaborts the install.Root cause
bootstrap/install.sh(identical to repoinstall.sh) builds the download URL fromplatform_name():But release
v0.1.13only ships macOS assets:ourocode-v0.1.13-darwin-arm64.tar.gzourocode-v0.1.13-darwin-arm64.tar.gz.sha256Verified directly:
Q00/ourocodetransparently redirects toOuro-labs/ourocode, so the defaultREPOis not the problem — the Linux asset simply does not exist.Contributing factors:
.github/at all), so release artifacts are produced manually.scripts/package.shonly builds for the host OS/arch (uname -s/uname -m). When a maintainer packages on macOS, onlydarwin-arm64is ever produced; Linux (and Intel macOS) tarballs are never generated.download_release(), making the missing asset a hard failure rather than a graceful degrade.install.shdefaults toVERSION=0.1.13whilemix.exsis already at0.1.14. Even if a new release is cut, Linux assets are still absent, so both versions 404 on Linux.Current evidence
Installer / packaging:
install.sh->platform_name()maps Linuxx86_64tolinux-x86_64.install.sh->download_release()requestsourocode-v${VERSION}-${platform}.tar.gzwithcurl -fL(fails hard on 404 underset -euo pipefail).install.sh->VERSION="${OUROCODE_VERSION:-0.1.13}",REPO="${OUROCODE_REPO:-Q00/ourocode}".scripts/package.sh->NAME="ourocode-v${VERSION}-${OS}-${ARCH}"built fromuname; single host platform only..github/workflows/*release automation exists.mix.exs->version: "0.1.14"(installer default is0.1.13).Release state:
v0.1.13assets:darwin-arm64tarball +.sha256only.curl ... install.sh | bashpath for all platforms.dist/ourocode-v0.1.13-darwin-arm64.tar.gz(.sha256).Reproduction
curl -fsSL https://raw.githubusercontent.com/Q00/ourocode/release/bootstrap/install.sh | bash==> downloading release ourocode-v0.1.13-linux-x86_64followed bycurl: (22) The requested URL returned error: 404.Desired UX
Following the documented quick start on Linux x86_64 (and, ideally, arm64) should install and start Ourocode, matching the macOS experience:
curl -fsSL https://raw.githubusercontent.com/Q00/ourocode/release/bootstrap/install.sh | bash ourocode --detectThe installer already handles the Erlang/OTP prerequisite via
ensure_erlang_runtime()(apt/dnf best effort), so the only missing piece is a downloadable Linux release asset.Proposed scope
ourocode-v<version>-linux-x86_64.tar.gz(+.sha256); arm64 (linux-arm64) is a natural follow-up..github/workflows/) that builds the escript +ourocode_ttyon a Linux runner and uploads the tarball + checksum to the GitHub Release, so future versions ship Linux assets automatically instead of depending on a maintainer's host OS.VERSIONtrackmix.exs(or derive it), and cut a release whose tag matches the installer default so the documented path never points at a version without assets.curl: (22) 404.Acceptance criteria
ourocode-v<version>-linux-x86_64.tar.gz(+.sha256) exists on the GitHub Release matching the installer's default version.curl -fsSL .../bootstrap/install.sh | bashcompletes on a clean Ubuntu x86_64 host andourocode --detectruns.VERSIONand the latest published release with Linux assets are consistent (no version drift 404).curl404.Non-goals for the first PR
escript/erlon PATH; that is tracked by the existing runtime story).Related files
install.shbootstrap/install.sh(release branch)scripts/package.shmix.exsREADME.mddocs/site/index.html