{"id":31767942,"url":"https://github.com/zubax/bro","last_synced_at":"2025-10-10T01:49:16.966Z","repository":{"id":310728780,"uuid":"1037586872","full_name":"Zubax/bro","owner":"Zubax","description":"An LLM computer-using agent (CUA) designed to autonomously perform mundane tasks related to business operations and administration, such as doing accounting, filing paperwork, and submitting applications. The accountant is not your bro, but Bro is.","archived":false,"fork":false,"pushed_at":"2025-10-02T12:25:45.000Z","size":4475,"stargazers_count":14,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-02T14:29:44.933Z","etag":null,"topics":["agent","agentic-ai","automation","computer-use","computer-use-agent","llm","no-code-automation","nocode","office-automation"],"latest_commit_sha":null,"homepage":"https://zubax.com","language":"Python","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/Zubax.png","metadata":{"files":{"readme":"README.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-13T20:00:00.000Z","updated_at":"2025-09-22T10:57:13.000Z","dependencies_parsed_at":"2025-08-19T22:32:11.920Z","dependency_job_id":"acb34984-19d1-4bb5-b4e5-e794948df60d","html_url":"https://github.com/Zubax/bro","commit_stats":null,"previous_names":["zubax/bro"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Zubax/bro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zubax%2Fbro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zubax%2Fbro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zubax%2Fbro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zubax%2Fbro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zubax","download_url":"https://codeload.github.com/Zubax/bro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zubax%2Fbro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002400,"owners_count":26083375,"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-10-09T02:00:07.460Z","response_time":59,"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":["agent","agentic-ai","automation","computer-use","computer-use-agent","llm","no-code-automation","nocode","office-automation"],"created_at":"2025-10-10T01:49:08.180Z","updated_at":"2025-10-10T01:49:16.959Z","avatar_url":"https://github.com/Zubax.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" style=\"text-align:center\"\u003eBro 🤖\u003c/h1\u003e\n\u003cp align=\"center\" style=\"text-align:center\"\u003eThe Practical Business Operations Robot\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Forum](https://img.shields.io/discourse/https/forum.zubax.com/users.svg?color=e00000)](https://forum.zubax.com)\n\n\u003c/div\u003e\n\u003chr/\u003e\n\nBro is an LLM computer-using agent (CUA) designed to autonomously perform mundane tasks related to business operations\nand administration, such as doing accounting, filing paperwork, and submitting applications.\nBro is primarily designed to run on a dedicated VM or a spare laptop;\nit runs as a headless process and offers a remotely accessible web interface for monitoring and control.\n\nℹ️ *\"Bro\" is Latvian for \"one who beheads the Messiah\".*\n\n\u003cimg src=\"screenshot_webui.png\" width=\"800\" alt=\"\"\u003e\n\n⚠️ **Bro is currently under active development and is known to contain bugs.**\nHowever, it already useful and can be applied to low-stakes open-ended real-world tasks ---\nwhich we already practice at Zubax with varying degrees of success.\n\nCurrently, Bro utilizes the general-purpose GPT-5 for high-level reasoning and planning,\nGPT-5(-mini) with auto-adjusted reasoning effort setting for GUI manipulation,\nand the fast and compact UI-TARS-1.5-7B for UI grounding\n(which is used directly, without any additional OCR or object detection).\nThe agent is tuned to avoid touching UI unless absolutely necessary, preferring\ndirect file access, shell commands, Python scripting, and hotkeys whenever possible.\nThere is an option to replace the GPT \u0026 UI-TARS stack with the stock CUA model from OpenAI;\nit may perform better in certain scenarios, but it is also much more expensive to run.\n\nYou can even run UI-TARS locally (the 7B version only needs 32 GB of VRAM) and avoid OpenRouter.\nWarning though: **quantized edits of UI-TARS cannot be used for grounding as-is!!**\nThe exact reasons for that elude my understanding, but quantized models tend to predict screen coordinates incorrectly\n(custom scaling factors are required).\n\nBro does not attempt to compete in the standard CUA benchmarks because it is primarily focused\non practical utility in real-world office tasks rather than synthetic benchmarks.\nAs an example where the two are at odds, Bro is able to log into a bank account using 2FA OTP codes generated\nby an authenticator app, while the current OSWorld flagman is too slow to succeed at that (OTP codes expire quickly);\nalso, Bro tends to be very cheap to run because it heavily relies on low-cost models and minimal UI interactions.\n\n\u003cimg src=\"screenshot_ssh.png\" width=\"800\" alt=\"\"\u003e\n\n## Requirements\n\nCurrently, Bro uses OpenRouter and OpenAI for inference. You must have valid API keys for both services\nexported as environment variables `OPENROUTER_API_KEY` and `OPENAI_API_KEY`.\nIn the future we may add other models and other inference backends.\n\nBro has only been tested on GNU/Linux distributions so far with X11 (Wayland may not work).\nAdding support for macOS and Windows should be trivial  and contributions are welcome.\n\n⚠️ Bro can only work with single-monitor setups with the resolution at most 1920x1080.\nWe mostly use it in an Ubuntu virtual machine with a 1280x1024 screen resolution.\nIt is highly advised to use the default UI theme and a highly textured wallpaper\nto avoid confusing the UI grounding model (e.g., a solid black desktop background is known to cause issues).\nDisable spell checking everywhere. Disable popups. Ensure scroll bars are always visible.\nUse light themes everywhere. Disable the automatic translation suggestions in browsers.\nDisable tools that inject context menus, like the ChatGPT integration in Firefox,  Grammarly, etc.\n\n## Installation\n\n```bash\ngit clone https://github.com/Zubax/bro\ncd bro\npip install -e .\n```\n\n## Usage\n\n### Command-line interface\n\nTo invoke Bro, export `OPENAI_API_KEY` and `OPENROUTER_API_KEY`, then go like:\n\n```bash\nbro --exe gpt-5+ui-tars-7b\n```\n\nFor other options, see `bro --help`.\nIf you want to resume a previous session, use `bro --resume`.\nTo run Bro via SSH, be sure to `source source_ssh.sh` first,\nand consider using [tmux](https://en.wikipedia.org/wiki/Tmux) as explained below.\n\nIf provided, Bro will read `~/bro/system_prompt.txt` and add the contents to the system prompt\nafter its internal system prompt. Use this to describe the operational environment (e.g., where to find certain files,\nwhat software and online services to use, etc), how the bot should self-identify, its personality traits, and so on.\nBro will store some context files under the local brodir `$PWD/bro/`.\nIt is by design that if you clone Bro into your `~` and run it there, all three directories --\nthe local context directory, the global brodir, and the source directory -- will be the same.\n\nThe recommended practice is to give Bro a separate virtual machine or a spare laptop\nwith the most recent Ubuntu LTS, configure a narrow screen resolution (not larger than about 1600x1200),\ndisable Wayland, ssh there and run Bro in a terminal multiplexer.\nDo not attempt to run Bro on computers used by humans.\n\nIt may be a good idea to set up the shell on the remote machine to automatically run ssh sessions in tmux\nto retain Bro sessions across disconnects.\n[One standard recipe is to add the following to `~/.bashrc` or `~/.profile`](https://stackoverflow.com/a/40192494/1007777):\n\n```bash\nif [[ $- =~ i ]] \u0026\u0026 [[ -z \"$TMUX\" ]] \u0026\u0026 [[ -n \"$SSH_TTY\" ]]; then\n  tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux\nfi\n```\n\nTo detach from a tmux session, press `Ctrl+B` followed by `D`. This will leave the session running in the background.\nTo reattach to the session later, use the command `tmux attach-session -t ssh_tmux`.\n\n### Web interface\n\nThe web interface is intended for monitoring purposes only. It is available via `http://\u003chost\u003e:8814`.\n\n### Instant messaging connectors\n\nThis is intended to be the main use case, but it is not implemented yet.\n\n## Testing\n\nTo invoke a particular component for testing purposes, go like `python3 -m bro.executive.ui_tars_7b`.\n\n## Contributing\n\nPlease open a ticket or shoot us a msg on the Zubax forum.\nPull requests are welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzubax%2Fbro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzubax%2Fbro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzubax%2Fbro/lists"}