StructFS

One interface. Every system.

Test anything. Swap anything. Compose everything.

Every data source your application touches — APIs, databases, file systems, cloud services — has its own client library, its own error model, its own testing story. You learn each one separately. Test each one separately. Replace each one separately.

StructFS makes them all the same thing.

Test without mocking

Swap a store at a path. No network, no mock server, no test doubles for six client libraries.

Compose without glue

Mount stores at prefixes. Caching, routing, proxying — tree configuration, not application code.

Port without rewriting

Same logic, different stores. Local, remote, in-process. Change the wiring, keep the code.

How it works

Two operations

Every interaction is read(path) or write(path, value). The simplicity is the point — complexity lives in the paths and values, not the verb set.

Structured values

Data crosses boundaries as typed values — the same model every serialization format converges on. No parsing, no encoding, no format negotiation.

Paths carry meaning

A path names a resource, an action, or a capability. Different paths for different things — not different verbs for the same thing.

Stores compose into a tree

Mount a database at /users, a cache at /cache, a clock at /time. The tree is the wiring diagram. Rewire it without changing application code.

Get started