{"id":49790962,"url":"https://github.com/fridiculous/workroot","last_synced_at":"2026-05-15T07:01:46.787Z","repository":{"id":356784929,"uuid":"1233185112","full_name":"fridiculous/workroot","owner":"fridiculous","description":"Machine-wide git worktree switchboard for target-first, shell-composable workflows and parallel AI coding.","archived":false,"fork":false,"pushed_at":"2026-05-09T19:58:50.000Z","size":2067,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T05:21:48.495Z","etag":null,"topics":["ai-agents","cli","coding-agents","developer-tools","git","git-worktree","productivity","rust","terminal","worktrees"],"latest_commit_sha":null,"homepage":null,"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/fridiculous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-05-08T17:23:58.000Z","updated_at":"2026-05-11T21:45:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fridiculous/workroot","commit_stats":null,"previous_names":["fridiculous/workroot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/fridiculous/workroot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fridiculous%2Fworkroot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fridiculous%2Fworkroot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fridiculous%2Fworkroot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fridiculous%2Fworkroot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fridiculous","download_url":"https://codeload.github.com/fridiculous/workroot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fridiculous%2Fworkroot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33057417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"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":["ai-agents","cli","coding-agents","developer-tools","git","git-worktree","productivity","rust","terminal","worktrees"],"created_at":"2026-05-12T04:03:58.455Z","updated_at":"2026-05-15T07:01:46.733Z","avatar_url":"https://github.com/fridiculous.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./workroot_logo_dark_1022x382.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./workroot_logo_light_1044x390.png\"\u003e\n    \u003cimg src=\"./workroot_logo_light_1044x390.png\" alt=\"Workroot logo\" width=\"240\" /\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n# Workroot\n\nWorkroot is the machine-wide switchboard for git worktrees.\n\nUse it when you work across multiple repos or many `git worktree` checkouts and want one small CLI for finding, creating, entering, running, pushing, and pruning them.\n\n## Quick start\n\nInstall Workroot:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/fridiculous/workroot/main/install.sh | bash\n```\n\nDiscover a repo, inspect status, and create a target:\n\n```bash\nworkroot discover /path/to/repo\nworkroot status\ncd \"$(workroot new my-repo my-target)\"\n```\n\nOptional shorthand:\n- `wr` is supported as a short alias for `workroot`\n\nAll examples use `workroot` for clarity; use `wr` anywhere you want the shorter command.\n\n## 20-second demo\n\n```bash\nworkroot discover ~/projects/workroot\nworkroot status\ncd \"$(workroot new workroot public-launch)\"\nworkroot run workroot public-launch -- cargo test\nworkroot push workroot public-launch\n# After the branch is merged:\nworkroot prune workroot public-launch\n```\n\n## Core workflow\n\n1. Discover a repo once.\n2. Check your machine-wide worktree status.\n3. Create or enter a named target worktree.\n4. Run commands in that target.\n5. Push the target branch.\n6. Prune it after Workroot proves it was merged.\n\nA target is one unit of work: one branch, one worktree path, one status row, and one optional managed session.\n\n## Command map\n\n| Need | Command |\n| --- | --- |\n| Index repos | `workroot discover [path]` |\n| See known worktrees | `workroot status [repo] [target]` |\n| Create a target worktree | `workroot new \u003crepo\u003e \u003ctarget\u003e` |\n| Print a target path | `workroot path \u003crepo\u003e [target]` |\n| Change directory through shell integration | `workroot cd \u003crepo\u003e [target]` |\n| Run a command in a target | `workroot run \u003crepo\u003e \u003ctarget\u003e -- \u003ccmd...\u003e` |\n| Push a target branch | `workroot push \u003crepo\u003e \u003ctarget\u003e` |\n| Remove merged targets safely | `workroot prune [repo] [target]` |\n| Install shell integration | `workroot shell-init \u003cshell\u003e` |\n\n## Install\n\nToday:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/fridiculous/workroot/main/install.sh | bash\n```\n\nCargo:\n\n```bash\ncargo install workroot-cli\n```\n\nHomebrew tap support is planned but not live yet.\n\n## Shell integration\n\n```bash\neval \"$(workroot shell-init zsh)\"\neval \"$(workroot shell-init bash)\"\nworkroot shell-init fish | source\n```\n\nShell integration also defines `wr` as a shorthand for `workroot`.\n\n`workroot cd` needs shell integration because a child process cannot change the parent shell directory.\n\n## Output contract\n\n```bash\ncd \"$(workroot path workroot public-launch)\"\ncd \"$(workroot new workroot docs)\"\n```\n\n`workroot path` and direct `workroot new` print path-only stdout.\n\n## Scope\n\nWorkroot is not:\n- a Git hosting tool\n- a project management tool\n- a replacement for Git\n- a general tmux or session manager\n\nIt wraps local Git workflows. tmux support exists for managed command sessions, but terminal management is not the main product.\n\n## Docs\n\n- [Agent guide](./docs/agent-guide.md)\n- [Target-first workflow](./docs/target-first-workflow.md)\n- [Development guide](./docs/development-guide.md)\n- [Documentation index](./docs/index.md)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffridiculous%2Fworkroot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffridiculous%2Fworkroot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffridiculous%2Fworkroot/lists"}