{"id":25605660,"url":"https://github.com/camunda/rpa-worker","last_synced_at":"2026-01-18T00:59:45.742Z","repository":{"id":277345463,"uuid":"919392339","full_name":"camunda/rpa-worker","owner":"camunda","description":"Zeebe job worker for running RPA tasks","archived":false,"fork":false,"pushed_at":"2025-02-20T13:21:37.000Z","size":492,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-20T14:21:38.580Z","etag":null,"topics":["automation","camunda","robotframework","rpa","zeebe-worker"],"latest_commit_sha":null,"homepage":"https://camunda.com/platform/robotic-process-automation/","language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camunda.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-20T10:03:05.000Z","updated_at":"2025-02-20T11:27:13.000Z","dependencies_parsed_at":"2025-02-14T13:16:20.552Z","dependency_job_id":null,"html_url":"https://github.com/camunda/rpa-worker","commit_stats":null,"previous_names":["camunda/rpa-worker"],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Frpa-worker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Frpa-worker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Frpa-worker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camunda%2Frpa-worker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camunda","download_url":"https://codeload.github.com/camunda/rpa-worker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240063933,"owners_count":19742227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","camunda","robotframework","rpa","zeebe-worker"],"created_at":"2025-02-21T18:18:24.277Z","updated_at":"2026-01-18T00:59:45.728Z","avatar_url":"https://github.com/camunda.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Camunda RPA Worker\n\nThe Camunda RPA Runtime is designed to bridge the gap between Robotic Process Automation (RPA) bots and the Camunda\nworkflow engine, enabling you to seamlessly integrate your task workers with Camunda.\n\n== Getting Started\n\n=== Obtaining the RPA Worker\n\nDownloads and details for container images are available on the  https://github.com/camunda/rpa-worker/releases[Releases]\npage.\n\n=== Configuration\n\nThe RPA Worker can source its configuration either from a configuration file, or environment variables. The RPA Worker\nwill look for a file named `rpa-worker.properties` in the current directory.\n\n==== Zeebe\n\nConnecting to a Camunda cluster requires providing the configuration for the Zeebe client. The RPA Worker uses the\nhttps://docs.camunda.io/docs/apis-tools/spring-zeebe-sdk/getting-started/#[Spring Zeebe] client, and so uses the same\nhttps://docs.camunda.io/docs/apis-tools/spring-zeebe-sdk/getting-started/#configuring-the-camunda-8-connection[Configuration Properties].\n\n.Example Camunda local dev configuration\n----\ncamunda.client.mode=selfmanaged\ncamunda.client.zeebe.grpc-address=http://zeebe.camunda.local\ncamunda.client.zeebe.rest-address=http://zeebe.camunda.local\n----\n\n.Example Camunda SaaS configuration\n----\ncamunda.client.mode=saas\ncamunda.client.auth.client-id=\u003cclient id\u003e\ncamunda.client.auth.client-secret=\u003cclient secret\u003e\ncamunda.client.cloud.cluster-id=\u003ccluster id\u003e\ncamunda.client.cloud.region=\u003cregion\u003e\n\ncamunda.rpa.secrets.backend=camunda\n----\n\n.Example custom/dev SaaS configuration\n----\ncamunda.client.mode=selfmanaged\n\ncamunda.client.cloud.cluster-id=\u003ccluster id\u003e\ncamunda.client.cloud.region=\u003cregion\u003e\n\ncamunda.client.auth.issuer=https://login.cloud.dev.ultrawombat.com/oauth/token\ncamunda.client.auth.client-id=\u003cclient id\u003e\ncamunda.client.auth.client-secret=\u003cclient secret\u003e\n\ncamunda.client.zeebe.rest-address=https://${camunda.client.cloud.cluster-id}.${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com\ncamunda.client.zeebe.grpc-address=https://${camunda.client.cloud.cluster-id}.${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com\ncamunda.client.zeebe.base-url=https://${camunda.client.cloud.region}.zeebe.dev.ultrawombat.com/${camunda.client.cloud.cluster-id}\ncamunda.client.zeebe.audience=zeebe.dev.ultrawombat.com\n\ncamunda.rpa.zeebe.auth-endpoint=https://login.cloud.dev.ultrawombat.com/oauth\n\ncamunda.rpa.secrets.backend=camunda\ncamunda.rpa.secrets.camunda.token-audience=secrets.dev.ultrawombat.com\ncamunda.rpa.secrets.camunda.secrets-endpoint=https://cluster-api.cloud.dev.ultrawombat.com\n----\n\nTIP: When creating an API client in the Camunda Cloud Console, the autogenerated configuration file provided contains\nmost of the necessary configuration for connecting to production Camunda SaaS stacks.\n\n\n==== Local-only Working\n\nThe Zeebe startup check and subscriptions can be disabled by setting\n`camunda.client.zeebe.enabled` to *false*. \nAlthough the Zeebe Client itself cannot be disabled and it will still log,\nthe application will keep running allowing local working and these messages can be ignored.\n\n==== Python\n\nWhen the RPA Worker sets up its Python environment it will install a default set of dependencies. \n\nAdditional dependencies can be installed by providing a supplementary `requirements.txt` file with the \n`camunda.rpa.python.extra-requirements` property.\n\n\n.extra-requirements.txt\n----\nnumpy==1.26.4\njmespath\n----\n\n.rpa-worker.properties\n----\ncamunda.rpa.python.extra-requirements=extra-requirements.txt\n----\n\nIf the extra requirements files changes, the RPA Worker will install the new dependencies at the next restart, although\nno dependencies will be removed. If the Python environment is deleted then the RPA Worker will recreate it from scratch. \n\n== Robot Job Execution\n\n=== Robot Runtimes\n\nThe RPA Worker supports two runtimes for executing Robotframework. \n\n==== The Python Runtime\n\nThe Python runtime creates a dedicated Virtual Environment using an available Python distribution. \nThe Python distribution may already be present on the host, or it may be provisioned automatically by the RPA Worker on \nplatforms where this is supported. \n\nThe first time the environment is created the RPA Worker will install the necessary base dependencies into the \nenvironment. \nIt will also install, if configured, any additional user-supplied extra requirements. \nIf the base requirements change, such as a new version of the RPA Worker updating these dependencies, or the extra \nrequirements are updated, then the RPA Worker will update the environment with the new dependencies automatically. \n\nAs dependencies are fetched from the internet, the Python Runtime requires an internet connection.\n\n==== The Static Runtime\n\nThe Static Runtime is a pre-built Python environment which is bundled with the RPA Worker. \nIt contains a Python interpreter, as well as all the base dependencies, statically linked together in a single \nexecutable.\nAs such, when using the Static Runtime it is not possible to install any extra requirements. \n\nAs the base dependencies are included in the Static Runtime, it does not require an internet connection.\n\n\n==== Choosing a Runtime\n\nThe choice of runtime can be configured via the `camunda.rpa.python-runtime.type` configuration property. \nIt supports three values: `auto` (the default), `static`, and `python`. \n\nWhen the runtime is set to `auto`, the RPA Worker will run the following checks to see if the Python Runtime is \nsupported:\n\n* If there is an existing Python environment created by the RPA Worker then this will be used\n* If an internet connection is detected, **AND**:\n** There is a local Python distribution at a supported version (\u003e=3.10,\u003c3.12) then this will be used to create a new\nVirtual Environment, **OR**\n** There is no local Python, but it can be provisioned automatically on the current platform (Windows), then Python \nwill be provisioned in this way and used to create a new Virtual Environment\n\nIf these conditions are not satisfied then the RPA Worker will fall back to the Static Runtime.\n\nNOTE: The Static Runtime is not supported in the JAR distribution of the RPA Worker\n\n=== Built-in Variables\n\nThe RPA Worker makes the following environment variables available to the Robot execution:\n\n\n|===\n|Variable |Description\n\n|`RPA_WORKSPACE_ID`\n|The workspace ID of the current job\n\n|`RPA_WORKSPACE`\n|The full path to the workspace of the current job\n\n|`RPA_SCRIPT`\n|The name of the currently executing script\n\n|`RPA_EXECUTION_KEY`\n|The execution key of the currently executing script\n\n|`RPA_ZEEBE_JOB_KEY`\n|The Zeebe Job Key which triggered the Robot execution\n\n|`RPA_ZEEBE_JOB_TYPE`\n|The Zeebe Job type\n\n|`RPA_ZEEBE_BPMN_PROCESS_ID`\n|The current BPMN process ID\n\n|`RPA_ZEEBE_PROCESS_INSTANCE_KEY`\n|The current process instance key\n\n|===\n\n\n== Configuration Reference\n\n[stripes=even]\n|===\n|Property |Description| Default Value\n\n3+| *Python Properties*\n\n|camunda.rpa.python.path\n|The directory in which the Python environment will be created\n|`${user.dir}/python/venv/`\n\n|camunda.rpa.python.download-url\n|The URL from which the portable Python will be downloaded if no system Python is available (Windows only)\n|`https://github.com/winpython/winpython/releases/download/11.2.20241228final/Winpython64-3.13.1.0dot.zip`\n\n|camunda.rpa.python.download-hash\n|The expected SHA-256 hash of the file at `download-url`\n|`47b9a4ce75efb29d78dda80716d6c35f9a13621efd3a89ef8242a114ef8001a3`\n\n|camunda.rpa.python.extra-requirements\n|The path to additional Python requirements that should be installed when setting up the Python environment\n|_None_\n\n|camunda.rpa.python.interpreter\n|Path to a specific Python interpreter to use, rather than searching the path\n|_None_\n\n|camunda.rpa.python-runtime.type\n|Which runtime to use for executing Robot. Can be `auto`, `python`, or `static`\n|`auto`\n\n\n3+| *Robot Properties*\n\n|camunda.rpa.robot.default-timeout\n|The default timeout to use when no other timeout is specified (ISO 8601 duration string)\n|`PT5M` (5 minutes)\n\n|camunda.rpa.robot.fail-fast\n|Stops task execution if any task fails\n|`true`\n\n\n3+| *Sandbox Properties*\n\n|camunda.rpa.sandbox.enabled\n|Whether the script evaluation API should be available\n|`true`\n\n3+| *Zeebe Properties*\n|camunda.client.zeebe.enabled\n|Whether the Zeebe integration should be enabled\n|`true`\n\n|camunda.rpa.zeebe.rpa-task-prefix\n|The prefix used to construct the task subscription key\n|`camunda::RPA-Task::`\n\n|camunda.rpa.zeebe.worker-tags\n|The worker tag(s) this worker should subscribe to (comma-separated)\n|`default`\n\n|camunda.rpa.zeebe.max-concurrent-jobs\n|How many Robot jobs from Zeebe to run concurrently\n|`1`\n\n|camunda.rpa.zeebe.auth-endpoint\n|The authentication endpoint that should be used for authenticating before sending requests\n|`https://login.cloud.camunda.io/oauth`\n\n|camunda.client.zeebe.audience\n|The token audience to use when authenticating for Zeebe\n|`zeebe.camunda.io`\n\n|camunda.client.cloud.region\n|The region for Camunda SaaS\n|_None_\n\n|camunda.client.cloud.cluster-id\n|The cluster ID for Camunda SaaS\n|_None_\n\n|camunda.client.zeebe.base-url\n|The region for Camunda SaaS\n|`https://${camunda.client.cloud.region}.zeebe.camunda.io/${camunda.client.cloud.cluster-id}`\n\n|camunda.client.auth.client-id\n|The client ID to use when authenticating with Zeebe\n|_None_\n\n|camunda.client.auth.client-secret\n|The client secret to use when authenticating with Zeebe\n|_None_\n\n3+| _See the \nhttps://docs.camunda.io/docs/apis-tools/spring-zeebe-sdk/configuration/#additional-configuration-options[Spring Zeebe Configuration Reference]\nfor other supported properties_\n\n3+| *Secrets Properties - General*\n|camunda.rpa.secrets.backend\n|The secrets provider backend\n|`none` _(Secrets disabled)_\n\n3+| *Secrets Properties - Camunda (`...backend=camunda`)*\n|camunda.rpa.secrets.camunda.secrets-endpoint\n|The endpoint providing the Camunda secrets service\n|`https://cluster-api.cloud.camunda.io`\n\n|camunda.rpa.secrets.camunda.secrets.token-audience\n|The token audience to use when authenticating for secrets\n|`secrets.camunda.io`\n\n\n3+| *General Properties*\n|server.address\n|Network address to which the server should bind\n|`localhost` for standalone, any for container\n\n|logging.file.name\n|Output file for log file (non-containerised)\n|`rpa-worker.jsonl.log`\n|===\n\n\n== Supported Configuration\n\nThe RPA Worker will source its configuration from configuration files and/or environment variables.\nThe precedence order is documented in https://docs.spring.io/spring-boot/reference/features/external-config.html[Spring's Externalized Configuration] documentation.\n\n.Configuration Files\nA configuration file can be a Properties or a YAML document. \nIt can have the name `application` or `rpa-worker`. \nIt can be placed in the working directory of the Worker, or in a directory named `config` therein. \nThe following are all valid paths to RPA Worker configuration files:\n\n* `rpa-worker.properties`\n* `application.properties`\n* `rpa-worker.yaml`\n* `application.yaml`\n* `config/rpa-worker.properties`\n* `config/application.properties`\n* etc\n\n.Environment Variables\nPreferable for container-based deployments, the RPA Worker can source its configuration from environment variables. \nThe name of the environment variables follow https://docs.spring.io/spring-boot/reference/features/external-config.html#features.external-config.typesafe-configuration-properties.relaxed-binding.environment-variables[Spring's Binding Rules],\nwhich can be briefly summarised as:\n\n. Convert the property name to upper-case\n. Replace dots with underscores\n. Remove hyphens\n\nFor example `camunda.rpa.zeebe.worker-tags` would become `CAMUNDA_RPA_ZEEBE_WORKERTAGS`.\n\nLaunching a dev container with Zeebe connection details, mapping the Worker's listener port to the host, might look like:\n[source,shell]\n----\n$ docker run --rm -it \\\n    -p 36227:36227 \\\n    -e CAMUNDA_CLIENT_MODE=saas \\\n    -e CAMUNDA_CLIENT_AUTH_CLIENTID=abc123 \\\n    -e CAMUNDA_CLIENT_AUTH_CLIENTSECRET=def234 \\\n    -e CAMUNDA_CLIENT_CLOUD_CLUSTERID=ghi345 \\\n    -e CAMUNDA_CLIENT_CLOUD_REGION=lpp-1 \\\n    ghcr.io/camunda/rpa-worker:\u003cversion\u003e\n----\n\n\n=== Internal / Advanced Configuration by Environment Variable\n\nAll of the RPA Worker's environment variables will also be made available to \nPython/Robot execution. In addition to any user-specific environment variables,\nthere are two internal variables that may be set:\n\n|===\n|*Variable*|*Description*|*Default Value*\n\n|`RPA_BASE_URL`\n|The URL for the RPA Worker, which the Python/Robot execution will use to \ncommunicate back to the RPA Worker\n|`http://127.0.0.1:36227`\n\n|`SSL_NO_VERIFY`\n|Whether the *Python/Robot* execution will ignore HTTPS certificate errors\nwhen communicating back to the RPA Worker (flag variable)\n|_Unset_\n|===\n\n\n== License\n\nThese source files are made available under the Camunda License Version 1.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda%2Frpa-worker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamunda%2Frpa-worker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamunda%2Frpa-worker/lists"}