AnimaBooter
Flash USB drives with soulFlashea tu USB con alma
- v0.1.0
- Rust
- Tauri 2
- Svelte 5
- Tailwind v4
- MIT
- 100% local & offline — no telemetry, no cloud, no accounts
flash://sda → gzip · xz · zst · bz2 · iso → written → verified ✓
The pipeline
Three stages, one honest promise
The technical differentiator: flashing is not one blocking loop, it is a pipeline of three cooperating tasks connected by bounded mpsc channels — natural backpressure, no polling, no guesswork.
- Reader
stage 1
decompress gzip / xz / zst / bz2 · blake3 + sha256 in flight
- Writer
stage 2
align · write spans · emit honest progress
- Verifier
stage 3
read-back spans · compare hash · sync_all before done
blake3 + sha256 are computed while reading the already-decompressed stream. Verifying the written drive costs zero extra passes over the source image.
Read-back starts while writes continue, so the verifier hides inside the write window instead of doubling the wall-clock time of every flash.
sync_all before success, always. A green check means the bytes are on the silicon, not just sitting in the page cache.
bounded mpsc channels between stages → natural backpressure: the reader physically cannot outrun the drive.
Why it wins
Small binary, big manners
Everything AnimaBooter does, it does locally, visibly and politely — from the reactive mascot down to the way it refuses to touch your operating system disk.
Reader, writer and verifier run as separate tasks wired by bounded channels — decompress, write and verify overlap instead of queueing up.
A native Tauri 2 binary, not an Electron app. The install size target is under 10 MB — a fraction of what Electron-based flashers weigh.
gzip, xz, zstd and bzip2 images are detected by magic bytes and decompressed on the fly — the image is never fully loaded into RAM.
Anima, the mascot, lives through every phase — reading, writing, verifying — across Midnight, Catppuccin Mocha and Tokyo Night themes.
Removable-only drive listing, hold-to-confirm for 1.2 s, and a hard OS-disk refusal: your system drive is never offered for flashing.
The whole wizard speaks English and Spanish out of the box, with a reactive mascot that lives through every phase.
Screenshots
The four-step wizard, for real
Image → drive → confirm → write. Real captures from the v0.1.0 release — interface in English and Spanish, three themes, reactive mascot included.






Download
Get the v0.1.0 release
Grab a bundle from the official GitHub release — NSIS / MSI installer (Windows), .dmg (macOS, aarch64) and .deb / AppImage / .rpm (Linux).
⚠️ Early-release software that writes to raw devices — double-check the target drive. Binaries are unsigned: SmartScreen / Gatekeeper will warn on first run (macOS: right-click → Open).
Full release notes on GitHub: release v0.1.0 · all releases
Compare
Where AnimaBooter stands
A factual comparison with well-known flashing tools. No invented benchmarks — only architecture and design choices.
| Metric | balenaEtcher | Rufus | usbimager | AnimaBooter |
|---|---|---|---|---|
| Platform coverage | Win + macOS + Linux | Windows-only | Win + macOS + Linux | Win + macOS + Linux |
| Install size | ~300 MB | ~25 MB | ~2 MB | < 10 MB (target) |
| Write strategy | sequential | sequential | sequential | parallel 3-stage pipeline |
| Verification cost | re-read + re-decompress + re-hash | n/a | optional | read-back only — source hash is free |
| UI | Electron | Win32 | minimal | Svelte 5 wizard + mascot |
| Telemetry | yes | no | no | NONE — offline by design |
Benchmark cells for AnimaBooter are targets — we publish only real, self-measured numbers. Measure yourself: cargo test && time ./app --flash ...
Verification status
Tested where it's tested
Honesty about what is actually hardware-tested is part of this project's ethos. Release binaries are unsigned; signing and notarization are planned once distribution becomes serious.
| Platform | Compiles (CI) | Real flash + boot test |
|---|---|---|
| Linux | fmt, clippy, tests, build | verified by the author on hardware (real flash, USB boots) |
| Windows | tests + bundle (MSVC) | not yet hardware-tested by the author |
| macOS | tests + bundle (aarch64) | not yet hardware-tested by the author |
Project tree & scale
A codebase you can read in an evening
No monorepo, no generated soup. One Rust backend, one Svelte 5 frontend, and a couple of config files — counted locally, not copied from a dashboard.
119
files
6,378
lines of code
3
platforms
6
flash:// event channels
8
IPC commands
Counted locally with rg --files | wc -l and wc -l across the repo — excluding node_modules, dist, target and .git.
Roadmap
Shipped first, promised later
v0.1 is real, running code. Everything marked planned is honestly not built yet — no vaporware checkboxes.
- Parallel 3-stage pipeline
- Free verification hash (blake3 + sha256 in flight)
- Wizard UI (4 steps)
- ResultCard PNG export
- 3 themes (Midnight, Catppuccin Mocha, Tokyo Night)
- i18n EN / ES
- Safety holds (1.2 s hold-to-confirm + OS-disk refusal)
- Multi-drive parallel flash
- Smart-skip: detect already-flashed drives via partial hash
- animactl CLI
- Distro catalog with download + flash
Build it yourself
Local-only, from source
Prefer to run it from source? No app store, no account. Clone the repository and build the desktop app on your own machine with pnpm and cargo.
Linux — libudev + webkit2gtk-4.1 dev packages
Windows — VS Build Tools + WebView2 runtime
macOS — Xcode Command Line Tools
Linux udev rule — see removable disks without root
Drop this rule so AnimaBooter can open removable block devices as your user. Reload with udevadm control --reload && udevadm trigger.
# /etc/udev/rules.d/60-animabooter.rules
# adjust group to your distro
KERNEL=="sd*", ATTRS{removable}=="1", SUBSYSTEM=="block", MODE="0660", GROUP="plugdev"v0.1.0 · MIT (c) 2026 marrionesa · 100% local — no telemetry, no cloud