Skip to content

RUNOS Documentation

RUNOS is a workflow automation tool for Windows. A workflow consists of a trigger that starts it and a list of actions that do the work one after another. RUNOS runs locally on your PC, in the background in the notification area of the taskbar, and is free.

Triggers

A new file in a folder, a schedule or a click starts the workflow. To the triggers

Actions

Send mails (SMTP, mail program), call APIs and create e-invoices. To the actions

Operations

Decide (IF), repeat (Loop), run side by side (Parallel) and reshape data with JavaScript (Code). To the operations

Connectors

Store credentials and OAuth sign-ins once, use them in every workflow. To the connectors

Every invoice that the ERP prints through the PDF printer into the folder C:\RUNOS\Invoices should be mailed to the customer as an XRechnung.

In RUNOS this is one workflow with

  1. a File trigger that watches the folder,
  2. an XRechnung action that creates and validates the e-invoice from the invoice data,
  3. a mail action (SMTP, MAPI or Microsoft 365) that sends it.

Every run is logged. If something fails, the file goes to the Failed folder, you are notified, and your own error actions can run.

  • Windows 10 (version 1809 or later) or Windows 11, 64-bit
  • An internet connection once for activation, then regularly to renew the free license
  • For MAPI with Client: Outlook: classic Outlook
  • For printing from programs without an export: the built-in PDF printer (uses the Windows driver “Microsoft Print to PDF”; creating it needs administrator rights once; the RUNOS service receives the printouts also while RUNOS is closed)
  1. Download the current version from systemberg.de/runos/download. You get a single file RunOS.exe; the name stays the same for every version.
  2. Put the file in a permanent place, for example C:\Program Files\RUNOS\RunOS.exe, and start it. No installation is needed.
  3. On the first start RUNOS asks whether it may send anonymous usage statistics. RUNOS works the same either way.
  4. Then RUNOS asks whether to put a shortcut on your desktop. The question comes once per Windows user and is skipped when a RUNOS shortcut is already there. The shortcut points to the .exe in its current place.

RUNOS runs only once per Windows session. If it is started a second time, the older instance exits and the new one takes over. When you close the window, RUNOS keeps running in the notification area and your workflows keep running. Exit in the tray menu stops all workflows.

RUNOS is free. Each installation still gets its own license, bound to this PC:

  • Activation: on the first start with an internet connection RUNOS activates itself. Without internet, workflows run for 7 days after the first start; after that they pause until the PC has been online once.
  • Renewal: the free license is valid for 30 days and renews automatically as long as the PC is online now and then (RUNOS checks about once a day).
  • Expired: if the license has expired, workflows pause. Workflows and settings are kept, and everything continues once RUNOS has renewed the license. A file a File trigger finds during a pause stays in the folder and is processed afterwards.
  • System clock: if the PC’s clock is clearly wrong, workflows pause too until the time is corrected.

You see the status under Settings → License, with the Installation ID (for support) and Check now.

Shortly after it starts, and every 6 hours after that, RUNOS checks whether a new version is out. If there is one, the update icon (an arrow with a red dot) appears in the activity bar above Help, and a notification points to it. Clicking the icon shows which version is coming and how much is downloaded; Update now downloads it, replaces RUNOS and restarts it. To check yourself, use Settings → About → Check for updates.

  • Only the changes: RUNOS usually downloads 1–3 MB instead of the whole file (about 160 MB). If your version is older than the last five, it downloads the whole file.
  • Verified: RUNOS compares the new file with its checksum (SHA-256) before it replaces the old one. If anything goes wrong, RUNOS keeps running unchanged, and the reason is shown in the dialog and in the log.
  • Same place, same name: The new version replaces the .exe where it is. Autostart and shortcuts stay valid. If the file is still named after its version (runos_3.66.exe, the former download name), it is renamed to RunOS.exe on the way, unless the folder already has a RunOS.exe. Autostart follows by itself; create a shortcut to the old name once more. If RUNOS is in a folder your user cannot write to (e.g. C:\Program Files\RUNOS), Windows asks for administrator rights.
  • Actions running at the moment of the restart are stopped. Workflows, connectors and settings are in the data folder and are kept. Other Windows users who are using the same .exe at the time (terminal server) keep the old version until they next start RUNOS.

