Getting Started
From zero to encrypted, reactive files in five steps.
1
Install FileLuYa
Install from source with Cargo, via Homebrew, or download a pre-built binary for your platform.
From source (Cargo)
# Prerequisites: Rust toolchain, MacFUSE (macOS) or libfuse3-dev (Linux)
git clone https://github.com/loveJesus/fileluya
cd fileluya
cargo install --path crates-chirho/fileluya-fuse-chirhoHomebrew (macOS)
# Coming soon
brew install lovejesus/tap/fileluyaDownload binary
# Download from the releases page:
# https://github.com/loveJesus/fileluya/releases
curl -LO https://github.com/loveJesus/fileluya/releases/latest/download/fileluya-darwin-arm64
chmod +x fileluya-darwin-arm64
sudo mv fileluya-darwin-arm64 /usr/local/bin/fileluya2
Mount Your First Vault
Create an encrypted mount point. All data written here is automatically encrypted with XChaCha20-Poly1305.
Mount (background daemon)
# Create and mount an encrypted vault
fileluya mount ~/my-vault --cache-dir ~/.fileluya
# Check that it is running
fileluya status
# โ ~/my-vault (pid 12345, cache: ~/.fileluya)Mount (foreground)
# Stay in terminal โ Ctrl+C to unmount
fileluya mount ~/my-vault --cache-dir ~/.fileluya --foreground3
Write and Read Files
Use the mounted vault like any folder. Files are encrypted transparently. Unmount and remount โ everything persists.
Basic usage
# Write files
echo "hello world" > ~/my-vault/doc.txt
mkdir ~/my-vault/projects
cp report.pdf ~/my-vault/projects/
# Read files
cat ~/my-vault/doc.txt
# โ hello world
ls ~/my-vault/
# โ doc.txt projects/Persistence
# Unmount
fileluya unmount ~/my-vault
# Remount later โ your files are still there
fileluya mount ~/my-vault --cache-dir ~/.fileluya
cat ~/my-vault/doc.txt
# โ hello world4
Share with Someone (Coming Soon)
Per-file sharing is built into the cryptographic layer. Each file key will be wrapped with the recipientโs public key. The CLI commands are being wired up.
Planned sharing commands
# Coming soon:
# fileluya share ~/my-vault/doc.txt --with alice@example.com
# fileluya unshare ~/my-vault/doc.txt --from alice@example.com
# The crypto layer already supports:
# - Per-file key wrapping (X25519 + ML-KEM)
# - Team keys with member management
# - Key rotation on member removal5
Reactive Files with .forge
Link files together so they react to each otherโs changes. Define reactive networks in .forge files using Gears (constraints) and Waterwheels (derived outputs).
Create a .forge file
# ~/my-vault/pipeline.forge
#
# When data.csv changes, summary.json is recomputed.
# config.toml must always be valid TOML.
waterwheel summarize {
input: "data.csv"
output: "summary.json"
run: "python3 summarize.py"
}
gear validate_config {
watch: "config.toml"
check: "toml-lint config.toml"
}See it work
# Edit data.csv โ summary.json updates automatically
echo "name,value\nalpha,42" > ~/my-vault/data.csv
# summary.json is recomputed by the waterwheel
cat ~/my-vault/summary.json