Skip to content

tomix

A command-line interface for semantic models. Browse, edit, lint, diff, and deploy tabular models the way you work with files: ls, get, find, rm, mv — against a TMDL folder, a .bim file, an XMLA endpoint, or a Power BI Desktop instance running on your machine.

Semantic models are code. They deserve tooling that works where code lives: in a terminal, in scripts, in CI, in a diff.

$ tx connect ./samples/basic-tmdl
Model: (unnamed)
  CL: 1601
  tables: 3  measures: 4  relationships: 2  roles: 0

Active: ./samples/basic-tmdl

$ tx ls --type table --paths-only
Customers
Products
Sales

$ tx find "SUM" --in expressions
╭───────────────────┬─────────┬────────────┬───────┬──────╮
│ Path              │ Type    │ Property   │ Match │ Line │
├───────────────────┼─────────┼────────────┼───────┼──────┤
│ Sales/Total Sales │ Measure │ Expression │ SUM   │ 1    │
╰───────────────────┴─────────┴────────────┴───────┴──────╯
1 match(es)

$ tx bpa run
45 findings · 11 errors · 11 warnings · 23 info · 9 rules
19 of 45 can be auto-fixed — run  bpa run --fix

$ tx deploy --server MyWorkspace --database basic-tmdl
OK Deployed basic-tmdl to MyWorkspace (4.1s)

Everything that prints a table also prints JSON or CSV (--output-format json), so the output of any command can become the input of your next script.

Where to start

  • Installation — standalone binary, dotnet tool, or build from source.
  • Quickstart — connect to a sample model and run your first commands in five minutes.
  • Commands — the full command surface, grouped the same way as tx --help.
  • Output & scripting — pipe tx into jq, xargs, and CI.

Status

This is a proof of concept under active development. The command surface is settling but not settled; JSON field names and exit codes may still change before 1.0.

If you try it and something breaks or reads wrong, an issue with the output of tx doctor attached is genuinely useful at this stage.

License

MIT. Third-party components and the provenance of the bundled BPA rules are documented in THIRD-PARTY-NOTICES.md.