<p align="center">
  <img src=".nornir/assets/skidbladnir.webp" alt="Skíðblaðnir — the ice-longship hauling the ZNIPPY cargo across the gap, shield-rabbits down the hull, under the aurora" width="440">
</p>

# Skidbladnir

> **Skidbladnir** (Skíðblaðnir) is a 100% Rust airgap install framework: pack a whole
> deployment into one sealed, content-addressed bundle, carry it across the gap, and on the
> far side it creates the service, unpacks the znippy archive, and provisions the data & log
> dirs — starting every component in dependency order with no network and no shell on the target.

## Mashup — one sealed bundle onto a zero-network target

Skidbladnir carries the *whole* deployment — infra **and** software — over an airgap in
one content-addressed bundle and brings it up with **no agent, no SSH, no shell** on the
target (it drives systemd straight over D-Bus). The rivals each cover only a slice:

| capability | **Skidbladnir** | Ansible | Packer | cloud-init |
|---|:--:|:--:|:--:|:--:|
| One sealed, content-addressed bundle — infra **+** software + images + config + data, verify-on-receipt | **✅** | ✗ | ◐ (image only) | ✗ |
| **Zero network, zero shell** on the target — drives systemd over D-Bus, no SSH/agent | **✅** | ✗ (SSH + Python) | ✗ | ◐ (first-boot shell) |
| **Provision the machine** (Redfish BMC · Terraform · KVM) **and** install the software, one tool | **✅** | ◐ | ✗ | ✗ |

*The full seven-capability matrix — the `ServiceSpec` → PKI/systemd renderer tree, atomic version-swap + rollback, all-Rust offline — is in [the full overview](.nornir/README-full.md).*

## Read the real docs

- 📖 **[The complete manual — `docs/book.pdf`](docs/book.pdf)** — every subsystem chapter (pack · archive · move · unfold, PKI, layout, the Redfish/Terraform/KVM backends).
- 📄 **[Full overview — `.nornir/README-full.md`](.nornir/README-full.md)** — the detailed pitch, quickstart, the full capability matrix, packet format, and design.
- 📝 [`docs/book.md`](docs/book.md) — the manual, as Markdown.
