{"id":50669368,"url":"https://github.com/arachsys/ua","last_synced_at":"2026-06-08T09:31:51.881Z","repository":{"id":347602513,"uuid":"1194594305","full_name":"arachsys/ua","owner":"arachsys","description":"Simple command-line agent harness","archived":false,"fork":false,"pushed_at":"2026-05-27T18:09:05.000Z","size":40,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-27T18:21:36.155Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"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/arachsys.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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-03-28T15:12:18.000Z","updated_at":"2026-05-27T18:09:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/arachsys/ua","commit_stats":null,"previous_names":["arachsys/ua"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arachsys/ua","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fua","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fua/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fua/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fua/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arachsys","download_url":"https://codeload.github.com/arachsys/ua/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fua/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34057158,"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-08T02:00:07.615Z","response_time":111,"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":[],"created_at":"2026-06-08T09:31:49.519Z","updated_at":"2026-06-08T09:31:51.872Z","avatar_url":"https://github.com/arachsys.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"ua\n==\n\nua is a minimal agent harness, providing a command-line interface to a\nlarge language model accessed through an Open Responses API, and allowing\nit to access local tools including a shell.\n\n\nInstallation and configuration\n------------------------------\n\nA single Python 3.12+ script 'ua' is provided. Ensure the #! path is\ncorrect for your system before copying it to a directory on your path.\nThe tool has no dependencies beyond the standard library. It is configured\nthrough the environment.\n\nSet API, KEY and MODEL to the endpoint, bearer key and model ID, e.g.\n\n  export API=https://openrouter.ai/api/v1/responses\n  export KEY=sk-or-v1-xxx\n  export MODEL=anthropic/claude-opus-4.6\n\nua appends to an NDJSON conversation log in LOG, defaulting to 'ua.log'.\nIf LOG is an empty string, /dev/null is used and the log is not locked.\n\nIf set, REASONING overrides the default reasoning effort for the model.\n\nThe shell tool is built-in and passes commands from the model to SHELL\non stdin. Change SHELL to wrap commands before execution: to authorise\nthem, drop to a less privileged user, sandbox within more restrictive\nnamespaces, or even run them on a different host. For instance, set\nSHELL to the examples/confirm wrapper to preview and confirm commands on\nthe terminal before running them with bash. If SHELL is empty or unset,\nthe shell tool is disabled.\n\nA directory of additional self-describing tool executables can be given\nin TOOLS. Each of these should read JSON input on stdin then produce JSON\noutput on stdout. If stdin is empty, they should instead print their JSON\ntool schema.\n\n\nUser input\n----------\n\n'ua system' and 'ua user' add a new system or user message to the log.\nIf stdin is a terminal, ua will get the message text via a text editor;\notherwise, it will read it directly from stdin.\n\nAn example system message explaining how the shell tool might be used is\nprovided in examples/system.txt.\n\n\nAgent loop\n----------\n\n'ua agent' repeatedly calls the model, streaming assistant messages to\nstdout and executing any tool calls. All generated items are appended\nto the log. The loop terminates once the model has returned a finished\nresponse to the user.\n\nRunning 'ua' without arguments is a shortcut for 'ua user agent'. It takes\na message from the user then immediately invites the model to reply.\n\n\nOther actions\n-------------\n\n'ua abort' aborts any pending function calls in the log. This is useful\nif you want to interrupt the model to provide updated instructions,\nand when prompting the model to fork copies of its own state.\n\n'ua recap' will print the message history from the log to stdout.\n\n\nCopying\n-------\n\nThis software was written by Chris Webb \u003cchris@arachsys.com\u003e and is\ndistributed as Free Software under the terms of the MIT license in COPYING.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farachsys%2Fua","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farachsys%2Fua","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farachsys%2Fua/lists"}