RunMacro Documentation
Learn RunMacro from basics to advanced.
Everything you need to start and master RunMacro — from basic commands to advanced automation workflows.

Sync macros through a GitHub Gist
Open Cloud › Settings, paste the Gist ID and GitHub access token, then click Save settings. After that use Cloud › Upload PMacro to push the open macro to the Gist.
Prerequisites
- A GitHub Gist you created, plus its Gist ID (required for every operation).
- A GitHub personal access token — only needed on the machine that uploads. Download-only machines may leave it blank if the Gist is public.
- Internet access to
api.github.com. - The macro must be saved to disk first before uploading, because the local filename determines the Gist filename.
Supported modes
- Desktop Mode
- Browser Mode
- QMacro Runner
What it does
Cloud Sync stores your macro files inside a GitHub Gist that you own. From there you can upload the open macro, check whether the Gist copy is newer and pull it back, or download a macro by name onto another machine. No RunMacro server is involved — GitHub is the entire backend, and you supply your own Gist ID and token.
When to use it
- You want a backup of your macros off the current machine.
- You run the same macro on several machines and want each to pull the newest copy.
- You need to hand a macro to someone without copying files over USB or chat.
- You want macros to check for a newer version each loop (enable it in Settings › Cloud).
When not to use it
- The macro has passwords, cookies or tokens written directly into steps — read the security warning below before uploading.
- You need version history or merge: Cloud Sync overwrites by filename and keeps no history.
Configuration steps
- Create a Gist on GitHub (the content can be empty) and copy the Gist ID from the URL.
- Create a GitHub personal access token with Gist write permission. Only needed on the uploading machine.
- In RunMacro, open Cloud › Settings.
- Paste the Gist ID into Gist ID: and the token into GitHub access token:.
- (Optional) For shared team templates, also fill the Gist ID and token in the Team Template Cloud card.
- Click Save settings.
- Save the macro to disk (File › Save) if you have not, then click Cloud › Upload PMacro.
- On another machine: enter the same Gist ID, then use Cloud › Download PMacro, type the filename and pick a target folder.
Every option explained
Expected result
The macro sits on the Gist as a text file ending in .b64. After uploading, RunMacro re-reads it from the Gist and byte-compares it against the local file before reporting success. When downloading, any existing file is backed up as .bak-timestamp before being replaced.
Real example
Example: move a macro from machine A to machine B
- On machine A: open Cloud › Settings, fill in the Gist ID and token, click Save settings.
- Save the macro (File › Save) so it has a filename, for example
signup.pmacro. - Click Cloud › Upload PMacro and wait for the success message.
- On machine B: open Cloud › Settings and fill in the same Gist ID; leave the token blank if the Gist is public.
- Click Cloud › Download PMacro, type
signup, pick a folder, then click Download.
Example: edit in one place, let the other machines pull the update
- On the main machine, edit the macro then click Cloud › Upload PMacro to overwrite the Gist copy.
- On the secondary machine, open that macro and click Cloud › Update PMacro.
- RunMacro compares and reports either N files updated or all files are already up to date.
- For more automation: open Settings › Cloud and enable the per-loop update check.
Limitations and failure cases
- Macros are Base64-encoded before upload. Base64 is an encoding, not encryption — anyone who can read the Gist can decode the macro, including anything you typed directly into steps. Password-protected
.qmacrofiles are the exception, as they are already encrypted. - There is no version history and no merging. Upload overwrites by filename; the only safety net is the
.bak-timestampfile created on download. - A Gist must not hold two files whose names differ only in letter case. If it does and your requested name matches neither exactly, the operation fails rather than guessing.
- A 0-byte file on the Gist (from an interrupted upload) reports an error and needs re-uploading.
- For large files over a slow connection, the post-upload verification step can time out.
- The skip-SSL option exists only in the Cloud › Settings dialog, not in the Settings › Cloud tab.
Tips & common mistakes
Verification details
ui/cloud_sync_dialog.pycore/cloud_sync.pycore/secure_storage.py
RunMacro