Skip to content

Sharing a set

Exporting

In the app, pick the set (or sets) you want to share and export. You get a .buttons.json file — a few kilobytes of plain JSON containing the sets, the buttons and their steps. Nothing else goes in it: no connection details, no hostnames, no credentials. Those live in the OS vault and never leave your machine.

Open the file in a text editor before you upload it. It is readable, and it is worth a look — a hostname or a customer name typed into a send step is going to be published along with everything else.

Take your own addresses out first

The best way to deal with a value that should not be published is not to delete it but to move it. Replace each site-specific value — an internal URL, a jump host, a TFTP server, a site code — with a {{GLOBAL_NAME}} placeholder and put the real value in your global variables instead.

It does two things at once. Your value stays out of the file, and the set becomes usable by other people unchanged — they set their own TFTP_HOST and the same button works on their network.

A placeholder that nothing in the file declares is exactly how the site recognises this. The listing page then says “Expects global variables: TFTP_HOST” before anyone downloads it, and asks you, at upload time, to write a line about what each one should contain. Do write it: the name on its own rarely says enough, and nothing the site can infer comes close.

A set that expects a global is marked as needing 1.2.0 or newer, because that is the release that resolves one. On anything older the placeholder is typed at the device as written.

Uploading

  1. Create an account and confirm your email address.
  2. Go to Share a set and drop the file in.
  3. The site parses it and shows you a preview: every set, every button, every step, rendered exactly as visitors will see it. Anything that looks destructive is flagged.
  4. Fill in a title, a one-line summary, a platform, tags and a licence.
  5. Confirm. Nothing is published until you do.

What gets checked

The file is validated before it is stored. A bundle is rejected if:

  • it is not smartcom-revisited/button-set format version 1;
  • a button references a set that is not in the same file;
  • a callMacro or callSet points at something not in the file — it would break on the downloader's machine;
  • two sets or two buttons share an id;
  • a step type is unknown, or a required value is missing or the wrong type;
  • an input field or placeholder is named something the app itself would refuse — letters, digits and underscore only, not starting with a digit — because nothing could ever fill it;
  • buttons call each other in a loop;
  • it is implausibly large, deep or numerous.

The error message says which rule it was and where in the file, so you can fix it rather than guess.

Some things are pointed out rather than rejected. A {{NAME}} inside an expect or if pattern is the common one: patterns are matched as written and nothing is substituted into them, so that is looking for those literal characters in the device output. Usually a mistake, occasionally not, so you get told and left to decide.

Moderation

Your first upload is reviewed by a moderator before it appears publicly, and so is any upload that contains steps flagged as destructive — reboots, erases, factory resets. After that, uploads from a confirmed account with an approved set behind it go live immediately unless they trip the destructive flag.

Flagged sets are not blocked. Engineers share reboot buttons for good reasons. They are labelled, loudly, so nobody runs one by accident.

New versions

Fixed something? Upload a new revision from your dashboard with a note about what changed. The old revision keeps its own page, its checksum and its download link — if someone tested revision 2 against their kit, revision 2 stays exactly as it was.

Titles, descriptions and tags can be edited any time. The file itself cannot: a changed file is always a new revision, and it is rescanned like a fresh upload.

Licence

Pick one when you upload. MIT is the default and the least trouble for everyone. The licence covers copying and reuse — it is not a warranty, and there is a separate use-at-your-own-risk notice that applies to everything on the exchange.