screenpipe/screenpipe · warning
screenpipe: warning: postinstall exited with code ${result.s
Error message
screenpipe: warning: postinstall exited with code ${result.status} What it means
This warning fires when postinstall.sh was found and spawned successfully, but the shell script exited with a non-zero status. The hook intentionally does not fail the install (`process.exit(0)` afterwards), so this surfaces script-level setup failures (platform detection, symlink/binary placement, etc.) as a warning only.
Source
Thrown at packages/cli/screenpipe/scripts/postinstall.js:144
trackInstall();
return;
}
const scriptPath = join(__dirname, "postinstall.sh");
if (!existsSync(scriptPath)) {
console.warn(`screenpipe: warning: missing postinstall script at ${scriptPath}`);
process.exit(0);
}
const result = spawnSync("sh", [scriptPath], { stdio: "inherit" });
if (result.error) {
console.warn(`screenpipe: warning: postinstall skipped: ${result.error.message}`);
process.exit(0);
}
if (result.status !== 0) {
console.warn(`screenpipe: warning: postinstall exited with code ${result.status}`);
}
process.exit(0);
View on GitHub (pinned to 4ebf712990)
Solutions
- Re-run the script directly to reproduce: `sh node_modules/screenpipe/scripts/postinstall.sh; echo $?` (repo: `sh packages/cli/screenpipe/scripts/postinstall.sh`) and inspect which command returns the non-zero code.
- Install the missing dependency the script needs (e.g. curl, unzip) or fix filesystem permissions on the target paths it writes to.
- Check the script for platform/arch branches and confirm your OS/CPU (`uname -ms`) is one it supports; if not, update the script or fall back to a manual install of the screenpipe binary.
- Since the hook always exits 0, verify the CLI afterwards with `screenpipe status` and only treat the warning as blocking if that fails.
Defensive patterns
Strategy: validation
Validate before calling
sh node_modules/screenpipe/scripts/postinstall.sh; echo "exit=$?"
Prevention
- Run postinstall.sh manually after a failed install to see which command fails.
- Pre-install required tools the script depends on (curl, unzip, etc.) in Docker/CI images.
- Use a supported OS/arch (uname -ms) or extend the script's platform branches.
- Fix write permissions for npm global prefix / node_modules before installing.
- Verify with `screenpipe status` after install; the hook never fails the install itself.
When it happens
Trigger: postinstall.sh runs during `npm install`/`bun install` of the screenpipe CLI on macOS/Linux and returns non-zero: a command inside the script fails (missing required tool like curl/unzip, permission denied writing to a target path, unsupported OS/arch branch, `set -e` abort on a failed check).
Common situations: Minimal CI images lacking curl or other tools the script uses; read-only npm global prefixes or permission-restricted node_modules; exotic CPU/OS combinations the script's case-statement doesn't handle; script failing under `npm config set ignore-scripts false` re-runs with different env.
Related errors
- screenpipe: warning: missing postinstall script at ${scriptP
- screenpipe: warning: postinstall skipped: ${result.error.mes
- pi installation failed: {}
AI-assisted analysis of screenpipe/screenpipe@4ebf712990 (2026-09-01).
Data as JSON: /api/errors/8bdf335fade8d2c2.
Report an issue: GitHub.