Skip to main content
Version: 0.24.0

Quick Start

Estimated time: 30 minutes Follow this end-to-end walkthrough to go from a fresh installation of Aiviro Editor to a robot that runs by itself on a schedule.


1. Activate your licence

  1. Launch Aiviro Editor.
  2. Open Settings → Edit Configuration → Aiviro.
  3. Paste your Client ID and API Key, then click Test Credentials.
  4. Wait for the success message, then save and restart the Editor.

Settings → Edit Configuration → Aiviro with a successful


2. Connect a robot

Click Connect (Shift+R) and pick a robot type:

  • Desktop — runs on your local PC. Requires two monitors.
  • RDP — connects to a remote Windows session. Recommended for production.
  • Web — automates Google Chrome through ChromeDriver.

Give the configuration a Profile Name, fill in the connection details, save the profile, and click Connect. Details of every field are in Robot Types & Configuration.


3. Create a project

  1. File → New Project (Ctrl+N).
  2. File → Save Project (Ctrl+S), choose a folder and name it DemoQuickStart.

The project opens with an empty scenario.


4. Build the scenario

You will build a flow that:

  1. Opens a page showing the USD → EUR exchange rate.
  2. Reads the current rate into a variable.
  3. Closes the browser.
  4. Opens Notepad, waits until it is ready, and writes two lines mixing the date, plain text and the rate.
  5. Saves the note under a filename containing today's date, and exits.

The finished Commands tree for this scenario, with the section collapsed/expanded so all ~17 actions are visible

Read the rate

#ActionMenu pathParameters
1[RDP] Open URLToolshttps://dollarstoeuro.com/usd-to-euro
2Teach robotShift+E in the live view, so the page's elements are detected
3AI ReadAISource Type Screen; Instructions get rate usd to eur; Extract template one row — name current_rate, type float; Save to variable current_rate
4GetTools — or Ctrl+Shift+GReads when the rate was last updated. Object type On the right; ReferenceText, Label Last Updated:; QueryText, Label left empty; Variable name rate_time
5Key ShortcutKeyboardAlt + F4 to close the browser

The Get action reading the update time

Why a reference?

Anchoring the search to the fixed label Last Updated: makes the automation immune to layout shifts — the value next to it changes every run, the label does not. Leaving the Query label empty matches whatever text sits to the right of the reference. See Positional Search.

AI Read returns a structure

Extract template defines the shape of the result, so current_rate holds a structure keyed by the field names you listed — not the bare number. Reference the value as $current_rate['current_rate']. See AI Read.

Open Notepad and wait for it

#ActionMenu pathParameters
6[RDP] Custom CommandStart Processnotepad
7Wait ForWaitText Notepad — wait until the window is really up

Wait For guarantees typing only starts once Notepad is really on screen.

Build the text

Add three Create variable actions (Tools, or Ctrl+Shift+V):

#VariableValue
8notepad_entry_first_lineExchange rate for $CONSTANTS['DAY_OF_WEEK_NAME'],$CONSTANTS['DAY']/$CONSTANTS['MONTH']/$CONSTANTS['YEAR']
9notepad_entry_second_line1 USD = $current_rate['current_rate'] EUR
10filenameRate_$CONSTANTS['FULL_DATE']

Write them as ordinary sentences and mark variables with $. Python f-strings are no longer needed — see Values & Expressions.

Type, save and exit

#ActionMenu pathParameters
11Type TextKeyboard$notepad_entry_first_line, Key after typing Enter
12Type TextKeyboard$notepad_entry_second_line, Key after typing Enter
13Key ShortcutKeyboardCtrl + S
14Wait ForWaitText *.txt — confirms the Save dialog is up
15Type TextKeyboard$filename, Key after typing Enter
16Key ShortcutKeyboardAlt + F4
tip

Key after typing replaces the separate Enter steps the old version of this walkthrough needed — three fewer actions to maintain.

What you have learned

  • [RDP] Custom Command launches any executable with parameters.
  • AI Read pulls a value out of a page by describing what you want, with no search object to maintain.
  • Get with a positional object reads a value anchored to a stable label next to it.
  • Create variable builds text that mixes CONSTANTS and captured values, using $.
  • Wait For keeps the flow stable without fixed sleeps.
  • Key Shortcut and Type Text — with Key after typing — cover most desktop interaction.