Version 3.66 and older have no update icon yet. There, update once by hand: exit RUNOS from the tray menu, replace the old .exe with the new one from systemberg.de/runos/download (same place) and start RUNOS again.

What changed in which version is listed in the changelog.

The activity bar is on the left of the RUNOS window:

View Content
Workflows List of all workflows with state, trigger and recent runs; New creates a workflow, blank or from a template
Logs The log of all workflows, filterable by level, workflow and user
Connectors Saved access to services and APIs, see Connectors
E-invoice (XRechnung) Fill in an invoice field by field and see its JSON, XML and checks, see The E-invoice view
Printer Create, change and delete PDF printers that save every printout as a PDF into a folder, see PDF printer
Help Contact by e-mail to info@systemberg.de
Settings Language, autostart, log, script blocks, KoSIT validator, license, see Settings

Workflow list: each row shows the name and trigger, the Start / Stop button and the recent runs as dots: green succeeded, yellow with a warning or cancelled, red failed. Clearing the log (bin) also removes these dots, with workflows picked in the filter only theirs. A click opens the workflow in the editor; the context menu starts, stops or deletes it. Change the order by drag and drop, with a click on the grip at the left of the row, or with context menu → Move (up, down, to the top, to the bottom); for the selected workflow Alt+↑ / Alt+↓ work too. When RUNOS runs as administrator there is no drag and drop (Windows does not allow it for programs with administrator rights); the context menu and keys work then too.

Workflow editor: it opens in a tab, which you can also drag into a window of its own.

