Installation¶
PAI is a live USB operating system, not a traditional install. You write the ISO to a USB stick, boot from it, and optionally enable an encrypted persistence container so your home directory, keys, and wallets survive reboots. Nothing is written to the host computer's internal drive unless you explicitly ask for it.
This page walks through hardware requirements, download and verification, flashing on Linux / macOS / Windows, booting on real hardware, and enabling persistence on first boot.
1. Hardware requirements¶
PAI is small (~2.5 GB ISO) but runs local LLMs, so the usable minimum is set by Ollama, not the desktop.
x86_64¶
| Tier | CPU | RAM | USB stick | Notes |
|---|---|---|---|---|
| Minimum | 64-bit x86 (2015+), 2 cores | 4 GB | 8 GB | 1–3B models only, slow |
| Recommended | 4+ cores, AVX2 | 8 GB | 16 GB | 7B models at usable speed |
| Tested | Intel i5/i7 10th gen+, Ryzen 5/7 | 16 GB | 32 GB USB 3.1+ | 13B models comfortable |
UEFI firmware is preferred. Legacy BIOS boot works but is not the default test target.
ARM64 SBC¶
PAI publishes a separate arm64 ISO. Tested boards:
- Raspberry Pi 4 (4 GB / 8 GB) — reference target
- Raspberry Pi 5 (4 GB / 8 GB / 16 GB) — fastest SBC target
- Orange Pi 5 / 5 Plus (RK3588) — works, GPU unused
- Pine64 RockPro64 — boots, slower than RPi 5
- Radxa Rock 5B — works, community-tested
SBCs with less than 4 GB RAM can boot PAI but cannot load any useful model. Use a class A2 microSD card or, better, a USB 3 SSD.
2. Download¶
Releases live on GitHub. Each release ships three files per edition and architecture:
pai-<edition>-<version>-<arch>.iso
pai-<edition>-<version>-<arch>.iso.sha256
pai-<edition>-<version>-<arch>.iso.minisig
Replace the placeholders to form a real URL:
https://github.com/nirholas/pai/releases/download/v<version>/pai-<edition>-<version>-<arch>.iso
https://github.com/nirholas/pai/releases/download/v<version>/pai-<edition>-<version>-<arch>.iso.sha256
https://github.com/nirholas/pai/releases/download/v<version>/pai-<edition>-<version>-<arch>.iso.minisig
Concrete example — the 0.1.0 base edition for x86_64:
https://github.com/nirholas/pai/releases/download/v0.1.0/pai-base-0.1.0-amd64.iso
https://github.com/nirholas/pai/releases/download/v0.1.0/pai-base-0.1.0-amd64.iso.sha256
https://github.com/nirholas/pai/releases/download/v0.1.0/pai-base-0.1.0-amd64.iso.minisig
Pick the edition that matches your use case — see
editions.md. If unsure, start with base.
Download all three files to the same directory.
3. Verification¶
Verification answers two different questions. Run both checks.
3a. sha256sum -c — "did the download arrive intact?"¶
Expected output:
This proves the bytes on disk match the bytes the release workflow hashed. It does not prove the release is genuine — a tampered mirror would happily match its own checksum.
3b. minisign -Vm — "is this really from the PAI maintainers?"¶
Or, with the key pinned to a file:
Expected output:
The PAI release public key is published at
SECURITY.md and mirrored in the repository root as
pai-release.pub. Pin it once, out of band, and reuse the pinned
copy for every future release.
If either check fails, stop. Do not flash the image.
4. Flashing — Linux¶
Identify the target device first. This step is the one that deletes data when you get it wrong.
Pick the removable device — typically /dev/sdX or /dev/mmcblkX.
Unmount any mounted partitions on it:
Write the ISO:
Warnings:
of=takes the whole device, not a partition (/dev/sdb, not/dev/sdb1).- Typo-ing
/dev/sdawhen you meant/dev/sdbwill overwrite your system disk. Re-readlsblkoutput before pressing Enter. - Do not use compressed copies (
.iso.gz) withdd— decompress first.
For a guided alternative, GNOME Disks and KDE Partition Manager both
offer "Restore Disk Image" which wraps dd safely.
5. Flashing — macOS¶
List disks:
Find the external USB device — e.g. /dev/disk4. Unmount (do not
eject) so the block device stays available:
Write using the raw device (rdisk, not disk) — it is an order
of magnitude faster:
sudo dd if=pai-base-0.1.0-amd64.iso of=/dev/rdisk4 bs=4m status=progress
sync
diskutil eject /dev/disk4
If dd prints Resource busy, re-run diskutil unmountDisk. If
macOS's "disk is not readable" popup appears mid-write, click
Ignore, not Eject or Initialize.
6. Flashing — Windows¶
Two supported tools:
Rufus (recommended)¶
- Download Rufus 4.x from https://rufus.ie.
- Insert the USB stick.
- Pick the PAI ISO. Rufus detects it as a hybrid ISO and prompts for write mode — choose "Write in DD Image mode". ISO mode will not boot.
- Partition scheme: GPT for UEFI targets, MBR for legacy.
- Start. Rufus wipes the drive and writes the image.
BalenaEtcher¶
- Download from https://etcher.balena.io.
- Select the ISO, select the USB stick, click Flash.
- Etcher uses DD mode by default; no extra configuration needed.
Windows Disk Management does not work — it cannot write hybrid ISOs. Ignore any "you need to format the disk" prompts after flashing; Windows cannot read the Linux filesystem.
7. Booting¶
Plug the USB stick in before powering on. Enter the firmware boot menu with the vendor-specific shortcut:
| Vendor | Boot menu key | Firmware setup key |
|---|---|---|
| Dell | F12 | F2 |
| HP | F9 | Esc then F10 |
| Lenovo ThinkPad | F12 | F1 |
| Lenovo IdeaPad | F12 or Novo button | F2 |
| Acer | F12 | F2 |
| ASUS | F8 (laptop) / F11 | Del |
| MSI | F11 | Del |
| Samsung | F12 | F2 |
| Apple Intel Mac | Option (⌥) | — |
| Generic desktop | F12 or F8 | Del or F2 |
UEFI vs legacy BIOS¶
PAI ships a hybrid image that boots both. On UEFI systems choose the
USB entry prefixed UEFI: — you'll get the Sway desktop with proper
resolution and faster early boot. Legacy/CSM boot still works for
older machines.
Secure Boot¶
Disable Secure Boot for now. PAI's kernel and signed shim chain is on the roadmap but not shipping in 0.1.x. If the machine refuses to boot the USB, Secure Boot is almost always the cause — enter firmware setup and disable it, or switch to "Other OS" mode.
ARM64 SBCs¶
For Raspberry Pi, write the arm64 ISO to a microSD or USB SSD, insert
it, and power on — the firmware picks up the image automatically. For
Orange Pi / Rock boards, you may need to flash the vendor's U-Boot to
SPI first; see troubleshooting.md.
8. Enabling persistence¶
By default PAI runs entirely in RAM — reboot erases everything. Persistence stores your home directory, wallets, keys, and config in an encrypted LUKS container on spare space of the same USB stick.
On first boot, PAI's welcome screen asks whether to enable persistence. If you say yes:
- Pick a passphrase. Minimum 6 diceware words (≈77 bits). Shorter passphrases are rejected by the setup script. See prompts/10-encrypted-persistence.md for the container layout and KDF parameters.
- Choose container size — default is all remaining free space on the USB stick after the live-image partition.
- Wait for format + key derivation (Argon2id, deliberately slow — 30s to 2 min on modern hardware).
- The container mounts at
/home/paion subsequent boots after you enter the passphrase.
The passphrase is not recoverable. Write it down on paper and store it somewhere you'd store a house key.
If you skip persistence at first boot, you can enable it later by
running sudo pai-persistence-setup from a terminal.
9. Upgrading¶
Upgrades are re-flash, not in-place:
- Download the new ISO + signatures and verify (steps 2–3 above).
ddthe new ISO over the live-image partition of the same stick, or flash a second stick and migrate.- Boot. PAI detects the existing persistence container, prompts for your passphrase, and mounts it — your home directory, wallets, and settings carry over unchanged.
Persistence format is versioned. Breaking changes are announced in MIGRATION.md with an explicit migration path; minor releases are backward-compatible.
10. Uninstalling¶
There is nothing installed on the host — pull the USB stick out and the machine boots its normal OS on next power-on.
To dispose of a PAI stick that held persistence, overwrite it before handing it on:
-n 1 -z does one random pass plus a final zero pass — enough for
flash media, where multi-pass shred doesn't buy you anything because
of wear levelling. For stronger guarantees, physically destroy the
stick.
11. Troubleshooting installation¶
Boot fails, black screen, Wi-Fi missing, persistence prompt never
appears — see troubleshooting.md for the full
decision tree. When opening an issue, include the output of
lsblk, the exact vendor/model of the USB stick, and the first ten
lines of dmesg after the failure.