Warning
This project is currently in a development phase and not ready for production use. While we actively use these tools internally, our aim is to share and collaborate with the broader community to refine and enhance their capabilities. We are in the process of gradually open-sourcing the code, removing internal dependencies to make it universally applicable. At this stage, it serves as a source of inspiration and a basis for collaboration. We welcome feedback, suggestions, and contributions through pull requests.
If you wish to use this project for your team, please contact us at hello@networg.com for a personalized onboarding experience and customization to meet your specific needs.
TALXIS DevKit CLI (txc) is a code-first toolkit for Power Platform and Dataverse development. Scaffold components locally, validate with builds, and synchronize to a live environment.
- .NET 10 SDK or later (
dotnet --versionshould show10.0.x+) - PowerShell (
pwsh) — required by template post-action scripts - GitHub Copilot CLI (or an alternative AI harness like Claude Code) for MCP
The easiest way to use TALXIS DevKit is through the MCP server with GitHub Copilot or another AI assistant. No manual CLI commands needed — the AI discovers and calls tools for you.
→ MCP Server setup instructions
For scripting, CI/CD pipelines, or when you prefer manual control:
# Run without installing (dnx ships with .NET 10 SDK)
dnx TALXIS.CLI -- workspace explain
# Or install as a global tool
dotnet tool install --global TALXIS.CLI
txc workspace explain- Identity, Connections & Profiles
- Example Usage
- Local Development & Debugging
- Versioning & Release
- Collaboration
Detailed guides: Schema Management · Changeset Staging · Architecture · Profiles & Auth · Output Contract
txc decouples who you are (credentials) from where you target (connections) and exposes the combination as a named profile. Every command that touches a live environment takes exactly one context flag — --profile <name>.
Quickstart for most developers:
txc config profile create --url https://contoso.crm4.dynamics.com/Drop in the Dataverse environment URL, sign in in the browser, and txc creates and selects the profile for you.
For explicit credential / connection / profile steps, repository pinning, or headless / CI setup, see docs/profiles-and-authentication.md.
Important
txc runs on modern .NET across macOS, Linux, and Windows — including Dataverse Package Deployer and Configuration Migration Tool (CMT), which traditionally require Windows.
txc commands fall into two layers:
| Layer | Purpose | Speed | Commands |
|---|---|---|---|
| Workspace | Scaffold & manage components locally in your repo | Instant (local) | txc workspace … |
| Environment | Synchronize with and operate on a live Dataverse environment | Minutes | txc env …, txc data … |
The recommended workflow: Use txc workspace to create and modify components locally (entities, attributes, solution structures), then deploy to the environment with txc env. This is dramatically faster than round-tripping every change through a live org — especially for coding agents that make dozens of changes per session.
The environment layer is organised into three planes:
| Plane | What it covers | Commands |
|---|---|---|
| Control | Environment settings, feature toggles, governance | txc env setting … |
| Application | Solutions, packages, deployments, schema management | txc env sln …, txc env pkg …, txc env deploy …, txc env entity … |
| Data | Records, queries, bulk operations, CMT import/export | txc env data …, txc data … |
The fastest way to build Dataverse components. Everything happens locally in your repo — no environment round-trips, no publish waits. Ideal for coding agents that need to scaffold dozens of components in a session.
# Explore available component types and their parameters
txc workspace component type list
txc workspace component explain pp-entity
# Scaffold a Dataverse entity — instant, local, no environment needed
txc workspace component create pp-entity \
--param Behavior=New \
--param PublisherPrefix=tom \
--param LogicalName=location \
--param DisplayName=Location \
--param DisplayNamePlural=Locations
# When ready, deploy the solution to a live environment
txc env sln import ./out/MySolution_managed.zipImportant
Component scaffolding relies on the TALXIS/tools-devkit-templates repository, where all component types, metadata, and definitions are maintained.
The environment commands below assume you have an active profile (see above). Pass --profile <name> to override for a single call.
Manage environment-level settings exposed by the Power Platform admin API — feature toggles, Copilot flags, IP restrictions, and more.
List environment management settings:
txc env setting list --filter powerAppsEnable Power Apps Code Apps:
txc env setting update powerApps_AllowCodeApps trueDeploy, inspect, and manage solutions and packages in the target environment.
# Deploy a package straight from NuGet, inspect the result
txc env pkg import TALXIS.Controls.FileExplorer.Package
txc env deploy show --package-name TALXIS.Controls.FileExplorer.Package
# Import a solution, target a different environment for one call
txc env sln import ./Solutions/MySolution_managed.zip --profile customer-b-prod
# Uninstall a package cleanly
txc env pkg uninstall TALXIS.Controls.FileExplorer.Package --yesSolution round-tripping and component inspection:
# Import from a folder or .cdsproj project — auto-packs via SolutionPackager
txc env sln import ./src/MySolution/
# Publish customizations after import (makes forms, views, sitemaps visible)
txc env sln publish
# Export, unpack, edit locally, pack, re-import
txc env sln export MySolution --output ./export/MySolution.zip --zip
txc env sln unpack ./export/MySolution.zip --output ./src/MySolution/
txc env sln pack ./src/MySolution/ --output ./out/MySolution.zip
# Inspect solution metadata and component breakdown
txc env sln show MySolution
txc env sln component list MySolution --type entity
# Drill into component layers and dependencies by name — no GUIDs needed
txc env component layer list --entity account --attribute revenue
txc env component dep delete-check --entity tom_projectQuery, create, update, and bulk-operate on Dataverse records — all cross-platform on modern .NET.
Three query languages — pick the one you think in:
# OData — familiar, filterable, composable
txc env data query odata accounts --select "name,revenue" --filter "revenue gt 1000000" --top 10
# FetchXML — full aggregation, linked entities, fiscal date filters
txc env data query fetchxml '<fetch top="5"><entity name="contact"><attribute name="fullname"/></entity></fetch>'
# T-SQL — because sometimes you just want SELECT ... WHERE
txc env data query sql "SELECT fullname, emailaddress1 FROM contact WHERE statecode = 0" --top 20Record CRUD, file columns, relationships, bulk:
txc env data record create --entity account --data '{"name":"Contoso Ltd","revenue":5000000}' --apply
txc env data record upload-file --entity account $ID --column logo --file ./logo.png --apply
txc env data record associate $ID --entity account \
--target $TARGET_ID --target-entity contact --relationship accountleads_association --apply
txc env data bulk upsert --entity contact --file ./contacts.json # CreateMultiple/UpsertMultiple under the hoodConfiguration Migration Tool (CMT) — import, export, convert. Runs natively on macOS/Linux (no Windows VM needed). Exports to a folder by default so you can commit data directly to your repo:
# Export → folder → edit → import round-trip
txc data pkg export --schema ./data_schema.xml --output ./data-package --export-files
txc data pkg import ./data-package
# Advanced tuning options not exposed by PAC CLI or CMT GUI:
txc data pkg import ./data-package \
--batch-mode # ExecuteMultiple batching (vs one-by-one) \
--batch-size 500 # records per batch (default: 200) \
--connection-count 4 # parallel service channels \
--override-safety-checks # skip duplicate detection \
--prefetch-limit 100 # pre-cache record lookups
txc data pkg convert --input export.xlsx --output data.xmlSee docs/configuration-migration.md for the full deep-dive into CMT internals, deduplication logic, and tuning strategies.
Define your Dataverse schema from the terminal — entities, columns, relationships, option sets. Every mutating command supports --apply (execute now) or --stage (queue for batch). See docs/schema-management.md.
# Spin up a new entity with a money column in seconds
txc env entity create --name tom_project \
--display-name "Project" --plural-name "Projects" \
--ownership user --apply
txc env entity attribute create tom_project \
--name tom_budget --type money --display-name "Budget" --apply
# Or stage everything and apply in one optimised batch
txc env entity create --name tom_invoice \
--display-name "Invoice" --plural-name "Invoices" --stage
txc env entity attribute create tom_invoice \
--name tom_amount --type money --display-name "Amount" --stage
txc env entity attribute create tom_invoice \
--name tom_duedate --type datetime --display-name "Due Date" --stage
txc env changeset status # review what's queued
txc env changeset apply --strategy batch # one batch, one publishChangeset staging batches entity creation via the CreateEntities SDK action and consolidates all publishes into a single PublishXml call — dramatically faster than sequential operations. See docs/changeset-staging.md.
Note
Run txc --help or txc <command> --help for the full command reference.
Clone and build:
git clone https://github.com/TALXIS/tools-cli.git
cd tools-cli
dotnet buildRun the CLI directly:
dotnet run --project src/TALXIS.CLI -- workspace explainRun the MCP server locally:
dotnet run --project src/TALXIS.CLI.MCPThe CLI, templates, and build SDK are separate packages. To test changes across all three:
# 1. Clone all repos side by side
git clone https://github.com/TALXIS/tools-cli.git
git clone https://github.com/TALXIS/tools-devkit-templates.git
git clone https://github.com/TALXIS/tools-devkit-build.gitLocal templates — pack and add as a local NuGet source so the CLI's template engine finds them:
cd tools-devkit-templates
dotnet pack --configuration DebugLocal build SDK — same approach:
cd tools-devkit-build
dotnet pack --configuration DebugConfigure a local NuGet source — add a nuget.config at the workspace root (or use dotnet nuget add source):
<configuration>
<packageSources>
<add key="LocalTemplates" value="/path/to/tools-devkit-templates/src/Dataverse/bin/Debug/" />
<add key="LocalBuildSdk" value="/path/to/tools-devkit-build/src/Dataverse/Tasks/bin/Debug/" />
</packageSources>
</configuration>Local CLI — run directly from source:
cd tools-cli
dotnet run --project src/TALXIS.CLI -- <command>Cleanup — remove local sources and clear cache to revert to published packages:
dotnet nuget locals all --clearReleases are published through GitHub Releases:
- Go to Releases → Draft a new release
- Create a tag in the format
vX.Y.Z(e.g.v1.12.0) - Write the changelog in the release body
- Click Publish release
The publish workflow runs tests, builds NuGet packages with the tag version, and pushes them to nuget.org. Release notes from all GitHub releases are embedded in the NuGet package.
The same process applies to tools-devkit-templates and tools-devkit-build.
We welcome collaboration! For feedback, suggestions, or contributions, please submit issues or pull requests.
For onboarding or customization, contact us at hello@networg.com.