@axelgar/opentree 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +54 -0
- package/README.md +55 -2
- package/package.json +8 -6
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Àxel García Roigé
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
opentree — third-party notices
|
|
2
|
+
==============================
|
|
3
|
+
|
|
4
|
+
opentree itself is distributed under the MIT Licence; see LICENSE. This file
|
|
5
|
+
records the third-party names, marks and code that opentree touches, and the
|
|
6
|
+
rights it does not claim in them.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Trade marks
|
|
10
|
+
-----------
|
|
11
|
+
|
|
12
|
+
opentree drives coding agents it did not write. It draws each one under that
|
|
13
|
+
agent's own name, wordmark and brand colour so that the agent you are talking
|
|
14
|
+
to is identifiable at a glance, and those wordmarks are reproduced as terminal
|
|
15
|
+
text in pkg/config/agents.go, transcribed from each tool's own splash screen.
|
|
16
|
+
|
|
17
|
+
opencode "opencode", its wordmark and the colour #CFCECD are marks of
|
|
18
|
+
the opencode project.
|
|
19
|
+
|
|
20
|
+
Claude Code "Anthropic", "Claude", "Claude Code", the Claude mark and
|
|
21
|
+
the colour #D97757 are marks of Anthropic PBC.
|
|
22
|
+
|
|
23
|
+
GitHub Copilot "GitHub", "Copilot", "GitHub Copilot", the Copilot mark and
|
|
24
|
+
the colour #A371F7 are marks of GitHub, Inc.
|
|
25
|
+
|
|
26
|
+
Gemini CLI "Google", "Gemini", "Gemini CLI", the Gemini sparkle and the
|
|
27
|
+
colour #4285F4 are marks of Google LLC.
|
|
28
|
+
|
|
29
|
+
All trade marks, service marks, trade names and logos are the property of their
|
|
30
|
+
respective owners. They appear here only to identify the tools opentree can
|
|
31
|
+
drive, descriptively and accurately, and no claim of any right in them is made
|
|
32
|
+
or implied.
|
|
33
|
+
|
|
34
|
+
opentree is an independent project. It is not affiliated with, sponsored by,
|
|
35
|
+
endorsed by or otherwise connected to any of the owners named above; none of
|
|
36
|
+
them has reviewed or approved it, and its MIT licence grants no rights in
|
|
37
|
+
anyone's marks.
|
|
38
|
+
|
|
39
|
+
If you own one of these marks and would prefer opentree did not reproduce it,
|
|
40
|
+
open an issue at https://github.com/axelgar/opentree/issues and it will be
|
|
41
|
+
changed.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
Third-party code
|
|
45
|
+
----------------
|
|
46
|
+
|
|
47
|
+
opentree redistributes no code belonging to the projects above. The one adapter
|
|
48
|
+
it needs — @agentclientprotocol/claude-agent-acp, which bridges Claude Code onto
|
|
49
|
+
the Agent Client Protocol — is fetched from npm when the user asks for it and
|
|
50
|
+
installed under ~/.opentree/tools, under its own licence. `opentree uninstall`
|
|
51
|
+
removes that directory again.
|
|
52
|
+
|
|
53
|
+
The Go modules opentree links against are listed in go.mod and carry their own
|
|
54
|
+
licences.
|
package/README.md
CHANGED
|
@@ -60,6 +60,16 @@ sudo mv opentree /usr/local/bin/
|
|
|
60
60
|
go install github.com/axelgar/opentree/cmd/opentree@latest
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
### Uninstalling
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
opentree uninstall
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Removes what opentree wrote into your home directory: the agent adapters under `~/.opentree/tools` (a few hundred megabytes each), the record of approved setup and run commands, the shell completion script and the global config file. It lists all of it with sizes and asks before removing anything — `--dry-run` lists and stops, `--yes` answers the question from a script.
|
|
70
|
+
|
|
71
|
+
It never touches a repository. The worktrees under `<repo>/.opentree` are your own work in progress, and `opentree delete <branch>` is what removes those. The binary belongs to whichever of brew, npm or `go install` put it there, so the command that removes it is printed at the end.
|
|
72
|
+
|
|
63
73
|
## Quick Start
|
|
64
74
|
|
|
65
75
|
```bash
|
|
@@ -248,7 +258,7 @@ is queued rather than refused.
|
|
|
248
258
|
themselves, so having the binary is the whole setup. Claude Code is reached
|
|
249
259
|
through the `claude-agent-acp` adapter, which opentree installs on request into
|
|
250
260
|
`~/.opentree/tools` rather than your global npm root — press `A` in the
|
|
251
|
-
dashboard, pick Claude Code, and it offers the download (
|
|
261
|
+
dashboard, pick Claude Code, and it offers the download (340MB, needs `node`).
|
|
252
262
|
|
|
253
263
|
Those four are the whole list. opentree drives agents over ACP and nothing else,
|
|
254
264
|
so an agent without an ACP server has no way in — if one ships support, it
|
|
@@ -639,6 +649,30 @@ opentree delete feat/add-dark-mode
|
|
|
639
649
|
|
|
640
650
|
## Troubleshooting
|
|
641
651
|
|
|
652
|
+
### Start here: `opentree doctor`
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
opentree doctor
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
Prints what opentree can see — its own version, the versions of git, tmux, gh
|
|
659
|
+
and node, which config file it resolved and what it says, whether this
|
|
660
|
+
repository's setup commands are approved, where state and sockets live, and
|
|
661
|
+
what each workspace's chat is doing. Everything it does is a read, so it is
|
|
662
|
+
safe to run and safe to paste into an issue.
|
|
663
|
+
|
|
664
|
+
If a problem needs reproducing rather than describing, point opentree at a log
|
|
665
|
+
first:
|
|
666
|
+
|
|
667
|
+
```bash
|
|
668
|
+
OPENTREE_LOG=/tmp/opentree.log opentree
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
An environment variable rather than a flag, because the interesting failures
|
|
672
|
+
happen inside `opentree chat`, which a tmux window starts rather than you — and
|
|
673
|
+
the variable is inherited by every process opentree launches. Off by default.
|
|
674
|
+
The file holds branch names, paths and session ids, and is written `0600`.
|
|
675
|
+
|
|
642
676
|
### "Error: not a git repository"
|
|
643
677
|
|
|
644
678
|
opentree must be run from inside a git repository. Navigate to your project root first.
|
|
@@ -711,12 +745,31 @@ go build -o opentree ./cmd/opentree
|
|
|
711
745
|
|
|
712
746
|
### Architecture
|
|
713
747
|
|
|
714
|
-
|
|
748
|
+
`cmd/opentree` is the CLI surface; `pkg/` is where the work happens.
|
|
749
|
+
|
|
750
|
+
| package | what it owns |
|
|
751
|
+
| --- | --- |
|
|
752
|
+
| `tui` | the dashboard: the workspace list, the Skills and Servers tabs |
|
|
753
|
+
| `chat` | the conversation view, and the control socket the dashboard reaches it through |
|
|
754
|
+
| `acp` | the Agent Client Protocol client — the agent subprocess and its stdio |
|
|
755
|
+
| `workspace` | a workspace's lifecycle, over the four below it |
|
|
756
|
+
| `worktree` | git worktrees and branches |
|
|
757
|
+
| `tmux` | sessions and windows |
|
|
758
|
+
| `state` | `state.json`, shared between the dashboard and every chat |
|
|
759
|
+
| `github` | `gh`, for PRs, issues and CI status |
|
|
760
|
+
| `bootstrap` | seeding a worktree, running its setup, and the trust gate over those commands |
|
|
761
|
+
| `skills` | propagating agent skills into worktrees |
|
|
762
|
+
| `config` | `opentree.toml` and the agent registry |
|
|
763
|
+
| `notify`, `diag`, `ui`, `fsutil`, `gitutil` | the small shared pieces |
|
|
715
764
|
|
|
716
765
|
## License
|
|
717
766
|
|
|
718
767
|
MIT License - see [LICENSE](LICENSE) for details.
|
|
719
768
|
|
|
769
|
+
## Trademarks
|
|
770
|
+
|
|
771
|
+
opentree draws each agent it drives — opencode, Claude Code, GitHub Copilot and Gemini CLI — under that agent's own wordmark and brand colour, so you can see at a glance which one you are talking to. Those marks belong to their respective owners. opentree is an independent project and is not affiliated with, sponsored by or endorsed by any of them. See [NOTICE](NOTICE).
|
|
772
|
+
|
|
720
773
|
## Acknowledgments
|
|
721
774
|
|
|
722
775
|
- Inspired by [Conductor.build](https://conductor.build) by Sahil Lavingia
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axelgar/opentree",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Git worktree manager CLI for orchestrating parallel AI coding sessions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,13 +12,15 @@
|
|
|
12
12
|
"opentree": "bin/opentree"
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
|
-
"bin/opentree"
|
|
15
|
+
"bin/opentree",
|
|
16
|
+
"LICENSE",
|
|
17
|
+
"NOTICE"
|
|
16
18
|
],
|
|
17
19
|
"optionalDependencies": {
|
|
18
|
-
"@axelgar/opentree-linux-x64": "1.0
|
|
19
|
-
"@axelgar/opentree-linux-arm64": "1.0
|
|
20
|
-
"@axelgar/opentree-darwin-x64": "1.0
|
|
21
|
-
"@axelgar/opentree-darwin-arm64": "1.0
|
|
20
|
+
"@axelgar/opentree-linux-x64": "1.1.0",
|
|
21
|
+
"@axelgar/opentree-linux-arm64": "1.1.0",
|
|
22
|
+
"@axelgar/opentree-darwin-x64": "1.1.0",
|
|
23
|
+
"@axelgar/opentree-darwin-arm64": "1.1.0"
|
|
22
24
|
},
|
|
23
25
|
"engines": {
|
|
24
26
|
"node": ">=18"
|