Share a preset between nodes
Export from one node, import on another
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:
- The OctoMY™ Studio reachable on both source and destination nodes
- A way to move a file between the two — USB stick, scp, network share, email attachment, whatever works
- Both nodes should be on similar enough hardware that the preset's board still applies (an
arduino-unopreset on a node that doesn't have an Uno will import fine but won't be useful until you change the board)
Step 1: Export from the source node
- On the source node, open the Fixo Studio.
- Open the Preset Manager.
- Select the preset you want to share.
- Click Export.
- Choose a destination path — typically a temp directory on a USB stick. The Studio writes a single
<preset-name>.fixo.jsonfile.
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
- On the destination node, open the Fixo Studio.
- Open the Preset Manager.
- Click Import.
- Choose the
.fixo.jsonfile you transferred. - 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:
- The preset itself (
preset.json) - A manifest with the preset's content hash and timestamp
- Any custom actuator/sensor/lobe types the preset references that
aren't built-in (under
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.
See also
- Deploy to Agent (full howto) — UX walkthrough, troubleshooting, and the "always allow" persistence
- The legacy manual export/import flow described above still works for air-gapped transfer or when neither side is paired.
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
- Books and FixoLibrary — what Import/Export are doing under the hood
fixo.jsonschema — file format- Configure Fixo Controller — what to do once the import lands