Mounted Folder
Mounted Folder
Scan a folder of documents, spreadsheets and images — on this computer, or mounted into the cluster.
- Category
- Warehouse & Lakehouse
- Source type
- LOCAL_FOLDER
- Produces
- fileimageaudiovideoarchive
The simplest source there is: point Classifyre at a folder and it scans what is in it. On the desktop application that’s a folder on your own machine; in Kubernetes it’s a volume mounted into the cluster — a file share, a NAS export, a migrated archive.
What you need to connect
A path, as seen by the machine running the scan. There are no credentials: the scan reads the filesystem with the permissions of the process doing the scanning — the desktop app’s, or the scan job’s in the cluster. That’s the whole security model, and it’s worth being deliberate about which folders you expose.
In the desktop application you pick the folder with a normal file browser.
What Classifyre reads
Every file below the folder, subject to the traversal controls:
| Control | What it does |
|---|---|
| Max depth | How far below the folder to descend |
| Include hidden | Whether dot-files and dot-directories are scanned |
| Follow symlinks | Off by default — link loops are not detected |
| Extension allow / denylist | Narrow it to the file types you care about |
Shared behaviour · File and object sources
Every object in the folder becomes one asset. What it is — a PDF, a spreadsheet, a screenshot, a video — is worked out from the bytes themselves, not from the file name, because storage systems routinely label everything as generic binary data. The full list of readable types is on File Formats.
Files hidden inside other files are pulled out and scanned in their own right: images embedded in a document, and every member of a ZIP, TAR, 7z or RAR archive. Images, audio and video need OCR and transcription switched on before their content can be read.
Large objects are streamed rather than loaded whole, so a multi-gigabyte file costs disk rather than memory, and only the part a sampling window asks for is read.
Files in this folder are read with the shared file pipeline: see Supported File Formats for everything it can open, and OCR & Transcription for reading text out of images, audio and video.
Metadata on every asset
Asset kind · file
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| image_width | integer | No | Width in pixels |
| image_height | integer | No | Height in pixels |
| page_count | integer | No | Number of pages (pdf) |
| paragraph_count | integer | No | Number of paragraphs (docx) |
| table_count | integer | No | Number of tables (docx) |
| row_count | integer | No | Number of data rows |
| columns | object[] | No | Columns as {name, type} objects (type may be empty for csv/xlsx) |
| encoding | string | No | Detected character encoding |
| json_root_type | string | No | Root JSON type: object, array, or scalar |
| top_level_keys | integer | No | Number of top-level keys when the root is an object |
| array_length | integer | No | Length when the root is an array |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | File path relative to the scanned folder |
| etag | string | No | Change signature derived from file size and modification time |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · image
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| image_width | integer | No | Width in pixels |
| image_height | integer | No | Height in pixels |
| provider | string | No | Storage provider label |
| object_key | string | No | File path relative to the scanned folder |
| etag | string | No | Change signature derived from file size and modification time |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · audio
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | File path relative to the scanned folder |
| etag | string | No | Change signature derived from file size and modification time |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · video
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | File path relative to the scanned folder |
| etag | string | No | Change signature derived from file size and modification time |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Asset kind · archive
| Field | Type | Always present | What it is |
|---|---|---|---|
| size_bytes | integer | Yes | Raw byte size of the content |
| mime_type | string | Yes | Resolved MIME type |
| parse_error | string | No | Set when content extraction failed |
| provider | string | Yes | Storage provider label |
| object_key | string | Yes | File path relative to the scanned folder |
| etag | string | No | Change signature derived from file size and modification time |
| source_hash | string | No | Hash of the parent asset (embedded files and archive members only) |
| location | string | No | Location within the parent (embedded file location or archive member path) |
Lineage
Lineage
This source records no lineage. Nothing in the system it reads describes data moving from one place to another, so no FLOW edges are produced. Related items are still linked — see Lineage & Relationships for what those links mean and how they differ from lineage.
Worth knowing
- A mounted network share behaves like a local folder, so SMB and NFS exports can be scanned without a dedicated connector.
- Deleted files are noticed. A file that disappears between scans is marked deleted, and the findings it produced can be resolved automatically.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| required | object | Yes | —no extra properties | — |
| path | string | Yes | Absolute path of the folder to scan, as seen by the machine that runs the scan. On desktop that is this computer (for example /Users/jane/Documents). In Kubernetes it is the scan pod, so the folder must be mounted into CLI jobs first via the chart's `api.localFolders` — then use the `mountPath` you gave it there (for example /mnt/corpora/invoices). | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| masked | object | No | A folder scan reads the filesystem it runs on with that process's own permissions — the desktop app's, or the CLI job pod's. No credentials are required.no extra properties | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| scope | object | No | Object scope and filtering controls.no extra properties | — |
| scope.exclude_extensions | array | No | Optional extension denylist | — |
| scope.exclude_extensions[] | string | No | — | — |
| scope.include_content_preview | boolean | No | Download object bytes to infer MIME and extract detector-ready text previews | true |
| scope.include_empty_objects | boolean | No | Include zero-byte objects in extraction results | false |
| scope.include_extensions | array | No | Optional extension allowlist (for example, .pdf, .csv, .parquet) | — |
| scope.include_extensions[] | string | No | — | — |
| scope.include_object_metadata | boolean | No | Attach provider metadata (etag, size, content-type hints, timestamps) to asset checksums | true |
| scope.prefix | string | No | Object key prefix filter (for example, exports/2026/) | — |
| traversal | object | No | Directory traversal controls.no extra properties | — |
| traversal.follow_symlinks | boolean | No | Follow symbolic links while traversing (loops are not detected; leave off unless needed) | false |
| traversal.include_hidden | boolean | No | Include hidden files and dot-directories (names starting with a dot) | false |
| traversal.max_depth | integer | No | Maximum directory depth below the selected folder (unset scans all levels)min 1, max 64 | — |
| traversal.max_file_bytes | integer | No | Maximum bytes read per file for MIME detection and text extractionmin 1024, max 104857600 | 10485760 |