Skip to content

CLI

Mosaic execution CLI: run features and tracking ops under the Job Contract.

Usage:

$ mosaic [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • run: Run a feature (--feature), an op (--kind),...
  • prerequisites: Print the runs that an op needs before it...
  • status: Show the status of one run attempt by...
  • cancel: Request cancellation of a running attempt...
  • release: Release the run roots claimed by an...
  • track: Run an integrated tracker over scoped...
  • describe: Describe a dataset: its manifest, counts,...
  • sequences: List sequences (optionally filtered by...
  • preview: Preview one entry's table: schema, row...
  • init: Create a dataset: write dataset.yaml and...
  • scan: Rescan every declared source and rewrite...
  • reindex: Drop index rows whose files no longer...
  • reconcile: Recompute every artifact's identifier and...
  • reprobe-media: Re-probe the media files the media index...
  • prune-media: Delete transcode derivatives that no...
  • prune-joined: Delete joined exports an earlier version...
  • sweep-tracking: Delete tracker working directories that...
  • measure-tracks: Measure the frame axis of this dataset's...
  • upgrade-tracks: Convert this dataset's TRex tables from...
  • convert-tracks: Convert all raw tracks into schema-valid...
  • convert-labels: Convert all raw labels for a kind into...
  • runs: List run attempts newest first, or the...
  • features: Discover features and their parameter...
  • tracking: Discover tracking ops and their parameter...
  • media: Probe a video, compare two videos for...
  • inventory: Report every computed artifact, its...
  • models: Ask about trained models: this dataset's,...
  • pipeline: Validate, plan and run a pipeline recipe.
  • agent: Print or install the guide for an AI agent...
  • sources: Declare and inspect the directories and...
  • notes: Read and write the dataset's free-text notes.
  • tags: Declare and set the dataset's typed tags.
  • libraries: Link the datasets a trained model may be...

mosaic run

Run a feature (--feature), an op (--kind), or one step of a request.

Usage:

$ mosaic run [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --feature <str>: Feature slug to run, e.g. 'speed-angvel'.
  • --kind <str>: The op kind, e.g. 'infer-pose'.
  • --graph-request <str>: Run one step of this submitted pipeline request. The request is read from the dataset that --manifest names.
  • --step <str>: Which step of --graph-request to run.
  • --params <str>: Params as inline JSON, @file.json, or @- (stdin).
  • --inputs <str>: Feature inputs as JSON (default ["tracks"]). Feature runs only.
  • --groups <str>: Scope to these groups.
  • --sequences <str>: Scope to these sequences.
  • --entries <str>: Scope to group:sequence pairs (repeatable). A bare token is a sequence in the empty group.
  • --scope <str>: Scope as JSON: an inline object, @path.json, or @- for stdin. Excludes --entries / --groups / --sequences. --params and --scope cannot both read stdin.
  • --tracks-run-id <str>: Which tracks variant to read, e.g. 'trex.0.1-abc123def0'. Feature runs only; needed when one sequence has two recipes.
  • --labels-run-id <str>: Which labels variant to read, e.g. 'trex.0.1-abc123def0'. Feature runs only; needed when one sequence has two recipes.
  • --overwrite: Recompute even if a cached run exists.
  • --republish: With --kind: rebuild the op's published outputs from its finished work without redoing it. Ops without a republish path refuse it.
  • --owner <str>: Free-form attribution recorded on the attempt.
  • --execution-id <str>: Reuse an externally minted ULID (executor unit-of-work).
  • --workers <int range>: Compute this many entries of a parallelizable feature at once. The default computes them in turn. More workers use more memory. [1<=x<=32]
  • --parallel-mode <thread|process>: With --workers above 1, 'thread' (the default) shares one copy of the feature. 'process' uses every core but spawns an interpreter per worker and copies each entry's table to it, so it uses far more memory.
  • --min-free-memory-fraction <float range>: With --workers above 1, the share of the host's memory that must stay available. The run waits for its in-flight entries while the share is lower, and fails when it is still lower with none in flight. 0 turns the check off. [default: 0.0; 0.0<=x<=0.99]
  • --json: Emit one JSON object on stdout; logs go to stderr.
  • --help: Show this message and exit.

mosaic prerequisites

Print the runs that an op needs before it reads its entries, and run none.

Usage:

$ mosaic prerequisites [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: The op kind, e.g. 'infer-pose'. [required]
  • --params <str>: Params as inline JSON, @file.json, or @- (stdin).
  • --groups <str>: Scope to these groups.
  • --sequences <str>: Scope to these sequences.
  • --entries <str>: Scope to group:sequence pairs (repeatable). A bare token is a sequence in the empty group.
  • --scope <str>: Scope as JSON: an inline object, @path.json, or @- for stdin. Excludes --entries / --groups / --sequences. --params and --scope cannot both read stdin.
  • --json: Emit one JSON object on stdout; logs go to stderr.
  • --help: Show this message and exit.

mosaic status

Show the status of one run attempt by execution_id.

Besides the run-log snapshot, the report gives the outcome, which is partial for a finished attempt that lost entries, the recorded error parsed, and the first 20 failed entries.

Usage:

$ mosaic status [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --execution-id <str>: Attempt ULID to look up. [required]
  • --progress: Attach the per-step progress stream.
  • --json: Emit the row as JSON on stdout.
  • --help: Show this message and exit.

mosaic cancel

Request cancellation of a running attempt (SIGTERM to its recorded pid).

With --request, cancel a pipeline request instead. A process on another host is not signalled. It is recorded cancelled when its run-log proves it gone, or with --assume-exited, and the command otherwise exits 1.

Usage:

$ mosaic cancel [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --execution-id <str>: Attempt ULID to cancel.
  • --request <str>: Pipeline request to cancel: SIGTERM to its driver, or to its running steps without one, and its unstarted steps recorded cancelled. Not for a request whose steps a queue dispatches.
  • --assume-exited: Record as cancelled an attempt on another host whose run-log declares no heartbeat, asserting that its process has exited. Refused for one whose heartbeat is current.
  • --json: Emit the result as JSON on stdout.
  • --help: Show this message and exit.

mosaic release

Release the run roots claimed by an attempt that is no longer running.

Usage:

$ mosaic release [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --execution-id <str>: Attempt ULID whose claim to release. [required]
  • --force: Release even though the claiming process is still running here.
  • --json: Emit the result as JSON on stdout.
  • --help: Show this message and exit.

mosaic track

Run an integrated tracker over scoped videos, bridging results into tracks/.

Usage:

$ mosaic track [OPTIONS] {kind}

Arguments:

  • kind: Which tracker to run, e.g. 'trex', 'sleap', 'litpose'. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --set <str>: A tracker parameter, as key=value (repeatable). Values are read as JSON when they parse as JSON, else as a string. Run 'mosaic tracking describe ' for the available keys.
  • --groups <str>: Scope to these groups.
  • --sequences <str>: Scope to these sequences.
  • --entries <str>: Scope to group:sequence pairs (repeatable). A bare token is a sequence in the empty group.
  • --overwrite
  • --republish: Rebuild each entry's tracks table from the tracker's existing output without running the tracker. Pass the original run's --set values: they name the run being republished.
  • --convert-to-tracks / --no-convert-to-tracks: [default: convert-to-tracks]
  • --idle-timeout <float>: Kill a phase after this many seconds with no output from the tool. [default: 900]
  • --max-runtime <float>: Optional absolute wall-clock ceiling.
  • --owner <str>
  • --execution-id <str>: Reuse an externally minted ULID.
  • --json: Emit one JSON object on stdout.
  • --help: Show this message and exit.

mosaic describe

Describe a dataset: its manifest, counts, track schemas and frame rates.

Usage:

$ mosaic describe [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic sequences

List sequences (optionally filtered by group) from tracks/index.csv.

Usage:

$ mosaic sequences [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --group <str>: Restrict to one group namespace.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic preview

Preview one entry's table: schema, row count, frame extent, rows and statistics.

Usage:

$ mosaic preview [OPTIONS] {ref}

Arguments:

  • ref: The artifact's ref, as 'mosaic inventory' prints it: feature//, tracks-variant/ or labels-variant//. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --entry <str>: The group:sequence entry whose table to read. A bare name is a sequence in the empty group. [required]
  • --column <str>: Read this column for the rows and statistics (repeatable). A name with , ? or [ is a pattern, such as 'W__f0', unless a column has that name. Default: every column.
  • --max-columns <int range>: Read at most this many columns, the identity and bookkeeping columns first, and name the rest as omitted. [x>=1]
  • --listed <all|read>: List every column of the table, or only the columns read. [default: all]
  • --limit <int>: How many rows to print, at most 50 (default 20).
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic init

Create a dataset: write dataset.yaml and the roots it declares.

Usage:

$ mosaic init [OPTIONS] [directory]

Arguments:

  • directory: Dataset directory. Created if it does not exist. [default: .]

Options:

  • --name <str>: Dataset name. Defaults to the directory name.
  • --version <str>: The dataset's own version string. [default: 0.1.0]
  • --root <str>: Override one root as KEY=PATH, relative to the dataset (repeatable).
  • --tag <str>: Add a text tag as NAME=VALUE (repeatable). For a typed tag, use 'mosaic tags define' afterwards.
  • --note <str>: Notes text for the dataset.
  • --notes-file <path>: Read the notes from this file instead.
  • --force: Overwrite an existing manifest.
  • --json: Emit the manifest path as JSON.
  • --help: Show this message and exit.

mosaic scan

Rescan every declared source and rewrite the indexes it feeds.

Usage:

$ mosaic scan [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Restrict to one kind (repeatable). Default: all.
  • --only <str>: Restrict to these source ids (repeatable). The declaration is unchanged.
  • --reassign: Let the scan re-derive identity for rows a caller assigned. Off by default: a scan's identity is a guess and an assignment is not.
  • --prune-unsourced: Also drop rows no scanned source claims. Off by default: those are usually an assignment or a reference to a file elsewhere.
  • --json: Emit the written index paths as JSON.
  • --help: Show this message and exit.

mosaic reindex

Drop index rows whose files no longer exist, in every root or one.

Covers tracks, features, and each tracker and inference root under _tracking -- which until item 6.1 were reached by no reindex, prune or portability pass at all, so a working directory removed by hand left a row naming it forever.

Relocated-but-present rows (a moved or synced dataset) are kept -- use make_portable / rewrite_index_paths for those. Never deletes output files. Dry-run by default; pass --apply to write.

Usage:

$ mosaic reindex [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --feature <str>: Restrict to a single feature storage name.
  • --root <str>: Restrict to one root key (tracks, features, trex, sleap, ...). Default is every root with a reconcilable index.
  • --apply / --dry-run: Rewrite indexes (drop stale rows). Default is a dry-run report. [default: dry-run]
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic reconcile

Recompute every artifact's identifier and re-address what the code moved.

For each feature (and, as their reconcilers land, tracks and labels) run, the run_id is recomputed from the current code and compared with the recorded one. A run whose identifier moved and whose recorded provenance confirms its inputs unchanged is re-addressed -- its directory renamed, its index rows restamped, its marker refreshed, the index backed up first. A run that cannot be confirmed is reported and left, to be recomputed by an ordinary run.

Idempotent and resumable: it reads the .identity_scheme marker each run was minted under, so a re-run over an already-migrated dataset reports every run ok. Dry-run by default; --apply writes.

Usage:

$ mosaic reconcile [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Perform the re-addresses and marker refreshes. Default is a dry-run report. [default: dry-run]
  • --force: Reserved for the destructive path (deleting derivatives whose identity moved but could not be re-addressed); not yet wired.
  • --only <str>: Restrict to one artifact kind (repeatable), e.g. --only features.
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic reprobe-media

Re-probe the media files the media index already lists, in place.

Where index-media scans directories to BUILD a media index, this re-probes the media index that ALREADY EXISTS: every file it lists is measured again and the measurement written back into that row. The index is authoritative -- group, sequence, order and paths are read from it and never re-derived.

It is also the migration path for an index written before a column existed. An index whose header lacks the identity columns outright is widened to the current schema and written back complete, so one run takes an old media index to the full current column set with video_uuid and content_digest populated for every row that can carry them.

A row whose media is missing from disk, or present but impossible to probe, aborts the run before anything is written, so the media index is never left half-identified; --skip-unreadable leaves those rows verbatim and migrates the rest. The two conditions are always counted and listed separately: a missing file is expected on an old corpus, while one that will not probe is a corruption signal. A file whose measured identity has drifted from a recorded one is counted and reported, and the run continues with the fresh measurement; a row that recorded no identity at all is not drift, it is the ordinary migration case.

Dry-run by default; pass --apply to write. An applied run leaves a timestamped backup of every index it modifies.

Usage:

$ mosaic reprobe-media [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Rewrite the media index in place. Default is a dry-run report. [default: dry-run]
  • --skip-unreadable: Leave rows untouched instead of aborting when their media is missing from disk or is present but cannot be probed. The two are reported separately either way.
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic prune-media

Delete transcode derivatives that no forward link reaches.

A retuned recipe writes a new derivative and overwrites the link cell, leaving the old file and its index row behind with nothing addressing them. Deleting one costs a re-encode that was going to happen anyway; passing --relink avoids that re-encode where a current recipe would reproduce the file. A derivative whose source is no longer indexed is never deleted -- it may be the last copy of an archived video. Dry-run by default.

Usage:

$ mosaic prune-media [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Delete unreferenced derivatives. Default is a dry-run report. [default: dry-run]
  • --min-age-hours <float>: Never delete a file modified inside this window. An in-flight encode's working file looks exactly like a stranded one, so this is what keeps a prune from racing a running job. [default: 24.0]
  • --relink: Also repair: point a link at an unreferenced derivative a current recipe would reproduce, and clear a link whose file is gone. Turns the next run's re-encode into a skip.
  • --include-stray: Also delete files under the transcode directory that are not derivatives, such as an interrupted encode's working file. Subdirectories and symlinks are never deleted.
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic prune-joined

Delete joined exports an earlier version of export-joined made.

A tracker reads a join only under a recipe the current export-joined writes, so after an upgrade that changes it, every existing join is read by nothing and re-joining writes the current one beside it. This deletes the old ones. A join whose clips no entry resolves to is never deleted, since it may be the last copy of the session. Neither is either of two current joins of one entry. Dry-run by default.

Usage:

$ mosaic prune-joined [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Delete superseded joins. Default is a dry-run report. [default: dry-run]
  • --min-age-hours <float>: Never delete a file modified inside this window. A join being written looks exactly like one left behind, so this is what keeps a prune from racing a running export-joined. [default: 24.0]
  • --include-stray: Also delete files under the joined directory that are not joins, such as the partial a failed join keeps for inspection. Subdirectories and symlinks are never deleted.
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic sweep-tracking

Delete tracker working directories that are finished and past their window.

Never touches work in progress: a directory a live execution holds, or one this dataset's index does not yet name, is reported and left alone. A shared conversion is refused for as long as any surviving tracker directory names it as its input, whatever its age -- sweep the runs that read it first. Rows go before files, so an interrupted sweep leaves rows naming absent directories -- which mosaic reindex repairs -- rather than files nothing names.

Dry-run by default; pass --apply to delete.

Usage:

$ mosaic sweep-tracking [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Delete what is reclaimable. Default is a dry-run report. [default: dry-run]
  • --root <str>: Restrict to one tracker root (repeatable): trex, sleap, ...
  • --tracker-days <float>: Keep finished tracker output this long (default 14). [default: 14.0]
  • --inference-days <float>: Keep finished inference output this long (default 3). [default: 3.0]
  • --conversion-days <float>: Keep an unreferenced shared conversion this long (default 14). One a tracker run still names is refused whatever its age. [default: 14.0]
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic measure-tracks

Measure the frame axis of this dataset's tracks tables, and their media's.

Four passes over tracks/index.csv, none touching a table:

  • the frame extent (frame_min / frame_max), read from each parquet into the cells that are blank. Blank refuses overlap_frames, so a dataset converted before the columns existed has to be measured once before it can use overlap.
  • the media length (media_frames): how many frames the tool should have read, from the media index, by the rule that a producer records it by. A table whose run read less on purpose is given a blank cell: a frame window, or a trimmed or decimated media variant. So is a table that no tool made from media, such as a converted or resampled one.
  • the frames read (frames_read): how many frames the tool did read, from what the run left on disk. That is the .pv of a TRex conversion, the response the Ultralytics runner wrote beside its predictions, or a Lightning Pose table, which has a row at every frame read. A table that no tool made from media is given a blank cell.
  • the known tail loss (known_tail_loss): how many frames short of the end of the file it read the tool is known to stop, from the header of the file the run recorded reading. Only TRex has one, and its .pv names the file. Several clips that TRex read as a list are allowed none, which the TRex run index still shows once the .pv is swept.

The last three rewrite each row to what the rule gives: a count over a blank or a different value, and a blank where the rule leaves one, clearing what an earlier pass filled. A row whose run cannot be established keeps its value and is counted as not established: its variant record, media or files are missing or have changed, or its producer leaves no file the pass can read, as SLEAP and infer-localizer do.

Then it reports every table whose tool read a different number of frames than its media holds (frames_read against media_frames), naming its variant: an entry re-tracked under a new recipe holds the old table too, and each is reported for itself rather than one being resolved to. Where the missing frames are not all at the end, the table's frame column does not address the video. Everything computed inside such a table is unaffected; what breaks is anything that reads a pixel at a track frame.

A shortfall within what the tool is known to lose at the end of the file it read is reported apart, as a known tail loss. TRex has one. It does not read the frames its decoder holds back to reorder, and reads one fewer when the container records no frame count, so it loses none of an AV1 file and 2 frames of an H.264 file with B-frames. A row whose file's header was not read is allowed the most TRex loses on any file, 3, and the report says so. A count cannot show that the missing frames are at the end, and the report says that too.

This is the one way to ask that question of any table already on disk. A run records the cells and the comparison as it publishes, and only TRex can publish a table again without tracking again (mosaic track trex --republish). A table published before the cells existed is measured here, and reported here, or not at all.

Dry-run by default. A disagreement it finds is a measurement, not a verdict, and no table is refused.

Usage:

$ mosaic measure-tracks [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Write the measurements. Default is a dry-run report. [default: dry-run]
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic upgrade-tracks

Convert this dataset's TRex tables from centimeters to pixels, in place.

Reconverting is the better route and this is not it. convert-tracks re-reads the .npz, so it depends on nothing a previous conversion happened to keep. Use this only when the raw export is gone -- typically reclaimed by sweep-tracking once its run passed the retention window.

It works because TRex records the factor it scaled by inside every export, and the old conversion copied that field through to the table. A table that does not carry it is refused rather than assumed to be unscaled: centimeters and pixels are indistinguishable once the number is lost, so guessing would be wrong silently.

Results land under the variant a reconversion would have produced, so converting the same entry properly later finds its table already in place rather than writing a second one beside it.

Dry-run by default, because this rewrites data rather than an index.

Usage:

$ mosaic upgrade-tracks [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --apply / --dry-run: Write the rescaled tables. Default is a dry-run report. [default: dry-run]
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic convert-tracks

Convert all raw tracks into schema-valid parquet under tracks/.

Usage:

$ mosaic convert-tracks [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --params <str>: Converter params as JSON, @file.json, or @-.
  • --overwrite: Overwrite existing output parquet files.
  • --merge-per-sequence / --no-merge-per-sequence: Merge rows per (group, sequence). Default: each format's converter decides. --merge-per-sequence forces it for every format, --no-merge-per-sequence for none.
  • --group-from <str>: 'filename' | 'infile' | 'both'. Default: filename, the group the source's --group-from gives each file, else the group inside the file, as convert-labels names the same file's labels.
  • --source-format <str>: Convert only the raw rows of this format (e.g. 'calms21_npy').
  • --strict-schema / --no-strict-schema: Refuse a table that fails schema validation instead of warning and skipping its sequence. Off by default, which is the converter default. [default: no-strict-schema]
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic convert-labels

Convert all raw labels for a kind into mosaic's label format.

Usage:

$ mosaic convert-labels [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Label kind, e.g. 'behavior' or 'id_tags'. [default: behavior]
  • --source-format <str>: Source format (e.g. 'calms21_npy', 'boris_csv').
  • --params <str>: Converter params as JSON, @file.json, or @-.
  • --overwrite: Overwrite existing label files.
  • --json: Emit the result as JSON.
  • --help: Show this message and exit.

mosaic runs

List run attempts newest first, or the entities that one attempt lost.

Usage:

$ mosaic runs [OPTIONS] COMMAND [ARGS]...

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml).
  • --kind <str>: Filter by runs.kind ('feature', 'trex', or an op kind).
  • --status <str>: Filter by status (running|finished|failed|cancelled).
  • --target <str>: Filter by exact runs.target (feature-slug filter).
  • --limit <int range>: List at most this many attempts. [x>=1]
  • --after <str>: Start after the page that printed this next_after.
  • --json: Emit the rows as a JSON array, or a page object with --limit/--after.
  • --help: Show this message and exit.

Commands:

  • errors: List the entities that one attempt lost,...

mosaic runs errors

List the entities that one attempt lost, each with its failure record.

Each entity's retry state says whether a pipeline request attempts it again: ready, waiting until not_before, quarantined until a request with allow_partial proceeds without it, or unrecorded when its record counts zero failures.

Usage:

$ mosaic runs errors [OPTIONS] {execution_id}

Arguments:

  • execution_id: The attempt ULID whose lost entities to list. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). Defaults to the one given before 'errors'.
  • --limit <int range>: List at most this many entities (default 20). [x>=1]
  • --json: Emit as JSON on stdout.
  • --help: Show this message and exit.

mosaic features

Discover features and their parameter schemas.

Usage:

$ mosaic features [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List the registered features with their...
  • describe: Describe one feature: its params and the...

mosaic features list

List the registered features with their lanes and columns.

Without --query the list is sorted by slug. With --query it holds only the features that match, best match first: the name, then words of the name, then the summary or category. Under --json each row also names what the installation lacks to run the feature and any use its license forbids.

Usage:

$ mosaic features list [OPTIONS]

Options:

  • --query <str>: List only the features whose name, summary or category contains every word, best match first.
  • --json: Emit the list as a JSON array.
  • --help: Show this message and exit.

mosaic features describe

Describe one feature: its params and the columns it reads and writes.

Also names its version, category and lane, what it consumes, whether its output depends on its scope, what the installation lacks to run it, and any use its license forbids. Each params field is a row, nested ones as dotted paths; --detail schema adds the params JSON Schema.

Usage:

$ mosaic features describe [OPTIONS] {slug}

Arguments:

  • slug: Feature slug, e.g. 'speed-angvel'. [required]

Options:

  • --detail <fields|schema>: 'fields' prints a row per params field, nested ones as dotted paths. 'schema' also prints the params JSON Schema. [default: fields]
  • --json: Emit the description as JSON.
  • --help: Show this message and exit.

mosaic tracking

Discover tracking ops and their parameter schemas.

Usage:

$ mosaic tracking [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: List every registered tracking op, sorted...
  • describe: Describe one tracking op: kind, category,...

mosaic tracking list

List every registered tracking op, sorted by kind.

Usage:

$ mosaic tracking list [OPTIONS]

Options:

  • --category <str>: Filter by category (extract|train|infer|convert).
  • --json: Emit the list as a JSON array.
  • --help: Show this message and exit.

mosaic tracking describe

Describe one tracking op: kind, category, version, and its params JSON-Schema.

Usage:

$ mosaic tracking describe [OPTIONS] {kind}

Arguments:

  • kind: Tracking-op kind, e.g. 'infer-pose'. [required]

Options:

  • --json: Emit the description as JSON.
  • --help: Show this message and exit.

mosaic media

Probe a video, compare two videos for duplication, and run the minimum ffmpeg transcode a verdict calls for.

Usage:

$ mosaic media [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • probe: Probe FILE and print its MediaFacts and...
  • compare: Report whether LEFT and RIGHT are the same...
  • transcode: Transcode FILE for the analysis or...

mosaic media probe

Probe FILE and print its MediaFacts and both verdicts as JSON on stdout.

Usage:

$ mosaic media probe [OPTIONS] {file}

Arguments:

  • file: [required]

Options:

  • --help: Show this message and exit.

mosaic media compare

Report whether LEFT and RIGHT are the same video, as JSON and an exit code.

Probes both files. The ingestion pathway compares stored facts instead and never re-probes; this command takes paths for ad-hoc use. LEFT is the reference: both tolerances are derived from it, so the comparison is not symmetric when the two files' durations differ.

The verdict is also the exit code: duplicate is 0, distinct is 3, different_timing is 4, and timing_unknown is 5. 1 is the probe-failure code the other commands use, and 2 is skipped because click already exits 2 on a usage error such as a mistyped option.

Usage:

$ mosaic media compare [OPTIONS] {left} {right}

Arguments:

  • left: [required]
  • right: [required]

Options:

  • --fps-tolerance <float>: Absolute frames-per-second tolerance. Omit to derive it from the reference file's duration, which is correct unless you have a specific reason to override it.
  • --duration-tolerance <float>: Absolute duration tolerance in seconds. Omit to derive it.
  • --help: Show this message and exit.

mosaic media transcode

Transcode FILE for the analysis or playback target, running the minimum operation.

Usage:

$ mosaic media transcode [OPTIONS] {file}

Arguments:

  • file: [required]

Options:

  • --target <analysis|playback>: Which derivative to produce: analysis or playback. [required]
  • --output <path>: Output file path, or an existing directory the derivative is written into under the source stem. Required: the CLI knows no dataset layout. [required]
  • --profile <chrome-149>: Playback policy profile. [default: chrome-149]
  • --allow-hardware / --no-hardware: Permit av1_nvenc hardware encoding. Taken only when this machine can actually open that encoder: a build listing it on a device that cannot run it encodes on the CPU instead. Off by default. [default: no-hardware]
  • --help: Show this message and exit.

mosaic inventory

Report every computed artifact, its identity and its coverage.

Usage:

$ mosaic inventory [OPTIONS] COMMAND [ARGS]...

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml).
  • --kind <str>: Restrict to an artifact kind (repeatable): feature, tracks-variant, labels-variant, label-series, tracker-run, frame-run, trained-model, prepared-dataset, media-derivative, media-variant.
  • --entry <str>: Narrow to a group:sequence entry (repeatable). Default: the whole dataset.
  • --tracks-run-id <str>: Keep the feature runs that read this tracks variant, measured over its entries. '' keeps the runs over the unlabeled tables alone.
  • --status-not <str>: Leave out a status (repeatable): absent, partial, complete, complete-but-drifted, inconsistent.
  • --limit <int range>: List at most this many artifacts. [x>=1]
  • --cursor <str>: Start after the page that printed this cursor.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

Commands:

  • show: Report one artifact in depth: its recorded...

mosaic inventory show

Report one artifact in depth: its recorded params, orphans and drift.

Usage:

$ mosaic inventory show [OPTIONS] {ref}

Arguments:

  • ref: The artifact's ref, as a listing prints it: its kind and the parts of its key joined by '/', e.g. feature//. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). Defaults to the one given before 'show'.
  • --entry <str>: Narrow to a group:sequence entry (repeatable). Default: the whole dataset.
  • --tracks-run-id <str>: Keep the feature runs that read this tracks variant, measured over its entries. '' keeps the runs over the unlabeled tables alone.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic models

Ask about trained models: this dataset's, and its linked libraries'.

Usage:

$ mosaic models [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • provenance: Show what a model was trained on, back to...

mosaic models provenance

Show what a model was trained on, back to the exact annotation revisions.

Usage:

$ mosaic models provenance [OPTIONS] {run_id}

Arguments:

  • run_id: The model's run id. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: The training op. Read from the run id when it is left out.
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic pipeline

Validate, plan and run a pipeline recipe.

Usage:

$ mosaic pipeline [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • catalog: List the step types a recipe may run, or...
  • validate: Check a recipe against the registries.
  • plan: Resolve a recipe against a dataset:...
  • show: Print a recipe's steps and the references...
  • submit: Record a submission of a recipe, and print...
  • run: Run every step of a recipe here, in order,...
  • status: Say how far one submission got, from its...
  • list: List the dataset's pipeline requests...

mosaic pipeline catalog

List the step types a recipe may run, or describe the one NAME names.

Without NAME, --json prints the whole catalog with its params schemas. With NAME, the step type's facts and a row per params field are printed, and --detail schema adds its params JSON Schema.

Usage:

$ mosaic pipeline catalog [OPTIONS] [NAME]

Arguments:

  • NAME: A feature slug, an op kind or 'tracks', to describe that one.

Options:

  • --detail <fields|schema>: 'fields' prints a row per params field, nested ones as dotted paths. 'schema' also prints the params JSON Schema. [default: fields]
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline validate

Check a recipe against the registries. Opens no dataset.

Usage:

$ mosaic pipeline validate [OPTIONS]

Options:

  • -r, --recipe <str>: Recipe as @file.json, @- for stdin, or an inline JSON object. [required]
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline plan

Resolve a recipe against a dataset: identities, coverage, what is left.

Exits 1 when the dataset refuses the recipe. Under --json the plan is printed with its problems. The requests of the recipe over an overlapping scope that have not ended, running or orphaned, are listed with it. --step-scope narrows one step, as a train/test split narrows the fit to the training groups and the scoring to the test groups. --cleanup superseded also reports the superseded runs of the recipe's feature storages, and the fingerprint then covers the ones removable. It also lists the saved recipes whose requests wrote runs, and --retire <digest> judges the runs of one of them too, in any storage. It writes nothing.

Usage:

$ mosaic pipeline plan [OPTIONS]

Options:

  • -r, --recipe <str>: Recipe as @file.json, @- for stdin, or an inline JSON object. [required]
  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --entry <str>: Narrow to a group:sequence entry (repeatable). Default: the whole dataset.
  • --group <str>: Narrow to every entry of a group (repeatable). Not with --entry.
  • --step-scope <str>: Narrow one step to part of the request's scope, as STEP=SCOPE where SCOPE is a JSON selector such as {"groups": ["train"]} or {"entries": [["g", "s"]]}, or @file.json (repeatable).
  • --cleanup <none|superseded>: 'superseded' reports the other runs of the recipe's feature storages, each removable or kept with its reason; on submit and run they are removed after every step finished. Needs --expect-plan there. [default: none]
  • --keep-newest <int range>: With --cleanup, keep this many superseded runs per storage, newest first. [default: 1; x>=0]
  • --min-age-hours <float range>: With --cleanup, keep every run younger than this many hours. [default: 24.0; x>=0]
  • --retire <str>: With --cleanup superseded, also judge the runs that this saved recipe's requests wrote, in any storage (repeatable; a recipe digest, which 'pipeline plan --cleanup superseded' lists). It applies to this plan or submission only: give it to the plan and again to the submission.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline show

Print a recipe's steps and the references between them. No dataset.

Usage:

$ mosaic pipeline show [OPTIONS]

Options:

  • -r, --recipe <str>: Recipe as @file.json, @- for stdin, or an inline JSON object. [required]
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline submit

Record a submission of a recipe, and print the command for every step.

Writes the recipe and a request beside it into the dataset, assigns one attempt id per step, and pins the version every step's producer declares. Nothing is executed: the printed commands are, and any driver that can run them in dependency order will run the graph correctly.

An open request of the same recipe over an overlapping scope is reported on stderr and under duplicates, or refuses the submission with --refuse-duplicates.

--cleanup superseded records the runs that the plan reviewed under --expect-plan found removable, and whatever runs the request removes them after every step has finished. --retire <digest> adds the runs that a saved recipe's requests wrote, in any storage, and the plan reviewed must have been planned with the same digests. A queue that dispatches the steps itself runs no cleanup: pipeline run --request does.

Usage:

$ mosaic pipeline submit [OPTIONS]

Options:

  • -r, --recipe <str>: Recipe as @file.json, @- for stdin, or an inline JSON object. [required]
  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --entry <str>: Narrow to a group:sequence entry (repeatable). Default: the whole dataset.
  • --group <str>: Narrow to every entry of a group (repeatable). Not with --entry.
  • --step-scope <str>: Narrow one step to part of the request's scope, as STEP=SCOPE where SCOPE is a JSON selector such as {"groups": ["train"]} or {"entries": [["g", "s"]]}, or @file.json (repeatable).
  • --allow-partial: Let a step proceed when it would run over less than planned.
  • --max-concurrent-steps <int>: How many of this request's steps may run at once. Advisory here.
  • --owner <str>: Recorded on the request and its attempts.
  • --expect-plan <str>: The fingerprint that 'mosaic pipeline plan' printed. Refuses the submission, writing nothing, when the plan has changed since.
  • --refuse-duplicates: Refuse the submission, writing nothing, while a request of the same recipe over an overlapping scope has not ended. A submitted request whose steps were never run has not ended.
  • --cleanup <none|superseded>: 'superseded' reports the other runs of the recipe's feature storages, each removable or kept with its reason; on submit and run they are removed after every step finished. Needs --expect-plan there. [default: none]
  • --keep-newest <int range>: With --cleanup, keep this many superseded runs per storage, newest first. [default: 1; x>=0]
  • --min-age-hours <float range>: With --cleanup, keep every run younger than this many hours. [default: 24.0; x>=0]
  • --retire <str>: With --cleanup superseded, also judge the runs that this saved recipe's requests wrote, in any storage (repeatable; a recipe digest, which 'pipeline plan --cleanup superseded' lists). It applies to this plan or submission only: give it to the plan and again to the submission.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline run

Run every step of a recipe here, in order, skipping what is already done.

An open request of the same recipe over an overlapping scope is reported on stderr. With --request the steps of a submitted request run instead, and the command exits 1 when the request failed. Either way it exits 130 when the run was cancelled, by SIGTERM, SIGINT or mosaic cancel.

With --cleanup superseded --expect-plan the runs that plan found removable are removed once every step has finished, and the command exits 1 when that cleanup failed. --retire <digest> adds the runs that a saved recipe's requests wrote, in any storage, to what that plan reviewed. --request runs the cleanup its request recorded.

--workers computes several entries of each parallelizable feature at once. It belongs to the machine and changes neither a run's identity nor its outputs, so --request accepts it where it rejects the options above. Memory grows with the worker count, most steeply with --parallel-mode process.

Usage:

$ mosaic pipeline run [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • -r, --recipe <str>: Recipe to submit and run, as @file.json, @- for stdin, or an inline JSON object.
  • --request <str>: Run the unfinished steps of this submitted request, each as its own process, instead of submitting --recipe. Running it again resumes it.
  • --detach: With --request, start the driver in a new session, print its pid and return. The driver and its steps append their output to the request's log under .mosaic/drivers/.
  • --entry <str>: Narrow to a group:sequence entry (repeatable). Default: the whole dataset.
  • --group <str>: Narrow to every entry of a group (repeatable). Not with --entry.
  • --step-scope <str>: Narrow one step to part of the request's scope, as STEP=SCOPE where SCOPE is a JSON selector such as {"groups": ["train"]} or {"entries": [["g", "s"]]}, or @file.json (repeatable).
  • --allow-partial: Proceed when a step would run over less than it was planned for, or when it produces nothing new.
  • --owner <str>: Recorded on each attempt.
  • --cleanup <none|superseded>: 'superseded' reports the other runs of the recipe's feature storages, each removable or kept with its reason; on submit and run they are removed after every step finished. Needs --expect-plan there. [default: none]
  • --keep-newest <int range>: With --cleanup, keep this many superseded runs per storage, newest first. [default: 1; x>=0]
  • --min-age-hours <float range>: With --cleanup, keep every run younger than this many hours. [default: 24.0; x>=0]
  • --retire <str>: With --cleanup superseded, also judge the runs that this saved recipe's requests wrote, in any storage (repeatable; a recipe digest, which 'pipeline plan --cleanup superseded' lists). It applies to this plan or submission only: give it to the plan and again to the submission.
  • --expect-plan <str>: With --recipe, the fingerprint that 'mosaic pipeline plan' printed. Refuses the run, writing nothing, when the plan has changed since. Required with --cleanup.
  • --workers <int range>: Compute this many entries of a parallelizable feature at once. The default computes them in turn. More workers use more memory. [1<=x<=32]
  • --parallel-mode <thread|process>: With --workers above 1, 'thread' (the default) shares one copy of the feature. 'process' uses every core but spawns an interpreter per worker and copies each entry's table to it, so it uses far more memory.
  • --min-free-memory-fraction <float range>: With --workers above 1, the share of the host's memory that must stay available. The run waits for its in-flight entries while the share is lower, and fails when it is still lower with none in flight. 0 turns the check off. [default: 0.0; 0.0<=x<=0.99]
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline status

Say how far one submission got, from its steps' own attempt logs.

Deliberately not a coverage report: whether every step's work is done is a question about artifacts, which plan answers. This one is about attempts, so it stays cheap enough to poll. Each step reports its outcome, progress, recorded error and first 20 failed entries, its phase and its liveness, and the request a verdict that names a finished request with lost entries partial. A running request reads orphaned when nothing drives it: its driver lease is stale and none of its step processes may still run, or it has no lease and each of its running steps is provably dead (its pid exited, its host rebooted, or it wrote nothing for ten heartbeat intervals). pipeline run --request resumes it. A step of unknown liveness runs on another host whose run-log declares no heartbeat, and mosaic cancel --assume-exited records it once its process is known to have exited.

--wait-seconds waits instead of polling: the report comes as soon as a step has ended since the command began, or the request has ended or reads orphaned, and otherwise when the time is up. --brief lists the steps that are running or did not finish cleanly, and counts the others.

Usage:

$ mosaic pipeline status [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --request <str>: Which submission to report on. [required]
  • --wait-seconds <int range>: Wait up to this many seconds for a step to end, and report as soon as one has, or the request has. 0 reports at once. [default: 0; 0<=x<=45]
  • --brief: List only the steps that are running, failed, cancelled or partial, and those that ended during the wait. Count the rest.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic pipeline list

List the dataset's pipeline requests newest first, each with its verdict.

Only the requests on the page are read, each from its steps' attempt logs.

Usage:

$ mosaic pipeline list [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --limit <int range>: List at most this many requests. [x>=1]
  • --after <str>: Start after the page that printed this next_after.
  • --json: Emit as a JSON object.
  • --help: Show this message and exit.

mosaic agent

Print or install the guide for an AI agent that uses mosaic, or serve it MCP tools.

Usage:

$ mosaic agent [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • guide: Print the agent guide for this version,...
  • install: Point a project's AI coding agents at...
  • serve: Serve mosaic's MCP tools, resources and...
  • confirm-hook: Answer a confirmation of mosaic's MCP...

mosaic agent guide

Print the agent guide for this version, then this installation's paths.

Usage:

$ mosaic agent guide [OPTIONS]

Options:

  • --help: Show this message and exit.

mosaic agent install

Point a project's AI coding agents at mosaic agent guide.

Writes .claude/skills/mosaic/SKILL.md, and a marked block in CLAUDE.md and AGENTS.md (creating CLAUDE.md when neither exists). With --mcp, also writes the mosaic server entry of .mcp.json, which Claude Code reads, and keeps the file's other servers. Running it again replaces what it wrote.

Usage:

$ mosaic agent install [OPTIONS] [directory]

Arguments:

  • directory: Project directory. Defaults to the working directory. [default: .]

Options:

  • --no-memory: Write the skill only, and leave CLAUDE.md and AGENTS.md alone.
  • --mcp: Also register mosaic agent serve in the project's .mcp.json.
  • --dataset <path>: With --mcp, a dataset the server serves: its manifest or its directory. Repeatable. Defaults to the datasets in and below the project directory, else the one enclosing it.
  • --help: Show this message and exit.

mosaic agent serve

Serve mosaic's MCP tools, resources and prompts to one client over stdio.

An MCP client starts this command and speaks JSON-RPC on its standard input and output, so the command writes its own messages to standard error. It needs the mcp extra. mosaic agent install --mcp registers it for Claude Code.

Usage:

$ mosaic agent serve [OPTIONS]

Options:

  • --dataset <path>: A dataset to serve: its manifest or its directory. Repeatable.
  • --config <path>: A YAML file listing datasets, discover directories, allow_managed_writes, allow_cleanup, the cleanup policy, and the parallelism limits max_workers, allow_process_mode and min_free_memory_fraction. Its relative paths are read from its directory.
  • --allow-managed-writes: Let submit_pipeline and cancel_request change a dataset whose manifest names a managing service.
  • --allow-cleanup <str>: Let submit_pipeline remove superseded feature runs with cleanup 'superseded', and with retire the runs that a retired recipe wrote, after the user confirms. Repeatable; the one class is feature-runs. The policy is the config file's cleanup.
  • --help: Show this message and exit.

mosaic agent confirm-hook

Answer a confirmation of mosaic's MCP server as a Claude Code Elicitation hook.

Reads the hook's JSON input on standard input. A confirmation whose conditions are all approved is accepted. Any other is answered as --otherwise says. Another server's elicitation, or input that is not a confirmation, prints nothing and is left to the client's dialog.

Usage:

$ mosaic agent confirm-hook [OPTIONS]

Options:

  • --approve <str>: A confirmation condition to accept, such as gpu_lane, training_op, tracking_op, allow_partial, bind, open_duplicate, cleanup or hard_cancel. Repeatable.
  • --otherwise <ask|cancel|decline>: What to answer a confirmation with a condition not approved: decline it, cancel it, or ask (print nothing and leave it to the dialog). decline keeps any other hook from accepting it. [default: decline]
  • --server <str>: The name under which the client lists mosaic's server. [default: mosaic]
  • --help: Show this message and exit.

mosaic sources

Declare and inspect the directories and files a dataset scans.

Usage:

$ mosaic sources [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show every declared source, and whether...
  • add: Declare a source.
  • add-files: Add files to a file source: a second...
  • remove-files: Drop files from a file source, and their...
  • remove: Undeclare a source.

mosaic sources list

Show every declared source, and whether its files are currently there.

Usage:

$ mosaic sources list [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Restrict to one kind. Default: all three.
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic sources add

Declare a source. A source may point outside the dataset, unlike a root.

Usage:

$ mosaic sources add [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Which raw root: media, tracks or labels. [required]
  • --path <str>: Where the files are. May be outside the dataset. [required]
  • --id <str>: Stable handle. Defaults to the directory name.
  • --file <str>: Claim only this file, relative to --path (repeatable). Makes this a file source, which claims nothing else beside it.
  • --files-from <path>: Read the file list from this file, one per line.
  • --recursive / --no-recursive: Walk subdirectories. [default: recursive]
  • --extensions <str>: Media only: comma-separated suffixes.
  • --layout <str>: Media only: 'stem' or 'per_sequence'.
  • --match-mode <str>: Media only: 'exact' or 'prefix'.
  • --patterns <str>: Tracks/labels only: comma-separated globs.
  • --src-format <str>: Tracks/labels only: which converter reads these.
  • --exclude-patterns <str>: Tracks/labels only: basename globs to skip.
  • --multi-sequences-per-file: One file holds several sequences.
  • --group-from <str>: 'filename' or 'parent'. Multi-sequence files only.
  • --group-pattern <str>: Regex extracting the group from a path.
  • --md5 / --no-md5: Checksum each file. On by default: the composition hash is over these. [default: md5]
  • --series <str>: Labels only: claim revisions of this versioned label series (e.g. 'keypoints') instead of uploaded label files. Usually with --file, naming exactly the revisions wanted.
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic sources add-files

Add files to a file source: a second import into the same folder.

Usage:

$ mosaic sources add-files [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Which raw root: media, tracks or labels. [required]
  • --id <str>: Which source to extend. [required]
  • --file <str>: Path relative to the source (repeatable). [required]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic sources remove-files

Drop files from a file source, and their index rows with them.

Usage:

$ mosaic sources remove-files [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Which raw root: media, tracks or labels. [required]
  • --id <str>: Which source to shrink. [required]
  • --file <str>: Path relative to the source (repeatable). [required]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic sources remove

Undeclare a source. Its rows stay unless you ask for them to go.

Usage:

$ mosaic sources remove [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --kind <str>: Which raw root: media, tracks or labels. [required]
  • --id <str>: Which source to undeclare. [required]
  • --drop-rows / --keep-rows: Also delete the index rows this source was claiming. [default: keep-rows]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic notes

Read and write the dataset's free-text notes.

Usage:

$ mosaic notes [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • show: Print the dataset's notes.
  • set: Replace the dataset's notes.
  • clear: Remove the dataset's notes.

mosaic notes show

Print the dataset's notes.

Usage:

$ mosaic notes show [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic notes set

Replace the dataset's notes.

Usage:

$ mosaic notes set [OPTIONS] [text]

Arguments:

  • text: The notes. Use '-' to read them from standard input.

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --from-file <path>: Read the notes from this file.
  • --help: Show this message and exit.

mosaic notes clear

Remove the dataset's notes.

Usage:

$ mosaic notes clear [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --help: Show this message and exit.

mosaic tags

Declare and set the dataset's typed tags.

Usage:

$ mosaic tags [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show every tag with its type, constraints...
  • define: Declare a tag, or redeclare one, keeping...
  • set: Set an already-defined tag's value, parsed...
  • remove: Drop a tag.

mosaic tags list

Show every tag with its type, constraints and value.

Usage:

$ mosaic tags list [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic tags define

Declare a tag, or redeclare one, keeping any value that still fits.

Usage:

$ mosaic tags define [OPTIONS] {name}

Arguments:

  • name: The tag name. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --type <str>: label, text, int, float, bool or categorical. [required]
  • --constraints <str>: Constraints as a JSON object.
  • --options <str>: categorical: comma-separated allowed values.
  • --min <float>: int/float: lowest allowed value.
  • --max <float>: int/float: highest allowed value.
  • --max-length <int>: text: longest allowed value.
  • --description <str>: What the tag means.
  • --order <int>: Display order. Ties break on name. [default: 0]
  • --help: Show this message and exit.

mosaic tags set

Set an already-defined tag's value, parsed as its declared type.

Usage:

$ mosaic tags set [OPTIONS] {name} [value]

Arguments:

  • name: The tag to set. [required]
  • value: The value. Omit only for a label tag, which has none.

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --help: Show this message and exit.

mosaic tags remove

Drop a tag.

Usage:

$ mosaic tags remove [OPTIONS] {name}

Arguments:

  • name: The tag to drop. [required]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --help: Show this message and exit.

mosaic libraries

Link the datasets a trained model may be resolved from, by run id.

Usage:

$ mosaic libraries [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • list: Show every linked library, in the order a...
  • add: Link a library, recording its uuid so a...
  • remove: Drop a link.

mosaic libraries list

Show every linked library, in the order a model lookup tries them.

Usage:

$ mosaic libraries list [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --json: Emit JSON.
  • --help: Show this message and exit.

mosaic libraries add

Link a library, recording its uuid so a moved one is told from a wrong one.

Usage:

$ mosaic libraries add [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --id <str>: What to call the link. [required]
  • --path <str>: The library dataset: its directory or its manifest. Relative to this dataset, which is the spelling that survives the tree being mounted somewhere else. [required]
  • --uuid <str>: The library's own uuid, to insist on. Left out, the uuid found at the path is recorded.
  • --help: Show this message and exit.

mosaic libraries remove

Drop a link. Nothing on disk changes; its models stop resolving from here.

Usage:

$ mosaic libraries remove [OPTIONS]

Options:

  • -m, --manifest <path>: Path to the dataset manifest (dataset.yaml). [required]
  • --id <str>: The link to drop. [required]
  • --help: Show this message and exit.