Skip to content

fix: repair install.sh and add cross-platform installation CI - #4073

Open
TomCC7 wants to merge 11 commits into
mainfrom
cc/fix/install-sh
Open

fix: repair install.sh and add cross-platform installation CI#4073
TomCC7 wants to merge 11 commits into
mainfrom
cc/fix/install-sh

Conversation

@TomCC7

@TomCC7 TomCC7 commented Sep 11, 2026

Copy link
Copy Markdown
Member

Contribution path

Fix scripts/install.sh while the replacement in #4047 is pending.

Problem

install.sh is outdated and broken

Solution

  • Recommend the curl installer while retaining manual setup instructions; document platform support and local testing.
  • Fix shell quoting, tool setup, environment reuse, and checkout handling. Use Nix Python inside Nix shells.
  • Apply extras in both modes, select CPU/CUDA PyTorch sources, and exclude scene on Linux ARM64.
  • Report each verification step, stop early when required system packages are declined, and limit replay duration.
  • Run one install per Ubuntu 22.04/24.04 × x86_64/ARM64 × library/developer combination.
  • Skip blueprints and replay in CI. Remove the Python test harness; keep macOS jobs disabled until runners are available.

How to Test

curl -fsSL https://raw.githubusercontent.com/dimensionalOS/dimos/cc/fix/install-sh/scripts/install.sh | bash

AI assistance

Codex (GPT-6 and GPT-5) assisted with implementation, testing, and this description. Human review pending.

Checklist

  • I have read and approved the CLA.

Comment thread scripts/test-install.sh
Comment thread scripts/test_install.py Outdated
@codecov

