npm install && npm run build
npm link # Link CLI globally for testing
npx dhti-cli help # Show available commandsGenerate and manage docker-compose.yml files from modules.
Operations: add, delete, read, reset, env
Common Usage:
npx dhti-cli compose add -m langserve -m openmrs
npx dhti-cli compose delete -m redis
npx dhti-cli compose read
npx dhti-cli compose env -e FHIR_BASE_URL -v http://example.com -s langserveModules: langserve, openmrs, ollama, langfuse, cqlFhir, redis, neo4j, mcpFhir, mcpx, docktor, medplum, fhir, gateway, webui
Key Flags:
-f, --file— Docker compose file path (default: ~/dhti/docker-compose.yml)-m, --module— Module to add/delete (multiple allowed)-e, --env— Environment variable name-v, --value— Environment variable value-s, --service— Service name to update (default: langserve)--host— Use host env pattern (${VAR:-default})--dry-run— Preview changes without executing
Initialize, install, or start OpenMRS ESM frontend development.
Operations: init, install, start
Common Usage:
npx dhti-cli conch init -n my-app -w ~/projects
npx dhti-cli conch install -n my-app -w ~/projects -b develop
npx dhti-cli conch start -n my-app -w ~/projects
npx dhti-cli conch start -n my-app -w ~/projects -s packages/esm-chatbot-agentKey Flags:
-n, --name— Name of the conch (required for init/install/start)-w, --workdir— Working directory (default: ~/dhti)-b, --branch— Git branch to install from (default: develop)-g, --git— GitHub repo (default: dermatologist/openmrs-esm-dhti-template)-s, --sources— Additional sources to include when starting--dry-run— Preview changes without executing
Build Docker images and manage container operations.
Common Usage:
npx dhti-cli docker -n my-image -t elixir
npx dhti-cli docker -u # Start containers (docker-compose up -d)
npx dhti-cli docker -d # Stop containers (docker-compose down)
npx dhti-cli docker -g # Restart gateway container
npx dhti-cli docker -r dhti-langserve-1 # Restart specific container
npx dhti-cli docker bootstrap -f ~/dhti/elixir/app/bootstrap.pyKey Flags:
-n, --name— Container name to build-t, --type— Service type:elixirorconch(default: elixir)-f, --file— Docker compose file path (default: ~/dhti/docker-compose.yml)-c, --container— Target container name (default: dhti-langserve-1)-u, --up— Run docker-compose up -d-d, --down— Run docker-compose down-g, --gateway— Restart gateway container-r, --restart— Restart specific container by name--dry-run— Preview changes without executing
Install, uninstall, or manage elixir dependencies.
Operations: init, install, uninstall, dev, start
Common Usage:
npx dhti-cli elixir init -n my-elixir -w ~/dhti
npx dhti-cli elixir install -n my-elixir -g dermatologist/my-repo
npx dhti-cli elixir uninstall -n my-elixir
npx dhti-cli elixir dev -n my-elixir -d ~/dev/my-elixir
npx dhti-cli elixir start -n my-elixir --elixir http://localhost:8001/langserve/my_elixir/cds-servicesKey Flags:
-n, --name— Name of the elixir-w, --workdir— Working directory (default: ~/dhti)-g, --git— GitHub repo URL to install from-b, --branch— Git branch (default: develop)-p, --pypi— PyPi package spec (e.g., "dhti-elixir-base>=0.1.0")-l, --local— Local directory path for installation-e, --whl— .whl file to install-s, --subdirectory— Subdirectory for monorepos-v, --repoVersion— Elixir version (default: 0.1.0)-f, --fhir— FHIR endpoint URL (default: http://hapi.fhir.org/baseR4)-c, --container— Container name (default: dhti-langserve-1)-d, --dev— Dev folder for live reload--dry-run— Preview changes without executing
Manage Synthea for generating synthetic patient data.
Subcommands: install, generate, upload, delete, download
Common Usage:
npx dhti-cli synthea install
npx dhti-cli synthea generate -p 50
npx dhti-cli synthea generate -p 10 -s MA -c Boston -g M -a 18-65
npx dhti-cli synthea upload -e http://fhir:8005/baseR4 -t bearer-token
npx dhti-cli synthea download --covid19
npx dhti-cli synthea deleteKey Flags:
-w, --workdir— Working directory (default: ~/dhti)-p, --population— Number of patients to generate (default: 1)-s, --state— State for patient generation-c, --city— City for patient generation-g, --gender— Patient gender (M or F)-a, --age— Age range (e.g., "0-18")--seed— Random seed for reproducibility-e, --endpoint— FHIR server URL (default: http://fhir:8005/baseR4)-t, --token— Bearer token for authentication- Download Flags:
--covid19,--covid19_10k,--covid19_csv,--covid19_csv_10k,--synthea_sample_data_csv_latest,--synthea_sample_data_fhir_latest,--synthea_sample_data_fhir_stu3_latest --dry-run— Preview changes without executing
Install, remove, restart, or list inference pipelines.
Operations: install, remove, restart, list
Common Usage:
npx dhti-cli docktor install my-pipeline -i my-image:latest -m ./models
npx dhti-cli docktor remove my-pipeline
npx dhti-cli docktor list
npx dhti-cli docktor restartKey Flags:
-c, --container— MCPX container name (default: dhti-mcpx-1)-i, --image— Docker image for inference pipeline (required for install)-m, --model-path— Local model directory path-e, --environment— Environment variables (format: VAR=value, multiple allowed)-w, --workdir— Working directory (default: ~/dhti)
Submit FHIR import requests to a FHIR server.
Common Usage:
npx dhti-cli mimic http://localhost/fhir/$import
npx dhti-cli mimic http://fhir:8005/baseR4/$import -t bearer-tokenArguments:
server— FHIR server URL (default: http://localhost/fhir/$import)
Key Flags:
-t, --token— Bearer token for authentication--dry-run— Preview request without sending
Process data using LLM to generate synthetic outputs.
Arguments:
input— Input file pathoutput— Output file path (required)prompt— Prompt file path
Common Usage:
npx dhti-cli synthetic input.json output.json prompt.txt
npx dhti-cli synthetic output.json --maxCycles 5 -r 10 -m 0
npx dhti-cli synthetic input.json output.json -i input -o outputKey Flags:
-i, --inputField— Input field name (default: input)-o, --outputField— Output field name (default: output)-m, --maxCycles— Max cycles for generation (0 = process file records)-r, --maxRecords— Max records to process (default: 10)--dry-run— Preview changes without executing
Full Stack Setup:
npx dhti-cli compose add -m openmrs -m langserve
npx dhti-cli docker -u # Start everything
npx dhti-cli elixir install -n my-service -g my/repoDevelopment Workflow:
npx dhti-cli elixir dev -n my-service -d ~/dev/my-service
npx dhti-cli docker -g # Restart gateway if neededData Generation & Upload:
npx dhti-cli synthea generate -p 100
npx dhti-cli synthea upload -e http://fhir:8005/baseR4All commands support:
--dry-run— Preview changes without executing--help— Show command help--version— Show CLI version