Software
OpenFARCE
Pre-alpha
Open sourceMIT Pre-alpha
github.com/joshhickson/openfarce
Enumeration, staged power-up, RAID 0 assembly, the fio benchmark harness, the endurance ledger, and the throughput-collapse detector. Every array figure published here is produced by these tools.
git clone https://github.com/joshhickson/openfarce
The host operating system is the third problem, after signal integrity and heat, and it is the one that cannot be solved with better parts.
What it is
OpenFARCE is a user-space I/O layer for storage-backed inference on high-latency, low-queue-depth media. It replaces the kernel's memory hierarchy for one specific job: moving KV cache blocks between DRAM and an array of MicroSD cards fast enough that the decode loop does not stall.
The reference rig
Farce Systems runs a validation array: forty 32 GB cards in forty USB 3.0 readers, on four powered hubs, joined as a RAID 0 span and presented to the kernel as swap. Raw capacity is 1.28 TB; approximately 1.2 TB is usable after RAID metadata and reserved space.
farce-assemble brings the array up from cold boot, refusing to proceed if fewer than forty readers enumerate. farce-bench measures it. farce-endure runs a continuous write load and publishes the endurance counter. Every array figure published on this site comes from these tools.
Measured results: none yet. The rig is not built. Aggregate read is stated as "under 2 GB/s" and decode speed as the Feasibility Report's projection until the hardware exists and the benchmarks run.
Why the kernel is not enough
The Linux virtual file system does not accept that an array of removable SD cards is memory, and on the evidence it is not wrong.
mmap() with swap on a high-latency block device produces swap thrashing. The kernel spends its cycles moving 4 KB pages between DRAM and a device with random read latencies above 2,000 microseconds and a command queue one entry deep. Token generation stops. Where the resident set is large enough, the out-of-memory killer terminates the inference process before the first token.
What it does instead
Locks the resident model. Weights are held with --mlock so the kernel cannot page out the one thing that must never leave DRAM. At 1.58-bit ternary quantization a 70B model is approximately 13.8 GB, which fits.
Bypasses the VFS. Reads and writes go to the raw block devices through asynchronous I/O, not through the page cache. There is no file system on the array.
Prefetches from the attention pattern. The scheduler reads which KV blocks the next decode step will need and issues scatter-gather reads for them while the current token is still computing.
Writes in 256-token chunks. Sequential, contiguous writes are the only pattern a UHS-I bus is good at, and the only pattern that keeps write amplification below the point where the array dies faster than it is replaced.
Status
Pre-alpha. OpenFARCE is not finished, has no release, and is not included in any kit. There is no date. Nothing in a F.A.R.C.E. Flash Developer Kit will run a language model when it arrives.
The reference PCB design, the assembly guide, and OpenFARCE are published under an open license. If the array outlives the software, that is the expected order.