Skip to main content

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, optional xxh64)
  • 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:

  • sha1
  • sha256
  • xxh64 when installed with the optional xxhash extra

Examples:

snapfs scan /mnt/projects --algo sha256
snapfs agent --algo sha256 --gateway https://tenant.snapfs.com

Environment defaults are also supported:

  • SNAPFS_HASH_ALGO
  • SNAPFS_HASH_WORKERS
  • SNAPFS_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

snapfs-0.4.1.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

snapfs-0.4.1-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

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

Hashes for snapfs-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b710db7bdb7cef4e620f470353459386d1be8895bffe6ff09f4b9d5f6545d349
MD5 39673e952420d982be5514190d3b50ad
BLAKE2b-256 d31c9cd9f699e8c66d2f76de0e59e6334bdd3e829ad60ebea9b3d2bc93399356

See more details on using hashes here.

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

Hashes for snapfs-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ee3de506ca84c8dade42a595c0178ee2e26025dfc7cfd6e43987fa6151e8d52d
MD5 07fdd9122187deb3fd1691086e0cde7b
BLAKE2b-256 9890b66e61003d3f77c8266e4dc08bf4098df3567ea91e22e1b6490cc79c8aac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page