You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Production installs now use secai-bootstrap.sh which configures the
container signing policy (policy.json + registries.d + cosign public
key) BEFORE the first rpm-ostree rebase, so the signed transport is
used from day one. The unverified recovery path is moved to a separate
doc. CI now publishes the image digest for pinned installs, and a
first-boot setup wizard guides users through integrity verification,
vault setup, and health checks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
See [docs/threat-model.md](docs/threat-model.md) for threat classes, residual risks, and security invariants. See [docs/security-status.md](docs/security-status.md) for implementation status of all 48 milestones.
161
+
See [docs/threat-model.md](docs/threat-model.md) for threat classes, residual risks, and security invariants. See [docs/security-status.md](docs/security-status.md) for implementation status of all 49 milestones.
160
162
161
163
### Verify Image Signatures
162
164
@@ -239,7 +241,7 @@ All CI jobs are defined in [`.github/workflows/ci.yml`](.github/workflows/ci.yml
Copy file name to clipboardExpand all lines: docs/install/bare-metal.md
+44-74Lines changed: 44 additions & 74 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,117 +67,85 @@ Replace `/dev/sdX` or `/dev/rdiskN` with your actual USB device. Double-check th
67
67
68
68
After booting into the fresh Fedora Silverblue installation, open a terminal.
69
69
70
-
### 4a. Verify image signature (mandatory)
70
+
### Production Install (Recommended)
71
71
72
-
Before installing the image, verify its authenticity using cosign.
73
-
**Do not skip this step — it is the cryptographic attestation that the
74
-
image you are about to install was built by the SecAI project.**
72
+
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.
All upgrades are automatically verified against the cosign signing key
117
+
baked into the image.
139
118
140
-
On first boot after rebasing, the firstboot script runs automatically. It will:
119
+
### Recovery / Development Install
141
120
142
-
1. Create the encrypted vault partition at `/var/lib/secure-ai/vault` (if not already present).
143
-
2. Initialize the registry manifest.
144
-
3. Set up systemd service dependencies.
145
-
4. Configure nftables firewall rules.
146
-
5. Run Greenboot health checks.
147
-
148
-
You will be prompted to set a vault passphrase. This passphrase encrypts the LUKS volume that stores your models and configuration. Store it securely -- there is no recovery mechanism.
121
+
> **WARNING**: The recovery path uses an unverified container transport.
122
+
> Use it **only** when the signing policy is broken or for development/CI.
123
+
> See [Recovery Bootstrap](recovery-bootstrap.md) for instructions.
149
124
150
125
---
151
126
152
-
## Step 6: FirstBoot Verification
127
+
## Step 5: First-Boot Setup Wizard
153
128
154
-
After firstboot completes, run the automated health check:
129
+
After rebooting into SecAI OS, run the interactive setup wizard:
155
130
156
131
```bash
157
-
# Comprehensive health check (validates all services, endpoints, security posture)
158
-
sudo /usr/libexec/secure-ai/first-boot-check.sh
132
+
sudo /usr/libexec/secure-ai/secai-setup-wizard.sh
159
133
```
160
134
161
-
This validates all core services are running, health endpoints respond, attestation
162
-
state is verified, no open incidents exist, and no services are exposed on public
163
-
interfaces. See [docs/production-operations.md](../production-operations.md) for details.
164
-
165
-
You can also verify manually:
166
-
167
-
```bash
168
-
# Check that all services are running
169
-
systemctl status secure-ai-registry
170
-
systemctl status secure-ai-tool-firewall
171
-
systemctl status secure-ai-ui
135
+
The wizard walks you through:
172
136
173
-
# Check firewall rules
174
-
sudo nft list ruleset
137
+
1.**System identity** — OS version, deployment origin, Secure Boot + TPM2 status
138
+
2.**Image integrity** — Cosign signature verification of the running image
139
+
3.**Transport check** — Confirms you are on signed transport (offers to switch if not)
140
+
4.**Vault setup** — Creates the encrypted LUKS volume for models and secrets
141
+
5.**TPM2 sealing** (optional) — Seals the vault key to TPM2 PCRs for auto-unlock on trusted boots
142
+
6.**Health check** — Validates all services are running and endpoints are reachable
143
+
7.**Summary** — Security posture card and next steps
175
144
176
-
# Check vault status
177
-
curl http://localhost:8480/api/vault/status
145
+
You can also run the health check independently at any time:
178
146
179
-
# Open the UI
180
-
xdg-open http://localhost:8480
147
+
```bash
148
+
sudo /usr/libexec/secure-ai/first-boot-check.sh
181
149
```
182
150
183
151
---
@@ -220,3 +188,5 @@ nvidia-smi
220
188
```bash
221
189
sudo cryptsetup status secure-ai-vault
222
190
```
191
+
192
+
**Bootstrap script fails:** See [Recovery Bootstrap](recovery-bootstrap.md) for the manual fallback procedure.
0 commit comments