A product of SiteVue AI

Video storage that installs itself and tells you which disk to replace.

VueFS is storage software and an appliance operating system for video. Boxes on the same network form one cluster by themselves, every block is checksummed and kept in two copies, and when a disk starts to fail, VueFS copies its data to the other disks and the box’s screen names the bay to open.

VueFS is early software and there is no public download yet. Where it stands today

Status screen: ACTION NEEDED. Replace the disk in Bay 3. Box vuefs-8f1c, head, admin console at 10.0.0.5. In large red letters: ACTION NEEDED. Replace the disk in Bay 3. It is empty and safe to pull out now. Twelve bays: Bay 3 shows REPLACE, the other eleven OK. What to do: 1. Find Bay 3: serial WD-CA1111K3N, model WDC WD80EFZZ-68BTXN0; match the serial on the drive's label. 2. It is empty: safe to pull now. Take it out. 3. Put a new empty disk of 8 TB or larger in the same bay. It is added automatically within about a minute, and this screen shows it as OK. Space: 50% used, 32 TB free for video. Alerts: 1. Disk swaps: automatic. vuefs-8f1c HEAD 10.0.0.5 Admin console http://10.0.0.5:9090/ 14:00:00 Replace the disk in Bay 3 It is empty and safe to pull out now. DISKS 12 1 replace Bay 1 OK Bay 2 OK Bay 3 !!REPLACE Bay 4 OK Bay 5 OK Bay 6 OK Bay 7 OK Bay 8 OK Bay 9 OK Bay 10 OK Bay 11 OK Bay 12 OK WHAT TO DO 1. Find Bay 3: serial WD-CA1111K3N, model WDC WD80EFZZ-68BTXN0. Match the serial on the drive's label. 2. It is empty: SAFE TO PULL NOW . Take it out. 3. Put a new EMPTY disk of 8 TB or larger in the same bay. It is added automatically within about a minute, and this screen shows it as OK. SPACE 50% used 32 TB free for video Alerts: 1 Disk swaps: automatic Updated 14:00:00
The status screen on a box, as vuefs-display draws it (80 × 24 characters, demo data). It has not yet been tried on the physical 7-inch panel.

How it works

From a USB stick to a cluster

What you do, and what each box does by itself. Times are from test runs in virtual machines.

  1. Start a box from the installer stick

    Boot the box from the VueFS USB stick (UEFI, x86-64 or 64-bit ARM). The screen names the disk it will install on, the smallest internal disk of 32 GB or more, by model, size and serial number, then counts down 30 seconds; any key cancels. It installs, asks you to remove the stick and restarts. No other disk is touched.

  2. It sets itself up

    On its first start the box listens for other VueFS boxes on the local network. If none answers within about 15 seconds, it becomes the head: it creates the storage pool, starts the S3 endpoint and the web console, and turns every empty disk, plus the spare space on its own system disk, into storage. A disk with anything on it is left alone until someone decides.

  3. Add more boxes

    Start more boxes from the same stick on the same network. Each one finds the head, is admitted, and its empty disks join the pool; in virtual machines this took 72 to 81 seconds from power-on. Admission is automatic by default. Switch it to manual and you approve each box only if the six-digit code on its screen matches the one the head shows.

  4. A disk starts to fail

    VueFS watches the disks: their SMART data (on the head’s disks, for now) and the errors it sees itself, such as blocks that fail their checksum. When a disk looks like it will fail and the other disks have room, its data is copied off while it can still be read. The screen shows the progress: Emptying Bay 3: 2.5 TB of 7.7 TB left, do not remove yet

  5. The screen says which disk to pull

    When the disk is empty the screen says Replace the disk in Bay 3, with the serial number and model to match against the drive’s label, and SAFE TO PULL NOW only when its own check and the server agree. Put in an empty disk of the same size or larger and it is added by itself within about a minute.

Inside

One box, and a cluster of them

One box

  • Debian 13
  • x86-64 · arm64
  • UEFI
  • Not to scale

Box vuefs-8f1c

System diskSmallest internal disk, 32 GB or more

Boot512 MiB
System A3 GiB, read-only
System B3 GiB, reserved
State8 GiB, /var
VueFS datarest of the disk

Bay 2Empty disk

Formatted and added to storage

Bay 3Empty disk

Formatted and added to storage

Bay 4Disk with an ext4 file system

Left alone, listed as needing a decision

ScreenThe box’s own monitor

ATTENTIONThe disk in Bay 4 has data on it: it was not added

  1. The system partition is read-only and never written while the box runs. Pool metadata, secrets, settings and logs live on the state partition. The rest of the disk becomes storage if at least 16 GiB is left.
  2. A disk counts as empty only if nothing on it is recognised and its first and last MiB read back as zeros. Empty disks are formatted and added without anyone touching the box.
  3. A disk with anything on it is never added by itself. The web console lists it with the reason; “Add a disk” adds it, and erases it.
  4. The built-in screen shows the box’s state in large letters instead of a login prompt. The storage service runs as its own unprivileged user, with access to the data disks only.

A cluster

  • One subnet
  • mDNS
  • One head
  • Two copies
