qrypt turns your cloud drives into one encrypted local folder — mount it, open it, use it like any other drive.
- FUSE mount — mounts all configured drives as subdirectories under one local directory
- rclone-compatible encryption — filename obfuscation and content encryption compatible with rclone crypt
- Pluggable cloud drive backends — see supported drivers for the full list
- Local read cache — caches remote file data locally for fast repeated access
- Staged writes — new files and modifications are written locally first, then uploaded asynchronously with configurable debounce, concurrency, and retry
- Platform-native FUSE — macOS (macFUSE), Linux (libfuse), Windows (WinFsp)
- macOS friendly — suppresses Apple Double metadata files and extended attributes clutter in Finder
- Diagnostics — debug socket with structured JSON reports, health tracking per mount, consistency checks, and staging inspection
- Bandwidth control — per-direction download and upload rate limiting
- Config auto-discovery — searches
./qrypt.toml,~/.qrypt/qrypt.toml, then$XDG_CONFIG_HOME/qrypt/qrypt.tomlon Unix or%AppData%\qrypt\qrypt.tomlon Windows
| Dependency | macOS | Linux | Windows |
|---|---|---|---|
| FUSE | macFUSE | libfuse (usually pre-installed) | WinFsp |
| Go (source build only) | 1.26+ | 1.26+ | 1.26+ |
The fs commands (list, cat, get, put) do not require FUSE — only mount does.
Config files are discovered automatically; you can skip --config when the file
is at one of the standard paths (see CLI Reference).
- Download the latest release for your platform.
- Create
qrypt.toml:
mount_point = "~/Qrypt"
[[mounts]]
name = "local"
type = "localfs"
[mounts.params]
root_path = "/tmp/qrypt-data"
[mounts.encryption]
password = "my-password"
filename_encryption = "standard"
filename_encoding = "base32"
# content_dedup = false # true improves instant upload/dedup but leaks content equality3.1 Run without mounting:
mkdir -p /tmp/qrypt-data
./qrypt fs list /
echo "hello qrypt" > /tmp/hello.txt
./qrypt fs put /tmp/hello.txt /local/hello.txt
./qrypt fs cat /local/hello.txtCheck the backend storage — filenames are obfuscated:
ls /tmp/qrypt-dataOutput similar to:
b4l6gr1s6t1q0tas6dl0q0mb0s62kbj0
Both the original filename and content are encrypted.
3.2 Mount and use like a local folder:
./qrypt mountOpen ~/Qrypt in your file manager — drag, drop, open files as if they were
local. Everything is encrypted on the backend.
Extended walkthrough → docs/for-user/quickstart.md.
- Quickstart — minimal config, encryption demo, Windows notes
- CLI Reference — commands, arguments, config discovery paths
- Full Config Reference — all configuration options
- Supported Drivers — driver parameters and examples
- Architecture — layer overview and design rules
- Driver Development — how to add a new cloud-drive backend
- Debugging — diagnostic tools and troubleshooting
- Fuzz Corpus — nightly fuzzing and regression corpus lifecycle
- Quality Gates — CI workflows, coverage gate, contract matrix
- Developer FAQ — recurring implementation issues and fixes
Requires Go 1.26+ and FUSE headers (libfuse-dev on Linux, macFUSE on macOS).
git clone https://github.com/yinzhenyu-su/qrypt.git
cd qrypt
go build ./cmd/qrypt
MIT
