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-chirho
Homebrew (macOS)
# Coming soon
brew install lovejesus/tap/fileluya
Download 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/fileluya
2

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 --foreground
3

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 world
4

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 removal
5

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