SnapFS Python client and CLI
Project description
SnapFS (Python Client)
SnapFS is a file indexing and metadata system designed for large-scale production environments such as VFX, animation, gaming, simulation, and data pipelines.
Status
Early development.
APIs, schemas, and endpoints may evolve rapidly before the 1.0 release.
Features
- Filesystem scanning and metadata ingestion
- Cache-aware incremental hashing
- Configurable hash algorithms (
sha1,sha256, optionalxxh64) - Hash performance tuning (
--workers,--hash-chunk-size) - Large-file telemetry with phase/progress reporting
- Async gateway client built on aiohttp
- Command-line interface for common operations
- Local benchmark helper for normalized scan-engine comparisons
Installation
pip install snapfs
or install from source:
pip install -e .
To enable optional xxh64 hashing support:
pip install -e .[xxhash]
Install The Systemd Agent
For Linux hosts that should run the SnapFS scanner agent as a service:
git clone https://github.com/snapfsio/snapfs
cd snapfs
pip install .
./systemd/install.sh
The installer expects the snapfs CLI to already be installed and available in PATH. Run the installer as your normal user; it will prompt for elevated privileges when it reaches the root-only systemd setup steps.
For production service installs, prefer installing snapfs into a stable system-level Python environment rather than a user-local virtualenv.
Current systemd installer support is Linux-only. Windows service support is planned but not available yet.
Development
Install developer dependencies:
pip install -e .[dev]
Run the test suite:
pytest -q
Quick Start
Scan a directory and publish metadata:
snapfs scan /mnt/projects
Select a hash algorithm explicitly:
snapfs scan /mnt/projects --algo sha256
Tune local hashing performance:
snapfs scan /mnt/projects --workers 4 --hash-chunk-size 2097152
Scanner Capabilities
Hash Algorithm Selection
SnapFS supports configurable hash algorithms for both direct scans and long-running agents.
Currently supported:
sha1sha256xxh64when installed with the optionalxxhashextra
Examples:
snapfs scan /mnt/projects --algo sha256
snapfs agent --algo sha256 --gateway https://tenant.snapfs.com
Environment defaults are also supported:
SNAPFS_HASH_ALGOSNAPFS_HASH_WORKERSSNAPFS_HASH_CHUNK_SIZE
Performance Tuning
You can tune hashing behavior for different hosts and datasets with:
--workers--hash-chunk-size
These settings are especially useful for:
- large-file workloads
- warm-cache repeat scans
- comparing different hardware or filesystem setups
Large-File Telemetry
Running scans now emit richer telemetry so large-file hashing work does not appear deceptively idle. Telemetry includes phase/progress information such as:
- walking vs hashing vs publishing
- processed bytes
- hashed bytes
- active hash jobs
Local Benchmarking
Use the local benchmark helper when you want to compare scan-engine performance without requiring a gateway URL or API key:
python3 scripts/bench_scan.py /mnt/projects --force --workers 2 --algo sha256
See scripts/README.md for benchmarking guidance and --json output details.
Cross-Platform Notes
SnapFS supports Python 3.8+ and is tested across Linux, macOS, and Windows.
A few practical notes:
- Linux is currently the primary environment for service installs via systemd
- hash worker multiprocessing is designed to stay compatible with Windows spawn semantics
- service-install tooling is Linux-only today
Documentation
Additional docs live under docs/:
Requirements
- Python 3.8+
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file snapfs-0.4.1.tar.gz.
File metadata
- Download URL: snapfs-0.4.1.tar.gz
- Upload date:
- Size: 40.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b710db7bdb7cef4e620f470353459386d1be8895bffe6ff09f4b9d5f6545d349
|
|
| MD5 |
39673e952420d982be5514190d3b50ad
|
|
| BLAKE2b-256 |
d31c9cd9f699e8c66d2f76de0e59e6334bdd3e829ad60ebea9b3d2bc93399356
|
File details
Details for the file snapfs-0.4.1-py3-none-any.whl.
File metadata
- Download URL: snapfs-0.4.1-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee3de506ca84c8dade42a595c0178ee2e26025dfc7cfd6e43987fa6151e8d52d
|
|
| MD5 |
07fdd9122187deb3fd1691086e0cde7b
|
|
| BLAKE2b-256 |
9890b66e61003d3f77c8266e4dc08bf4098df3567ea91e22e1b6490cc79c8aac
|