Available on NuGet Read more

Curiosity CLI

The official command-line tool for Curiosity Studio. Test connections, upload front-ends, ingest folders, sync git trackers, and export/import workspace definitions from any shell or CI pipeline.

What is curiosity-cli?

curiosity-cli is available as a dotnet global tool (the NuGet package Curiosity.CLI) and as a standalone Windows executable on the releases page. It exposes every operation you would otherwise script against the Workspace's HTTP / Graph API, with consistent --server / --token arguments and kebab-case command names.

Looking for curio?

curio (Curiosity.Shell) is a different tool: it opens Sudo's sandbox from your terminal, for editing, building and approving workspace changes by hand or through a coding agent. curiosity-cli covers operations and CI: connection tests, ingestion, front-end uploads and definition promotion.

Use it to:

  • Promote a custom front-end bundle between environments.
  • Iterate on a custom front-end locally while talking to a remote workspace.
  • Ingest files (folders, PSTs) into a workspace, with or without Active Directory ACLs.
  • Export and import custom code (endpoints, indexes, scheduled tasks) between workspaces — the foundation of GitOps-style workspace deployments.
  • Wait for a workspace to become ready, then run smoke tests, inside a CI/CD pipeline.
  • Turn a local CSV or JSON file into a shareable copy with synthetic values.
  • Download workspace audit log files into an archive, verify them against tampering, and convert them to CSV or JSON with user names and emails filled in.

Install

With the .NET 10 SDK on the machine:

dotnet tool install Curiosity.CLI --global

Or download a self-contained curiosity-cli.exe from GitHub Releases — no .NET install needed, which is the form to use for Windows services and scheduled tasks.

Then confirm:

curiosity-cli --help

Full instructions, update path, and which form to pick on Installation.

Common arguments

Almost every command takes the same two arguments — a workspace URL and a Library Token:

curiosity-cli <command> \
  --server https://my-workspace.example.com/ \
  --token  $CURIOSITY_TOKEN

Short forms -s and -t work everywhere. Tokens can also be stored encrypted on disk with store-token so you can pass --token auto afterwards.

See Common Options for the full list (timeouts, mTLS, ignore-certificate-errors, environment variables, logging).

Commands

test

Verify the URL and token by running a tiny query against the workspace.

store-token

Encrypt and store a token locally so commands can use --token auto.

wait-for

Block until a workspace's readiness probe returns true — useful in CI.

serve

Serve a locally built custom front-end and proxy API calls to a remote workspace. With --watch, compile it and reload on every change.

upload-front-end

Push a compiled Mosaik.FrontEnd bundle to a workspace.

inspect

Report supported and unsupported files in a folder before ingestion.

upload-folder

One-shot upload of a folder into the workspace.

monitor

Keep a folder continuously in sync with the workspace.

upload-folder-with-permissions

Windows: one-shot upload that also propagates Active Directory ACLs.

monitor-with-permissions

Windows: continuous sync that keeps ACLs aligned with Active Directory.

Scheduled sync

Windows: run the one-shot ingest on a Task Scheduler trigger instead of keeping a monitor running.

ingest-pst

Extract emails and attachments from a PST file and upload them.

git-sync

Serve a local git repository to a workspace's git-tracker.

export-workspace-definitions

Download custom tasks, indexes, and endpoints as a zip or directory.

import-workspace-definitions

Upload custom tasks, indexes, and endpoints back into a workspace.

synthetic-csv

Copy a local CSV with the same headers and row count, but synthetic values.

synthetic-json

Copy a local JSON file with the same keys and structure, but synthetic values.

download-audit-logs

Copy a workspace's audit log files into a local folder, skipping the ones already there.

verify-audit-log

Check that audit log files were not altered by replaying their hash chain.

convert-audit-log

Convert audit log files to CSV, TSV or JSON with a column template, including user names and emails.

Where to go next