Curiosity CLI

upload-folder

One-shot ingest of a local folder into the workspace's graph. Walks the folder recursively, extracts text/metadata from every supported file, and creates the corresponding file and folder nodes.

For a continuous version that keeps syncing, use monitor. For ingestion that also propagates Windows / Active Directory ACLs, use upload-folder-with-permissions.

Usage

curiosity-cli upload-folder \
  --server             https://my-workspace.example.com/ \
  --token              $CURIOSITY_TOKEN \
  --path               /mnt/shares/docs \
  --source             "Shared Drive" \
  --fetch-server-state false

Options

Flag Alias Default Description
--server -s - Workspace URL.
--token -t - Library Token.
--path -p - Folder to upload.
--source folder name Source label attached to every uploaded file entry. Defaults to the leaf directory name.
--fetch-server-state - Required. When true, fetch the list of already-uploaded files first so that files deleted locally also get removed from the workspace. Requires --sync-file-url.
--bandwidth unlimited Cap upload rate in Mbps.
--upload-to Public Public, Group, UserPublic, UserPrivate. See Common Options.
--target-uid - UID of the Group/User when --upload-to is not Public.
--extensions - Semicolon-separated list of extensions to include, e.g. doc;docx;pdf.
--root-path - Local path prefix to strip before constructing the workspace path.
--root-folder-name - Name of the root folder to create in the workspace. Requires --root-path.
--restore-access-time false Restore the file's last-access timestamp after reading. Useful on hot+cold-storage shares.
--sync-file-url false Store the file URL alongside each node so it can be opened directly from the workspace.
--in-place false Only sync the file URL — don't copy bytes. Requires --sync-file-url and the server having direct access to the files.
--timeout 90 Per-request timeout in seconds.

Windows-only impersonation

When running on Windows the command also accepts --username, --password, and --domain to impersonate a different account for folder/file reads — useful for shares that the CLI's own account cannot read.

Filtering

# Only PDFs and Word documents under 1 GB/s
curiosity-cli upload-folder -s $URL -t $TOKEN -p /mnt/docs \
  --extensions "pdf;doc;docx" \
  --bandwidth 1000 \
  --fetch-server-state false

Layout in the workspace

Given --path /mnt/docs/projects/atlas, the workspace will mirror that path:

workspace/
└── atlas/
    └── ...

Use --root-path and --root-folder-name to rewrite the prefix:

curiosity-cli upload-folder -s $URL -t $TOKEN \
  --path             /mnt/docs/projects/atlas \
  --root-path        /mnt/docs \
  --root-folder-name "Shared Drive"

Produces:

workspace/
└── Shared Drive/
    └── projects/
        └── atlas/
            └── ...

See also

© 2026 Curiosity CLI. All rights reserved.