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 connecting to a PBIP model, searching expressions, and tracing a measure's dependencies

$ tx connect ./samples/basic-tmdl
Model: basic-tmdl
  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
BPA analysis · basic-tmdl

● WARNING  3 rules · 9 objects
  ×4  Hide foreign keys
      HIDE_FOREIGN_KEYS · Formatting · fixable
  ×4  Provide format string for measures
      PROVIDE_FORMAT_STRING_FOR_MEASURES · Formatting
  ×1  Model should have a date table
      MODEL_SHOULD_HAVE_A_DATE_TABLE · Performance

────────────────────────────────────────────────────────────────────────────────
✗ 9 warnings in 3 of 26 rules · 23 passed · 159ms

Fix 4 findings:  tx bpa run --fix --save
Details:         tx bpa run --details
One rule:        tx bpa run --rule HIDE_FOREIGN_KEYS

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

Every command prints JSON with --output-format json, so the output of any command can become the input of your next script. ls, get, query, refresh, save, and vertipaq also print CSV, and get can emit the model formats too (tmdl, bim, tmsl).

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.