Changelog¶
All notable changes to airfs are documented here. Versions follow semantic versioning.
v0.2.0 โ a workspace in one command ๐¶
You no longer need a file before you can mount anything. Until now, trying
airfsat all meant opening an editor, writing asources.txt, saving it in the right place, and only then mounting. That is a lot of ceremony to answer "what does this thing actually do?" โ so now you can say what your layers are on the command line and be looking at the result a second later.
- โก
airfs mount -s, once per layer.airfs mount --target ~/scratch-ws -s ~/ai/personal -s ~/ai/projectcreates the target, writes itssources.txt, and serves the view. The order you pass the flags in is the precedence order, most general first โ same rule as the file, because it is the file. - โ๏ธ What you typed is what gets written.
~/ai/personalstays~/ai/personalin the file instead of being frozen into/home/you/..., so the configuration you end up with is one you would have written by hand and can keep editing that way. - ๐ A typo cannot cost you your configuration.
-sreplaces the file whole rather than appending to it โ but the new list has to resolve first. Name a directory that is not there and you get exit2and the configuration you already had, untouched.
It replaces, it does not add. ๐ฅ Every layer you want has to be on the command line; whatever the file said before, comments and ordering included, is gone, and there is no backup. That is deliberate โ a flag that appended would build a precedence order nobody wrote โ but point it at a workspace you care about only once you have read Declaring layers.
v0.1.0 โ hello, world ๐ช¶
Many sources, one read-only view, no copies. Your AI capabilities are scattered across repositories โ personal, work, one per project โ and every tool wants a single folder. Copy them together and each copy starts drifting from the day you made it.
airfsgives you the folder without the copies.
You write down which repositories a workspace is made of, in order. airfs shows them to you as one directory ๐. Nothing moves, nothing is duplicated, and editing a skill in the repository that owns it changes what every workspace layering it sees โ right away, with no sync step to remember. ๐
- ๐ฅ Order decides.
sources.txtis one path per line, most general first. Two layers both shipping acommitskill? The one declared last wins โ and it wins whole, never half of yours stitched onto half of theirs. - ๐ต๏ธ Nothing gets shadowed behind your back.
airfs sourcesprints the resolved list and names every entry that lost, right next to the one that beat it. A workspace you cannot explain is a workspace you cannot trust. - ๐ช One mount per kind.
airfs mountservesagents/,skills/,commands/, andscripts/together โ in the foreground, or with--detachwhen you want your terminal back.airfs statussays what is being served, andairfs umounttakes it down, stale leftovers included. - ๐ก๏ธ Read-only, with the kernel enforcing it. No tool, no agent, and no stray
mvcan write back into one of your source repositories through the view. - ๐น Pure Go, so installing is one command. It speaks FUSE over
/dev/fuseby itself: no C library, nomergerfsto hunt down, nothing to unpack by hand. - ๐ฉบ
airfs doctorbefore you file a bug. Mounting needs/dev/fuseand a setuidfusermount3, which no unprivileged process can conjure up.doctorchecks both and names the package that provides the missing one. - ๐ฆ A Go library first, a CLI second.
sdk/layerfsis anfs.FS, so your own program can read the merged view in process โ no mount, no subprocess, nothing to parse โ andfs.WalkDirand friends just work on it.
It is a first release, so: Linux for the mount ๐ง โ mounting is Linux-only for now; the Go SDK is plain
fs.FSand runs anywhere. Best next step is Get started โ about five minutes, ending with a workspace you can keep. ๐