{"id":31003660,"url":"https://github.com/ccnets-team/remoterl","last_synced_at":"2025-09-20T23:12:06.378Z","repository":{"id":302303674,"uuid":"1010229471","full_name":"ccnets-team/remoterl","owner":"ccnets-team","description":"RemoteRL — zero-setup cloud service for reinforcement learning, anywhere and at any scale","archived":false,"fork":false,"pushed_at":"2025-08-12T07:41:49.000Z","size":329,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-13T01:37:49.430Z","etag":null,"topics":["cloud-native","gymnasium","reinforcement-learning","remote-control","rllib","stable-baselines3"],"latest_commit_sha":null,"homepage":"https://remoterl.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccnets-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-28T16:17:50.000Z","updated_at":"2025-08-12T07:41:53.000Z","dependencies_parsed_at":"2025-07-16T07:28:18.796Z","dependency_job_id":"b8b0aa45-fcb0-4f5f-a069-8704839a7883","html_url":"https://github.com/ccnets-team/remoterl","commit_stats":null,"previous_names":["ccnets-team/remoterl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ccnets-team/remoterl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnets-team%2Fremoterl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnets-team%2Fremoterl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnets-team%2Fremoterl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnets-team%2Fremoterl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccnets-team","download_url":"https://codeload.github.com/ccnets-team/remoterl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccnets-team%2Fremoterl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276169664,"owners_count":25596956,"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","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cloud-native","gymnasium","reinforcement-learning","remote-control","rllib","stable-baselines3"],"created_at":"2025-09-13T01:25:52.756Z","updated_at":"2025-09-20T23:12:06.372Z","avatar_url":"https://github.com/ccnets-team.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/973a48c3-829c-4b4c-9479-48341ba518a4\" alt=\"RemoteRL Banner\" style=\"max-width:100%; height:auto;\"/\u003e\n\u003c/p\u003e\n\n# RemoteRL – Remote Reinforcement Learning for Everyone, Everywhere 🚀\n\u003e **Cloud-native RL in a single line of code**\n\n[![PyPI](https://img.shields.io/pypi/v/remoterl)](https://pypi.org/project/remoterl/)\n[![Python 3.9–3.12](https://img.shields.io/static/v1?label=python\u0026message=3.9–3.12\u0026logo=python\u0026color=blue)](#)\n[![Platforms](https://img.shields.io/badge/platforms-Linux%20%7C%20Windows%20%7C%20MacOS-blue)](#)\n[![Gymnasium](https://img.shields.io/static/v1?label=gymnasium\u0026message=%20\u0026color=blue\u0026logo=pypi)](https://pypi.org/project/gymnasium/)\n[![Websockets](https://img.shields.io/static/v1?label=websockets\u0026message=%20\u0026color=blue\u0026logo=pypi)](https://pypi.org/project/websockets/)\n[![Extras](https://img.shields.io/static/v1?label=extras\u0026message=ray[rllib])](#)\n[![Extras](https://img.shields.io/static/v1?label=extras\u0026message=stable-baselines3)](#)\n[![Dependencies](https://img.shields.io/librariesio/release/pypi/remoterl)](https://pypi.org/project/remoterl/)\n\n* **[Installation](#-installation)** · **[Configure Key](#-configure-your-api-key)** · **[Hello‑World Example](#-hello-world-example)** · **[Next Steps](#-next-steps)**\n\n---\n\n## 🧩 How It Works — Three Pieces Mental Model\n\n\n\u003cdiv align=\"center\"\u003e\n\nSimulator(s)/Robot(s)\u0026emsp;⇄\u0026emsp;🌐 RemoteRL Relay\u0026emsp;⇄\u0026emsp;Trainer (GPU/Laptop)\n\n\u003c/div\u003e\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"723\" alt=\"RemoteRL Service Flow\" src=\"https://github.com/user-attachments/assets/c792c0f1-4461-4b13-ade4-0b344eb9ff69\" /\u003e\n\u003c/p\u003e\n\n\u003e The **trainer** sends actions, the **simulator** steps the environment, and the relay moves encrypted messages between them. Nothing else to install, no ports to open.\n\u003e\n\u003e * **Isolated runtimes** – trainer and simulator can run different Python or OS stacks.\n\u003e * **Elastic scale** – fan in 1…N simulators, or fan out distributed learner workers.\n\u003e * **Always encrypted, never stored** – payloads travel via TLS and are dropped after delivery.\n\u003e * **Free tier:** every account includes **1 GB of data credit(per week)** (≈ 1 M CartPole steps).\n\n\n---\n\n\n## 📦 Installation\n\n```bash\n# Gymnasium only (lightweight)\npip install remoterl\n\n# + Stable‑Baselines3\npip install remoterl stable-baselines3\n\n# + Ray RLlib\npip install remoterl \"ray[rllib]\" torch pillow\n```\n\n---\n\n## 🔐 Configure Your API Key\n\nTo use RemoteRL, you need an API key.\nYou can get it either via CLI or from the website:\n\n### Option 1 — CLI (Recommended)\n\n```bash\nremoterl register  # Opens browser and fetches your API key automatically\n```\nThe key will be saved to your local config automatically.\n\n### Option 2 — Manual (for server, CI, or scripts)\n1. Visit [remoterl.com/signup](https://remoterl.com/signup) and **sign up for an account**\n2. Go to your Dashboard\n3. Copy your API key\n\nSet it as an environment variable:\n```bash\nexport REMOTERL_API_KEY=api_xxxxx...\n```\n\n\n## 💻 Hello World Example\n\n### Run **two terminals**:\n\n```bash\n# Terminal A – simulator\n$ remoterl simulate\n\n# Terminal B – trainer\n$ remoterl train \n```\n  \n\u003cdetails\u003e\n\n\u003csummary\u003e\u003ccode\u003eremoterl simulate\u003c/code\u003e — Python example\u003c/summary\u003e\n\n```python\nimport remoterl\n\n# 1. Decide at runtime whether this process is the trainer or the simulator\nremoterl.init(role=\"simulator\")  # blocks\nremoterl.shutdown()  # optional\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003eremoterl train\u003c/code\u003e — Python example\u003c/summary\u003e\n\n```python\nimport gymnasium as gym\nimport remoterl\n\nremoterl.init(role=\"trainer\")        # one call switches to remote mode\n\nenv = gym.make(\"CartPole-v1\")        # actually runs on the simulator\nobs, _ = env.reset()\nfor _ in range(1_000):\n    action = env.action_space.sample()\n    obs, reward, terminated, truncated, info = env.step(action)\n    if terminated or truncated:\n        obs, _ = env.reset()\n```\n\u003c/details\u003e\n\nThat’s it – you’ve split CartPole across the network.\n\n\n## ⚡ Latency \u0026 Isolation\n\n| Path                            | Typical RTT | Notes                               |\n| ------------------------------- | ----------- | ----------------------------------- |\n| Trainer ↔ same‑region simulator | 10‑50 ms    | Feels like local play.              |\n| Trainer ↔ cross‑continent       | 50‑150 ms   | Use frame‑skip for twitchy control. |\n\n---\n\n## 📚 Next Steps\n\n\n* **[`Cloud Service Overview`](\u003c./docs/Overview/overview-cloud-service.md\u003e)** – details on what it is and how it works.  \n* **[`Console-Output Guide`](\u003c./docs/SDK (Python)/sdk-console-output-guide.md\u003e)** –  step-by-step screenshots from a *live* trainer ↔ simulator session, with every line highlighted and explained.  \n* **[`Quick-Start (Init \u0026 Shutdown)`](\u003c./docs/SDK (Python)/sdk-quick-start-init-shutdown.md\u003e)** – step-by-step examples of `remoterl.init()` and `remoterl.shutdown()` for trainers and simulators.  \n* **[`Trainer Cheat-sheet`](\u003c./docs/SDK (Python)/sdk-trainer-remote-call-cheat-sheet.md\u003e)** – Gymnasium, Stable-Baselines3, and RLlib one-liners for remote execution.  \n\n## 📎 Quick Links\n\n- 🔑 [Get your API Key](https://remoterl.com) – Create an account on the official site to get your key.\n- 📊 [RemoteRL Dashboard](https://remoterl.com/user/dashboard) – Manage your usage, keys, and settings.\n- 📘 [Documentation Index](./docs/Overview/overview-cloud-service.md) – Start from the top-level service overview.\n\n---\n \n## 📄 License \n\nRemoteRL is distributed under a commercial license.\nWe offer a free tier, while premium plans help offset our worldwide cloud-server costs. See [`LICENSE`](./LICENSE.txt) for details.\n\n---\n\n\n**Happy remote training!** 🎯\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnets-team%2Fremoterl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccnets-team%2Fremoterl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccnets-team%2Fremoterl/lists"}