Skip to main content
The tracebloc CLI is how you manage your secure environment and its data from your own machine: sign in, connect this machine to tracebloc, ingest datasets, list and delete them, check the connection, and set how much of the machine training may use. tb is the short alias — every command on this page works as tb … too.
You never touch Helm, edit YAML, or run kubectl. tracebloc data ingest <path> finds your secure environment, checks your data on your machine, copies it in, and follows the ingest to the end.

Install

If you deployed with the Quick Start one-liner, the CLI is already installed. Otherwise, install the CLI on its own:
Binaries are cosign-signed and multi-arch; the installer also creates the tb alias (unless an unrelated tb is already installed). Pin a version with sh -s -- --version vX.Y.Z (or $env:TRACEBLOC_RELEASE_VERSION='vX.Y.Z' on Windows). Verify:
Run tracebloc with no arguments for a welcome screen that shows who you’re signed in as, whether your secure environment is running, and the next commands to try.

Sign in and connect this machine

login works on a headless or SSH machine — the browser doesn’t have to be on the same machine — and is safe to re-run (pass --force to switch accounts). client create takes its name from --name or TRACEBLOC_CLIENT_NAME, otherwise it generates one; on a cluster that already runs a secure environment, it adopts that one instead of creating a second one.

Check your secure environment

doctor exits 0 when healthy, 2 when it found a problem, 3 when it can’t read your local config. --diagnose writes a redacted support bundle you can send to tracebloc.
If a command exits with code 4, it found no secure environment or shared storage on the cluster, or the cluster’s data ingestor is too old for the task. The error message says which. If the ingestor is too old, try again after your secure environment’s hourly auto-upgrade has run (tracebloc upgrade updates only the CLI); otherwise run tracebloc doctor. If your secure environment runs in a namespace the CLI did not find, add -n <your-namespace>. cluster info, doctor, resources, and the data commands all accept -n, --context, and --kubeconfig.

Ingest a dataset

tracebloc data ingest <path> ingests a dataset: it copies the files into your secure environment’s storage, checks them there, and lists the dataset on tracebloc. Your data never leaves your infrastructure.
tracebloc data <path> is a shortcut for the same command. On a terminal, the CLI looks at the files first and asks only what they can’t say. An ingest goes through these steps, and nothing is copied until the last one:
  1. The path. Drag a file or folder into the terminal, or type its path.
  2. The questions. For a table, which column the model should predict. The task when two tasks fit the data.
  3. The checks. The layout, the values, and what training needs. A problem that stops the ingest is a blocker; one you decide on is a warning.
  4. The summary. What goes where, and what leaves your secure environment.
  5. Ingest it as Training data or Test data. Your answer starts the copy.
To ingest from a script or CI, pass the answers as flags with --no-input; see Scripted ingest.

Guided ingest

tracebloc data ingest <path> on a terminal runs the guided ingest on this page. The commands, flags and checks in Scripted ingest work the same from a script.
At each question, type the option’s number or its name, or press Enter for the answer shown in brackets. Press Ctrl-C at any question to stop; nothing is ingested.

Give the path

Type the path after tracebloc data, or run tracebloc data alone and drag the file or folder into the terminal when it asks:
Over SSH, where nothing can be dragged into the terminal, the CLI asks you to type the path, and Tab completes it. One Tab completes as much as the names have in common; a second Tab lists them:
A name with spaces or brackets completes escaped, the way your shell reads it: ~/My\ Data/patients\ \(2024\).csv. Paths with spaces, quotes or a trailing space work as your terminal pastes them. tracebloc data . takes the folder you are in. If you give the folder above your dataset, the CLI finds the dataset inside it:
If nothing is at the path, the CLI offers the nearest path that exists. Press Enter to take it. If the CLI can’t tell which task the files are laid out for, it names what it found and waits for you to fix the files. See Dataset layout for what each task needs.

Answer the questions

The column to predict. For a table, the CLI lists each column with a few of its values and asks which one the model should predict. Columns that can’t be predicted, such as an ID column that holds a different value in every row, are listed with the reason and can’t be picked:
Type the column’s number or its name, or press Enter for the one in brackets. In a wide table the CLI lists the likely columns first; type part of a name to list the others. The task. The CLI works the task out from the files and the column you picked. When two tasks fit, it asks which one you mean, with no guess: For a folder of images or texts, the layout settles the task and the CLI asks no question. What the dataset holds. The CLI asks whether the data is about real patients. Press Enter for patient data, or choose open or synthetic data:
The summary shows your answer on its holds line. Pass --holds to answer it up front, and the CLI doesn’t ask. Columns to leave out. A column whose values look like IDs, names, email addresses or phone numbers could leave your secure environment with the dataset’s statistics. The CLI warns about it and offers to leave it out:
Enter leaves the column out: it isn’t copied, and your file isn’t changed. Answer n to keep it. The summary lists what you left out. The name. The dataset takes its name from the file or folder, for example churn_train for churn_train.csv. The CLI asks for a name only when the one it found is taken. One name in your account always means the same columns, and datasets of one name train together in a use case:
  • If a dataset of that name with the same columns is on another of your secure environments, the CLI says so and Enter keeps the name.
  • If it has other columns, that’s a blocker, and Enter takes the next free name:

