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. π