Element Function
Name Click the name to rename. The name in the JSON is updated too.
Visual / JSON / Script Switches between the diagram, the JSON editor and the script blocks a file must carry for this workflow, see below. A workflow opens as a diagram when its JSON is valid.
Save (Ctrl+S) Checks the JSON and saves. Afterwards the value of Autostart applies.
Run (F5) Runs the actions once, with the JSON in the editor, saved or not.
Listen Turns the trigger on for testing while the tab is open.
Start / Stop Starts or stops the saved workflow, like the button in the workflow list. The state is kept after a RUNOS restart.
JSON editor After {{ it suggests the variables of this workflow, after a dot their fields.
Log Shows and hides this workflow’s log below the editor (hidden when the tab opens). The numbers on the button count its entries: red errors, yellow warnings, blue info. A double-click shows an entry in full; the bin deletes only this workflow’s entries and its dots in the workflow list.

Diagram (Visual): the workflow from top to bottom: the trigger with the Initial data beside it, the actions in their order, for If the branches If true and If false side by side, for Loop a frame around the actions that run for each item, for Parallel one column per branch with its name. The OnError actions are to the right. Each action shows its name, its kind and its most important setting; switched-off actions ("Enabled": false) are faded and marked Off, and the Description appears when you point at the action.

  • Drag to move the diagram, Ctrl+mouse wheel zooms, F or the button at the bottom left fits it into the window. If, Loop and Parallel can be collapsed.
  • + between two actions, inside a branch or in an empty branch (Add action) opens the action picker, with search and categories. The new action gets a free name and opens in the test view.
  • Actions, the trigger, initial data and the OnError column can be placed freely: just drag them. An If, Loop or Parallel takes everything inside it along; the lines follow. RUNOS stores the positions in the workflow under "Layout", and Tidy up (top left) restores the automatic layout. Dragging an action onto a + instead changes its place in the order, also into or out of a branch. Above the action: switch on and off, duplicate, show in JSON, move up / down, delete.
  • Clicking an action opens its settings on the right: name, description, on/off, the parameters in a form (for every action, e.g. HttpRequest, XRechnung or SMTP; parameters the form does not know are under Other parameters; for Parallel you add, rename or remove branches there), On error (its own OnErrorPolicy) and the whole action as JSON. After {{ the field suggests the values of earlier actions, for actions with test data their real keys. When an action is renamed, the {{Name.…}} references to it are renamed too.
  • The columns button at the top of the settings panel opens the test view: input, settings and output side by side, with Test step and values you drag onto fields. After a test or Run every action shows a mark for its result: green check without errors, yellow with warnings, red failed.
  • The trigger opens its kind and settings, Initial data a table of name, value and type (showing which actions use each value), the gear at the top left the workflow settings (Autostart, time limit, OnErrorPolicy, OnWarningPolicy).
  • At the bottom the diagram shows errors and warnings: duplicate names, unknown actions, references to actions that do not exist, are switched off or run later, and missing {{InitialData.…}} values. Clicking an entry selects the action.
  • Undo and redo: top left or Ctrl+Z / Ctrl+Y. Del deletes, Ctrl+D duplicates, Alt+↑/↓ moves the selected action.
  • Double-click an action (or Show in JSON) to switch to the JSON with the action selected. Every change in the diagram is in the JSON straight away; you save as always with Save.
  • With an error in the JSON the editor stays on the JSON until the error is fixed. If the JSON has comments (/* … */), the diagram is view-only until you choose: keep the comments directly above an action as its Description, or remove all comments. Both can be undone in the JSON with Ctrl+Z.

Log: each row has time, level (Trace, Debug, Info, Success, Warning, Error, Critical), user, source, title and message. User is the Windows user whose RUNOS wrote the entry (empty for entries from older versions); the Users filter shows only that user’s entries when several users share a data folder. With a user picked, the trash button clears only the entries shown. Save log to file exports the visible entries as text or CSV. For troubleshooting, turn on the Trace filter: you then see how every variable was resolved and which parameters every action received.

In this example RUNOS watches a folder. For every PDF that arrives there, a new mail opens in the mail program with the PDF attached.

  1. Open Workflows on the left, click New, enter a name such as PDF by mail and confirm with Create.
  2. Paste this JSON into the editor and save:
{
"Name": "PDF by mail",
"Autostart": false,
"Trigger": {
"Type": "File",
"Name": "Inbox",
"Parameters": {
"Pool": "C:\\RUNOS\\Inbox",
"Filter": "*.pdf",
"CronExpression": "0/10 * * * * ?"
}
},
"Actions": [
{
"Type": "MAPI",
"Name": "OpenMail",
"Parameters": {
"Client": "Default",
"Mode": "Display",
"To": "customer@example.com",
"Subject": "Your document from %DATE%",
"Body": "Hello,\n\nplease find attached the document {{FileName}}.",
"Attachments": "{{FilePath}}"
}
}
]
}
  1. Click Listen and put a PDF into C:\RUNOS\Inbox. Within 10 seconds the mail opens.
  2. Stop listening, set "Autostart": true and save. From now on the workflow runs permanently, also after a restart.

New in the workflow list asks for the name of the new workflow and, above it, offers the templates: a blank workflow or a ready, commented example to adapt. Picking a template suggests its name. Comments (/* … */) in the JSON explain every setting.

The templates come from the RUNOS server each time the dialog opens, so new and improved templates arrive without a new RUNOS version. Without an internet connection the dialog offers only the blank workflow.

Template Shows
Gedruckte Rechnung als XRechnung ERP invoice printed on the PDF printer → validated XRechnung in a ZUGFeRD PDF → mail, see XRechnung example
XRechnung per E-Mail Create, validate and mail an XRechnung from invoice data in the workflow
XRechnung-Referenz (alle Felder) Every field of an XRechnung with its description, as a reference
PDF-Drucker → E-Mail / → Outlook / → Archiv Every print on the PDF printer by mail (SMTP), as an Outlook mail to check, or filed by year and month
Eingehende Dateien drucken Print every file saved into a folder
Ordner → Netzwerkfreigabe, Ordner → SFTP-Server Move new files to a share or upload them to an SFTP server
Tägliche Ordnersicherung Copy a folder every weekday evening (Time trigger)
Mail über Microsoft 365, Mail im klassischen Outlook Mail with attachment through Microsoft 365 / Outlook.com or classic Outlook (MAPI)
API-Abfrage mit Bedingung HTTP query of a weather API, If decision, mail by SMTP

The templates use placeholders such as smtp.example.com and the Basic connector Mailserver for mail credentials; the comment at the top of each template says what to set up once.

A workflow is a JSON object. Field names are case-insensitive. Comments /* … */ and // … are allowed.

{
"Name": "Send invoices",
"Autostart": true,
"InitialData": { "Recipient": "accounting@example.com" },
"Trigger": { "Type": "File", "Name": "Inbox", "Parameters": { "Pool": "C:\\RUNOS\\Invoices", "Filter": "*.pdf" } },
"Actions": [
{ "Type": "SMTP", "Name": "Send", "Parameters": { "To": "{{InitialData.Recipient}}" } }
],
"OnError": [
{ "Type": "SMTP", "Name": "ErrorMail", "Parameters": { "Subject": "Error: {{Error.Message}}" } }
],
"TimeoutSeconds": 0,
"OnErrorPolicy": { "Strategy": "CancelRun" },
"OnWarningPolicy": { "Strategy": "LogOnly" }
}
Field Required Meaning
Name yes Name of the workflow
Autostart no true: runs after saving and after every start of RUNOS. Default false.
InitialData no Any data every action can read as {{InitialData.…}}, e.g. addresses or fixed invoice data
Trigger yes The trigger: File, Printer, Time or Manual
Actions yes List of actions, at least one. They run one after another.
OnError no Actions that run when a run fails, see Error handling
TimeoutSeconds no Time limit per action in seconds. 0 = no limit.
OnErrorPolicy, OnWarningPolicy no What happens on errors and warnings, for all actions without their own policy
Layout no For the diagram only: where you moved actions to. RUNOS runs the workflow regardless of it.

Triggers and actions have the same structure:

Field Meaning
Type Type of the trigger (File, Printer, Time, Manual) or action (XRechnung, SMTP, MAPI, Outlook365, HttpRequest, If, Loop, Parallel, StopWorkflow)
Name Unique name. Later actions read the result through it, e.g. {{Send.Response.Results.Status}}.
Parameters The settings; which exist is listed on the page of each action. Unknown parameters are ignored.
OnErrorPolicy, OnWarningPolicy Actions only: their own policy, replacing the workflow’s
Description Actions only, optional: a description for people, shown in the diagram when you point at the action. RUNOS does not use it.
Enabled Actions only, optional: false switches the action off, see below. When it is missing, the action is on.

"Enabled": false switches an action off without deleting it: { "Type": "SMTP", "Name": "Send", "Enabled": false, … }. It does not run, and for If, Loop and Parallel neither does anything inside them; the run continues with the next action. Later actions that read {{Send.…}} get no value. This works in Actions, in OnError and in the branches of If, Loop and Parallel. If every action in Actions is switched off, the workflow cannot be loaded.

The older form with # before the type ("Type": "#SMTP") still works, but only directly in Actions and OnError.

Every action stores its result under its name, with this basic structure:

{
"Name": "Send",
"Type": "SMTP",
"Parameters": { … },
"Response": { "Results": [ { … } ], "SuccessCount": 1, "ErrorCount": 0 },
"Meta": { "Host": "PC-ACCOUNTING" },
"Status": { "State": "Completed", "Warnings": [], "Errors": [] }
}

Status.State is Completed, Failed, Skipped or Cancelled. Every firing starts its own, independent run.

Placeholders are allowed in almost every parameter. RUNOS replaces them right before the action runs:

  • %…% for date, time, folders and environment variables. They are replaced first.
  • {{…}} for data from the workflow: results of the trigger and actions, InitialData, connectors.

A placeholder is a path of names separated by dots, e.g. {{CreateInvoice.Response.Results.FilePath}}. Case does not matter.

Root Content Available
InitialData the workflow’s InitialData, extended by parameter sets and script blocks always
Trigger or name of the trigger result of the trigger always
name of an action result of that action after the action
FilePath, FileName, FileContent file of this run and its text File trigger
Error the error that ended the run in OnError
item, index, count current element, position (from 0), count in a Loop
connector saved connectors always
own values global values from a script block File trigger
Notation Result
Results.0 or Results[0] first element of a list (from 0)
Results.first / .last / .count / .any first / last element, count, not empty
Results.FilePath a field name on a list automatically uses the first element
.toString(), .toInt(), .toDouble(), .toBool() convert the value
.toBase64() Base64 of the text; if the value is an existing file path, of the file’s content
.length() length of a text
  • If the placeholder stands alone in the parameter, the value keeps its type (an object stays an object).
  • If it is inside a text, it is inserted as text; objects appear as compact JSON. {{!path}} always returns text.
  • A placeholder that cannot be resolved becomes empty text, with a warning in the log.
Placeholder Example Note
%DATE% / %TIME% 2026-10-08 / 14-05-09
%yyyy% / %yy% / %MM% / %dd% 2026 / 26 / 10 / 08 %MM% = month, upper case
%HH% / %hh% / %mm% / %ss% / %fff% 14 / 02 / 05 / 09 / 123 %mm% = minute, lower case
%userdesktop%, %userdocuments%, %userdownloads% Desktop, Documents, Downloads
%userprofile%, %userappdata%, %local% user folder, AppData\Roaming, AppData\Local
%programdata%, %programfiles%, %base% C:\ProgramData, C:\Program Files, folder of RUNOS
%username%, %machinename%, %osversion% user, PC name, Windows version
%NAME% any Windows environment variable, e.g. %TEMP%

Example: Export_%yyyy%-%MM%-%dd%_%HH%-%mm%.csv → Export_2026-10-08_14-05.csv. Placeholders may stand right next to each other (%HH%%mm%%ss%). An unknown %…% is left as it is.

The parameters Body and Signatur of the mail actions also take the path of a text or HTML file; placeholders inside it are replaced too. Placeholders don’t calculate; for decisions there is IF, for calculating and reshaping Code.

A run can fail at an action, at the time limit (TimeoutSeconds) or already at the trigger (folder not readable, faulty script block). Then:

  1. The action’s error policy decides: retry, skip or end the run.
  2. If the run ends, the following actions don’t run.
  3. The file of the run is moved to <Pool>\Spooler\Failed\<ID>\.
  4. The OnError actions run, with the error in {{Error…}}.
  5. If there are no OnError actions or one of them fails, RUNOS shows a notification (and, if enabled, an error pop-up).
  6. The workflow keeps running. Only CancelWorkflow and the StopWorkflow action stop it.
"OnErrorPolicy": { "Strategy": "RetryThenNotify", "MaxRetries": 3, "InitialDelaySeconds": 5, "BackoffStrategy": "exponential" }
Strategy Effect
CancelRun Default. The run ends as failed, the workflow keeps running.
CancelWorkflow The run ends and the workflow is stopped, also across a restart.
SkipAction Mark the action as skipped and continue with the next one. In the log: “Skipping the failed action; the run continues.”
Retry / RetryThenNotify Up to MaxRetries retries, then like CancelRun
RetryThenSkip Up to MaxRetries retries, then like SkipAction. In the log: “Skipping the action after N failed attempts; the run continues.” (N = attempts in total)

MaxRetries (default 0), InitialDelaySeconds (default 1) and BackoffStrategy (exponential: 1×, 2×, 4× … or linear) control the retries. An action’s policy takes precedence over the workflow’s. Write Strategy exactly as in the table: any other value (also skipaction in lower case) works like CancelRun; if it starts with Retry, it retries first. An OnErrorPolicy without Strategy means CancelRun, not the workflow’s policy. In the diagram, each action’s On error tab shows what actually applies at its place.

An action’s own policy also applies to actions in If, Loop, Parallel and OnError. An action in If, Loop or Parallel without a policy of its own does not take the workflow’s: if it fails, the If fails (and the If’s policy applies), the Loop iteration counts as an error, or its branch and with it the Parallel fails. With "OnErrorPolicy": { "Strategy": "SkipAction" } on the action itself, the branch or iteration carries on.

OnWarningPolicy applies to actions that end with warnings: LogOnly (default), Retry (with RetryCount and RetryDelaySeconds) or SkipAction.

OnError is a second action list that runs only when a run fails:

"OnError": [
{
"Type": "SMTP",
"Name": "ReportError",
"Parameters": {
"To": "it@example.com",
"Subject": "RUNOS: {{Error.Workflow}} failed",
"Body": "Action: {{Error.Action}}\nError: {{Error.Message}}\nFile: {{Error.FileName}}\nTime: {{Error.Time}}",
"SmtpServer": "smtp.example.com", "SmtpUser": "runos@example.com",
"SmtpPassword": "{{connector.Mailserver.Password}}", "From": "runos@example.com"
}
}
]
Field of Error Content
Message, Errors error message, all messages as a list
Source Action or Trigger
Action, ActionType name and type of the failed action
Workflow, Machine, InstanceId workflow, PC, ID of the run
Time / TimeUtc point in time (local / UTC)
FileName, FilePath file of the run, if any

If all OnError actions succeed, the error counts as handled. OnError actions use only their own OnErrorPolicy, never the workflow’s; if one fails, the rest are skipped and RUNOS shows the error message. OnError never starts again from there, so an error loop is not possible.

  • Run (F5) runs the actions exactly once, as if the trigger had fired, without turning the trigger on. With a File trigger there is no file; {{FilePath}} stays empty. Afterwards the test view shows every action’s data, and the diagram marks every action with its result.
  • Parameter sets (arrow next to Run) are JSON objects laid over InitialData. This lets you try a workflow with different data without changing the JSON. They apply to Run and Test step.
  • Listen turns the trigger on in test mode while the tab is open. If the same workflow is already running from the list, RUNOS asks whether to stop it.
  • Start / Stop in the editor is not a test: it switches the saved workflow on or off for good, exactly like in the workflow list. Unsaved changes apply only after Save. If the tab is listening, listening ends when you start.
  • Test step in the test view runs a single action right away, on the data of the earlier steps. An e-invoice can be tried without a workflow in the E-invoice (XRechnung) view.

In the log you see TriggerFired per run, ActionCompleted per action, errors and warnings, and a Summary.

The test view shows three columns side by side for an action. In the diagram you open it with the columns button at the top of an action’s settings panel; a newly added action opens in it straight away. Esc or the shrink button takes you back to the diagram.

Column Content
Input The data the action can use: each earlier action (nearest first) with the data of its last run or test as a tree or, while it has none, with the fields its type puts out; the trigger’s variables (e.g. {{FilePath}}); the initial data (InitialData); inside a Loop item, index and count; in the OnError column Error.*; the saved connectors as {{connector.<Name>.<Field>}} (secret values such as password, API key or token only show as “(hidden)”; the run reads the real value). The search box at the top filters all sources by key, reference or value. The If, Loop or Parallel the action sits in is not listed: it has no result until its contents have run. Test on an earlier action runs that action so its data is there. Clear data forgets all test data.
Settings The form or parameters, On error and the action as JSON, as in the settings panel.
Output Test step (also at the top of the settings panel), then the state (Success, Success with warnings or Failed), the duration, errors and warnings and the result as a tree or JSON: Response, Status, the resolved Parameters and Meta.

Values by drag and drop: drag a value from the Input or Output tree onto a field. It is inserted where you drop it as its {{…}} reference, e.g. {{LookupSupplier.Response.Body.id}}. Dropped on a list, a switch or a number field, the whole field becomes that reference. While you drag, the reference follows the pointer and the field below it is highlighted. Clicking a value copies its reference; clicking an entry with contents (e.g. “8 fields”) opens it. Keys containing ., [, ], {, }, (, ) or " cannot be referenced in {{…}} and therefore cannot be dragged.

Test step runs only this one action, right now, on the data the earlier steps left (their last run or test) and with the InitialData of the selected parameter set. The workflow does not need to be saved or complete, but the action needs a name. Error policy, retries and time limit do not apply to a test. For If, Loop and Parallel the actions inside run too.

Run (F5) fills the test data too: afterwards every action shows its data, and the diagram marks it with its result (green check without errors, yellow with warnings, red failed; a spinner while testing).

Test data is kept while the editor tab is open and is never saved with the workflow, since it may contain sensitive data. Long texts and lists are shortened for display only; tests use the full data.

Open the settings with the gear at the bottom of the activity bar. The PDF printer is created under Printer in the activity bar, see PDF printer.

Setting Meaning
Display language System default, German, English, French, Italian or Spanish. Takes effect after a restart (Restart now).
Start with Windows RUNOS starts minimized in the notification area at sign-in, without opening its window; the workflows run anyway. Click the RUNOS icon in the notification area to open it. On after the first start.
Show error pop-up When a run fails, a window opens in the foreground.
Start KoSIT validator with Windows Loads the e-invoice rules as soon as RUNOS starts. Off by default: the validator then starts with the first XRechnung, which waits once for about 15–20 seconds, or with Start under E-invoice validation. Switching it off does not end a running validator; it runs until RUNOS ends.
Keep log entries for Current session only, 1 day or several days (default 7)
Script blocks Block markers (default #RUNOS / #RUNOS), separators between blocks (e.g. `
E-invoice validation State of the KoSIT validator (Running, Starting…, Stopped, Error, Fallback mode) with Start / Restart and a short message; details in the log, see If the validator does not start
License License state, Installation ID with Copy ID, Check now
AI agents MCP server for AI agents on/off (default off) and Connect an AI agent with Copy Claude Code command, Copy JSON, New key, see AI agents (MCP)
Send usage statistics Once a day figures such as app starts, crashes, number and success of runs, action types with errors, versions. Never workflow names, file names, paths, content or messages.

Every Windows user has their own data, so several users of one PC (a terminal server) work with RUNOS independently and need no write access to shared folders.

Path Content
Documents\RUNOS\Config\Settings.json settings
Documents\RUNOS\Config\DB\ workflows, connectors, log, run history, parameter sets
Documents\RUNOS\Config\License.json license of this install
Documents\RUNOS\Pools\<printer name>\ your folder of a PDF printer, unless you chose another
%LOCALAPPDATA%\RUNOS\ work folder of the XRechnung action, KoSIT validator and reports

Settings → Data folder shows the path and opens it. Change… moves the data to another folder of your choice (empty or new, for example on another drive): RUNOS restarts and moves settings, license, workflows, connectors and log there before it opens anything; the old folder is deleted afterwards. The choice applies to your Windows user only and is stored under HKEY_CURRENT_USER\Software\RUNOS (DataFolder). If the chosen folder already contains RUNOS data (Settings.json or DB), RUNOS moves nothing and asks whether you want to use that folder, see Shared data folder. Any other folder that is not empty is refused. Documents is the user’s Documents folder, also when it is redirected (for example to a network drive). The files that ship with RUNOS (connector templates, KoSIT rules, color profile) are read from the Repository folder next to RUNOS.exe.

To back up, exit RUNOS and copy Documents\RUNOS\Config. Encrypted connector secrets can only be read by the same Windows user on the same PC.

Several Windows users can use one user’s workflows. Only this owner changes them; every change reaches the other users (members) at once, without a restart.

  1. Create a folder all users can write to, for example C:\RUNOS-Data (not one user’s Documents folder, which the others are not allowed to open).
  2. The future owner moves their data there: Settings → Data folder → Change… and pick the empty folder. RUNOS records them as the owner in Owner.txt in the folder.
  3. Every other user picks the same folder. RUNOS reports that it already contains RUNOS data; Use and restart restarts RUNOS with these workflows. Nothing is copied or deleted: the member’s own data stays in their previous folder, and they can switch back at any time by picking it again.
Shared (in the owner’s folder) Per user (in the member’s own folder)
Workflows, shared connectors Own connectors with their credentials
Log (User column) Settings, license
Log retention, script blocks (set by the owner) Start/stop of each workflow, recent-run dots
Parameter sets (until the member saves their own) Own parameter sets and Script choices
  • Only the owner changes workflows. A member sees Shared · read-only in the workflow list; New, reordering, saving, renaming and deleting are locked, for AI agents too. Members can open workflows, test them in the editor, and start and stop them; start/stop applies to their own RUNOS only. When the owner saves a workflow again, its Autostart applies to the members again, as it does for the owner.
  • Changes arrive at once. RUNOS checks every 2 seconds whether the owner changed anything and reloads only the changed workflows: new ones are added, deleted ones are stopped and removed, an open editor tab shows the new version (or closes if the workflow was deleted). The other workflows keep running undisturbed.
  • Everyone has their own connectors. A workflow finds connectors by name. If every user creates a connector with the same name under Connectors (for example Mail), the same workflow uses each user’s own address and password.
  • Sharing connectors: once a member has started RUNOS with the folder, the owner sees the box Share with the other users of this data folder on every connector under Connectors (without members it stays hidden). Checked and saved, the connector is kept in DB\SharedConnectors.db in the shared folder, and every member’s workflows can use it. The list marks it shared. Members see it, can test it and refresh its token, but cannot change or delete it; Duplicate turns it into a connector of their own. If a member has an own connector with the same name, theirs wins. A shared connector’s secrets are encrypted for this PC instead of for one user: every user of this PC (terminal server) can read them, another PC cannot. Unchecking it and saving makes it the owner’s own connector again.
  • Handing over ownership: under Settings → Data folder the owner sees which users also use the folder and can hand it to one of them with Hand over…. RUNOS restarts, copies the old owner’s license, own connectors, settings, run history and start/stop choices to a folder of their own (Documents\RUNOS\Config, else Documents\RUNOS\Personal) and uses the shared folder as a member from then on. The next time the new owner starts RUNOS, they take the folder over: their license, own connectors, settings, run history and start/stop choices come with them; workflows, log, shared connectors, parameter sets, log retention and script blocks stay as they are. Until then nobody changes the workflows.
  • Own pools: in the File trigger, use placeholders such as %userdocuments%\RUNOS\Pool1 instead of a fixed path. Then every user watches their own folder. A fixed path such as C:\Inbox would be watched by all logged-in users at the same time.
  • Log: everyone writes to the same log. The User column shows who wrote an entry; the other users’ entries also appear in your open RUNOS within a few seconds. A member’s trash button deletes only their own entries.
  • A member cannot move the shared folder. Picking their own data folder again brings back their own workflows, as before.

Update from an older version: until now the data was in C:\ProgramData\RUNOS, shared by all users of the PC. At its first start, the new version copies Settings.json, License.json and the DB folder from there into the user’s Documents\RUNOS\Config, once per Windows user, so everyone keeps their workflows and settings. On a terminal server every user thus starts with the workflows that were shared until then, and from then on each user’s changes stay their own. C:\ProgramData\RUNOS is left as it was; delete it once all users have started the new version. If RUNOS cannot write to Documents\RUNOS\Config (the network drive is offline, or Windows Security → Controlled folder access blocks it), it does not start and says so.

Is RUNOS free? Yes, RUNOS is free.

Do workflows run when nobody is signed in? No. RUNOS runs in the session of a signed-in user. For a PC that works unattended, leave a user signed in (a locked screen is fine).

My workflow doesn’t start when a file arrives. Is the workflow running (the list shows Stop)? Does the file match Filter? If several workflows share the folder, does the file name this workflow in its script blocks (Shared pool)? Is there a license message in the log?

My workflow was suddenly stopped. By "Strategy": "CancelWorkflow", a StopWorkflow action or by saving with "Autostart": false. The cause is in the log.

A placeholder stays empty. Open the log with the Trace filter: it shows what every placeholder resolved to. Common causes: a typo in the action name, the action hasn’t run yet, or the value of an HTTP response is under Response.Body.

Does RUNOS work with the new Outlook? The new Outlook cannot be controlled by any program. Send through Microsoft 365; for classic Outlook there is MAPI.

Are my invoices uploaded anywhere? No. Creating and validating the XRechnung happens entirely on your PC.

Write to us at info@systemberg.de; in RUNOS, Help → Contact us → Write e-mail opens your mail program. Helpful are the version (Settings → About), the installation ID and the workflow JSON without passwords; for errors also the log (Logs → Save log to file).