SQLite extension
Query a folder.load ./libfs_meta
CREATE VIRTUAL TABLE files USING fs_meta(
root = './notes',
fields = 'rating INTEGER, status TEXT'
);
SELECT id, rating FROM files
WHERE is_dir = 0 AND rating >= 4;Query files with SQL.
Keep metadata on the files.
Turn a folder into a SQLite table, or read and write properties directly with xmeta.
SELECT id, rating, status
FROM files
WHERE is_dir = 0 AND rating >= 4
ORDER BY rating DESC;Standard SQLite. Your own files.| id | rating | status |
|---|---|---|
| notes/launch.md | 5 | Active |
| design/brief.pdf | 5 | Review |
| research/sqlite.md | 4 | Draft |
xmeta set notes/launch.md \
status=Active rating:=5
xmeta get notes/launch.md --jsonOne file. No SQLite required.{
"rating": 5,
"status": "Active"
}01 / The model
Properties live in native extended attributes or NTFS alternate data streams. Your folder stays the source of truth.
02 / The interfaces
Use the SQLite extension for queries across a folder. Use xmeta for a quick read or a single-file edit.
.load ./libfs_meta
CREATE VIRTUAL TABLE files USING fs_meta(
root = './notes',
fields = 'rating INTEGER, status TEXT'
);
SELECT id, rating FROM files
WHERE is_dir = 0 AND rating >= 4;xmeta set note.md status=Active rating:=5
xmeta get note.md --json
# {"rating":5,"status":"Active"}
xmeta unset note.md status
xmeta get note.md rating --text
# 5Writes require xattr / ADS support. Symlinks, Windows reparse points, and Unix files with multiple hard links are rejected for writes. Directory properties are not inherited.
03 / Get started
The installer selects your platform, verifies the download, and installs xmeta into your user directory. No SQLite installation required.