Read the summary

Before anything is copied, the CLI shows what it will ingest, where, and what leaves your secure environment:
What leaves depends on the task. No row ever does: Ingest it as has no default. Choose 1 for Training data, the data models learn from, or 2 for Test data, the data models are scored on. Your answer starts the copy. If you pass --intent train or --intent test, the CLI doesn’t ask: the summary offers Ingest it as training data (or test data) and Change something, and asks Go ahead?. A use case needs both; see Pair test data with training data.

Change something

Choose 3 to change an answer before you ingest:
Each change goes back to the checks and then to the summary, never to the start. A new column to predict can change the task. The task offers only the tasks that fit the column, and says so when only one does. The secure environment lists the secure environments this machine reaches. The data asks for a new path, then asks the questions for the new data. What it holds asks again, and Enter keeps your answer.

The run

Once you choose Training data or Test data, the CLI copies the data and follows it to the end, one tick per step:
The other half. If the file or folder next to this one looks like the other half, for example churn_test.csv next to churn_train.csv, the CLI offers to ingest it now, as the other kind of data, with the same column and task. It takes its name from the first one: churn_w3_train makes the other half churn_w3_test.
Answer y to ingest it. Enter or n ends the ingest, and What’s next? names the command for the other half. Test data that already pairs with training data on tracebloc isn’t offered the training half. A folder that holds both a training and a test table asks which to ingest: both, or only one of them. For both, the summary asks Go ahead?, with Ingest it as training data or Change something, and the test table follows with the same column and task. Stopping. Press Ctrl-C at any question and nothing is ingested. Press it during the copy and the CLI removes the partial copy: “Stopped. Nothing was ingested, and the partial copy was removed.” Once the copy is done and the run is submitted, the ingest goes on in your secure environment and the window can close. The dataset shows up in tracebloc data list when it’s done.

Choose the secure environment

The CLI ingests into your active secure environment, and the summary always names it. To ingest into another one this machine reaches, choose Change something › The secure environment, or pass its name:
If the secure environment doesn’t answer, the CLI says so and asks whether to try again:
A scripted run doesn’t retry: it exits 4 and ingests nothing. If you name a secure environment this machine doesn’t reach, the CLI lists the ones it does reach. --secure-environment finds the cluster and namespace for you: it can’t be combined with -n, and a --context that points at another cluster stops the ingest. If the copy finds no room in your secure environment’s storage, nothing is copied and the run exits 7. Make room on the machine, for example with tracebloc data delete <name>, then ingest again.

Pair test data with training data

A use case trains on training data and scores models on test data for the same task. When you ingest test data, the CLI looks for training data on the same secure environment that it pairs with: the same columns, and no class the training data lacks.
If nothing pairs with it yet, that’s a warning, and the default is No:
A use case refuses test data with a class its training data lacks, or with a column whose type differs from the training data’s. Fix the test data, or ingest it anyway if the training data comes later.

Checks before the copy

The CLI reads your files on your machine and runs the checks before anything is copied: the layout, the values, and what training needs. It prints each problem with what to do about it:
  • Blocker (✖): the ingest can’t go on. In a guided run the CLI waits: “Fix the files, then press Enter to check again.” A scripted run exits 3.
  • Warning (⚠): the ingest can go on, and you decide. A guided run asks, and its default is the safe answer. A scripted run prints the warning and goes on.
Your secure environment’s data ingestor checks the data again after the copy. Nothing is stored unless every check passes. When a fix is a different command, the CLI prints that command in full, so you can copy it.

Scripted ingest

