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)
- GPU: NVIDIA GPU with CUDA support (RTX 3000 series or newer recommended) or Apple Silicon (M1 or newer, for Metal via llama.cpp)
- 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 42 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-42-x86_64.iso of=/dev/sdX bs=4M status=progress
syncmacOS:
sudo dd if=Fedora-Silverblue-42-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 the full disk; automatic partitioning is fine).
- Enable disk encryption (LUKS) when prompted. Choose a strong passphrase.
- 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 (use the digest from the latest release for production)
sudo bash /tmp/secai-bootstrap.sh --digest sha256:RELEASE_DIGESTWhere do I find the digest? Check the latest release for the
IMAGE_DIGESTasset, or the build workflow summary. For evaluation, you can omit--digestto use:latest.
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 (already on the signed transport), simply run:
sudo rpm-ostree upgrade
sudo systemctl rebootAll upgrades are automatically verified against the cosign signing key baked into the image.
WARNING: The recovery path uses an unverified container transport. Use it only when the signing policy is broken or for development/CI. See Recovery Bootstrap for instructions.
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 encrypted LUKS volume for models and secrets
- 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.