Welcome to rx
rx is a command-line tool to make remote execution easy. It integrates with whatever tools you’re currently using and gives you a long-running VM in the cloud that is kept in sync with your local machine.
What rx does
When you run rx it takes care of a bunch of setup on your behalf:
- It creates a private hosted environment for your project in the cloud.
- It copies your source code into that environment.
- It installs any dependencies your project needs.
Then, every time you run a command, it automatically syncs local changes to your cloud instance and syncs outputs back to your local machine. rx hosts your environment on our own cloud instances, so you never have to worry about setup or teardown.
Check out the getting started guide to start using rx in less than five minutes.
Note: the rx
binary is a thin client and does not run commands on your local machine: it sends them to your cloud instance and runs them there.
rx is currently in beta, so please give it a try and let us know what you think!
Installation
Install via pip:
pip install run-rx
rx also requires rsync to run, make sure you have it installed:
which rsync
If not, check out its website or your favorite package manager to install.
Usage
In the directory containing your project (often your git root), run:
rx init
This will prompt you to log in (or create an account) and allocate a machine in the cloud for you to use. Then it will copy your project from your local machine to the cloud instance and install any packages that your project needs.
It may take several minutes to allocate a machine, copy your source code, and install packages (depending on your project).
Once rx finishes initializing, you can run any command on your remote worker by prefixing it with “rx”:
$ rx python my-script.py
$ rx ps ax
$ # Use single quotes to prevent bash from grabbing redirects/resolving env vars
$ rx 'echo $PATH > my-path.txt'
Check out the getting-started section for more examples.
Feedback
Feel free to file an issue if you have any questions or problems!