Skip to content

Commit 89f1ce6

Browse files
SecAI-Hubclaude
andcommitted
Update Quickstart: bootstrap is primary path, ISO is workflow artifact
The bootstrap/rebase path is the primary install method since: - The OCI image is always available at ghcr.io (cosign-signed) - The ISO exceeds GitHub Releases' 2GB limit (available as workflow artifact with 90-day retention) - OVA/QCOW2 require local build from the OCI image README Quickstart now shows: - Bootstrap as the recommended path (install Fedora, run script, reboot) - Build VM locally as second option (scripts/vm/build-qcow2.sh) - Development mode as third option Quickstart doc (docs/install/quickstart.md) rewritten with: - Honest artifact availability table explaining what's where - Bootstrap as Path A with full copy-paste commands - VM build as Path B with local build instructions - ISO/OVA/QCOW2 availability note at the top - Verification section uses cosign verify (not ISO checksum) Releases & Packages section updated with Bootable ISO subsection explaining workflow artifact availability and local VM build commands. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6659483 commit 89f1ce6

2 files changed

Lines changed: 112 additions & 92 deletions

File tree

README.md

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,34 @@ Built on [uBlue](https://universal-blue.org/) (Fedora Atomic / Silverblue). All
4646

4747
## Quickstart
4848

49-
Download, verify, boot, run the setup wizard. See [docs/install/quickstart.md](docs/install/quickstart.md) for full details.
50-
51-
| Method | Time | Best For |
52-
|--------|------|----------|
53-
| [**ISO**](docs/install/quickstart.md#path-a-install-from-iso-real-pc) (Recommended) | ~30 min | Real PC, full security |
54-
| [**OVA**](docs/install/quickstart.md#path-b-import-vm--virtualbox--vmware-ova) | ~15 min | Try it first (VirtualBox/VMware) |
55-
| [**QCOW2**](docs/install/quickstart.md#path-c-import-vm--kvm--proxmox--qemu-qcow2) | ~15 min | KVM / Proxmox |
56-
| [**Rebase**](docs/install/quickstart.md#path-d-advanced--rebase-from-existing-fedora) | ~45 min | Existing Fedora Silverblue |
57-
58-
After boot, the setup wizard guides you through profile selection, system verification, and model import.
59-
60-
### Advanced / Operator Install
61-
62-
For production deployments with digest pinning and signing policy configuration:
49+
Install [Fedora Silverblue 42](https://fedoraproject.org/silverblue/), then run the bootstrap script. The script configures cosign signature verification **before** the first image pull — no unverified data is ever fetched.
6350

6451
```bash
65-
# Review the bootstrap script, then run with a pinned digest
52+
# 1. Download and review the bootstrap script
6653
curl -sSfL https://raw.githubusercontent.com/SecAI-Hub/SecAI_OS/main/files/scripts/secai-bootstrap.sh \
6754
-o /tmp/secai-bootstrap.sh
6855
less /tmp/secai-bootstrap.sh
69-
sudo bash /tmp/secai-bootstrap.sh --digest sha256:RELEASE_DIGEST
56+
57+
# 2. Run the bootstrap (use --digest from the latest release for production)
58+
sudo bash /tmp/secai-bootstrap.sh
59+
60+
# 3. Reboot and open the setup wizard
7061
sudo systemctl reboot
62+
# Then open http://127.0.0.1:8480
7163
```
7264

65+
The setup wizard guides you through privacy profile selection, system verification, and model import.
66+
67+
| Method | Time | Best For | Details |
68+
|--------|------|----------|---------|
69+
| **Bootstrap** (Recommended) | ~30 min | Real PC or VM | Install Fedora Silverblue, run script, reboot |
70+
| **Build VM locally** | ~45 min | VirtualBox / VMware / KVM | `scripts/vm/build-qcow2.sh` builds a QCOW2 from the OCI image |
71+
| **Development** | ~10 min | Service development only | No OS features; see [dev guide](docs/install/dev.md) |
72+
73+
See [docs/install/quickstart.md](docs/install/quickstart.md) for full step-by-step instructions, VM build details, and verification commands.
74+
75+
For production deployments with digest pinning: `sudo bash secai-bootstrap.sh --digest sha256:RELEASE_DIGEST`
76+
7377
See [bare metal](docs/install/bare-metal.md) | [virtual machine](docs/install/vm.md) | [development](docs/install/dev.md) | [recovery](docs/install/recovery-bootstrap.md)
7478

7579
### Get Your First Model
@@ -198,13 +202,26 @@ Tagged releases (`v*`) are built by the [Release workflow](.github/workflows/rel
198202
| `SHA256SUMS` | Checksums for all release artifacts |
199203
| `SHA256SUMS.sig` | Cosign signature over checksums |
200204
| `IMAGE_DIGEST` | OCI image digest for this release |
201-
| `IMAGE_REF_PINNED` | Fully qualified digest-pinned image reference |
202205
| `RELEASE_MANIFEST.json` | Machine-readable release manifest (binaries, SBOMs, provenance, build metadata) |
206+
| `secai-os-*.iso.sig` | Cosign signature for the bootable ISO |
203207

204208
Go services shipped as release binaries: `airlock`, `registry`, `tool-firewall`, `gpu-integrity-watch`, `mcp-firewall`, `policy-engine`, `runtime-attestor`, `integrity-monitor`, `incident-recorder`.
205209

206210
Python services (`ui`, `agent`, `quarantine`, `diffusion-worker`, `search-mediator`) are baked into the OCI image and do not ship as standalone binaries.
207211

212+
### Bootable ISO
213+
214+
A signed bootable ISO is built by every tagged release using [build-container-installer](https://github.com/JasonN3/build-container-installer). The ISO exceeds GitHub's 2 GB release asset limit, so it is available as a **workflow artifact** (90-day retention) from the [Release workflow runs](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/release.yml). The cosign signature (`.iso.sig`) is published to the GitHub Release for verification.
215+
216+
To build a QCOW2 or OVA locally from the OCI image:
217+
218+
```bash
219+
bash scripts/vm/build-qcow2.sh # produces output/secai-os.qcow2
220+
bash scripts/vm/build-ova.sh # produces output/secai-os.ova
221+
```
222+
223+
Requires a Linux host with `virt-install`, `qemu-img`, and `libvirt`.
224+
208225
### Verify a Release
209226

210227
```bash

docs/install/quickstart.md

Lines changed: 78 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,116 @@
11
# Quickstart
22

3-
Get SecAI OS running in the fewest steps possible. Choose the path that fits your hardware.
3+
Get SecAI OS running in the fewest steps possible. Choose the path that fits your situation.
44

55
## Choose Your Install Path
66

77
| Method | Time | Difficulty | Best For |
88
|--------|------|-----------|----------|
9-
| **ISO** (Recommended) | ~30 min | Easy | Real PC, full security |
10-
| **VM Import (OVA)** | ~15 min | Easy | Try it first (VirtualBox/VMware) |
11-
| **VM Import (QCOW2)** | ~15 min | Easy | KVM / Proxmox / QEMU |
12-
| **Rebase** (Advanced) | ~45 min | Moderate | Existing Fedora Silverblue |
9+
| **Bootstrap** (Recommended) | ~30 min | Easy | Real PC or VM, full security |
10+
| **VM Build** | ~45 min | Moderate | Local evaluation in VirtualBox/VMware/KVM |
11+
| **Development** | ~10 min | Easy | Service development only (no OS features) |
12+
13+
> **Note on ISO/OVA/QCOW2:** The release pipeline builds a signed bootable ISO, but it exceeds GitHub's 2 GB release asset limit. Pre-built VM images (OVA/QCOW2) require build infrastructure not yet provisioned. For now, the bootstrap path below is the primary install method. See [Artifact Availability](#artifact-availability) for details.
1314
1415
---
1516

16-
## Path A: Install from ISO (Real PC)
17+
## Path A: Bootstrap Install (Real PC or VM)
18+
19+
This is the recommended path. It installs Fedora Silverblue, then rebases to SecAI OS with full signature verification. You get the complete security stack: Secure Boot, TPM2, encrypted vault, and all 25+ defense layers.
1720

18-
This gives you the full security stack including Secure Boot, TPM2, and hardware isolation.
21+
**1. Install Fedora Silverblue**
1922

20-
**1. Download the ISO**
23+
Download [Fedora Silverblue 42](https://fedoraproject.org/silverblue/) and install it on your hardware or in a VM. A minimal install is fine — SecAI OS replaces the desktop.
2124

22-
Go to the [latest release](https://github.com/SecAI-Hub/SecAI_OS/releases/latest) and download `secai-os-<version>-x86_64.iso`.
25+
**2. Run the bootstrap script**
2326

24-
**2. Write to USB**
27+
The bootstrap script configures cosign signature verification **before** the first image pull — no unverified data is ever fetched.
2528

26-
Linux/macOS:
2729
```bash
28-
sudo dd if=secai-os-*.iso of=/dev/sdX bs=4M status=progress
29-
sync
30+
# Download and review the script (always review before running as root)
31+
curl -sSfL https://raw.githubusercontent.com/SecAI-Hub/SecAI_OS/main/files/scripts/secai-bootstrap.sh \
32+
-o /tmp/secai-bootstrap.sh
33+
less /tmp/secai-bootstrap.sh
34+
35+
# Run the bootstrap
36+
sudo bash /tmp/secai-bootstrap.sh
3037
```
3138

32-
Windows: Use [Rufus](https://rufus.ie) — select the ISO, choose your USB drive, and click Start.
39+
For production, pin to an exact image digest from the [latest release](https://github.com/SecAI-Hub/SecAI_OS/releases/latest):
3340

34-
**3. Boot from USB**
41+
```bash
42+
sudo bash /tmp/secai-bootstrap.sh --digest sha256:RELEASE_DIGEST
43+
```
3544

36-
Restart your computer. Enter the boot menu (usually F12, F2, or Esc) and select the USB drive. Follow the installer prompts.
45+
**3. Reboot**
3746

38-
**4. First boot**
47+
```bash
48+
sudo systemctl reboot
49+
```
3950

40-
After installation completes and the system reboots, open a browser to:
51+
**4. Open the UI**
52+
53+
After reboot, open a browser to:
4154
```
4255
http://127.0.0.1:8480
4356
```
4457

45-
**What you should see:** The SecAI OS setup wizard. It will ask you to choose a privacy profile, verify system health, and import your first AI model.
58+
**What you should see:** The SecAI OS setup wizard. It asks you to choose a privacy profile, verifies system health, and walks you through importing your first AI model.
4659

4760
---
4861

49-
## Path B: Import VM — VirtualBox / VMware (OVA)
50-
51-
For evaluation. Note: VM installs cannot use TPM2 sealing or Secure Boot chain verification.
52-
53-
**1. Download the OVA**
62+
## Path B: Build a VM Image Locally
5463

55-
Go to the [latest release](https://github.com/SecAI-Hub/SecAI_OS/releases/latest) and download `secai-os-<version>.ova`.
64+
If you want a self-contained VM image without installing Fedora first, you can build one from the OCI image using the included scripts. This requires a Linux host with KVM/QEMU.
5665

57-
> OVA may not be available in every release. If absent, use Path C (QCOW2) or Path A (ISO).
66+
**1. Clone the repo and build**
5867

59-
**2. Import**
60-
61-
- **VirtualBox:** File → Import Appliance → select the OVA → Import
62-
- **VMware:** File → Open → select the OVA → Import
68+
```bash
69+
git clone https://github.com/SecAI-Hub/SecAI_OS.git
70+
cd SecAI_OS
6371

64-
**3. Start the VM and open the UI**
72+
# Build QCOW2 (requires: virt-install, qemu-img, libvirt)
73+
bash scripts/vm/build-qcow2.sh
6574

66-
Start the VM. After boot, open a browser to the VM's IP on port 8480:
75+
# Optionally convert to OVA for VirtualBox/VMware
76+
bash scripts/vm/build-ova.sh
6777
```
68-
http://<vm-ip>:8480
69-
```
70-
71-
If using NAT networking, forward port 8480 from the VM to your host, then use `http://127.0.0.1:8480`.
72-
73-
**What you should see:** The setup wizard with profile selection, system check, and model import.
74-
75-
---
7678

77-
## Path C: Import VM — KVM / Proxmox / QEMU (QCOW2)
79+
The build scripts pull the signed OCI image and create a bootable disk with root + encrypted vault partitions. Credentials are randomly generated and printed at build time.
7880

79-
**1. Download the QCOW2**
80-
81-
Go to the [latest release](https://github.com/SecAI-Hub/SecAI_OS/releases/latest) and download `secai-os-<version>.qcow2`.
82-
83-
> QCOW2 may not be available in every release. If absent, use Path A (ISO).
84-
85-
**2. Create a VM**
81+
**2. Start the VM**
8682

8783
```bash
88-
# Example: create and start a KVM VM using the downloaded disk
84+
# KVM/QEMU
8985
virt-install \
9086
--name secai-os \
9187
--memory 16384 \
9288
--vcpus 4 \
93-
--disk path=secai-os-*.qcow2,format=qcow2 \
89+
--disk path=output/secai-os.qcow2,format=qcow2 \
9490
--import \
9591
--os-variant fedora42 \
9692
--network default \
9793
--noautoconsole
94+
95+
# Or import the OVA into VirtualBox/VMware
9896
```
9997

10098
**3. Access the UI**
10199

102100
```bash
103-
# Find the VM's IP
104101
virsh domifaddr secai-os
105-
# Open in browser
106-
xdg-open http://<vm-ip>:8480
102+
# Open http://<vm-ip>:8480 in your browser
107103
```
108104

109-
**What you should see:** The setup wizard.
105+
> **Security note:** VM installs cannot use TPM2 vault key sealing and the host hypervisor has visibility into guest memory. VMs are suitable for evaluation, not sensitive workloads. See [support-lifecycle.md](../support-lifecycle.md) for the full support matrix.
110106
111107
---
112108

113-
## Path D: Advanced — Rebase from Existing Fedora
114-
115-
If you already have Fedora Silverblue (F42+), you can rebase directly. This is the operator path.
109+
## Path C: Development Mode
116110

117-
See [bare-metal.md](bare-metal.md) for the full bootstrap flow with digest pinning and signing policy configuration.
111+
Run individual services locally for development without rebasing your OS. No security features (sandboxing, firewall, vault) are active.
118112

119-
```bash
120-
# Quick version (evaluation only — use --digest for production)
121-
curl -sSfL https://raw.githubusercontent.com/SecAI-Hub/SecAI_OS/main/files/scripts/secai-bootstrap.sh \
122-
-o /tmp/secai-bootstrap.sh
123-
less /tmp/secai-bootstrap.sh # Review first
124-
sudo bash /tmp/secai-bootstrap.sh
125-
sudo systemctl reboot
126-
```
127-
128-
After reboot, open `http://127.0.0.1:8480` and run the setup wizard.
113+
See [dev.md](dev.md) for setup instructions.
129114

130115
---
131116

@@ -135,14 +120,20 @@ Regardless of install path, the setup wizard guides you through:
135120

136121
1. **Choose your privacy level** — Maximum Privacy (default), Web-Assisted Research, or Full Lab
137122
2. **System check** — verifies core services are running
138-
3. **Import a model** — upload a `.gguf` model file (it goes through the 7-stage quarantine pipeline automatically)
123+
3. **Import a model** — upload a `.gguf` model file (it passes through the 7-stage quarantine pipeline automatically)
139124
4. **Start chatting** — once the model is promoted, you're ready
140125

141126
---
142127

143128
## Verify Your Install (Optional)
144129

145-
After downloading any release artifact, you can verify its integrity.
130+
After running the bootstrap, you can verify the image signature:
131+
132+
```bash
133+
cosign verify --key cosign.pub ghcr.io/secai-hub/secai_os:latest
134+
```
135+
136+
To verify release artifacts (Go binaries, SBOMs, checksums):
146137

147138
**Linux / macOS:**
148139
```bash
@@ -153,22 +144,34 @@ sha256sum -c SHA256SUMS --ignore-missing
153144
**Windows (PowerShell):**
154145
```powershell
155146
Invoke-WebRequest -Uri "https://github.com/SecAI-Hub/SecAI_OS/releases/latest/download/SHA256SUMS" -OutFile SHA256SUMS
156-
$expected = (Get-Content SHA256SUMS | Select-String "secai-os").Line.Split()[0]
157-
$actual = (Get-FileHash "secai-os-*.iso" -Algorithm SHA256).Hash.ToLower()
158-
if ($expected -eq $actual) { "OK: checksum matches" } else { "FAIL: checksum mismatch" }
147+
Get-Content SHA256SUMS
159148
```
160149

161-
For advanced verification (cosign signatures, SLSA3 provenance), see [sample-release-bundle.md](../docs/sample-release-bundle.md) or run:
150+
For advanced verification (cosign detached signatures, SLSA3 provenance attestation), see [sample-release-bundle.md](../sample-release-bundle.md) or run:
162151
```bash
163152
make verify-release
164153
```
165154

166155
---
167156

157+
## Artifact Availability
158+
159+
| Artifact | Where | Status |
160+
|----------|-------|--------|
161+
| **OCI image** | `ghcr.io/secai-hub/secai_os:latest` | Always available, cosign-signed |
162+
| **Go binaries + SBOMs** | [GitHub Releases](https://github.com/SecAI-Hub/SecAI_OS/releases/latest) | Always available |
163+
| **ISO** | Release workflow artifact (90-day retention) | Built in CI; too large (~4 GB) for GitHub Releases |
164+
| **ISO signature** | [GitHub Releases](https://github.com/SecAI-Hub/SecAI_OS/releases/latest) | `.iso.sig` file for verification |
165+
| **QCOW2 / OVA** | `scripts/vm/build-qcow2.sh` / `build-ova.sh` | Build locally; CI build requires self-hosted KVM runner |
166+
167+
The ISO is produced by every tagged release and is available as a [workflow artifact](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/release.yml) with 90-day retention. Its cosign signature (`.iso.sig`) is published to GitHub Releases for verification. For permanent ISO hosting, an external storage solution is needed.
168+
169+
---
170+
168171
## Next Steps
169172

170173
- [Import a GGUF Model](../examples/import-gguf-model.md)
171174
- [Enable Web Search](../examples/enable-web-search.md)
172175
- [Vault Management](../examples/lock-unlock-vault.md)
173176
- [Security Dashboard](http://127.0.0.1:8480/security) — verify your appliance health
174-
- [Why is this safe?](../docs/why-is-this-safe.md) — plain-language security explanation
177+
- [Why is this safe?](../why-is-this-safe.md) — plain-language security explanation

0 commit comments

Comments
 (0)