Skip to main content

pixie mascot

pixie

Bare-metal netboot appliance in one container. Catalog + fetch + NBD serving + PXE plan renderer + TFTP + operator UI: one FastAPI process (plus a supervised in.tftpd subprocess for the PXE first hop), one state.db, and one admin password.

Pixie folds into a single service what bty (operator UI + machine registry + PXE plan renderer + Rich TUI), nbdmux (NBD-export multiplexer + netboot artifact serve), and a hard-fork of withcache (catalog + fetch + blob store) implement as three separate FastAPI services. bty, nbdmux, and withcache continue as their own projects; pixie is a sibling appliance that starts from a merged design. See PLAN.md for the design rationale, locked decisions, and roadmap.

Run

The reference deploy is a single podman-compose stack under --network=host. The pixie-lab CLI (installed with the package) generates the compose file, the envvars template, and a per-deploy README:

pixie-lab init /opt/pixie
"$EDITOR" /opt/pixie/envvars.example    # set PIXIE_HOST_ADDR + PIXIE_ADMIN_PASSWORD
mv /opt/pixie/envvars.example /opt/pixie/envvars
cd /opt/pixie
COMPOSE_ENV_FILES=envvars podman compose up -d

pixie-lab deploy fills in an admin password + host address + waits for /healthz in one shot, useful for a fresh lab machine.

Log in at http://:8080/. First landing after login is a dashboard summarising machines, catalog, and NBD-serving state; the top nav has Machines, Catalog, Images, Overlays, Live env, Events, and Settings.

Operator workflow

  1. Point catalog import at a catalog.toml URL on /ui/catalog. Entries land staged (rows only, no bytes yet).
  2. Click Fetch on a row to download it. The status pill ticks through downloading -> decompressing -> unpacking with a bytes / total counter so you see progress live.
  3. For the live-env boot modes (pixie-inventory / pixie-tui / pixie-flash-*), Fetch the pixie-live-env image + its netboot bundle, then set the image's content_sha256 on the Live env page (/ui/live-env) or via PIXIE_LIVE_ENV_IMAGE_SHA. Those modes nbdboot that image; until it's selected they render unavailable.
  4. Power-cycle a target with pixie in its DHCP next-server chain. A first contact shows up on /ui/machines with the default pixie-inventory boot mode (non-destructive, one-shot; it posts inventory then self-exits to ipxe-exit). Open the row to bind a mode + image.
  5. pixie-inventory prompts the live env to POST an inventory blob; the target's disks + NICs + memory show up on the machine detail page.
  6. Flash modes (pixie-flash-once, pixie-flash-always) require a target disk serial that came in on the inventory. The binding form disables Save until that prerequisite is met.

State

Everything writable lives under PIXIE_DATA_DIR (default /var/lib/pixie). state.db holds catalog rows, machine rows, event log, settings, NBD-export records, and persistent-overlay records. blobs/<sha>/blob holds fetched disk images. artifacts/<sha>/{vmlinuz,initrd,manifest.json} holds unpacked netboot bundles. overlays/<alias>.qcow2 holds globally-named single-writer overlay volumes for the nbdboot boot mode. The live env (pixie-inventory / pixie-tui / pixie-flash-*) is the fetched pixie-live-env disk image, selected by PIXIE_LIVE_ENV_IMAGE_SHA / the Live env page and nbdbooted like any other image, so it lives in blobs/ + artifacts/ too - there is no separate live-env directory.

Both admin password and display timezone / strftime pattern have env-var overrides plus DB overrides via /ui/settings; env wins so a compose deploy pins behaviour deterministically.

Development

uv sync
uv run pytest
uv run ruff check src tests
uv run mypy src

The integration tests spin real QEMU VMs behind a real pixie container to exercise the PXE bootstrap + ramboot chains. They are gated behind a marker so plain pytest skips them.

License

pixie is licensed under GPL-3.0-only. See LICENSE.

Metadata

Release files for pixie-lab 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pixie-lab 0.8.1
File Size Uploaded
pixie_lab-0.8.1.tar.gz 875.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pixie-lab 0.8.1
File Interpreter ABI Platform
pixie_lab-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / pixie_lab-0.8.1.tar.gz

Download URL pixie_lab-0.8.1.tar.gz
Size 875.0 kB
Tags Source
SHA-256 checksum
How to use checksums
95b2c938620a2918d45b0596909f8bc650bd0ddab5ac1e7467b505f004b91be9
BLAKE2b-256 checksum
How to use checksums
5eadba868a0d4d0ab5a85674fe4fa8eff48720859fb25bd9c7f91ea4e226ce26
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release files / pixie_lab-0.8.1-py3-none-any.whl

Download URL pixie_lab-0.8.1-py3-none-any.whl
Size 739.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8c5ef52c3e67639ca14ae4257bb1b423e798559a9ec17f587e0bc0dfcefef56
BLAKE2b-256 checksum
How to use checksums
eb5565a602680d3ff76b3bd990bd39f701d6c7cc532585c3625979ba9c511dbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.15

2 release files

0.4.14

2 release files

0.4.13

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page