Under the hood

One filesystem.
Four working layers.

A Linux FUSE frontend connects ordinary file operations to an erasure-coded data path, persistent metadata, and a health-aware controller.

01 / Interface

Linux sees files.

The FUSE frontend handles file I/O, directories, links, ownership, timestamps, extended attributes, and permissions. Byte-oriented filenames are preserved without assuming UTF-8.

Browse the FUSE frontend
02 / Data

Disks hold shards.

Writes are split into stripes, compressed and optionally encrypted, then encoded into data and parity shards. Checksums detect corruption; surviving shards support degraded reads and repair.

Browse the data path
03 / Metadata

Changes leave a record.

Metadata copies, checksummed journals, replay, and checkpoints support recovery. The current implementation still serializes logical metadata as JSON; keyed-page helpers and raw checkpoint indexes are steps toward a more scalable store.

Metadata design & current limits
04 / Control

Maintenance has a plan.

Disk health, capacity, latency, and workload signals guide placement and maintenance. The controller can explain its choices, limit background work, and verify state after an action.

Read the controller model

The control loop

Observe. Plan. Act. Verify.

Each stage makes the controller’s behavior inspectable. Dry-run mode lets you review a plan before any maintenance is executed.

01

Observe

Collect available SMART counters, capacity pressure, measured latency, and workload information. Missing telemetry is part of the state.

02

Plan

Score candidate actions with confirmation gates, cooldowns, redundancy checks, and capacity constraints. Keep rejection reasons visible.

03

Act

Run bounded scrub, drain, repair, or rebalance work. Maintenance budgets and throttling limit how much work a cycle can do.

04

Verify

Check journal, filesystem, and shard state after maintenance. Verification failures can downgrade the automation mode.

Read the safety invariants

Storage backends

Choose what
sits underneath.

Host directories

Shard objects are ordinary host files. This is the simplest way to explore the CLI and mounted behavior.

Loop images

Image files use the project’s block layout and allocator. Useful for testing pool and rootfs behavior without assigning physical disks.

Raw devices

Dedicated block devices use the same raw format. Device selection, recovery, and replacement need operator validation.

Block format & pool configuration

Data-path options

Configure the trade-offs.

Compression

zstd, lz4, or none

Per-stripe compression is configurable. Choose the CPU and storage trade-off that fits the data you actually store.

Encryption

Authenticated payloads

Optional XChaCha20-Poly1305 protects stripe data with Argon2id-derived keys. Encryption is configured explicitly.

I/O & caching

Buffered by default

RAM and persistent L2 caches accelerate reads. Optional direct I/O and io_uring paths have buffered fallbacks.