{"id":51870948,"url":"https://github.com/ofekron/better-agent","last_synced_at":"2026-07-30T20:00:39.010Z","repository":{"id":367120743,"uuid":"1279328732","full_name":"ofekron/better-agent","owner":"ofekron","description":"Local web workspace for coding agents — Claude, Codex, Gemini, and more in one inspectable, LAN-ready hub.","archived":false,"fork":false,"pushed_at":"2026-07-29T22:47:17.000Z","size":24993,"stargazers_count":50,"open_issues_count":1,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-29T23:11:45.969Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/ofekron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null,"disclosure":null},"funding":{"github":"ofekron"}},"created_at":"2026-06-24T15:28:41.000Z","updated_at":"2026-07-29T20:59:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ofekron/better-agent","commit_stats":null,"previous_names":["ofekron/better-agent"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ofekron/better-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofekron%2Fbetter-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofekron%2Fbetter-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofekron%2Fbetter-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofekron%2Fbetter-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ofekron","download_url":"https://codeload.github.com/ofekron/better-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ofekron%2Fbetter-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36090022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-30T02:00:05.956Z","response_time":106,"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-07-24T23:00:21.648Z","updated_at":"2026-07-30T20:00:39.004Z","avatar_url":"https://github.com/ofekron.png","language":"Python","funding_links":["https://github.com/sponsors/ofekron"],"categories":["AI Agents \u0026 Autonomous Coding","Agent Orchestration \u0026 CLI Tools","Developer Tools","Workflow Infrastructure \u0026 Design","🛠️ Developer Productivity \u0026 Workflow","Desktop Apps","Multi-Agent \u0026 Orchestration","Parallel Coding Agents — Desktop \u0026 Web","🌟 Core Frameworks","Harnesses \u0026 orchestration"],"sub_categories":["Specialized Tools","Other IDEs","Session managers \u0026 parallel runners"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/readme-hero.png\" alt=\"Better Agent — every coding agent in one durable workspace\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eBetter Agent\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eRun every coding agent. Keep every session.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Claude, Codex, and Antigravity in one local workspace—persistent, inspectable, and available from every trusted screen.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/ofekron/better-agent/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/ofekron/better-agent?style=flat-square\u0026logo=github\u0026color=111318\" alt=\"GitHub stars\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ofekron/better-agent/commits\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/ofekron/better-agent?style=flat-square\u0026color=111318\" alt=\"Last commit\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-source--available-111318?style=flat-square\" alt=\"Source-available license\" /\u003e\u003c/a\u003e\n  \u003ca href=\"INSTALL.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-111318?style=flat-square\" alt=\"macOS, Linux, and Windows\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#install\"\u003e\u003cstrong\u003eInstall\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#why-better-agent\"\u003e\u003cstrong\u003eWhy Better Agent\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#how-it-works\"\u003e\u003cstrong\u003eHow it works\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"INSTALL.md\"\u003e\u003cstrong\u003eInstall guide\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"EXTENSIONS.md\"\u003e\u003cstrong\u003eExtensions\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]\n\u003e Better Agent is source-available for non-commercial use. See the [license](#license).\n\n## Install\n\n**macOS — one command:**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/ofekron/better-agent/main/scripts/bootstrap.sh | bash\n```\n\n**Windows — one command (PowerShell):**\n\n```powershell\nirm https://raw.githubusercontent.com/ofekron/better-agent/main/scripts/bootstrap.ps1 | iex\n```\n\nEither one-liner clones into `~/.better-agent/checkout` (`%USERPROFILE%\\.better-agent\\checkout` on Windows), provisions the toolchain, and runs setup. Re-running updates that checkout with `git pull --ff-only`.\n\n**macOS — Homebrew:**\n\n```bash\nbrew tap ofekron/better-agent\nbrew install better-agent\nbetter-agent-setup\nbetter-agent\n```\n\n`brew install` installs only the two launchers. `better-agent-setup` runs the same `bootstrap.sh` installer and finishes provisioning; `better-agent` starts the workspace afterwards.\n\n**From source (all platforms, including Linux):**\n\n```bash\ngit clone https://github.com/ofekron/better-agent\ncd better-agent\n./run.sh\n```\n\nThe first run initializes dependencies, builds the UI, and guides you through local authentication and network access. Linux has no one-liner — the bootstrap script accepts macOS only — so clone and follow [INSTALL.md](INSTALL.md). `./run.sh --install-service` still installs the launchd/systemd user service for a checkout.\n\nNon-interactive installs, service mode, LAN, desktop, and mobile flows are all in [INSTALL.md](INSTALL.md). Signed source tarballs and checksums are on the [releases page](https://github.com/ofekron/better-agent/releases).\n\n## Why Better Agent\n\nStop juggling terminal tabs, provider UIs, hidden logs, and throwaway sessions.\n\n- **Every provider, one workspace.** Run Claude, Codex, and Antigravity side by side. Choose the provider and model per session without changing how you organize or revisit work.\n- **Work that survives the tab.** Detached agents outlive browser disconnects and backend restarts. Return to the complete run and its full trace.\n- **A team, not a chatbot.** Fork sessions, delegate bounded work, run agents in parallel, and orchestrate them headlessly through the SDK and CLI.\n- **Local and inspectable.** Sessions, settings, credentials, project data, live output, tool calls, and file context stay on your machine and remain visible in one history.\n- **One backend, every trusted screen.** Use the same workspace from the browser, desktop app, or mobile app on devices you trust.\n\n## Built for real agent work\n\n- **Persistent sessions** — recover in-flight provider work after restarts and reconcile it into one deduplicated history.\n- **Offline-first capture** — create sessions and queue prompts while the backend is unreachable; sync them after reconnect.\n- **Project organization** — folder trees, tags, session tabs, quick filters, and advanced search across your work.\n- **Provider-native setup** — connect the Claude, Codex, and Antigravity accounts and CLIs you already use.\n- **Multi-agent orchestration** — fork, delegate, supervise, and coordinate work across providers.\n- **Extension platform** — add permission-scoped workflows, tools, settings, and UI through signed marketplace or private extensions.\n\n## How it works\n\n```mermaid\nflowchart LR\n    UI[Browser · Desktop · Mobile] \u003c-- REST + WebSocket --\u003e CORE[Better Agent backend]\n    CORE --\u003e C[Claude runner]\n    CORE --\u003e O[Codex runner]\n    CORE --\u003e G[Antigravity runner]\n    CORE \u003c--\u003e STATE[(Local persistent state)]\n```\n\nThe FastAPI backend is the source of truth for sessions, projects, settings, provider state, and agent output. The React frontend reflects backend snapshots and live WebSocket events. Per-session runners stay detached so work can continue independently of the UI.\n\n| Layer | What it owns |\n| --- | --- |\n| **Backend** | Orchestration, event ingestion, provider runners, authentication, persistence, and recovery |\n| **Frontend** | Responsive browser, desktop, and mobile interfaces over one reconnecting session stream |\n| **Local state** | Sessions, traces, settings, credentials, projects, and extension data on your machine |\n\n## SDK and extensions\n\nThe public Integration SDK lives in `sdk/better_agent_sdk/`. Extensions and external orchestrators run out of process and call authenticated loopback APIs instead of importing backend internals.\n\nTwo included extensions demonstrate the model:\n\n- [`extensions/ask`](extensions/ask) finds the best existing session for a task and continues the work there.\n- [`extensions/session-bridge`](extensions/session-bridge) exposes cross-session search, recall, proposals, and delegation through MCP.\n\nSee [EXTENSIONS.md](EXTENSIONS.md) to build private or marketplace extensions.\n\n## Getting started\n\n**Supported hosts:** macOS, Linux, and Windows. Authentication uses the native OS credential store. The macOS desktop build is verified; a Windows installer is provided but has not yet been validated on a real Windows host.\n\nOn a fresh machine, use the one-liner above. Inside an existing clone, run the platform installer directly:\n\n```bash\n# macOS\n./scripts/install-macos.sh\n\n# Windows PowerShell\npowershell -ExecutionPolicy Bypass -File scripts\\install-windows.ps1\n```\n\nThen run `./run.sh`. The backend defaults to port `18765`; set `BETTER_AGENT_BACKEND_PORT` to override it. On first launch, choose local-only or trusted-LAN access and create credentials stored by your OS.\n\nThe complete clean-clone, LAN, desktop, mobile, and reset-auth flows are in [INSTALL.md](INSTALL.md).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDeveloper commands\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\n# Backend with hot reload\ncd backend\nsource .venv/bin/activate\nuvicorn main:app --reload --port 8000\n\n# Frontend\ncd frontend\nnpm run dev\n\n# Headless CLI\ncd backend\nsource .venv/bin/activate\npython cli.py -p \"do the thing\"\n\n# Reset stored credentials\n./run.sh --reset-auth\n```\n\n\u003c/details\u003e\n\n## Security\n\n\u003e [!WARNING]\n\u003e Better Agent can execute commands, read and write files, invoke provider CLIs, and persist local data. Run it only in trusted environments, keep backups, review tool calls, and never expose the backend to untrusted networks.\n\nNormal API access is credential-gated. Browser clients use a signed session cookie; mobile clients use signed bearer tokens; internal extension and runner routes require a separate loopback token. Public unauthenticated routes are limited to setup, authentication, and served app artifacts.\n\nRead [SECURITY.md](SECURITY.md) and [DISCLAIMER.md](DISCLAIMER.md) before public or shared use.\n\n## Contributing\n\nRead [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. Integration tests run real provider CLI subprocesses rather than mocks.\n\nPublic planning and release policies live in [ROADMAP.md](ROADMAP.md) and [RELEASE.md](RELEASE.md).\n\n## License\n\nBetter Agent is source-available for non-commercial use. Commercial use, commercial distribution, hosted offerings, and Better Agent marketplaces require prior written permission from Ofek Ron. It is not OSI-approved open-source software because commercial rights are reserved. See [LICENSE](LICENSE).\n\nAdditional legal and trust material: [DISCLAIMER.md](DISCLAIMER.md) · [SECURITY.md](SECURITY.md) · [TRADEMARKS](TRADEMARKS) · [NOTICE](NOTICE)\n\n---\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eOne agent in a terminal was never going to be enough.\u003c/strong\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofekron%2Fbetter-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fofekron%2Fbetter-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofekron%2Fbetter-agent/lists"}