Your applicationsS3 clients and SDKs
An adminWeb browser
vuefs-a000Head

S3 endpoint, web console, the map of where every block is, and its own disks

A

Local network: one subnet, boxes found by mDNS

vuefs-b111Node

Storage node

A
vuefs-c222Node

Storage node

vuefs-d333Waiting

New box, manual admission. Its screen shows code 482 913

Optional, outside your network

Cloud mirrorYour own S3 or Azure Blob account
VueFS CentralSign-in, alert email, fleet view
  1. The first box becomes the head. It serves the S3-compatible API and the web console and holds the map of where every block is. A cluster has one head.
  2. Later boxes become storage nodes. With manual admission a new box waits, showing a code, until an admin approves it on the head.
  3. Each block is written to two disks, on different boxes where possible. If a box stops answering, the head marks it down within about 30 seconds; reads use the other copy, and new uploads still get two copies or are refused.
  4. Optional: a copy of everything in your own S3 or Azure Blob account, and VueFS Central, which the head reports its health and alerts to.

Capabilities

What it does

  • Checksums on every block

    Data is checksummed with BLAKE3 in blocks of 1 MiB and checked on every read. A copy that fails is rewritten from a good one, and a scrub checks and repairs the whole pool.

  • Two copies, apart

    The appliance keeps two copies of every block on different disks, and on different boxes where it can. The storage engine also does Reed–Solomon erasure coding, such as 4+2.

  • Failing disks emptied early

    A disk whose SMART data or error count says it may fail is emptied onto the others while it still reads. USB drives, which seldom report SMART, are retired at 80% of their rated writes or after three years.

  • A screen that says what to do

    OK, or which bay to open, the disk’s serial number, and whether it is safe to pull. When it cannot get a fresh reading it says so and dims the last one; it never gives an instruction from old data.

  • S3-compatible API

    Buckets, multipart upload, ranged reads and SigV4 signing. aws-cli and boto3 work against it once their checksum setting is “when required”. Presigned URLs, versioning and object lock are not supported.

  • Made for video files

    Files are stored in large sequential extents, 64 MiB by default. MP4 is indexed by keyframe for seeking, and fragmented MP4 plays over HLS straight from storage.

  • A copy in your own cloud

    Optionally mirror to your S3 or Azure Blob account: two local copies until the upload is verified, then one. A bad block or a failed disk is rebuilt from the mirror, and the pool’s map is backed up there after every change.

  • Web console and Central

    Each cluster’s web console shows every disk with its bay, serial number, health and wear. VueFS Central adds passkey sign-in, alert email to every admin, and one list of all your installations.

Status

Where it is today

VueFS is early software. What this page describes is built and tested, but nearly all of that testing has been on simulated disks and in virtual machines. It has not yet run on production hardware, and there is no public download.

How it has been tested

PartTestedNot yet
Storage engine Automated tests on macOS and Debian 13, with simulated disks, and with storage nodes running as separate processes Servers with many disks. SMART rules for SATA, SAS and failing NVMe disks are checked against sample output only
Real disks Two 128 GB USB drives on macOS: a mirrored pool, uploads of up to 1 GiB read back byte for byte, deliberate damage on both drives found and repaired by scrub Pulling a disk during I/O; disk enclosures and their locate lights
Appliance OS and installer QEMU virtual machines, x86-64 and arm64: installing, the refusal cases, a power cut during the install, reinstalling Any physical machine or real firmware
Clusters Virtual machines on one emulated network: boxes forming a cluster, manual approval, two clusters on one network, a box switched off and on again Real switches, multicast through them, real DHCP servers
Status screen A Linux virtual console, in QEMU and in Docker The 7-inch panel it is meant for
Cloud mirror AWS S3: upload, read back, rebuilding a lost disk, moving to Deep Archive. Azure Blob in the Azurite emulator A Deep Archive restore running to completion; real Azure
VueFS Central Sign-up, passkey sign-in and sign-in to a box, driven in headless Chrome with a virtual authenticator Firefox, Safari and real passkey devices

Not done yet

  • One head, no failover. A cluster has one head; if it is lost, nothing takes over.
  • The map lives on the head. Pool metadata is on the head’s system disk only. If that disk dies the data disks still hold the data, but not the map of it; the cloud mirror keeps a backup.
  • Plain HTTP. The web console and the S3 endpoint have no TLS yet. Use them on a network you trust.
  • Automatic admission trusts the network. By default any VueFS box on the same network can join. Switch to manual admission to approve each one.
  • One subnet. Boxes find each other only on the same local network segment.
  • Updates mean re-flashing. A/B updates are not built; the second system slot is reserved for them.
  • UEFI only. No legacy BIOS boot and no Secure Boot.
  • Node disks. Disks in storage nodes are not SMART-checked yet; the errors VueFS sees on them still count.
  • A box that stays away. Its copies stay unavailable until it returns; rebuilding them elsewhere is off by default.

VueFS Central

Admins of VueFS installations sign in to Central with a passkey. It shows each box’s health, capacity and alerts, emails alerts to the box’s admins, and signs you in to the box’s own web console.