Metadata-Version: 2.4
Name: metrik-cli
Version: 0.2.0
Summary: Metrik command-line interface.
Project-URL: Homepage, https://github.com/Asmodeus14/Metrik
Project-URL: Repository, https://github.com/Asmodeus14/Metrik
Project-URL: Issues, https://github.com/Asmodeus14/Metrik/issues
Author: The Metrik Authors
License-Expression: Apache-2.0
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Requires-Dist: metrik-bench==0.2.0
Requires-Dist: metrik-core==0.2.0
Requires-Dist: metrik-explorer==0.2.0
Requires-Dist: metrik-sdk==0.2.0
Requires-Dist: metrik-viz==0.2.0
Requires-Dist: rich>=13.7
Requires-Dist: typer>=0.12
Description-Content-Type: text/markdown

# metrik-cli

The `metrik` command-line interface.

```console
$ metrik --version
$ metrik store path            # which store am I using, and why
$ metrik store ls              # what is in it
$ metrik store show <id>       # one artifact: envelope + payload
$ metrik store lineage <id>    # trace it back to what it was derived from
$ metrik store verify          # rehash everything; non-zero exit if anything is wrong

$ metrik runs ls               # what has been run here, newest first
$ metrik runs ls --failed      # only the ones that did not succeed
$ metrik runs show <id>        # what was asked, what happened, what came out

$ metrik plugins               # which producers are installed and loadable
```

`<id>` accepts an abbreviated digest (`b3:f8fae13`), the way `git` accepts a short commit.

A run is recorded **whether the work succeeded or raised**, so a command that produced no
artifacts still leaves a trace — with the failure kind, the message, and the remediation that
was printed at the time. A success can be re-derived from its artifacts; a failure cannot be
re-derived from anything, which is why it is the case most worth recording.

A run whose outputs have gaps in them is `partial`, not `succeeded`. That distinction survives
to the exit status and to `runs ls`, so a script cannot mistake a result with holes for a
complete one.

The CLI is designed dual-mode ([`plan.md`](../../plan.md) §3.1): direct and in-process against
the store today, `--remote` against a daemon from Phase 10. That split is why the CLI can ship
without the API existing.

See [ADR 012](../../docs/planning/adr/012-cli-framework.md) for the Typer + Rich decision.
