Skip to main content

sync

Build your driver and hot-swap its Lua into the running instance on a controller: fast, with no full reload. Ideal for tight edit-test loops while developing.

Preview

The driverforge CLI is in preview. Commands and flags documented here may change before the stable release. Follow along or share feedback on our roadmap.

Usage

driverforge sync [options]

sync builds first (respecting -c/--configuration, including the configuration's defaults from the project config), then ships the bundled Lua to the Anvil Agent, which swaps it into the already-loaded driver. What you sync is always your current source: there is no stale artifact to forget about. Because it skips the install-and-reload cycle a full deploy does, it's much faster, but it only applies when the driver's structure hasn't changed. A sync never changes the driver's version.

Prerequisites

  • The project is initialised (driverforge init)
  • You're signed in (driverforge login)
  • A target controller is selected (driverforge device select)
  • The Anvil Agent is installed and running on the controller
  • The driver is already installed on the controller — deploy it once first so there's a running instance to hot-swap into

When sync applies — and when it doesn't

Sync only hot-swaps when driver.xml is structurally unchanged since the running build (same actions, properties, commands, connections, etc.). If you've changed any of that, a full reload is required and sync will offer to run a deploy for you (or do it directly with --deploy). The escalation runs the full deploy flow, rebuild and version bump included.

Keep these in mind:

  • Load-time init doesn't re-run. Sync re-runs top-level Lua but not OnDriverInit / OnDriverLateInit, so keep load-time initialization idempotent if you rely on it during development.
  • Encrypted drivers can't be hot-swapped. The Anvil Agent can't update an encrypted driver's contents in place. Build unencrypted during development to take advantage of hot reloading with sync; to update an encrypted driver, use deploy, which installs the new version and reloads it in full. (An encrypted build passed to sync falls back to a deploy automatically.)

Options

OptionDescription
--deviceController to sync to (name, hostname, or id) — overrides the selected one
--selectRe-select the target controller first
--configuration, -cBuild configuration to build and sync
--deployDo a full deploy instead of a hot-swap

Examples

Build and hot-swap onto the selected controller:

driverforge sync

Build and sync the release configuration:

driverforge sync -c release

Force a full deploy instead:

driverforge sync --deploy

Global flags

Every driverforge command also accepts these global flags: --verbose/-v, --project-dir, --no-tui, --no-update-check, and --help/-h. See the overview for details.