Bug
The one-line bootstrap installer (curl -sSL https://ourpai.ai/install.sh | bash) fails on a fresh macOS/Linux install with:
▸ 3/5 Fetching PAI v5.0.0 from GitHub
ℹ Downloading v5.0.0 tarball (HTTPS, no auth required)...
ℹ Source: https://github.com/danielmiessler/Personal_AI_Infrastructure/archive/refs/tags/v5.0.0.tar.gz
✗ Could not locate extracted tarball directory under /var/folders/.../pai-install-XXXXXX.XXXXXXXX
ℹ Expected a directory matching: Personal_AI_Infrastructure-*
The download succeeds, but the script can't find the extracted directory and aborts at step 3/5.
Root cause
The repo was renamed Personal_AI_Infrastructure → LifeOS, but install.sh still hard-codes the old name:
PAI_REPO_NAME="Personal_AI_Infrastructure"
PAI_TARBALL_URL=".../${PAI_REPO_NAME}/archive/refs/tags/${PAI_TAG}.tar.gz"
curl -fsSL "$PAI_TARBALL_URL" | tar -xzf - -C "$TMP_DIR"
EXTRACTED_DIR="$(find "$TMP_DIR" -maxdepth 1 -type d -name "${PAI_REPO_NAME}-*" | head -n 1)"
GitHub redirects the old repo URL, so the download works — but it names the tarball's top-level folder after the current repo name. The archive therefore extracts to LifeOS-5.0.0/, while find ... -name "Personal_AI_Infrastructure-*" matches nothing → the abort.
Verified:
$ curl -fsSL https://github.com/danielmiessler/Personal_AI_Infrastructure/archive/refs/tags/v5.0.0.tar.gz | tar -tz | head -1
LifeOS-5.0.0/
The release contents themselves are intact at LifeOS-5.0.0/Releases/v5.0.0/.claude/ (including the bundled install.sh); only the directory-matching glob is wrong.
The script's own comment is ironic here:
# ... Resolve the prefix dynamically instead of hard-coding it, so a tag-format change doesn't silently break.
It resolves the tag suffix dynamically but hard-codes the repo-name prefix, which is exactly what broke.
Impact
Every fresh macOS/Linux user of the documented one-line installer is blocked at step 3/5.
Suggested fix
Any one of:
- Set
PAI_REPO_NAME="LifeOS" (works for both the tarball URL and the glob).
- Make the glob repo-name-agnostic — match on the tag suffix instead:
EXTRACTED_DIR="$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)"
(the tarball contains exactly one top-level dir), or -name "*-${PAI_VERSION}".
Environment
- macOS (Darwin), default bash/curl/tar/rsync
- PAI v5.0.0, via
curl -sSL https://ourpai.ai/install.sh | bash
Workaround for others hitting this
curl -fsSL https://ourpai.ai/install.sh -o /tmp/pai-install.sh
sed -i '' 's/Personal_AI_Infrastructure/LifeOS/g' /tmp/pai-install.sh # drop the '' on Linux
bash /tmp/pai-install.sh
Bug
The one-line bootstrap installer (
curl -sSL https://ourpai.ai/install.sh | bash) fails on a fresh macOS/Linux install with:The download succeeds, but the script can't find the extracted directory and aborts at step 3/5.
Root cause
The repo was renamed
Personal_AI_Infrastructure→LifeOS, butinstall.shstill hard-codes the old name:GitHub redirects the old repo URL, so the download works — but it names the tarball's top-level folder after the current repo name. The archive therefore extracts to
LifeOS-5.0.0/, whilefind ... -name "Personal_AI_Infrastructure-*"matches nothing → the abort.Verified:
The release contents themselves are intact at
LifeOS-5.0.0/Releases/v5.0.0/.claude/(including the bundledinstall.sh); only the directory-matching glob is wrong.The script's own comment is ironic here:
It resolves the tag suffix dynamically but hard-codes the repo-name prefix, which is exactly what broke.
Impact
Every fresh macOS/Linux user of the documented one-line installer is blocked at step 3/5.
Suggested fix
Any one of:
PAI_REPO_NAME="LifeOS"(works for both the tarball URL and the glob).EXTRACTED_DIR="$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)"-name "*-${PAI_VERSION}".Environment
curl -sSL https://ourpai.ai/install.sh | bashWorkaround for others hitting this