Share a preset between nodes

Presets are portable fixo.json files. To move one between nodes — say from the Hub where you authored it to an Agent where you want to run it — export from one and import on the other. This how-to covers the manual flow today; the courier-driven automatic flow is on the roadmap.

Same recipe for any Book

The flow below works identically for actuator types, sensor types, lobe types, stanza templates, and preset templates. Each has a manager activity in the Fixo Studio with Export and Import buttons in the same place.


Before you start

You need:


Step 1: Export from the source node

  1. On the source node, open the Fixo Studio.
  2. Open the Preset Manager.
  3. Select the preset you want to share.
  4. Click Export.
  5. Choose a destination path — typically a temp directory on a USB stick. The Studio writes a single <preset-name>.fixo.json file.

That single file contains everything in the preset (board, actuators, sensors, stanzas, mappings). Built-in resources it references (actuator types, lobe types, stanza templates) are not embedded — the destination needs to have those too. If you've authored custom types alongside your preset, export those separately.


Step 2: Move the file

Whatever works for your network setup. The file is small (typically < 10 KB even for a hexapod) so any transport is fine.

Don't email it to yourself if it has hostnames or paths in it

Presets shouldn't contain anything sensitive — they describe pin assignments, lobe choices, and trim values — but if you've named actuators things like "left-shoulder-of-Robotic-Arm-3" and you're sharing publicly, give it a once-over for personal info.


Step 3: Import on the destination node

  1. On the destination node, open the Fixo Studio.
  2. Open the Preset Manager.
  3. Click Import.
  4. Choose the .fixo.json file you transferred.
  5. The preset appears in the manager list. Click it to verify; tweak as needed.

If a preset with the same name already exists, the destination Studio will pick a unique name (my-rc-car-2) automatically — your existing preset isn't clobbered.


Step 4: Verify before running

A few things worth checking after import:

Check Why
Open the preset in the editor Catches obvious issues — missing custom types appear as blanks in dropdowns
The board matches the destination's hardware If you exported a Mega-targeted preset onto a node with only an Uno, change the board first
Pin assignments are valid for the destination Pin numbers travel verbatim; if the destination's wiring is different, reassign
Stanza templates referenced by template:... exist If the source had a custom stanza template, you need to export and import it separately

If the preset references a custom actuator type, sensor type, or lobe type that the destination doesn't have, builds will fail with unknown type "x". Export those types from the source's matching manager and import them too — the order doesn't matter, FixoLibrary::scan() resolves cross-references at load time.


Step 5: Build and run

Once the preset (and any required custom types) imports cleanly, follow Configure Fixo Controller → Build and inject to compile and flash on the destination node.


Deploying a preset to an Agent

From Hub, right-click a preset in the Studio → Presets list and choose Deploy to Agent…. Pick a paired & trusted Agent from the picker. Click Deploy.

The Agent's user sees a confirmation dialog the first time you deploy from this Hub. If they tick Always allow deploys from this Hub the prompt won't appear again for subsequent deploys from the same Hub.

OctoMY moves the preset and any custom types it depends on across the trust boundary, builds the firmware on the Agent, and (if you ticked Set as active) flashes and activates it. Any step's failure rolls the Agent back to the previous preset.

Trust requirement

Only Agents whose AddressBook entry is at trust level TRUST appear in the picker. If you've paired an Agent but it's at any other state (IGNORE, BLOCK, REMOVE, or unpaired), promote it to TRUST via the Pairing menu first.

What gets bundled

The deploy zip contains:

If the Agent already has a custom type with the same name but different content, the deploy is rejected as a custom_type_conflict — the Agent's existing file is never overwritten silently. Resolve by editing the Hub-side custom type to match, or by removing the Agent's copy first.

See also


Sharing custom types alongside

If your preset uses custom types you authored, the same recipe applies to each:

Manager Exports
Actuator Type Manager One actuator type's fixo.json + .hpp
Sensor Type Manager One sensor type's fixo.json + .hpp
Lobe Type Manager One lobe type's fixo.json + .hpp
Stanza Template Manager One stanza template's fixo.json
Preset Template Manager One preset template's fixo.json

Order doesn't matter on import; cross-references resolve when FixoLibrary rescans.


See also