5. Test it

  1. Click Run all in the Commands panel header.
  2. Watch the robot execute the actions step by step.
  3. Open the Runs panel and confirm a green Success status.

The Runs panel with a successful run selected

If it failed, use the log and screenshots in the run detail to find the step that broke — see Recent Runs.

Ready-made scenario

The finished scenario, exported from the Editor. Paste it into a new project.

Show / copy the JSON
{
"id": "e3135ae5-4ca1-46e1-9c2b-355c999fb2e2",
"root_action": {
"obj": {
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
}
},
"children": [
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"title": {
"value": "USD to EUR rate",
"__class__": "0x1"
}
},
"children": [
{
"values": {
"url": {
"value": "https://dollarstoeuro.com/usd-to-euro",
"__class__": "0x1"
},
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"as_admin": {
"value": false,
"__class__": "0x4"
},
"sensitive_data": {
"value": false,
"__class__": "0x4"
},
"timeout": {
"value": 15,
"__class__": "0x5"
},
"sleep_time": {
"value": 1,
"__class__": "0x5"
}
},
"children": [],
"unique_id": "qgS5Kjm8QASDpARdiONOFg",
"__class__": "0x3"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"source": {
"values": {
"_info": {
"value": "Processing text from current screen",
"__class__": "0x1"
}
},
"__class__": "0x7"
},
"instructions": {
"value": "get rate usd to eur \n",
"__class__": "0x1"
},
"image_context_enabled": {
"value": false,
"__class__": "0x4"
},
"source_to_save": {
"value": "current_rate",
"__class__": "0x1"
},
"values": {
"value": [
[
"current_rate",
"float"
]
],
"__class__": "0x8"
},
"json_schema": {
"value": "",
"__class__": "0x1"
}
},
"children": [],
"unique_id": "uOBGPQ3rQDunoDSBU2aaNA",
"__class__": "0x6"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"values": {
"query": {
"values": {
"text": {
"value": "",
"__class__": "0x1"
},
"find_method": {
"value": [
"AUTO"
],
"__class__": "0xc"
},
"element_index": {
"value": null,
"__class__": "0xd"
}
},
"__class__": "0xb"
},
"reference": {
"values": {
"text": {
"value": "Last Updated:",
"__class__": "0x1"
},
"find_method": {
"value": [
"AUTO"
],
"__class__": "0xc"
},
"element_index": {
"value": null,
"__class__": "0xd"
}
},
"__class__": "0xb"
},
"element_index": {
"value": null,
"__class__": "0xd"
},
"alignment": {
"value": true,
"__class__": "0x4"
}
},
"__class__": "0xa"
},
"variable_name": {
"value": "rate_time",
"__class__": "0x1"
},
"timeout": {
"value": 60,
"__class__": "0x5"
},
"result_type": {
"value": "text",
"__class__": "0xe"
},
"result_is_secret": {
"value": false,
"__class__": "0x4"
}
},
"children": [],
"unique_id": "bbKQko69TK-qQzcn4fjqNw",
"__class__": "0x9"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"key": {
"value": [
"LEFT_ALT",
"F4"
],
"__class__": "0x10"
},
"wait": {
"__class__": "0x11"
},
"key_delay": {
"value": null,
"__class__": "0xd"
}
},
"children": [],
"unique_id": "E31W9JKeRjKy4SFJzYQkPg",
"__class__": "0xf"
},
{
"values": {
"command": {
"value": "notepad",
"__class__": "0x1"
},
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"as_admin": {
"value": false,
"__class__": "0x4"
},
"sensitive_data": {
"value": false,
"__class__": "0x4"
},
"timeout": {
"value": 15,
"__class__": "0x5"
},
"sleep_time": {
"value": 1,
"__class__": "0x5"
}
},
"children": [],
"unique_id": "azt8sgEtTlyTQ2u5XzyKQw",
"__class__": "0x12"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"values": {
"text": {
"value": "Notepad",
"__class__": "0x1"
},
"find_method": {
"value": [
"AUTO"
],
"__class__": "0xc"
},
"element_index": {
"value": null,
"__class__": "0xd"
}
},
"__class__": "0xb"
},
"timeout": {
"value": 3,
"__class__": "0x5"
},
"ignore_timeout_exception": {
"value": false,
"__class__": "0x4"
}
},
"children": [],
"unique_id": "vtNV4DmtTRSWnnZT6i40MQ",
"__class__": "0x13"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"assign_item": {
"name": "notepad_entry_first_line",
"expression": "f\"Exchange rate for {CONSTANTS['DAY_OF_WEEK_NAME']},{CONSTANTS['DAY']}/{CONSTANTS['MONTH']}/{CONSTANTS['YEAR']}\"",
"prompts": [],
"__class__": "0x15"
}
},
"children": [],
"unique_id": "LxiEsFIjSDyHKk00uDJpug",
"__class__": "0x14"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"assign_item": {
"name": "notepad_entry_second_line",
"expression": "f\"1 USD = {current_rate['current_rate']} EUR\"",
"prompts": [],
"__class__": "0x15"
}
},
"children": [],
"unique_id": "q1JQEWDyQ1qGuzrx4OVOaA",
"__class__": "0x14"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"assign_item": {
"name": "filename",
"expression": "f\"Rate_{CONSTANTS['FULL_DATE']}\"",
"prompts": [],
"__class__": "0x15"
}
},
"children": [],
"unique_id": "U-nHGsjeQLW0skRl5VFYRg",
"__class__": "0x14"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"text": {
"value": "notepad_entry_first_line",
"__class__": "0x17"
},
"wait": {
"__class__": "0x11"
},
"per_char_sleep_time": {
"value": null,
"__class__": "0xd"
},
"clear": {
"value": false,
"__class__": "0x4"
},
"key": {
"value": [
"ENTER"
],
"__class__": "0x10"
}
},
"children": [],
"unique_id": "eXyik8hNTnGlcoLWJiH9PA",
"__class__": "0x16"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"text": {
"value": "notepad_entry_second_line",
"__class__": "0x17"
},
"wait": {
"__class__": "0x11"
},
"per_char_sleep_time": {
"value": null,
"__class__": "0xd"
},
"clear": {
"value": false,
"__class__": "0x4"
},
"key": {
"value": [
"ENTER"
],
"__class__": "0x10"
}
},
"children": [],
"unique_id": "N7PWVpq-QravoOVXmZXKuA",
"__class__": "0x16"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"key": {
"value": [
"LEFT_CONTROL",
"KEY_S"
],
"__class__": "0x10"
},
"wait": {
"__class__": "0x11"
},
"key_delay": {
"value": null,
"__class__": "0xd"
}
},
"children": [],
"unique_id": "6ispLPoxS32VAwzBMcrouw",
"__class__": "0xf"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"values": {
"text": {
"value": "*.txt",
"__class__": "0x1"
},
"find_method": {
"value": [
"AUTO"
],
"__class__": "0xc"
},
"element_index": {
"value": null,
"__class__": "0xd"
}
},
"__class__": "0xb"
},
"timeout": {
"value": 3,
"__class__": "0x5"
},
"ignore_timeout_exception": {
"value": false,
"__class__": "0x4"
}
},
"children": [],
"unique_id": "-pwZeUIMT5i7gY2XqorvGg",
"__class__": "0x13"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"required_success": {
"value": true,
"__class__": "0x4"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"text": {
"value": "filename",
"__class__": "0x17"
},
"wait": {
"__class__": "0x11"
},
"per_char_sleep_time": {
"value": null,
"__class__": "0xd"
},
"clear": {
"value": false,
"__class__": "0x4"
},
"key": {
"value": [
"ENTER"
],
"__class__": "0x10"
}
},
"children": [],
"unique_id": "BDOuRJYYTmOUa9JE78hv8g",
"__class__": "0x16"
},
{
"values": {
"enable_execution": {
"value": "Enabled",
"__class__": "0x1"
},
"search_object": {
"value": null,
"__class__": "0xd"
},
"key": {
"value": [
"LEFT_ALT",
"F4"
],
"__class__": "0x10"
},
"wait": {
"__class__": "0x11"
},
"key_delay": {
"value": null,
"__class__": "0xd"
}
},
"children": [],
"unique_id": "AXnz5Km8TxCXpUAWKLxw0A",
"__class__": "0xf"
}
],
"unique_id": "E1CH-2bqSXSbnk09jPQheA",
"__class__": "0x2"
}
],
"unique_id": "84z0ioNdQNmnxib9RhnDKw",
"__class__": "0x0"
},
"__mapping__": {
"0x0": [
"aiviro_editor.actions.block",
"ActionBlock"
],
"0x1": [
"aiviro_editor.parameters.primitive",
"StrValue"
],
"0x2": [
"aiviro_editor.actions.markup",
"Section"
],
"0x3": [
"aiviro_editor.actions.other",
"RDPOpenUrl"
],
"0x4": [
"aiviro_editor.parameters.primitive",
"BoolValue"
],
"0x5": [
"aiviro_editor.parameters.primitive",
"IntValue"
],
"0x6": [
"aiviro_editor.actions.ai",
"ProcessTextAction"
],
"0x7": [
"aiviro_editor.parameters.misc",
"ScreenSourceValue"
],
"0x8": [
"aiviro_editor.parameters.misc",
"KeywordValueValue"
],
"0x9": [
"aiviro_editor.actions.input_actions",
"GetAction"
],
"0xa": [
"aiviro_editor.parameters.aiviro_positional",
"OnTheRightElementValue"
],
"0xb": [
"aiviro_editor.parameters.aiviro_internal",
"TextElementValue"
],
"0xc": [
"aiviro_editor.parameters.aiviro_common",
"FindMethodValue"
],
"0xd": [
"aiviro_editor.parameters.primitive",
"NoneValue"
],
"0xe": [
"aiviro_editor.parameters.misc",
"GetCommandResultValue"
],
"0xf": [
"aiviro_editor.actions.keyboard_actions",
"KeyShortcut"
],
"0x10": [
"aiviro_editor.parameters.aiviro_common",
"BaseKeyValue"
],
"0x11": [
"aiviro_editor.parameters.primitive",
"ImplicitWaitValue"
],
"0x12": [
"aiviro_editor.actions.other",
"StartProcessRDPAction"
],
"0x13": [
"aiviro_editor.actions.input_actions",
"WaitForAction"
],
"0x14": [
"aiviro_editor.actions.other",
"AssignAction"
],
"0x15": [
"aiviro_editor.parameters.misc",
"VariableDropdownDataValue"
],
"0x16": [
"aiviro_editor.actions.keyboard_actions",
"TypeText"
],
"0x17": [
"aiviro_editor.parameters.variable",
"VariableValue"
]
}
},
"schedule": {
"config": null,
"auto_schedule": false,
"run_profile": ""
},
"settings": {
"implicit_wait_timeout": null,
"animation_timeout": null,
"locale_name": "en_US",
"locale_formats": {
"datetime": {
"format": "d.M.y HH:mm:ss"
},
"date": {
"format": "d.M.y"
},
"decimal": {
"format": null,
"group_separator": false
}
},
"scenario_prompt": null,
"ai_descriptions": {
"-pwZeUIMT5i7gY2XqorvGg": {
"high": "Wait for the \"*.txt\" save field to appear.",
"low": "Wait for a text to appear (label=\"*.txt\", timeout=3)."
},
"6ispLPoxS32VAwzBMcrouw": {
"high": "Press Ctrl+S to save the file.",
"low": "Press a key shortcut (key=[\"LEFT_CONTROL\", \"KEY_S\"])."
},
"AXnz5Km8TxCXpUAWKLxw0A": {
"high": "Press Alt+F4 to exit.",
"low": "Press a key shortcut (key=[\"LEFT_ALT\", \"F4\"])."
},
"BDOuRJYYTmOUa9JE78hv8g": {
"high": "Type the filename into the focused field and press Enter.",
"low": "Type (text=variable(filename), key=[\"ENTER\"])."
},
"E1CH-2bqSXSbnk09jPQheA": {
"high": "Create a section for the USD to EUR rate steps.",
"low": "Group actions as a section (title=\"USD to EUR rate\")."
},
"E31W9JKeRjKy4SFJzYQkPg": {
"high": "Press Alt+F4 to close the window.",
"low": "Press a key shortcut (key=[\"LEFT_ALT\", \"F4\"])."
},
"LxiEsFIjSDyHKk00uDJpug": {
"high": "Create the first line for the Notepad entry.",
"low": "Assign a value to a variable (name=\"notepad_entry_first_line\", value=\"f\\\"Exchange rate for {CONSTANTS['DAY_OF_WEEK_NAME']},{CONSTANTS['DAY']}/{CONSTANTS['MONTH']}/{CONSTANTS['YEAR']}\\\"\")."
},
"N7PWVpq-QravoOVXmZXKuA": {
"high": "Type the second line into the focused field and press Enter.",
"low": "Type (text=variable(notepad_entry_second_line), key=[\"ENTER\"])."
},
"U-nHGsjeQLW0skRl5VFYRg": {
"high": "Create the output filename from the current date.",
"low": "Assign a value to a variable (name=\"filename\", value=\"f\\\"Rate_{CONSTANTS['FULL_DATE']}\\\"\")."
},
"azt8sgEtTlyTQ2u5XzyKQw": {
"high": "Start Notepad in RDP.",
"low": "Start a process in RDP (command=\"notepad\")."
},
"bbKQko69TK-qQzcn4fjqNw": {
"high": "Get the time next to \"Last Updated:\".",
"low": "Get data from an element below a text (text=\"Last Updated\") (variable_name=\"rate_time\")."
},
"eXyik8hNTnGlcoLWJiH9PA": {
"high": "Type the first line into the focused field and press Enter.",
"low": "Type (text=variable(notepad_entry_first_line), key=[\"ENTER\"])."
},
"q1JQEWDyQ1qGuzrx4OVOaA": {
"high": "Create the second line with the current exchange rate.",
"low": "Assign a value to a variable (name=\"notepad_entry_second_line\", value=\"f\\\"1 USD = {current_rate['current_rate']} EUR\\\"\")."
},
"qgS5Kjm8QASDpARdiONOFg": {
"high": "Open the USD to EUR page in RDP.",
"low": "Open a URL via RDP (url=\"https://dollarstoeuro.com/usd-to-euro\")."
},
"uOBGPQ3rQDunoDSBU2aaNA": {
"high": "Extract the current USD to EUR rate from the screen.",
"low": "Process text from the current screen (instructions=\"get rate usd to eur \n\", image_context_enabled=false, source=\"current screen\", source_to_save=\"current_rate\", values=[[\"current_rate\", \"float\"]], data_type=\"ProcessTextAction\")."
},
"vtNV4DmtTRSWnnZT6i40MQ": {
"high": "Wait for Notepad to appear.",
"low": "Wait for a text to appear (label=\"Notepad\", timeout=3)."
}
}
}
}
Two ways to write the same expression

