CLIScenariosScenario guides

Scenario 10: Export or import a plugin as a portable package

Use this when you want to move a harness setup between machines, bootstrap a new repo quickly, or share a team baseline.

Frequency: Occasional · Status: Shipped

← Back to scenarios index

Use this when you want to move a harness setup between machines, bootstrap a new repo quickly, or share a team baseline.

Typical commands:

harnesstap plugin cut my-setup --version 1.0.1
harnesstap migrate export ./my-setup --plugin my-setup
harnesstap migrate export ./my-setup.ap.json --plugin my-setup --single-file
harnesstap migrate export ./team --plugin my-setup --embed-plugins
harnesstap migrate import ./my-setup
harnesstap migrate import ./my-setup.ap.json

Working heads with unpublished edits cannot be shared — migrate export and plugin publish refuse dirty plugins. Cut a frozen version first (plugin cut <name> --version <semver>), then export. --plugin accepts a plugin name (resolves the working head) or name@version (a frozen snapshot).

This is the main offline plugin sharing story. Packages carry the plugin as an Agent Plugins directory (or .ap.json envelope), and --embed-plugins inlines dependency trees under com.harnesstap/embedded/ so the receiving machine does not need to re-fetch them at apply time.