// filesystem isolation
Your filesystem.
composed your way.
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.
// 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
Named sessions
manifest: time, sources, description
Exportable sessions
archive & manifest
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
Cryptographic signing
SHA-256 + Ed25519, prismafs-verify
More synthetic files
hostname, uptime, loadavg, network interfaces
FreeBSD build and Ports
AUR package, Homebrew updates, static binaries
Man pages and documentation for new tools
Full roadmap for detail, updates, and changelog.