Dataset CI for ML — folder → verified dataset → insights → agent, in one pipeline.
Documentation: https://filoma.readthedocs.io
Source Code: https://github.com/kalfasyan/filoma
Filoma profiles file trees, builds DataFrames, finds duplicates, runs integrity checks, and lets you talk to your filesystem — all with a tiny API and automatic backend selection (Rust → fd → Python).
The key features are:
- Fast: Scans 1M files in 7 seconds with the Rust backend. Auto-detected at runtime — no config needed.
- DataFrame-native: Polars-powered wrapper with enrichment, filter, sort, and multi-format export.
- Dedup: Exact duplicates, text near-duplicates, and image near-duplicate detection.
- Integrity: Snapshots, manifests, and SHA-256 verification for dataset versioning.
- CI-ready: YAML quality gates (
filoma-gates.yml) with pass/fail for your pipelines. - Agentic: 28 filesystem tools via chat,
flm.ask(), MCP server, and schema proposals. - Vector search: LanceDB-backed RAG — search your files by meaning.
- Watch mode: Snapshot → drift detect → gates check → JSON export.
- Extensible: Third-party plugins via
filoma.toolsentry points and bundled skill workflows.
Installation
$ pip install filoma
---> 100%
or with uv:
uv add filoma
Note: Filoma auto-detects the fastest available backend. For maximum speed, build the Rust extension:
maturin develop --release
Optional extras:
pip install "filoma[dedup]" # near-duplicate detection
pip install "filoma[rag]" # LanceDB vector search
pip install "filoma[stats]" # statistical analysis extras
Example
Your first scan
import filoma as flm
# Scan a directory — the Rust backend kicks in automatically
analysis = flm.probe("./my-dataset")
# Get a Polars DataFrame, enriched with depth, path components, and file stats
df = flm.probe_to_df("./my-dataset")
# Filter and explore
images = df.filter("mime_type", "image/*")
large = df.filter_size(5, "MB", "gt")
print(df.summary())
Run it
python -c "import filoma as flm; flm.probe('.').print_summary()"
📊 Directory Analysis: /home/user/my-dataset
Total files: 12,847
Total size: 3.2 GB
Types: .png (4,201), .json (3,100), .txt (2,546), .jpg (3,000)
Example Upgrade
Audit a dataset (scan → enrich → verify → report)
import filoma as flm
# One fluent pipeline — a single filesystem walk
flm.Pipeline("./data").scan().enrich().verify().report()
filoma audit ./data --export report.html
This produces an HTML audit report with file counts, type breakdowns, integrity status, and warnings.
Talk to your filesystem
import filoma as flm
result = flm.ask("how many corrupted images are in ./dataset?")
print(result.output)
filoma ask "find all python files modified in the last week"
Validate in CI
import filoma as flm
ds = flm.Dataset("./data")
ds.snap().verify().check_gates("gates.yml")
filoma watch ./data --snapshot baseline.json --gates gates.yml
Define quality gates in filoma-gates.yml:
gates:
- name: "max file count"
rule: "file_count <= 100000"
- name: "no corrupt images"
rule: "corrupt_images == 0"
- name: "allowed types only"
rule: 'mime_types in ["image/png", "application/json"]'
Backends
Filoma auto-detects the fastest available backend at runtime:
| Backend | 1M files (local SSD) | 200K files (network) |
|---|---|---|
| Rust | 7.3s — 136K files/sec | 2.3s — 86K files/sec |
| fd / Async | 11.5s — 87K files/sec | 2.8s — 70K files/sec |
| Python | 35.5s — 28K files/sec | 15.1s — 13K files/sec |
No configuration required — the fastest backend is selected for you.
Recap
In summary, you get:
- One-line scans —
flm.probe(path)gives you a full directory analysis. - Fluent pipelines — chain
.scan().enrich().verify().report()with shared state. - Agentic queries —
flm.ask("question")talks to your filesystem in natural language. - DataFrame power — Polars-native, with enrichment, lineage tracking, and export.
- CI integration — Snapshot, verify, and gate-check in any pipeline.
- Auto backend — Rust when available, fd as fallback, Python as last resort.
Dependencies
Filoma stands on the shoulders of:
- Polars for fast DataFrames.
- Pydantic and pydantic-ai for the agentic layer.
- Rich for beautiful terminal output.
- Typer for the CLI.
- Optional Rust core via Maturin / PyO3.
Guides
| Persona | Start here |
|---|---|
| ML Engineer | Audit a Dataset |
| Data Engineer | Explore a Dataset |
| Researcher | Talk to Your Data |
| DevOps / CI | Watch for Drift |
| Package author | Plugin Discovery |
License
This project is licensed under the terms of the Creative Commons Attribution 4.0 International (CC BY 4.0).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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 filoma-1.12.7.tar.gz.
File metadata
- Download URL: filoma-1.12.7.tar.gz
- Upload date:
- Size: 753.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fa672315c9c54050ad7eae5a10afeec0d6600adcd04aee8d126ccfa3628285c
|
|
| MD5 |
2d1914801a12fa4cc5dcbf2611b045ea
|
|
| BLAKE2b-256 |
a12642677f68cf55ecf3d9a7c79839e756fb6cb3e39cef1414a8b41760acb16d
|
Provenance
The following attestation bundles were made for filoma-1.12.7.tar.gz:
Publisher:
publish.yml on kalfasyan/filoma
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filoma-1.12.7.tar.gz -
Subject digest:
9fa672315c9c54050ad7eae5a10afeec0d6600adcd04aee8d126ccfa3628285c - Sigstore transparency entry: 2194932326
- Sigstore integration time:
-
Permalink:
kalfasyan/filoma@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Branch / Tag:
refs/tags/v1.12.7 - Owner: https://github.com/kalfasyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file filoma-1.12.7-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: filoma-1.12.7-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 529.9 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20e8e4bf1bde1f59692ae19a3470d2504afe422993352f00e0921ac39cd5006f
|
|
| MD5 |
5a972c92bd8d2d31145cd58815d3448d
|
|
| BLAKE2b-256 |
69946af35b7f6d5233938ac6d0319c0b434e5dedd0ef2b8fab99028aac69d82e
|
Provenance
The following attestation bundles were made for filoma-1.12.7-cp311-cp311-win_amd64.whl:
Publisher:
publish.yml on kalfasyan/filoma
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filoma-1.12.7-cp311-cp311-win_amd64.whl -
Subject digest:
20e8e4bf1bde1f59692ae19a3470d2504afe422993352f00e0921ac39cd5006f - Sigstore transparency entry: 2194932336
- Sigstore integration time:
-
Permalink:
kalfasyan/filoma@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Branch / Tag:
refs/tags/v1.12.7 - Owner: https://github.com/kalfasyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file filoma-1.12.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: filoma-1.12.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 697.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f45385282b49450957b45cb4f37955f1296ba14c67686c2633918784cb1cd4d4
|
|
| MD5 |
ffe8b593937b3054cf52c0fa55361dbd
|
|
| BLAKE2b-256 |
a87c3c40160eaf59d4127204aa03925a16e825c4cb898d0afc33f326653c22d6
|
Provenance
The following attestation bundles were made for filoma-1.12.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on kalfasyan/filoma
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filoma-1.12.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
f45385282b49450957b45cb4f37955f1296ba14c67686c2633918784cb1cd4d4 - Sigstore transparency entry: 2194932341
- Sigstore integration time:
-
Permalink:
kalfasyan/filoma@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Branch / Tag:
refs/tags/v1.12.7 - Owner: https://github.com/kalfasyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file filoma-1.12.7-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: filoma-1.12.7-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 642.3 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d13d4c823c430d5741efb1746c353b557fa3ae9fae6f4abfd9c118150b2b471
|
|
| MD5 |
ea1c1d50168f6ca81586f7ca0b6247eb
|
|
| BLAKE2b-256 |
d97e1ccd2964c5f77b76058e80f8a2c25be4db0ace16d40127d6339ddb798b35
|
Provenance
The following attestation bundles were made for filoma-1.12.7-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
publish.yml on kalfasyan/filoma
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
filoma-1.12.7-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
1d13d4c823c430d5741efb1746c353b557fa3ae9fae6f4abfd9c118150b2b471 - Sigstore transparency entry: 2194932332
- Sigstore integration time:
-
Permalink:
kalfasyan/filoma@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Branch / Tag:
refs/tags/v1.12.7 - Owner: https://github.com/kalfasyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@585eb6e05df0c393c39ca467c2a0a8571ed1b7b5 -
Trigger Event:
push
-
Statement type: