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
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.jsonWorking 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.