In the export, the three Create variable actions use Python f-strings (f"Rate_{CONSTANTS['FULL_DATE']}") instead of the plain $variable sentences shown in the step tables. Both forms are equivalent and both work — see Values & Expressions.


6. Move credentials into the Vault

Before scheduling anything, take any password out of the actions:

  1. Click Vault in the toolbar.
  2. Add a Password entry, for example RDP_PASSWORD.
  3. Replace the plain-text value in the action with {{SECRET:RDP_PASSWORD}}.

This scenario has no password, but every real one will — see Secure Vault.


7. Schedule it

  1. Click Settings in the Commands panel header to open Scenario Settings.
  2. Tick Active.
  3. Set Schedule type to Daily and choose 09:00.
  4. Pick the robot Profile the scheduled run should use.
  5. Confirm the Time zone, and save.

Scenario Settings with Active ticked, Schedule type: Daily, a time set, and the human-readable schedule description visible below


8. Turn on Auto Mode

Flip Auto Mode in the main toolbar to On and leave Aiviro Editor running. The Orchestrator now executes the scenario every day at 09:00.

The main toolbar with Auto Mode switched on, and the Runs panel showing the next planned run marked Scheduled

The next planned run appears at the top of the Runs panel with a Scheduled badge. Return there after 09:00 — the entry should have turned into a finished run with today's date.


Next steps

Need help? Check the sidebar or reach out to Aiviro Support.