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.
You need:
arduino-uno preset on a node that doesn't have an Uno will import fine but won't be useful until you change the board)<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.
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.
.fixo.json file you transferred.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.
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.
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.
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.
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.
The deploy zip contains:
preset.json)custom/<kind>/<typename>.json)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.
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.
fixo.json schema — file format