Work with configuration packages
Goal: author locally, then deliberately validate/diff/install into a chosen target. Complete Workspaces first and keep WORKSPACE set to its absolute path. Set PACKAGE to a new directory under that workspace. Creating and inspecting a package needs no server:
export PACKAGE="$WORKSPACE/packages/demo-config"
tsm package init --path "${PACKAGE}" --package-id demo-config --name 'Demo configuration' --area-id shared --config-type Form
tsm package info --package-yaml "${PACKAGE}/package.yaml"
Expected: package.yaml plus a shared area directory; info shows demo-config and its version. Populate configuration items using ConfigTypes supported by your deployment. Creating an empty package does not prove deployment compatibility. After connecting, review remote changes explicitly:
tsm --context dev package validate "$PACKAGE"
tsm --context dev package diff "$PACKAGE"
tsm --context dev package install "$PACKAGE"
Validate/diff are read-only server checks. Install writes configuration; use a disposable tenant for a first trial. Use the generated reference for artifact create/publish, Change Sets and installed-package lifecycle flags. Cleanup: retain the local package in Git; uninstall is a separate server mutation, not file deletion.
Build a transport artifact
After filling and validating the package, create a ZIP for a selected target:
tsm --context dev package artifact create "$PACKAGE" --out build/demo-config.zip
tsm --context dev package validate --file build/demo-config.zip
tsm --context dev package diff --file build/demo-config.zip
These server-backed commands are manual integration steps. Artifact create reads the selected environment; it does not install the result. Review diff before an explicit install. Never infer a trusted target from the ZIP filename.