RCC allows you to create, manage, and distribute Python-based self-contained automation packages. RCC also allows you to run your automations in isolated Python environments so they can still access the rest of your machine.
Repeatable, Contained Code - movable and isolated Python environments for your automation.
Together with robot.yaml configuration file, rcc is a foundation that allows anyone to build and share automation easily.
RCC is actively maintained by JoshYorko.
- You do not need to install Python on the target machine
- You can control exactly which version of Python your automation will run on (..and which pip version is used to resolve dependencies)
- You can avoid
Works on my machine - No need for
venv,pyenv, ... tooling and knowledge sharing inside your team. - Define dependencies in
conda.yamland automation config inrobot.yamland let RCC do the heavy lifting. - If you have run into "dependency drifts", where once working runtime environment dependencies get updated and break your production system?, RCC can freeze ALL dependencies, pre-build environments, and more.
- RCC will give you a heads-up if your automations have been leaving behind processes after running.
...and much much more.
Install rcc
Pull a robot from GitHub:
rcc pull github.com/joshyorko/template-python-browser
Run robot
rcc run
Create your own robot from templates
rcc create
For detailed instructions, visit the RCC documentation to get started. To build rcc from this repository, see the Setup Guide
Named providers are stored per ROBOCORP_HOME and are used by the portable
artifact commands:
rcc provider add office --type http --url http://127.0.0.1:8080 \
--authorization-env RCC_PROVIDER_OFFICE_AUTHORIZATION --json
rcc provider list --json
rcc provider inspect office --json
rcc provider test office --json
rcc provider remove office --json
rcc env publish --robot robot.yaml --provider office --json
rcc env acquire --artifact sha256:<digest> --provider office --jsonauthorization-env stores only the environment-variable name. When present,
its value must be a complete HTTP Authorization header (for example,
Bearer token); the secret is never persisted or printed. Provider URLs must
be root-only with no userinfo, query, or fragment. HTTP is restricted to
explicit loopback hosts (localhost, 127.0.0.0/8, or ::1); remote endpoints
must use HTTPS. Redirects are rejected.
The built-in local provider uses the local provider root; it is distinct from
the RCC cache and local materializations. A warm acquire reuses a complete local
materialization without contacting the provider or rebuilding, even when the
provider authorization variable is absent. Existing direct HTTP(S) --provider
URLs remain supported. Provider names select transport only; the immutable
sha256: Artifact digest remains the identity. The legacy rccremote protocol
is classified as compatibility level A for v18.
Links to changelog and different versions available here
- Open the command prompt
- Download:
curl -o rcc.exe https://github.com/joshyorko/rcc/releases/latest/download/rcc-windows64.exe - Add to system path: Open Start ->
Edit the system environment variables - Test:
rcc
- Open the terminal
- Intel:
curl -o rcc https://github.com/joshyorko/rcc/releases/latest/download/rcc-macos64 - Apple Silicon:
curl -o rcc https://github.com/joshyorko/rcc/releases/latest/download/rcc-macosarm64 - Make the downloaded file executable:
chmod a+x rcc - Add to path:
sudo mv rcc /usr/local/bin/ - Test:
rcc
- Open the terminal
- Download:
curl -o rcc https://github.com/joshyorko/rcc/releases/latest/download/rcc-linux64 - Make the downloaded file executable:
chmod a+x rcc - Add to path:
sudo mv rcc /usr/local/bin/ - Test:
rcc
RCC is available via Homebrew for both macOS and Linux:
brew tap joshyorko/tools
brew install --cask rcc| Platform | Status | Binary |
|---|---|---|
| Linux x64 | ✅ Native | rcc-linux64 |
| macOS Intel | ✅ Native | rcc-macos64 |
| macOS Apple Silicon | ✅ Native | rcc-macosarm64 |
Add to your Brewfile:
tap "joshyorko/tools"
cask "rcc"Or with the full path:
cask "joshyorko/tools/rcc"The changelog can be seen here. It is also visible inside RCC using the command rcc docs changelog.
Some tips, tricks, and recipes can be found here.
These are also visible inside RCC using the command: rcc docs recipes.
For additional documentation on robot.yaml, conda.yaml, and the broader ecosystem, see the Robocorp Documentation.
This fork disables all internal telemetry by default:
- No background metrics are sent and internal metrics are disabled across product modes.
- The installation identifier header is not attached to outbound HTTP requests when telemetry is disabled.
- The
rcc configure identityoutput will always report tracking as disabled unless explicitly modified in code; feedback/metric commands are effectively no-ops.
You can repoint all network endpoints via environment variables or a local settings.yaml.
Environment variables (take precedence over builtin settings):
RCC_ENDPOINT_CLOUD_APIRCC_ENDPOINT_CLOUD_LINKINGRCC_ENDPOINT_CLOUD_UIRCC_ENDPOINT_DOWNLOADSRCC_ENDPOINT_DOCSRCC_ENDPOINT_TELEMETRYRCC_ENDPOINT_ISSUESRCC_ENDPOINT_PYPIRCC_ENDPOINT_PYPI_TRUSTEDRCC_ENDPOINT_CONDARCC_ENDPOINT_UV_RELEASES- Override the uv binary download URL (default: GitHub releases)RCC_AUTOUPDATES_TEMPLATES- Override the templates.yaml URL for robot templatesRCC_AUTOUPDATES_RCC_INDEX- Override the index.json URL for version checking
Example (~/.zshrc):
# Point rcc at your own control plane endpoints
export RCC_ENDPOINT_CLOUD_API="https://api.your-domain.com/"
export RCC_ENDPOINT_CLOUD_UI="https://console.your-domain.com/"
export RCC_ENDPOINT_CLOUD_LINKING="https://console.your-domain.com/link/"
# Optional: switch where generic downloads resolve
export RCC_ENDPOINT_DOWNLOADS="https://downloads.your-domain.com/"
# Optional mirrors for docs, PyPI, and conda
export RCC_ENDPOINT_DOCS="https://docs.your-domain.com/"
export RCC_ENDPOINT_PYPI="https://pypi.org/simple/"
export RCC_ENDPOINT_PYPI_TRUSTED="https://pypi.org/"
export RCC_ENDPOINT_CONDA="https://conda.anaconda.org/"
# Optional: override where rcc checks for updates
# (defaults shown here; replace with your own mirror/private registry if needed)
export RCC_AUTOUPDATES_TEMPLATES="https://github.com/joshyorko/robot-templates/releases/latest/download/templates.yaml"
export RCC_AUTOUPDATES_RCC_INDEX="https://github.com/joshyorko/rcc/releases/latest/download/index.json"
# Validate your overrides
build/rcc configuration diagnostics --quick --json | jq .Local settings file: write a settings.yaml to $ROBOCORP_HOME/settings.yaml with an endpoints: section. See assets/robocorp_settings.yaml for the full shape; any key you set there will override the built-in defaults.
Micromamba is embedded into rcc and extracted locally at runtime; no live download is needed for the conda-forge path. The uv-native path (conda.yaml with no channels) downloads uv on-demand and caches it locally. If you rebuild assets yourself, you can change the micromamba download base used during asset preparation via:
export RCC_DOWNLOADS_BASE="https://downloads.your-domain.com"
rcc run -r developer/toolkit.yaml --dev -t assetsTo verify what endpoints are in effect at runtime, run:
build/rcc configuration diagnostics --quick --json | jq .RCC was originally developed by the Robocorp team and released as open source under the Apache 2.0 license. This fork continues development independently.
- Robocorp Documentation - detailed docs on compatible python libraries and guides.
Apache 2.0