This guide covers installing SecAI OS on physical hardware.
- CPU: x86_64 processor with virtualization extensions (VT-x/AMD-V)
- RAM: 16 GB minimum, 32 GB recommended
- Storage: 100 GB SSD minimum (NVMe recommended), with either a second dedicated data device or space reserved for an unused vault partition
- GPU: NVIDIA GPU with CUDA support (RTX 3000 series or newer recommended); other appliance backends require release-specific qualification
- Network: Ethernet or WiFi (only needed for initial setup if downloading models)
- USB drive: 8 GB or larger for installation media
- UEFI firmware: Secure Boot supported (optional but recommended)
Download the latest Fedora Silverblue 44 ISO from the official Fedora website:
https://fedoraproject.org/silverblue/download
SecAI OS rebases on top of Fedora Silverblue, so the base installation uses the standard Silverblue installer.
Write the ISO to a USB drive using one of these tools:
Linux:
sudo dd if=Fedora-Silverblue-44-x86_64.iso of=/dev/sdX bs=4M status=progress
syncmacOS:
sudo dd if=Fedora-Silverblue-44-x86_64.iso of=/dev/rdiskN bs=4m
syncWindows: Use Rufus or Fedora Media Writer.
Replace /dev/sdX or /dev/rdiskN with your actual USB device. Double-check the device name to avoid overwriting the wrong disk.
- Boot from the USB drive (enter BIOS/UEFI and select USB as the boot device).
- Select "Install Fedora" from the boot menu.
- Follow the Anaconda installer:
- Set language and keyboard layout.
- Select the installation destination. Use custom partitioning unless a second dedicated data device is available.
- Enable disk encryption (LUKS) when prompted. This is mandatory: service credentials and UI authentication state must remain encrypted even while the independently lockable model/data vault is closed.
- Leave a dedicated partition or logical volume unmounted for the SecAI
data vault. Record its exact
/dev/...path; the setup ceremony will erase and reformat it only after exact confirmation. - Create a user account.
- Complete the installation and reboot. Remove the USB drive when prompted.
After booting into the fresh Fedora Silverblue installation, open a terminal.
The bootstrap script configures the container signing policy before pulling the image, so the very first rebase uses the signed transport. No unverified pull is ever performed.
# 1. Download the bootstrap script
curl -sSfL https://raw.githubusercontent.com/SecAI-Hub/SecAI_OS/main/files/scripts/secai-bootstrap.sh \
-o /tmp/secai-bootstrap.sh
# 2. Review the script before running (ALWAYS review downloaded scripts)
less /tmp/secai-bootstrap.sh
# 3. Run the bootstrap with the release channel and its exact signed digest
sudo bash /tmp/secai-bootstrap.sh \
--tag release-vMAJOR.MINOR.PATCH \
--digest sha256:RELEASE_DIGESTWhere do I find the digest? Check the latest release for the signed
IMAGE_DIGESTasset. A digest is mandatory; mutable tag-only installation is intentionally unsupported.
The script will:
- Install cosign (if needed) and fetch the SecAI public signing key
- Verify the key's SHA256 fingerprint against a hardcoded value
- Configure the signing policy on your system (
policy.json+registries.d) - Verify the image signature using cosign
- Rebase using the signed transport (
ostree-image-signed:docker://) - Prompt you to reboot
After the script completes:
sudo systemctl rebootIf you are upgrading an existing SecAI OS installation, use the appliance update gate. It verifies the candidate signature, binds the staged deployment to an exact digest, and enforces anti-rollback state:
sudo /usr/libexec/secure-ai/update-verify.sh check
sudo /usr/libexec/secure-ai/update-verify.sh stage
sudo /usr/libexec/secure-ai/update-verify.sh applyDo not bypass this gate with rpm-ostree upgrade.
The recovery path remains digest-pinned and signature-verified even when the local policy needs repair. See Recovery Bootstrap.
After rebooting into SecAI OS, run the interactive setup wizard:
sudo /usr/libexec/secure-ai/secai-setup-wizard.shThe wizard walks you through:
- System identity — OS version, deployment origin, Secure Boot + TPM2 status
- Image integrity — Cosign signature verification of the running image
- Transport check — Confirms you are on signed transport (offers to switch if not)
- Vault setup — Creates the independently lockable LUKS volume for models, user documents, and outputs
- TPM2 sealing (optional) — Seals the vault key to TPM2 PCRs for auto-unlock on trusted boots
- Health check — Validates all services are running and endpoints are reachable
- Summary — Security posture card and next steps
You can also run the health check independently at any time:
sudo /usr/libexec/secure-ai/first-boot-check.sh- The UI is accessible at
http://localhost:8480. - No models are installed by default. Import a model through the UI or CLI.
- The Airlock and Search Mediator are disabled by default.
- Review
/etc/secure-ai/policy/policy.yamlto customize security policy. - If you have a TPM2 module, the vault passphrase can be sealed to the TPM for automatic unlock on trusted boots.
If your hardware supports Secure Boot:
- The SecAI OS image includes a MOK (Machine Owner Key) for signing.
- On first boot with Secure Boot enabled, you will be prompted to enroll the MOK.
- After enrollment, the full Secure Boot chain is verified: UEFI firmware, bootloader, kernel, and initramfs.
- TPM2 measured boot records extend PCR values at each stage for tamper detection.
Boot fails after rebase: Roll back to the previous deployment:
rpm-ostree rollback
systemctl rebootGPU not detected: Ensure NVIDIA drivers are loaded:
nvidia-smiVault fails to mount: Check LUKS status:
sudo cryptsetup status secure-ai-vaultBootstrap script fails: See Recovery Bootstrap for the manual fallback procedure.