For a script or CI, pass --no-input. The CLI asks nothing: what the flags leave out, the files fill in. When they can’t, the run exits 2 and names the flag to add.
  • The task and the name come from the files when you leave out --task and --name: ✔ Tabular classification · predicts churn · name churn_train, from the files. If the column fits two tasks, the run exits 2 and prints the command for each, with --task.
  • The column to predict is --label-column, for every table. If you mistype it, the run exits 2 and names the column it’s closest to.
  • A --task that contradicts the files wins, with a warning that prints the command with the task the files show.
  • Columns to leave out: --leave-out <column>, once per column. A column that looks like it could identify people is a warning, and the fix is the command with --leave-out. Naming a column the table doesn’t have stops the run.
  • Test data is --intent test.
  • What the dataset holds: --holds patient_data, open_data or synthetic_data. Without it, the dataset is marked as patient data. On a guided run, it answers the question up front. The mark decides which use case types you can create on the dataset, so pass --holds open_data or --holds synthetic_data when your data is not patient data.
  • Where it goes: --secure-environment <name>; see Choose the secure environment.
  • A dry run: --dry-run runs the checks and connects to your secure environment, and creates nothing. On a terminal, a dry run asks its questions one by one, in four numbered steps, instead of showing the summary.
A scripted run prints its progress in three phases: Check your data, Copy into your secure environment, and Validate and ingest.

Image resolution

Every image has to be exactly the same size. --target-size is that size, written WxH: the width, the letter x, then the height, for example 512x512. The ingest checks every image against it and rejects any that differ, so resize the odd ones out before you ingest. Without the flag, the CLI takes the most common size among your images. --min-size WxH rejects images smaller than that before the ingest; set it to the smallest size your model can train on. Images smaller than 32x32 always stop the run before the copy.
Type the letter x between the two numbers, not the × sign your file manager may show. To read an image’s size:
  • macOS: run sips -g pixelWidth -g pixelHeight <file> in Terminal, or select the file in Finder, choose File > Get Info and read Dimensions under More Info.
  • Linux: run file <file>; for a JPEG or PNG it prints the width and height.
  • Windows: right-click the file, choose Properties > Details and read Dimensions.
tracebloc data push (and tracebloc dataset push) is a deprecated alias of tracebloc data ingest and will be removed in a future release. Use tracebloc data.

Tasks

Pick one with --task:

Dataset layout

What you pass as <path> depends on the task family. A bare .csv file is accepted only for tabular and time-series tasks; image and text datasets must be a folder.
A single CSV — pass the file itself, or a folder holding exactly one .csv:
An Excel workbook (.xlsx or .xlsm) works too, as a file or as the only file in a folder: the copy holds its sheet as CSV. A workbook with more than one visible sheet needs --sheet. Time-series forecasting orders the rows by a column named timestamp. Time-series classification adds fixed sequence_id and timestamp columns — see its template.
Each task’s dataset template shows its exact columns and an example — for example causal language modeling, sequence-to-sequence, token classification, sentence-pair classification, embeddings, and semantic segmentation.
One data ingest is capped at 1 GiB total and 500 MiB per file. For image datasets, the images and their annotation or mask files count together.
If your dataset is over the cap, make it smaller (JPEG instead of PNG, a lower resolution, or fewer samples), or ingest it with the Helm ingestor chart, which has no size limit.

Key flags

Run tracebloc data ingest --help for the full list.

Exit codes

Useful when you script data ingest:

What’s next

When the training data and the test data are both in, the CLI names the next step:
Create the use case on tracebloc and pick each dataset by the name you gave it. Your datasets are listed under My Data on the Secure Environment page, and in your terminal with tracebloc data list.

List and delete datasets

data delete is destructive and can’t be undone; it asks for confirmation (--yes skips it, --dry-run shows what would be deleted). Right after the delete, the CLI asks your secure environment to report its datasets to tracebloc, and My Data shows the dataset as Deleted within a few minutes. If that report can’t be made (for example, tracebloc is unreachable), the CLI says so and still exits 0: your secure environment’s next scheduled report, about hourly while it runs, marks the dataset Deleted. The dataset’s catalog entry on tracebloc is kept as a record, so experiments that used it keep their history. tracebloc data rm is an alias. Both commands accept --output-json; for data delete, platform_notified says whether tracebloc was told.

Validate a config locally

Checks an ingest.yaml against the embedded v1 schema in milliseconds — no cluster required. Exits 0 when valid, 2 on schema violations, 3 when the file can’t be read or parsed. The declarative form (also accepted by the Helm ingestor chart), shown for a tabular dataset:
For object_detection, leave out csv and label and give images and annotations instead.

Command reference

data also answers to dataset. Add --help to any command for the full flag list, --verbose for step-by-step detail, or --plain to turn off color. For lifecycle tasks (upgrade, stop/start, uninstall), see Operations.

CLI or Helm chart?

Both submit to the same ingestion protocol — pick the one that fits your workflow:
  • CLI — local data on your workstation; the everyday choice. Handles copying and submission for you.
  • Helm ingestor chart — Kubernetes-native / GitOps, when your data is already staged on the cluster.