{"id":50793931,"url":"https://github.com/dashn9/rusty-browser","last_synced_at":"2026-06-12T13:01:00.922Z","repository":{"id":348599349,"uuid":"1198852381","full_name":"dashn9/rusty-browser","owner":"dashn9","description":"Distributed, AI-driven browser automation cluster.","archived":false,"fork":false,"pushed_at":"2026-05-24T05:52:02.000Z","size":807,"stargazers_count":6,"open_issues_count":1,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-24T07:20:45.384Z","etag":null,"topics":["browser","browser-automation","cdp","chromedevtools","devtools","infrastructure","webdriver","webdriver-bidi"],"latest_commit_sha":null,"homepage":"https://docs.rustybrowser.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dashn9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2026-04-01T20:26:26.000Z","updated_at":"2026-05-24T05:52:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dashn9/rusty-browser","commit_stats":null,"previous_names":["dashn9/rustmani","dashn9/rusty-browser"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dashn9/rusty-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashn9%2Frusty-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashn9%2Frusty-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashn9%2Frusty-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashn9%2Frusty-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dashn9","download_url":"https://codeload.github.com/dashn9/rusty-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dashn9%2Frusty-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34245218,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"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":["browser","browser-automation","cdp","chromedevtools","devtools","infrastructure","webdriver","webdriver-bidi"],"created_at":"2026-06-12T13:00:55.241Z","updated_at":"2026-06-12T13:01:00.901Z","avatar_url":"https://github.com/dashn9.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ctable align=\"center\" bgcolor=\"#000000\"\u003e\u003ctr\u003e\u003ctd\u003e\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://rustybrowser.com/logos/rusty-browser_inv.png\" height=\"50\" valign=\"middle\" /\u003e\n  \u0026nbsp;\u003cspan style=\"color:#ffffff\"\u003eRusty Browser\u003c/span\u003e\n\u003c/h1\u003e\n\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\n**Distributed AI-driven stealth browser automation at scale — built in Rust.**\n\nRusty is a serverless browser automation platform. You spawn and manage browser agents on demand via an HTTP API, CLI, or the Frontend, send them commands (navigate, click, type, screenshot, scroll, eval JS), or drive them with natural language through an AI instruct engine. Each agent runs in isolation.\n\n---\n\n## Demo\n\n![Rusty Browser demo](https://github.com/user-attachments/assets/0ed6e155-8ba2-4481-a058-5fb5f5c98b33)\n\n**Cluster bootstrap → 36 live-streamed Chromes → auto-scale → teardown — all driven from the CLI.**\n\n- Boots a 3-node cluster (`e2-medium`, 2 vCPU / 4 GB each) with one command\n- Spawns **36 Chrome browsers**, each streaming its display and logs to the frontend in real time\n- Auto-scales to a 4th node the moment load hits the configured ceiling — visible live on the dashboard\n- Tears the whole thing down on demand\n\n## Postman APIs\n\nAll API endpoints are available in the [Rusty Browser Postman workspace](https://www.postman.com/ishogbon/workspace/rusty-browser).\n\n---\n\n\n**Rusty is for when you need browsers to behave like serverless functions** — spawn on demand, run independently, scale horizontally via [Flux](https://github.com/dashn9/serverless-flux), and clean up automatically. It is not a wrapper around Playwright or Puppeteer. It uses [rustenium-identity](https://github.com/dashn9/rustenium-identity) for stealth identity, and drives Chromium directly via the `Webdriver BiDi` / CDP protocol through [rustenium](https://github.com/dashn9/rustenium).\n\n\n---\n\n## Configuration\n\nSee [`rusty-server/example.rusty.yaml`](rusty-server/example.rusty.yaml) for a full annotated reference.\n\n\n### Local development / usage (no Flux)\n\nSet `flux.local_binary` in your config to spawn agents as local subprocesses instead of deploying via Flux.\n\n```yaml\nflux:\n  local_binary: \"cargo run -p rusty-agent --\"  # or path to a built binary\n```\n\n```sh\nRUST_LOG=rusty=info,rusty_agent=debug cargo run -p rusty-server\n```\n\n---\n\n## Initialization\n\nBefore spawning any browsers, call `POST /initialize/` once. This generates TLS certs, registers the agent function with Flux, downloads the agent binary, bundles everything into a zip, and deploys it. Re-run after any agent code changes or when rotating TLS certs.\n\n---\n\n## Proxy Support\n\nSee [`rusty-server/example.agent-proxies.yaml`](rusty-server/example.agent-proxies.yaml). Proxies are geo-matched to the browser identity and bundled into each agent at initialization.\n\n---\n\n## Setup\n\nRun the interactive setup script — it downloads all binaries, walks you through configuration, and generates launch scripts:\n\n```\npowershell -Command \"curl.exe -sSL https://raw.githubusercontent.com/dashn9/rusty-browser/main/setup.ps1 -o setup.ps1; \u0026 .\\setup.ps1\"\n```\n\n**Prerequisites:** Node.js v18+ (for the frontend), Redis running or accessible.\n\n\u003e **Not publicly reachable?** You'll need [ngrok](https://ngrok.com/download) to tunnel the gRPC port. The setup script will prompt you and tell you the exact command to run.\n\nOnce setup completes, start the stack:\n\n```powershell\nrusty-launch             # server only\nrusty-launch -Frontend   # server + frontend\n```\n\nTo start the frontend independently:\n\n```powershell\nrusty-frontend\n```\n\nThen initialize once before spawning any browsers (generates TLS certs, deploys agent to Flux):\n\n```sh\nrusty-cli init\n# or use the Initialize button in the frontend UI\n```\n\n---\n\n## Postman\n\nAll API endpoints are available in the [Rusty Browser Postman workspace](https://www.postman.com/ishogbon/workspace/rusty-browser).\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashn9%2Frusty-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdashn9%2Frusty-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdashn9%2Frusty-browser/lists"}