Mountx lets you write a custom filesystem in JavaScript using the familiar node:fs/promises API and mount it as a real kernel folder accessible by any program on the machine via FUSE or NFSv3.

Stars

36

7-day growth

No data

Forks

1

Open issues

2

License

MIT

Last updated

2026-07-29

Why it is worth attention

It bridges JavaScript and the kernel filesystem without requiring a special API, making it trivial to expose any data store (memory, S3, database) as a real folder that tools like ls, cat, and VSCode can use directly.

Who it is for

  • Node.js developers building custom filesystem drivers
  • Developers needing to mount cloud storage or databases as local folders
  • AI/agent developers who want in-memory or virtual filesystems accessible by external tools
  • System integrators experimenting with FUSE/NFSv3 from JavaScript

Use cases

  • Mount an in-memory store as a real folder for temporary data
  • Expose an S3 bucket as a local filesystem for legacy tools
  • Wrap a database with filesystem semantics to simplify access
  • Serve a custom view of files (e.g., filtered or transformed) without modifying the underlying storage

Strengths

  • Uses the standard node:fs/promises interface—no new API to learn
  • Built-in drivers for memory, disk, and unstorage cover common needs
  • Supports both FUSE (Linux) and NFSv3 (macOS) for mounting without root
  • In-process loopback interface enables testing without mounting

Considerations

  • Alpha software: API may change and no security/correctness audit has been performed
  • Once mounted, the driver is reachable by every program on the machine, which may be a security concern
  • Currently limited to Linux (FUSE) and macOS (NFSv3); Windows support is not mentioned

README quick start

⛰️mountx

[!WARNING] Alpha. Mountx is early development: the API can still change, and it has not been through a security or correctness audit. A driver is reachable by every program on the machine once it is mounted.

Write a filesystem in JavaScript, mount it as a real kernel filesystem.

You can write a driver with the same methods as node:fs/promises (stat, readdir, open, mkdir, rename). Mountx takes your driver and turns it into a real folder on the machine, so ls, cat, AI Agents, VSCode and any other program can use it.

There is no special API to learn: node:fs/promises already is the interface, and the errors it throws already are the error format.

So anything that behaves a bit like a filesystem can get a real path: an in-memory store, a zip file, an S3 bucket, a database, or a plain folder served back out with your own rules on top.

import { mount } from "mountx/auto";
import { createLoopback } from "mountx";
import { createMemoryDriver } from "mountx/drivers/memory";

// A driver is any object with stat(), readdir(), open(), [mkdir()] and [rename()] methods.
// Mountx has built-in memory, fs and unstorage drivers
const driver = createMemoryDriver();

// Work with FS in-process without mounting
const fs = createLoopback(driver);
await fs.mkdir("/notes");
await fs.writeFile("/notes/hello.txt", "hi!");
new TextDecoder().decode(await fs.readFile("/notes/hello.txt")); // "hi"

// Mount the driver to the kernel with whatever this host can use
// FUSE on Linux (no root needed), NFSv3 on macOS
await using mounted = await mount(driver, "/mnt/point", {
  fuse: { attrTimeout: 10 }, // seconds the kernel may cache attributes
});

/**
# /mnt/point is a real folder now, so every program on the machine can use it:
$ cat /mnt/point/notes/hello.txt   =>   hi!
$ echo hey > /mnt/point/notes/other.txt
**/

if (mounted.transport === "fuse") {
  mounted.notifyInvalInode(2n); // storage changed behind mountx's back? drop the cache
}

await mounted.unmount(); // or let `await using` do it at the end of the block

Install

npx nypm i mountx

Or mount a demo filesystem right now, and watch every request the kernel makes:

npx mountx

Documentation

mountx.vercel.app

Description

⛰️ Write a filesystem in JavaScript, mount it as a real kernel filesystem.

Related repositories

Similar projects matched by category, topics, and programming language.

Jakubantalik
Featured
Jakubantalik GitHub avatar

thinking-orbs

A React component library that renders six hand-tuned animated thought orb loading indicators on a plain 2D canvas, with two purpose-tuned sizes and automatic theme detection for AI and agent UIs.

AI & Machine LearningAI Agents
1,191
makecindy
Featured
makecindy GitHub avatar

cindy

Cindy is an open-source AI agent that runs locally on your machine, integrates multiple AI harnesses and models, and provides memory, skills, and automation to perform real work in your projects and apps.

AI & Machine LearningLarge Language Models
958
mereyabdenbekuly-ctrl
Featured
mereyabdenbekuly-ctrl GitHub avatar

clodex-ide

Clodex is an open-source, local-first agentic IDE that combines persistent AI tasks, code, terminal, browser, Git, models, memory, and governed execution in one Electron workspace, currently in technical preview.

AI & Machine LearningAI Agents
859