codecov Bot commented Sep 11, 2026

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
5412 1 5411 48
View the top 1 failed test(s) by shortest run time
dimos.experimental.isolated_python.test_end_to_end::test_isolated_python_rpc_refs_and_restart
Stack Traces | 32.7s run time
+ Exception Group Traceback (most recent call last):
  |   File ".../dimos/dimos/.venv/lib/python3.12........./site-packages/_pytest/runner.py", line 341, in from_call
  |     result: TResult | None = func()
  |                              ^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12........./site-packages/_pytest/runner.py", line 242, in <lambda>
  |     lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/pluggy/_hooks.py", line 512, in __call__
  |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/pluggy/_manager.py", line 120, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 167, in _multicall
  |     raise exception
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
  |     yield from thread_exception_runtest_hook()
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
  |     yield
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
  |     yield from unraisable_exception_runtest_hook()
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
  |     yield
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
  |     yield from self._runtest_for(item, "call")
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/logging.py", line 829, in _runtest_for
  |     yield
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12............/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.../site-packages/_pytest/capture.py", line 898, in pytest_runtest_call
  |     return (yield)
  |             ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12............/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12............/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.../site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
  |     return (yield)
  |             ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 121, in _multicall
  |     res = hook_impl.function(*args)
  |           ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12........./site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
  |     item.runtest()
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/python.py", line 1627, in runtest
  |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/pluggy/_hooks.py", line 512, in __call__
  |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/pluggy/_manager.py", line 120, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 167, in _multicall
  |     raise exception
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12............/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12.............................................................../site-packages/pluggy/_callers.py", line 121, in _multicall
  |     res = hook_impl.function(*args)
  |           ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../dimos/dimos/.venv/lib/python3.12....../site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
  |     result = testfunction(**testargs)
  |              ^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../experimental/isolated_python/test_end_to_end.py", line 59, in test_isolated_python_rpc_refs_and_restart
  |     coordinator = ModuleCoordinator.build(
  |                   ^^^^^^^^^^^^^^^^^^^^^^^^
  |   File ".../core/coordination/module_coordinator.py", line 377, in build
  |     coordinator.build_all_modules()
  |   File ".../core/coordination/module_coordinator.py", line 249, in build_all_modules
  |     safe_thread_map(modules, lambda m: m.build())
  |   File ".../dimos/utils/safe_thread_map.py", line 84, in safe_thread_map
  |     raise ExceptionGroup("safe_thread_map failed", errors)
  | ExceptionGroup: safe_thread_map failed (1 sub-exception)
  +-+---------------- 1 ----------------
    | dimos.protocol.rpc.rpc_utils.RemoteError: [Remote builtins.RuntimeError] Isolated Python runtime exited before becoming ready
    | 
    | Remote traceback:
    | Traceback (most recent call last):
    |   File ".../protocol/rpc/zenohrpc.py", line 199, in _execute_rpc
    |     response = f(*args[0], **args[1])
    |                ^^^^^^^^^^^^^^^^^^^^^^
    |   File ".../protocol/rpc/spec.py", line 116, in override_f
    |     return getattr(module, fname)(*args, **kwargs)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File ".../experimental/isolated_python/module.py", line 262, in build
    |     self._spawn_runtime()
    |   File ".../experimental/isolated_python/module.py", line 231, in _spawn_runtime
    |     raise RuntimeError("Isolated Python runtime exited before becoming ready")
    | RuntimeError: Isolated Python runtime exited before becoming ready
    | 
    | 
    | The above exception was the direct cause of the following exception:
    | 
    | Traceback (most recent call last):
    |   File ".../dimos/utils/safe_thread_map.py", line 68, in safe_thread_map
    |     outcomes[idx] = fut.result()
    |                     ^^^^^^^^^^^^
    |   File "........./usr/lib/python3.12....../concurrent/futures/_base.py", line 449, in result
    |     return self.__get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "........./usr/lib/python3.12....../concurrent/futures/_base.py", line 401, in __get_result
    |     raise self._exception
    |   File "........./usr/lib/python3.12.../concurrent/futures/thread.py", line 58, in run
    |     result = self.fn(*self.args, **self.kwargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File ".../core/coordination/module_coordinator.py", line 249, in <lambda>
    |     safe_thread_map(modules, lambda m: m.build())
    |                                        ^^^^^^^^^
    |   File ".../dimos/core/rpc_client.py", line 93, in __call__
    |     result, unsub_fn = self._rpc.call_sync(
    |                        ^^^^^^^^^^^^^^^^^^^^
    |   File ".../protocol/rpc/spec.py", line 88, in call_sync
    |     raise result
    | RuntimeError: Isolated Python runtime exited before becoming ready
    +------------------------------------

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@dimos-bot

Copy link
Copy Markdown

==> python@3.14
Python is installed as
/opt/homebrew/bin/python3

Unversioned symlinks python, python-config, pip etc. pointing to
python3, python3-config, pip3 etc., respectively, are installed into
/opt/homebrew/opt/python@3.14/libexec/bin

idle3.14 requires tkinter, which is available separately:
brew install python-tk@3.14

dbm.gnu is available separately:
brew install python-gdbm@3.14

For more information about Homebrew and Python, see: https://docs.brew.sh/Homebrew-and-Python
✓ system dependencies ready
✓ uv already installed (0.12.9)
▸ python 3.12 will be installed by uv automatically

▸ developer mode: all extras (except dds)
▸ installing extras: agents,apriltag,base,drone,manipulation,misc,perception,sim,unitree,visualization,web,webrtc,scene,cpu
Where should we install DimOS? (git clone destination)
▸ developer install → /Users/dimensional/dimos
export PYTHONPATH='/Users/dimensional/.python_startup'
export UV_PYTHON_PREFERENCE='only-managed'
export DENO_NODE_SHIM_ACTIVE='1'
export NIXPKGS_ALLOW_UNFREE='1'
export TMPDIR='/var/folders/gm/2l658vjx1fv010ph6slv6jq40000gn/T/'
export XPC_SERVICE_NAME='0'
export STARSHIP_SESSION_KEY='1812204032998527'
export TERM='xterm-256color'
export SHLVL='2'
export LANG='en_US.UTF-8'
export OSLogRateLimit='64'
export PWD='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/Users/dimensional'
export XDG_DATA_DIRS='/usr/local/share:/usr/share:/Users/dimensional/.nix-profile/share:/nix/var/nix/profiles/default/share'
export XPC_FLAGS='0x0'
export TERM_PROGRAM='Apple_Terminal'
export LOGNAME='dimensional'
export TERM_SESSION_ID='3F2CE3D2-3415-4F21-8725-4AFD708889CA'
export VISUAL='nano'
export USER='dimensional'
export __CFBundleIdentifier='com.apple.Terminal'
export PATH='/Users/dimensional/Library/Caches/deno/node_compat_bin:/opt/homebrew/bin:/Users/dimensional/Commands/:/Users/dimensional/.bun/bin:/Users/dimensional/.npm-global/bin:/Users/dimensional/.pixi/bin:/Users/dimensional/.openclaw/bin:/Users/dimensional/.deno/bin:/Users/dimensional/repos/rerun_pureish/.npm-global/bin:/Users/dimensional/.nix-profile/bin:/Users/dimensional/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/pkg/env/global/bin:/Users/dimensional/.cargo/bin:/Users/dimensional/.local/bin:/Users/dimensional/.cargo/bin:/Users/dimensional/gastown/gt:/Users/dimensional/gastown'
export NIX_SSL_CERT_FILE='/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt'
export HISTSIZE='50000'
export SAVEHIST='50000'
export __CF_USER_TEXT_ENCODING='0x1F5:0x0:0x0'
export SSH_AUTH_SOCK='/var/run/com.apple.launchd.KRjc3N2MaP/Listeners'
export __ETC_PROFILE_NIX_SOURCED='1'
export COLORTERM='truecolor'
export FPATH='/Users/dimensional/.zsh/completions:/Users/dimensional/completions:/usr/local/share/zsh/site-functions:/usr/share/zsh/site-functions:/usr/share/zsh/5.9/functions'
export SHELL='/bin/zsh'
export EXA_COLORS='reset:
#
# file extensions
#
# hidden types
:.=2:
# doc types
:
.pdf=35:.md=35:.html=35:.tex=35:
# config types
:
.cfg=36:.json=36:.yaml=36:.toml=36:.xml:
# image types
:.png=36:.gif=36:.jpg=36:.jpeg=36:
# video types
:.mov=33:.mp4=33:.avi=33:
# TODO audio types and more video types
# code types
:
.js=32:.py=32:.rb=32:.rs=32:.sh=32:.bash=32:.zsh=32:.c=32:.cpp=32:.coffee=32:.h=32:.lua=32:.java=32:.ts=32:.ps1=32:.pl=32:.jsx=32:.jl=32:.hs=32:.cr=32:.css=32:.sass=32:.less=32:.ipynb=32:.nix=32:

# file kind
:ex=31:
:lp=35;4:

# read
:ur=32;2:gr=32;2:tr=32;2:
# write
:uw=33;2:gw=33;2:tw=33;2:
# execute
:ux=31;2:ue=31;2:gx=31;2:tx=31;2:
:xa=2:

# 
# file sizes
# 
    # small
    :sn=37;2:nb=37;2:nk=37;2:
    :ub=37;2:uk=37;2:
    # medium
    :nm=34:
    :um=34:
    # big
    :ng=32;1:nt=32;1:
    :ug=32;1:ut=32;1:

# user
:uu=;2:un=;2:gu=;2:gn=36;2:

# date
:da=35;1;2:
'

export STARSHIP_SHELL='zsh'
export EDITOR='nano'
export HISTFILE='/Users/dimensional/.zsh_history'
export LD_LIBRARY_PATH=''
export NIX_PATH='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/NixOS/nixpkgs/archive/refs/tags/25.05.tar.gz'
export ARCHFLAGS='-arch arm64'
export BUN_INSTALL='/Users/dimensional/.bun'
export HOME='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/Users/dimensional'
export _='/Users/dimensional/Commands/env'
export GIT_LFS_SKIP_SMUDGE='1'
export TERM_PROGRAM_VERSION='470.2'
export NIX_PROFILES='/nix/var/nix/profiles/default /Users/dimensional/.nix-profile'
export ZSH='/Users/dimensional/.oh-my-zsh'
will run: uv sync --locked --python 3.12 --group tests --group lint --extra agents --extra apriltag --extra base --extra drone --extra manipulation --extra misc --extra perception --extra sim --extra unitree --extra visualization --extra web --extra webrtc --extra scene --extra cpu
bash: line 75: cd: /Users/dimensional/dimos: No such file or directory

✗ installation failed (exit 1)
✗ help: https://github.com/dimensionalOS/dimos/issues

@dimos-bot

Copy link
Copy Markdown

▇▇▇▇▇▇╗ ▇▇╗▇▇▇╗ ▇▇▇╗▇▇▇▇▇▇▇╗▇▇▇╗ ▇▇╗▇▇▇▇▇▇▇╗▇▇╗ ▇▇▇▇▇▇╗ ▇▇▇╗ ▇▇╗ ▇▇▇▇▇╗ ▇▇╗
▇▇╔══▇▇╗▇▇║▇▇▇▇╗ ▇▇▇▇║▇▇╔════╝▇▇▇▇╗ ▇▇║▇▇╔════╝▇▇║▇▇╔═══▇▇╗▇▇▇▇╗ ▇▇║▇▇╔══▇▇╗▇▇║
▇▇║ ▇▇║▇▇║▇▇╔▇▇▇▇╔▇▇║▇▇▇▇▇╗ ▇▇╔▇▇╗ ▇▇║▇▇▇▇▇▇▇╗▇▇║▇▇║ ▇▇║▇▇╔▇▇╗ ▇▇║▇▇▇▇▇▇▇║▇▇║
▇▇║ ▇▇║▇▇║▇▇║╚▇▇╔╝▇▇║▇▇╔══╝ ▇▇║╚▇▇╗▇▇║╚════▇▇║▇▇║▇▇║ ▇▇║▇▇║╚▇▇╗▇▇║▇▇╔══▇▇║▇▇║
▇▇▇▇▇▇╔╝▇▇║▇▇║ ╚═╝ ▇▇║▇▇▇▇▇▇▇╗▇▇║ ╚▇▇▇▇║▇▇▇▇▇▇▇║▇▇║╚▇▇▇▇▇▇╔╝▇▇║ ╚▇▇▇▇║▇▇║ ▇▇║▇▇▇▇▇▇▇╗
╚═════╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝

the agentive operating system for generalist robotics · installer v0.3.0

▸ detecting system...

OS: macOS 26.5.1 (arm64)
Python: not found (uv will install 3.12)
GPU: Apple Silicon (Metal/MPS)
Nix: nix (Determinate Nix 3.22.3) 2.35.2
RAM: 16 GB
Disk: 346 GB free

✓ will use system package manager
▸ checking system dependencies...
✓ all system dependencies already installed
✓ uv already installed (0.12.9)
▸ python 3.12 will be installed by uv automatically

bash: line 622: platform_sel[@]: unbound variable

@TomCC7
TomCC7 marked this pull request as ready for review September 11, 2026 04:29
Comment thread docs/installation/index.md Outdated
@greptile-apps

greptile-apps Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 3/5

Not safe to merge until the two installer failures are fixed; the action pins should also be made immutable before relying on this workflow.

Findings

  1. P1 Honor CPU-only developer installs
  2. P1 Respect skipped system packages
  3. P2 Security Pin workflow actions immutably

Summary

  • The new installer has two blocking failures: a CPU-only developer install still resolves CUDA PyTorch packages on Linux x86_64, and declining optional system packages later makes native verification fail the installation. The new installation workflow also uses mutable action tags, which should be pinned before relying on the workflow for pull-request execution.

Reviews (1) · Last reviewed commit: "fix: handle empty installer selections i..."

Comment thread scripts/install.sh Outdated
Comment thread scripts/install.sh
Comment thread .github/workflows/install.yml Outdated
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Sep 11, 2026
Comment thread scripts/install.sh
Comment thread README.md
# Installation

## Interactive Install
Use the official installer to set up system dependencies, Python 3.12, and dimOS:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Personally, I liked the subheadings

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restored separate guided-installation, manual-installation, and quickstart headings.

Comment thread README.md
@leshy

leshy commented Sep 11, 2026

Copy link
Copy Markdown
Member

it's great to CI test install, thanks.

I'd still leave manual installation steps in since people will be lost if installer fails in any way, which has happened very frequently in the past, especially if not using the most standard OS so I think manual install steps are important to leave. Dimensional is actually unusually standard wrt installation as far as py projects go

Comment thread .github/workflows/install.yml Outdated
Comment thread scripts/install.sh
# ─── package lists (edit these when dependencies change) ──────────────────────
UBUNTU_PACKAGES="curl g++ portaudio19-dev git-lfs libturbojpeg python3-dev pre-commit libgl1 libegl1"
MACOS_PACKAGES="gnu-sed gcc portaudio git-lfs libjpeg-turbo python pre-commit"
UBUNTU_PACKAGES="ca-certificates curl git g++ portaudio19-dev git-lfs libturbojpeg pre-commit libgl1 libegl1 libglib2.0-0 ffmpeg libsndfile1 pkg-config"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you search for one of the packages here like portaudio19-dev you'll see that there are multiple other places where we specify what packages to install. I think those should be updated as well to add ca-certificates, etc

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the fresh-Ubuntu setup script and both Docker package lists with the missing runtime prerequisites, including ca-certificates. Kept their platform/build-specific dependencies.

@leshy
leshy enabled auto-merge September 11, 2026 19:15
@leshy
leshy disabled auto-merge September 11, 2026 19:16
Comment thread scripts/install.sh Outdated
Comment thread docs/installation/index.md
Comment thread docs/installation/index.md Outdated
Comment thread docs/installation/index.md Outdated
Comment thread docs/installation/index.md Outdated
Comment thread docs/installation/index.md Outdated
Comment thread docs/installation/nix.md
Comment thread docs/installation/ubuntu.md
Comment thread docs/platforms/humanoid/g1/index.md
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Sep 11, 2026
Comment thread docker/python/Dockerfile

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we have docker verfication CI why would this be out of date

@@ -20,7 +22,7 @@ package instead of selecting a package manager for you.

## Install into an existing environment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we just omit the installation instruction from here and all delegate to the official one...

Comment thread docs/quickstart.md
## Before you begin

You need a machine running **Ubuntu 22.04 or newer** or **macOS 12.6 or newer**, with **Python 3.12**, about **10 GB of free disk**, and **16 GB of RAM**. A GPU is only required later for perception and AI features, so any reasonably modern laptop can run this quickstart.
You need a machine running **Ubuntu 22.04 or newer** or **macOS 14 or newer**, with about **10 GB of free disk**, and **16 GB of RAM**. A GPU is only required later for perception and AI features, so any reasonably modern laptop can run this quickstart.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this requirement upgrade intended? can't 12.6 be supported anymore?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants