datris) is a command-line interface for the Datris Data Platform. It communicates with the platform via the MCP server, providing a simple way to ingest data, run queries, search vector stores, and manage pipelines — all from the terminal.
Installation
Configuration
The CLI connects to the MCP server via SSE. Set the server URL with an environment variable:Authentication
WhenUSE_API_KEYS=false (the OSS default) no key is needed. When USE_API_KEYS=true, export the key and the CLI sends it as the x-api-key header on every request to the MCP server:
DATRIS_API_KEY.
Older CLI versions do not read
DATRIS_API_KEY. For those, put the key on the MCP URL’s query string instead, which the MCP server still accepts: export MCP_SERVER_URL="http://localhost:3000/sse?api_key=<your key>".JSON Output
Every command excepttap delete supports --json to return raw JSON instead of human-readable output. This is useful for scripting and programmatic use.
Commands
datris help
Show all available commands and options.
datris pipelines
List all registered pipelines.
datris ingest
Create a pipeline and ingest a data file in one step. The schema is auto-detected from the file.
If the named pipeline already exists, the existing config is preserved and the file is uploaded into it — --dest, --table, --ai-validate, --ai-transform, and --catalog are ignored on re-ingest. Delete the pipeline first (datris delete <name>) if you need a fresh config.
Examples:
datris query
Execute a read-only SQL SELECT query against PostgreSQL.
datris search
Semantic search across a vector database.
datris analyze
Ask a question about your data using AI. Works with any destination type — auto-picks the right approach based on --dest.
Examples:
- PostgreSQL — AI generates a SQL query from your question, executes it, then summarizes the results in a natural language answer
- MongoDB — fetches documents from the collection, then AI answers the question based on the data
- Snowflake / Databricks / SQL Server — previews up to 100 rows from the pipeline’s destination table (connection and credentials resolved server-side from the pipeline config), then AI answers the question based on the data
- Vector stores — performs semantic search to find relevant chunks, then AI generates an answer from the retrieved context
datris query-mongo
Query a MongoDB collection with optional filter and projection.
datris status
Get the latest job status for a pipeline.
datris pipeline result
Read the rows a Live Read pipeline (the scratch destination) produced. TOKEN is the pipeline token returned when the pipeline ran. Only Live Read pipelines have a result; results expire after the retention window, after which the command says to run the pipeline again.
datris delete
Delete a pipeline configuration together with its destination data.
Deleting a pipeline always deletes its destination data.
--keep-data is not supported: it exits with an error and deletes nothing. To keep the data, copy it or point a new pipeline at the same prefix before deleting. Any warnings the server returns (for example, a Unity Catalog table an admin still has to drop) are printed after the success line, one per line, prefixed with ⚠.
datris health
Check the health of all backend services.
datris secrets
List all configured secrets.
datris taps
List all taps.
datris tap create
Create a tap. The instruction argument (a plain-English description) is optional — provide it to have AI generate the fetch script, or omit it and supply your own script with --script (or create a config-only tap with neither).
Examples:
unstructuredAttributes and whose destination is a vector store (qdrant, pgvector, weaviate, milvus, or chroma). The server rejects tap create --type document against a structured pipeline with HTTP 400.
datris tap run
Run a tap manually. Output reflects whether the fetched records actually landed in the target pipeline:
--json to get the full response including mode, persisted, persistedReason, publisherToken, and pipelineTokens.
datris tap show
Show full details of a tap, including its script. Prints the name, description, target pipeline, schedule, enabled state, secret, and last run/test results, followed by the stored script.
datris tap test
Test-run a tap without pushing the fetched records to the target pipeline. Reports the run status, record count, and data type.
datris tap logs
Show the run history for a tap — each entry’s timestamp, status, mode (run or test), record count, duration, and any error.
datris tap update
Update a tap’s configuration without regenerating its script. Specify at least one option.
datris tap delete
Delete a tap.
datris catalog export
Download a catalog as a zip archive: every tap and pipeline in it, each tap’s script and incremental state, and the validation schemas its pipelines reference. Secret values, destination data, run history and version history are never included. The command prints how many taps and pipelines the archive holds and which secrets the catalog needs.
Example:
datris catalog restore
Restore an archive made by datris catalog export, under the same name or a new one. A restore never merges into an existing catalog: it is refused when the catalog already exists, when any archived tap or pipeline name already exists anywhere on this install, or (with GitHub script storage) when an AI script file of a new pipeline differs at branch head, and each clash is printed. Restored taps start disabled; test each one and then enable it. Secrets are never written: the command names any secret the restored items need that does not exist yet.
Examples:
datris version
Get the server version. When the server has an environment label (DATRIS_ENV), it is printed too.
datris doctor
Operational self-check: the server’s own checks (Vault token expiry, AI slot secrets, embedding model loaded, disk, version skew) plus host checks that need Docker (anonymous volumes, container env drift, orphaned containers, stale source build). Every finding prints the command that fixes it; nothing is changed. See Doctor for the full check list.
Unlike the other commands,
doctor calls the server’s REST API directly rather than going through the MCP server (DATRIS_URL, default http://localhost:8080). It reads the same DATRIS_API_KEY as every other command when API keys are on — a dead MCP server is itself a finding, not a reason to fail.
Exit codes: 0 all ok, 1 any warning, 2 any error, 3 server unreachable (host checks still ran).
Pipeline Name Auto-Detection
When--pipeline is not specified, the CLI derives the pipeline name from the filename:
sales-data.csv→sales_dataQ1 Revenue Report.csv→q1_revenue_reporttrades.json→trades
