Skip to main content

CLI Usage

Thresh ships a real CLI as thresh (and as clinisync for backwards compatibility) — installable globally, runnable via npx, or available as node bin/clinisync.js from a clone.

$ thresh
Thresh — privacy-first spreadsheet ETL.

Usage:
thresh <command> [args] [options]

Commands:
clean Clean a workbook and write outputs to a directory.
preview Dry-run: produce a JSON report without writing files.
serve Run the HTTP server.
version Print the installed version.
help [cmd] Show this help, or detailed help for a single command.

thresh clean <file>

Run the ETL pipeline on a workbook and write per-sheet CSVs plus a manifest to a directory.

thresh clean ./case-mix.xlsx -o ./out

Options:

OptionDefaultBehavior
-o, --output <dir>./outOutput directory; created if missing.
--rules <path>bundled defaultsJSON rule set — see Field cleaning for the schema.
--quietoffSuppress the human-readable summary; emit a single line of JSON to stdout instead. Pipe-friendly.

In default (non-quiet) mode the CLI prints what it wrote to stderr and a summary block at the end:

wrote converted-case_mix-sheet1.csv (2 rows)
wrote converted-case_mix-sheet2.csv (2 rows)
wrote manifest-case_mix.json

Summary:
sheets 2
rows processed 4
duplicates removed 0
invalid DOB 0
missing NHI 0
redacted cells 0
output dir out

In --quiet mode the only stdout line is JSON, ready for jq:

$ thresh clean ./case-mix.xlsx -o ./out --quiet | jq .sheetsProcessed
2

thresh preview <file>

Identical pipeline to clean, but writes nothing — emits a JSON dry-run report to stdout. Useful for verifying that a custom rule set does what you expect before running it for real.

thresh preview ./case-mix.xlsx --rules ./my-rules.json --limit 50

Options:

OptionDefaultBehavior
--rules <path>bundled defaultsSame as clean.
--limit <n>25Max rows to include in each sheet's preview block. The full file would be too big for a JSON response on a real workbook.

The output is the same structured JSON the POST /preview HTTP endpoint emits, with each sheet carrying a previewRows 2-D array plus stats.

thresh serve

Start the HTTP server. Honors all the runtime env vars from .env.example (CLINISYNC_API_KEY, CLINISYNC_CSV_TTL_HOURS, CLINISYNC_RULES_PATH, REDIS_URL, CLAMAV_TCP_HOST).

thresh serve --port 8080

--port overrides the PORT environment variable.

thresh version / thresh help

Print the version (read from VERSION) or the top-level / per-command help respectively. thresh help clean shows the full clean help block; same for preview and serve.

Exit codes

CodeMeaning
0Success.
1Recoverable error (missing input file, invalid rule set, ETL failure). The error message goes to stderr.
2Unknown subcommand. Run thresh help for valid options.