// filesystem isolation

Your filesystem.
composed your way.

prismafs - zsh

Make changes and test inside session - real /etc is never affected.

$SESSION_LAYER_DIR=~/scratch/session \

BASE_LAYER_DIRS=/etc \

prismafs /mnt/etc-test

$vim /mnt/etc-test/nginx/nginx.conf

$nginx -t -c /mnt/etc-test/nginx/nginx.conf

nginx: ...nginx.conf test is successful

$rm -rf ~/scratch/session && umount /mnt/etc-test

macOS, FreeBSD, and Linux.

NLnet FoundationNGI Zero Commons Fund

PrismaFS is funded through the NGI0 Commons Fund, established by NLnet with financial support from the European Commission's Next Generation Internet programme.

// how-it-works

How it works

original1 / 5

You have directory or directories you need to keep unmodified. Could be a codebase, data set, tree some installer or migration, or anything really.

You want to make changes, run operations, and still have original as main source of truth.

A namespace,
not a container.

Getting a private copy of a directory on UNIX usually means container, jail, or VM, a lot of machinery when all you wanted was to try a change, or contextualize temporary operation (and leave the original alone). Long ago, Plan 9 provided each program individual picture of the filesystem. UNIX never really did. PrismaFS is inspired by that idea and does it the UNIX way.

It looks like your home, your project, or any other path you provide. You can combine multiple sources, your session is on top and takes every write in isolated userspace filesystem context.

Without Apple's limits, Linux and FreeBSD can give one program that view. Everything else on your machine still sees real files. macOS does not allow this, so there you mount a chosen path.

// install

Install

Homebrew

Install macFUSE first (or brew install --cask macfuse). Approve the kernel extension in System Settings if macOS asks; a reboot is required the first time.

Then:

$brew install goranb131/ithas-prismafs/prismafs

PrismaFS is not in homebrew-core. That command pulls it from the project tap. On Homebrew 6 you may be asked to trust the tap; that is expected, not a failed install.

Check it:

$prismafs -v

Build from source

If you prefer not to use Homebrew:

$git clone https://github.com/goranb131/ITHAS-prismaFS.git

$cd ITHAS-prismaFS

$make

$make install

make install puts the binary and man page under /usr/local unless you set PREFIX. Make still needs macFUSE installed, same as Homebrew.

// roadmap

What's coming

01sessions
  • Named sessions

    manifest: time, sources, description

  • Exportable sessions

    archive & manifest

02toolchain
  • prismafs-diff

    added, removed, modified, permissions, ownership

  • prismafs-replay

    apply saved diff to another base

  • prismafs run

    run command in your session. Keep or discard

    Linux and FreeBSD: start any program so its folder view is PrismaFS view (for example, terminal, your project or home). That program reads and writes there. Any separate terminal still sees original unchanged directory.

  • prismafs shell

    session subshell, ability to keep or discard on exit

  • prismafs-tui

    browse, size, summary, discard or export

03integrity
  • Cryptographic signing

    SHA-256 + Ed25519, prismafs-verify

  • More synthetic files

    hostname, uptime, loadavg, network interfaces

04distribution
  • FreeBSD build and Ports

  • AUR package, Homebrew updates, static binaries

  • Man pages and documentation for new tools

Full roadmap for detail, updates, and changelog.