ai-agentmanager 1.0.0 → 1.0.2
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/CHANGELOG.md +57 -0
- package/NOTICE +1 -1
- package/README.md +33 -15
- package/SECURITY.md +6 -6
- package/bin/agentmgr-hub.js +1 -1
- package/bin/agentmgr.js +10 -3
- package/docs/architecture.md +1 -1
- package/docs/distributed.md +1 -1
- package/docs/engines.md +5 -5
- package/docs/images/agents.jpg +0 -0
- package/docs/images/conflict-radar.jpg +0 -0
- package/docs/plugins.md +2 -2
- package/package.json +6 -4
- package/public/app.js +180 -9
- package/public/hub/index.html +3 -3
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/icons/icon.svg +1 -0
- package/public/index.html +25 -6
- package/public/manifest.webmanifest +16 -0
- package/public/share.js +1 -1
- package/public/style.css +36 -2
- package/src/about.js +70 -0
- package/src/brief.js +1 -1
- package/src/cli.js +42 -1
- package/src/conflicts.js +3 -3
- package/src/doctor.js +113 -0
- package/src/engines/antigravity.js +1 -1
- package/src/engines/claude.js +14 -0
- package/src/engines/codex.js +1 -1
- package/src/engines/index.js +9 -1
- package/src/git.js +2 -2
- package/src/inbox.js +1 -1
- package/src/judge.js +12 -0
- package/src/manager.js +29 -7
- package/src/notify.js +1 -1
- package/src/plugins.js +1 -1
- package/src/preview.js +4 -4
- package/src/server.js +4 -1
- package/src/service.js +1 -1
- package/src/sessions.js +2 -2
- package/src/store.js +2 -2
- package/src/tracker.js +5 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.2 (2026-10-28)
|
|
4
|
+
|
|
5
|
+
- **Resize and expand:** drag the edge of the agent list, or the line between the brief and the terminal; double-click a line to reset it. **Expand** (Ctrl+Shift+E) fills the window with the terminal, shell or browser tab, and **Full screen** fills the screen.
|
|
6
|
+
- **Active agents first:** agents that did real work or got your input in the last day sort to the top, and projects with active agents come before idle ones. Idle agents are dimmed and show how long they've been idle. A restart that resumes an agent doesn't count as activity.
|
|
7
|
+
- **`agentmgr doctor`:** checks Node.js, Claude Code and its sign-in, git, `gh`, the data folder, the daemon's port and Chrome, and says how to fix what's missing.
|
|
8
|
+
- **Clearer first run:** when Claude Code (or another engine) isn't installed or isn't on the daemon's PATH, the agent says so and how to fix it, instead of `spawn claude ENOENT`. Running from a git checkout without `npm install` says to run it, instead of `Cannot find package`.
|
|
9
|
+
- **AI judge:** no longer reads Claude Code's status bar ("accept edits on", "shift+tab to cycle", "update available") as a question, which raised false "waiting on you" items.
|
|
10
|
+
- **Install as an app:** Chrome and Edge can install AI Agent Manager as an app (the install icon in the address bar), so it opens in its own window with a Dock or taskbar icon.
|
|
11
|
+
|
|
12
|
+
## 1.0.1 (2026-10-26)
|
|
13
|
+
|
|
14
|
+
- **Name:** the product is now called **AI Agent Manager**, matching the `ai-agentmanager` package. The command is still `agentmgr`.
|
|
15
|
+
- **About:** the version next to the title opens an About box with the release date, author, license, links and this daemon's details; **Check for updates** asks npm for the newest version. `agentmgr about` (`--check`) in a terminal.
|
|
16
|
+
- **Dependencies:** DOMPurify 3.4.17, body-parser 2.4.0, Mermaid 12.
|
|
17
|
+
|
|
18
|
+
## 1.0.0 (2026-10-25)
|
|
19
|
+
|
|
20
|
+
- **License:** Apache-2.0 (was MIT).
|
|
21
|
+
- **Remote access is off until you turn it on** (`agentmgr remote on`). Installs that had it on keep it on.
|
|
22
|
+
- **AI judge visibility:** the bottom of the Inbox shows today's calls with **Turn off** / **Turn on**; also `agentmgr judge [on|off]`.
|
|
23
|
+
- **Hub:** `agentmgr hub serve` also listens on this Mac's Tailscale address, and **Add machine** gives a join command other machines can reach (or says why they can't).
|
|
24
|
+
- **Linux:** a clear message when Chrome's sandbox can't start; `browserNoSandbox` to run without it.
|
|
25
|
+
- **Upgrades:** the state file is versioned, backed up at startup, migrated with a backup, and never overwritten by an older version.
|
|
26
|
+
- **Plugins:** policies that can refuse actions, audit listeners, extra API routes and engines on the daemon; sign-in methods, request policies and audit on the hub ([docs/plugins.md](docs/plugins.md)).
|
|
27
|
+
- **Packaging:** `npm i -g ai-agentmanager` (the command is `agentmgr`), `agentmgr --version`.
|
|
28
|
+
- **Installer:** the site's `install.sh` puts the program in `~/.local/share/agentmanager` and never touches `~/.agentmanager`, where your agents and workspaces live. It used to replace that folder.
|
|
29
|
+
- **Start at login:** `agentmgr service install` keeps `AGENTMGR_PLUGINS` and `AGENTMGR_HUB_PLUGINS`.
|
|
30
|
+
- **UI:** long agent names stay on one line, with the buttons below.
|
|
31
|
+
- **Project:** CI on macOS and Linux, SECURITY.md, CONTRIBUTING.md, code of conduct, architecture notes.
|
|
32
|
+
|
|
33
|
+
## 0.5.0 (2026-10-23)
|
|
34
|
+
|
|
35
|
+
- **AI judge:** rules decide when to look, a fast model decides what is going on: stuck agents (with a specific nudge), idle screens no rule matched, whether "done" work meets the intent, colliding changes, backlog order and splits, and which alerts interrupt you. Learns from your reactions.
|
|
36
|
+
- **CLI sign-in links:** `railway login`, `gh auth login --web` and similar open where the callback reaches the waiting CLI, from any device.
|
|
37
|
+
- **Live browser tabs:** a real Chrome on the machine, streamed into the tab, with typing, scrolling, popups as tabs, the phone keyboard, sharp frames on retina screens and one-way sound.
|
|
38
|
+
- **Continue terminal sessions:** import Claude Code sessions started with a plain `claude` and continue them as agents.
|
|
39
|
+
|
|
40
|
+
## 0.4.0 (2026-10-21)
|
|
41
|
+
|
|
42
|
+
- **Engines:** Codex CLI and Antigravity CLI next to Claude Code, behind one adapter.
|
|
43
|
+
- **Browser tabs:** open any address next to an agent's terminals, relayed over HTTPS to signed-in remote devices.
|
|
44
|
+
- **Human vs AI** review with a second-model critique; optional plan review before an agent implements.
|
|
45
|
+
- **Hub sign-in links:** open a machine's own page signed in, with a one-time ticket.
|
|
46
|
+
|
|
47
|
+
## 0.3.0 (2026-10-18)
|
|
48
|
+
|
|
49
|
+
- **Hub:** one place for agents on several machines: fleet view, control, a shared backlog that starts work where there's room, Google sign-in.
|
|
50
|
+
|
|
51
|
+
## 0.2.0 (2026-10-18)
|
|
52
|
+
|
|
53
|
+
- **Decision inbox, conflict radar, stuck detection, checkpoints and forks, races.**
|
|
54
|
+
|
|
55
|
+
## 0.1.x (2026-10-03 to 2026-10-09)
|
|
56
|
+
|
|
57
|
+
- First release: one background agent per intent, CLI, daemon and web UI, worktrees per agent, briefs, results, phone access, multiple shells and file attachments, swipe to scroll on phones.
|
package/NOTICE
CHANGED
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Agent Manager
|
|
1
|
+
# AI Agent Manager
|
|
2
2
|
|
|
3
3
|
Run one background [Claude Code](https://claude.com/claude-code) agent per intent, and keep track of them from a web UI or the `agentmgr` CLI.
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
9
|
- **Intents in, agents out.** Give one intent or a list (one per line). Each becomes its own `claude` process.
|
|
10
10
|
- **Repo or folder.** Give a git URL (cloned once, then each agent gets its own worktree and branch) or a local folder.
|
|
@@ -39,8 +39,11 @@ Run one background [Claude Code](https://claude.com/claude-code) agent per inten
|
|
|
39
39
|
- **Shells next to each agent.** **Open shell** gives a terminal in the agent's folder for running commands by hand. **+ Shell** opens as many more as you need, each in its own tab.
|
|
40
40
|
- **Browser tabs.** **+ Browser** opens a page as this machine sees it, in a tab next to the agent's terminals. That can be the agent's dev server on `localhost:5173`, a site on its network or VPN, or any address. Local addresses the agent prints are offered as suggestions. It works from your phone or laptop too (see below).
|
|
41
41
|
- **Live browser.** Browser tabs run a real Chrome on this machine and stream it into the tab: you see its screen and your clicks, scrolling, typing and paste go back to it, from the laptop or the phone. Because the page runs here, `localhost` is this machine, sites that refuse to be framed load normally, and popups (a sign-in window) open as tabs of their own and come back when they close. Chrome (or Chromium, Brave, Edge; `browserBin` in config.json picks one) runs headless with its own profile in `~/.agentmanager/browser-profile`, so sign-ins are remembered; it starts on the first view and stops after 15 minutes with nobody watching. Downloads go to `~/Downloads/agentmanager`. A site that still refuses it as a bot may accept `"browserHeadless": false`, which runs Chrome with a real window on this machine's screen. On Linux where Chrome's sandbox can't start (containers, Ubuntu 23.10+ user-namespace restrictions) the tab says so; `"browserNoSandbox": true` runs it without the sandbox, at your own risk. **Lite** on the bar switches a tab to the frame mode (the page loads in your own browser; quicker for a dev server).
|
|
42
|
-
- **CLI sign-in links.** When a terminal prints a sign-in link that returns to a port on this machine (`railway login`, `gh auth login --web`, `gcloud auth login`...), a bar above the terminal offers **Open sign-in**: the link opens in a live browser tab here, so the provider's redirect to `http://127.0.0.1:PORT/callback` reaches the waiting CLI by itself, from any device. It opens on its own if you just typed the command. Without a live browser, it opens a window on your device; from another device you then paste the address you land on (`127.0.0.1:PORT/callback…`) into the bar and Agent Manager delivers it to the CLI, only on the port the link named.
|
|
42
|
+
- **CLI sign-in links.** When a terminal prints a sign-in link that returns to a port on this machine (`railway login`, `gh auth login --web`, `gcloud auth login`...), a bar above the terminal offers **Open sign-in**: the link opens in a live browser tab here, so the provider's redirect to `http://127.0.0.1:PORT/callback` reaches the waiting CLI by itself, from any device. It opens on its own if you just typed the command. Without a live browser, it opens a window on your device; from another device you then paste the address you land on (`127.0.0.1:PORT/callback…`) into the bar and AI Agent Manager delivers it to the CLI, only on the port the link named.
|
|
43
43
|
- **Attach files and screenshots.** Drop files on the terminal, paste a screenshot, or use **📎 Attach**. The file is saved on the daemon's machine and its path is pasted into the terminal, which is how Claude Code picks up images and files.
|
|
44
|
+
- **Your layout.** Drag the edge of the agent list, or the line between the brief and the terminal, to resize them; double-click a line to reset it. **Expand** (Ctrl+Shift+E) fills the window with the terminal, shell or browser tab; **Full screen** fills the screen. Agents active in the last day sort to the top; idle ones are dimmed.
|
|
45
|
+
- **As an app.** In Chrome or Edge, click the install icon in the address bar (or ⋮ → Cast, save and share → Install page as app). AI Agent Manager then opens in its own window with its own Dock or taskbar icon, and the daemon keeps running as before.
|
|
46
|
+
- **About.** The version next to the title opens the About box: release date, author, license, links, and how this daemon runs (data folder, port, Node.js, which `claude`). **Check for updates** asks npm for the newest version. In a terminal: `agentmgr about` (`--check` for updates).
|
|
44
47
|
- **General sessions.** **Ask Claude** starts a session with no repo, folder or intent, for questions. It is tracked and resumable like any other agent.
|
|
45
48
|
|
|
46
49
|
New in 0.2, for running many agents at once:
|
|
@@ -52,6 +55,18 @@ New in 0.2, for running many agents at once:
|
|
|
52
55
|
- **Checkpoints and forks.** The code (uncommitted work included) and the conversation are saved at the end of every turn. **Fork** starts a new agent from now or from any checkpoint, in its own worktree, to try another direction without losing the first.
|
|
53
56
|
- **Races.** Send one intent to several agents with different models or approaches. Compare their outcome, checks, size of change, cost and a test command run in each worktree, read their diffs side by side, then pick a winner and delete the rest.
|
|
54
57
|
|
|
58
|
+
## When to use it
|
|
59
|
+
|
|
60
|
+
Claude Code on its own, including its built-in ways to run work in parallel, is enough for one repo in one sitting. AI Agent Manager is for when that stops being enough:
|
|
61
|
+
|
|
62
|
+
- **Many sessions across several repos,** running for hours, where you lose track of which one is waiting on you.
|
|
63
|
+
- **Agents that must survive** a closed terminal, a restart or a reboot, and pick up where they left off.
|
|
64
|
+
- **Several agents in one repo,** each on its own worktree and branch, with a warning when two touch the same code.
|
|
65
|
+
- **Keeping up without reading transcripts:** a brief per agent (result, problem, fix, checks) and one inbox for every prompt and question.
|
|
66
|
+
- **From anywhere:** your phone, another computer, or several machines through the hub.
|
|
67
|
+
|
|
68
|
+
**Trying it costs little.** It runs the same `claude` you already use, with your plan and your repo's `CLAUDE.md` and skills. Sessions you started with `claude` in a terminal can be continued in it (**Import** above the agent list), and you can go back to a plain terminal any time with `claude --resume`.
|
|
69
|
+
|
|
55
70
|
## Install
|
|
56
71
|
|
|
57
72
|
Runs on macOS and Linux; on Windows, use WSL2. Requires Node 20+, `git`, and the `claude` CLI, signed in (run `claude` once). Optional: `gh` (authenticated) for PR discovery by branch and PR state, Chrome (or Chromium, Brave, Edge) for live browser tabs, and Codex (`npm i -g @openai/codex`) as a second engine.
|
|
@@ -60,13 +75,13 @@ Runs on macOS and Linux; on Windows, use WSL2. Requires Node 20+, `git`, and the
|
|
|
60
75
|
|
|
61
76
|
```sh
|
|
62
77
|
npm install -g ai-agentmanager # the latest release
|
|
63
|
-
npm install -g ai-agentmanager@1.0.
|
|
78
|
+
npm install -g ai-agentmanager@1.0.2 # or a specific one
|
|
64
79
|
```
|
|
65
80
|
|
|
66
81
|
Or from the repository, at a release tag:
|
|
67
82
|
|
|
68
83
|
```sh
|
|
69
|
-
git clone --branch v1.0.
|
|
84
|
+
git clone --branch v1.0.2 --depth 1 https://github.com/jdmunta/ai-agentmanager-core.git
|
|
70
85
|
cd ai-agentmanager-core
|
|
71
86
|
npm install
|
|
72
87
|
npm link # optional: puts `agentmgr` on your PATH
|
|
@@ -86,9 +101,11 @@ npm link
|
|
|
86
101
|
| Installed with | Update |
|
|
87
102
|
| --- | --- |
|
|
88
103
|
| npm | `npm install -g ai-agentmanager@latest` |
|
|
89
|
-
| A clone at a release tag | `git fetch --tags && git checkout v1.0.
|
|
104
|
+
| A clone at a release tag | `git fetch --tags && git checkout v1.0.2 && npm install` (the tag you want) |
|
|
90
105
|
| A clone of `main` | `git pull && npm install` |
|
|
91
106
|
|
|
107
|
+
**Check your setup.** `agentmgr doctor` checks Node.js, Claude Code and its sign-in, git, `gh`, the data folder, the daemon's port and Chrome, and says how to fix anything missing.
|
|
108
|
+
|
|
92
109
|
## Quick start on a new computer
|
|
93
110
|
|
|
94
111
|
**A computer that runs agents.** After installing:
|
|
@@ -125,6 +142,7 @@ The hub listens on port 4720, on this Mac and on its Tailscale address (`--host`
|
|
|
125
142
|
```sh
|
|
126
143
|
agentmgr ui # start the daemon and open http://127.0.0.1:4717
|
|
127
144
|
agentmgr service install # start the daemon at login (launchd / systemd --user)
|
|
145
|
+
agentmgr doctor # check Node.js, Claude Code, git, gh, the port; says how to fix
|
|
128
146
|
|
|
129
147
|
agentmgr add "Fix the flaky login test" -d ~/src/app
|
|
130
148
|
agentmgr add -r https://github.com/org/repo.git \
|
|
@@ -207,7 +225,7 @@ Every agent gets **its own worktree and its own branch** (`agent/<name>-<id>`) o
|
|
|
207
225
|
|
|
208
226
|
## Continue sessions started in a terminal
|
|
209
227
|
|
|
210
|
-
**Import** (next to **Save now** in the agent list) lists the Claude Code sessions you started yourself with `claude` in a terminal on this machine, from the last 7, 30 or 90 days: grouped by folder, with title, first and last ask, branch, size and last activity. Headless runs (`claude -p`, the SDK) and Agent Manager's own agents are left out. Each one you pick becomes an agent in the same folder that continues the same conversation (`--resume`), with the brief, inbox, PRs and usage tracked from then on.
|
|
228
|
+
**Import** (next to **Save now** in the agent list) lists the Claude Code sessions you started yourself with `claude` in a terminal on this machine, from the last 7, 30 or 90 days: grouped by folder, with title, first and last ask, branch, size and last activity. Headless runs (`claude -p`, the SDK) and AI Agent Manager's own agents are left out. Each one you pick becomes an agent in the same folder that continues the same conversation (`--resume`), with the brief, inbox, PRs and usage tracked from then on.
|
|
211
229
|
|
|
212
230
|
A session still open in a terminal is marked **open in a terminal** (a running `claude` names it) or **maybe open** (a `claude` runs in that folder and the session was active minutes ago). Two places writing one conversation would mix it up, so those continue as a **copy** under a new session ID and the terminal keeps the original. For the same reason, an agent that follows a `/clear` to a new session never picks up a headless run or a session a terminal has open in its folder.
|
|
213
231
|
|
|
@@ -356,7 +374,7 @@ The **Results** card is the first thing in the Brief panel, and `agentmgr show`
|
|
|
356
374
|
- **Blockers first, in red.**
|
|
357
375
|
- **What was delivered.**
|
|
358
376
|
|
|
359
|
-
It combines what the agent wrote under `## Results` with what Agent Manager tracks itself:
|
|
377
|
+
It combines what the agent wrote under `## Results` with what AI Agent Manager tracks itself:
|
|
360
378
|
|
|
361
379
|
- PRs (with their state).
|
|
362
380
|
- Failing checks.
|
|
@@ -463,7 +481,7 @@ The data set is small.
|
|
|
463
481
|
|
|
464
482
|
## Conflict radar
|
|
465
483
|
|
|
466
|
-
For each agent with its own branch, Agent Manager works out which files and line ranges its branch changed since it branched, including uncommitted and new files. Agents working in the same repository (the same shared clone or source folder) that touch the same file are flagged:
|
|
484
|
+
For each agent with its own branch, AI Agent Manager works out which files and line ranges its branch changed since it branched, including uncommitted and new files. Agents working in the same repository (the same shared clone or source folder) that touch the same file are flagged:
|
|
467
485
|
|
|
468
486
|
- **same lines**: both edit the same region, within a few lines (likely a merge conflict). Only judged when both branched from the same commit.
|
|
469
487
|
- **same file**: both edit the file, in different places.
|
|
@@ -509,7 +527,7 @@ Fixed rules are cheap but miss context: three identical failures can be a conver
|
|
|
509
527
|
|
|
510
528
|
## Checkpoints and forks
|
|
511
529
|
|
|
512
|
-
At the end of each turn, Agent Manager snapshots the agent's working tree as a commit under `refs/agentmgr/<agent>/<n>`. This doesn't touch the agent's branch, index or files. It records how far the conversation had got alongside. The last 40 are kept (`maxCheckpoints`); deleting the agent removes them.
|
|
530
|
+
At the end of each turn, AI Agent Manager snapshots the agent's working tree as a commit under `refs/agentmgr/<agent>/<n>`. This doesn't touch the agent's branch, index or files. It records how far the conversation had got alongside. The last 40 are kept (`maxCheckpoints`); deleting the agent removes them.
|
|
513
531
|
|
|
514
532
|
**Fork** (or `agentmgr fork <agent> [-c n]`) creates a new agent:
|
|
515
533
|
|
|
@@ -608,7 +626,7 @@ Or use **Remote access** in the header of the UI on this computer.
|
|
|
608
626
|
|
|
609
627
|
Agents run Claude Code by default. With OpenAI's Codex CLI installed (`npm i -g @openai/codex`, signed in), an agent can run Codex instead: `agentmgr add --engine codex …`, or the **Engine** picker in New agent (shown once a second engine is installed). Everything else works the same way: worktrees, the brief and questions, the inbox (Codex's approval menus included), token usage, stuck detection, PR tracking, Explain, the backlog and the hub. Codex records no cost, and planning while a repo clones and forks are Claude-only for now. Set `"engine": "codex"` in config.json to make it the default; `engines.codex.bin` points at another binary. On the hub, each machine reports the engines it has (`engine:codex`), so shared backlog work can ask for one. See [docs/engines.md](docs/engines.md).
|
|
610
628
|
|
|
611
|
-
Google's **Antigravity CLI** (`agy`, signed in with your Google account) works the same way: `--engine antigravity`. It replaced Gemini CLI for personal Google accounts in June 2026. Agent Manager adopts the conversation agy starts, resumes it with `--conversation`, reads token usage, commands and file writes from its transcript, shows its permission menus (commands, file changes, access outside the folder) in the inbox, pre-trusts agent folders in agy's settings, and runs Explain in agy's print mode. agy asks before writing the brief too, unless the agent runs in `acceptEdits` mode. `engines.antigravity.bin` points at another binary.
|
|
629
|
+
Google's **Antigravity CLI** (`agy`, signed in with your Google account) works the same way: `--engine antigravity`. It replaced Gemini CLI for personal Google accounts in June 2026. AI Agent Manager adopts the conversation agy starts, resumes it with `--conversation`, reads token usage, commands and file writes from its transcript, shows its permission menus (commands, file changes, access outside the folder) in the inbox, pre-trusts agent folders in agy's settings, and runs Explain in agy's print mode. agy asks before writing the brief too, unless the agent runs in `acceptEdits` mode. `engines.antigravity.bin` points at another binary.
|
|
612
630
|
|
|
613
631
|
## Several machines: the hub
|
|
614
632
|
|
|
@@ -697,8 +715,8 @@ Usage comes from the session transcripts and is refreshed every few seconds whil
|
|
|
697
715
|
- **Open shell** (or `agentmgr shell <agent>`) starts `$SHELL -l` in the agent's working folder. It shows as a **Shell 1** tab next to the **Claude** tab in the terminal pane; **+ Shell** (or `agentmgr shell <agent> -n 2`) opens more, and **×** on a tab closes that shell. Shells live as long as the daemon and don't start Claude.
|
|
698
716
|
- **+ Browser** opens a tab on an address: a port (`5173`), a local address (`localhost:3000/app`), something on the machine's network (`10.0.0.7:8080`, `staging.internal`) or any site (`example.com`, which defaults to https). Tabs are kept with the agent, so every device sees them, and **×** closes one.
|
|
699
717
|
- **On this computer** the tab loads the address directly. Many public sites refuse to appear inside another page, so use **↗** for those.
|
|
700
|
-
- **From another device** (remote access), Agent Manager gives each site its own HTTPS port. That port relays to the site as the machine sees it, so you can check from your phone what the agent built or what the machine can reach. Absolute links, redirects and hot-reload WebSockets on the same site keep working, and the site's "don't show me in a frame" headers are dropped. A link or redirect to a different site leaves the relay.
|
|
701
|
-
- **Safety:** the relay serves only signed-in devices. It never relays to Agent Manager's own ports on any of the machine's addresses, and it removes Agent Manager's sign-in cookie before forwarding. Sites other than localhost must present a valid certificate. The relays close when remote access is turned off.
|
|
718
|
+
- **From another device** (remote access), AI Agent Manager gives each site its own HTTPS port. That port relays to the site as the machine sees it, so you can check from your phone what the agent built or what the machine can reach. Absolute links, redirects and hot-reload WebSockets on the same site keep working, and the site's "don't show me in a frame" headers are dropped. A link or redirect to a different site leaves the relay.
|
|
719
|
+
- **Safety:** the relay serves only signed-in devices. It never relays to AI Agent Manager's own ports on any of the machine's addresses, and it removes AI Agent Manager's sign-in cookie before forwarding. Sites other than localhost must present a valid certificate. The relays close when remote access is turned off.
|
|
702
720
|
- If a tab stays blank on a device, open it once with **↗** and accept the certificate there.
|
|
703
721
|
- **Ask Claude** (or `agentmgr ask`) creates a `general` agent. All general sessions share `~/.agentmanager/general`, so Claude's folder-trust prompt only appears the first time.
|
|
704
722
|
|
|
@@ -762,7 +780,7 @@ npm test # unit tests + end-to-end daemon tests against a stub claude (test/f
|
|
|
762
780
|
|
|
763
781
|
- How the code fits together: [docs/architecture.md](docs/architecture.md). Extending it from a separate package (policies, audit, routes, engines, hub sign-in): [docs/plugins.md](docs/plugins.md). How to contribute: [CONTRIBUTING.md](CONTRIBUTING.md). Changes per release: [CHANGELOG.md](CHANGELOG.md).
|
|
764
782
|
- Security model and how to report a problem privately: [SECURITY.md](SECURITY.md).
|
|
765
|
-
- Agent Manager sends no telemetry.
|
|
766
|
-
- Agent Manager runs the agent CLIs you install and sign in to (Claude Code, Codex, Antigravity) with your own accounts. Use them within your provider's terms.
|
|
783
|
+
- AI Agent Manager sends no telemetry. The only request it makes on its own behalf is **Check for updates**, when you click it.
|
|
784
|
+
- AI Agent Manager runs the agent CLIs you install and sign in to (Claude Code, Codex, Antigravity) with your own accounts. Use them within your provider's terms.
|
|
767
785
|
- Maintained in spare time. Issues and pull requests are welcome; replies may take a few days.
|
|
768
786
|
- Licensed under the [Apache License 2.0](LICENSE).
|
package/SECURITY.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Please report security issues privately through GitHub: **Security → Report a vulnerability** on this repository. Don't open a public issue. You'll get a reply within a few days, and a fix or a plan before anything is disclosed.
|
|
6
6
|
|
|
7
|
-
## What Agent Manager is, from a security point of view
|
|
7
|
+
## What AI Agent Manager is, from a security point of view
|
|
8
8
|
|
|
9
|
-
Agent Manager runs coding agents (Claude Code, Codex, Antigravity) **as your user, on your machine**, in real terminals. Anyone who can drive Agent Manager can run commands as you. The design goal is that only you can drive it, from this machine, unless you deliberately open it up.
|
|
9
|
+
AI Agent Manager runs coding agents (Claude Code, Codex, Antigravity) **as your user, on your machine**, in real terminals. Anyone who can drive AI Agent Manager can run commands as you. The design goal is that only you can drive it, from this machine, unless you deliberately open it up.
|
|
10
10
|
|
|
11
11
|
### Trust boundaries
|
|
12
12
|
|
|
@@ -16,7 +16,7 @@ Agent Manager runs coding agents (Claude Code, Codex, Antigravity) **as your use
|
|
|
16
16
|
| Remote access (`https://<ip>:4718`) | Nobody: **off until you run `agentmgr remote on`** | HTTPS with a certificate made on this machine. Every API call needs a signed-in device session (sign-in with the access token or its QR code; sessions last 30 days, can be revoked one by one, and rotating the token signs everyone out). Only this machine's own addresses are accepted as `Host`. Turning remote access on or off, the token, devices and shutdown are local-only. |
|
|
17
17
|
| Hub (`agentmgr hub serve`, port 4720) | This machine and its Tailscale address | One admin token (or Google sign-in limited to listed emails); browsers get a 30-day session cookie. Plain `http://` is accepted only on loopback or Tailscale, which encrypts traffic; anything else must be `https://`. |
|
|
18
18
|
| A machine joined to a hub | The hub, over a connection the machine opens | Ed25519 key per machine (private key in `~/.agentmanager/hub-link.json`, mode 600); each connection signs a fresh challenge. The machine decides what the hub may do (`hub.allow`, default `view` only), checks every request itself, matches agents by exact ID, runs only a fixed list of actions (never deletes) and logs each request and refusal to `~/.agentmanager/hub-audit.log`. |
|
|
19
|
-
| Site relays (browser tabs from another device) | Signed-in remote devices | Never relay to Agent Manager's own ports; its sign-in cookie is stripped before forwarding; sites other than localhost must present a valid certificate; relays close when remote access is turned off. |
|
|
19
|
+
| Site relays (browser tabs from another device) | Signed-in remote devices | Never relay to AI Agent Manager's own ports; its sign-in cookie is stripped before forwarding; sites other than localhost must present a valid certificate; relays close when remote access is turned off. |
|
|
20
20
|
| CLI sign-in callbacks | The UI | Delivered only to the loopback port the sign-in link itself named. |
|
|
21
21
|
|
|
22
22
|
### What is stored, and where
|
|
@@ -30,12 +30,12 @@ Everything lives in `~/.agentmanager/` (or `$AGENTMGR_HOME`):
|
|
|
30
30
|
- `browser-profile/`: the live browser's Chrome profile. Sites you sign in to there stay signed in, as in any browser.
|
|
31
31
|
- `scrollback/`, `briefs/`, `state.json`: terminal output and agent state. These can contain anything an agent printed, including secrets it read.
|
|
32
32
|
|
|
33
|
-
Agent Manager sends **no telemetry**. It talks to the network only for what you set up: git remotes, GitHub (`gh`), Slack, a hub you joined, and the agents' own model providers.
|
|
33
|
+
AI Agent Manager sends **no telemetry**. It talks to the network only for what you set up: git remotes, GitHub (`gh`), Slack, a hub you joined, and the agents' own model providers. **Check for updates** in the About box (or `agentmgr about --check`) asks the npm registry for the newest version, only when you click it.
|
|
34
34
|
|
|
35
35
|
### Things to be aware of
|
|
36
36
|
|
|
37
|
-
- **Agents act as you.** Each agent's permission mode (for Claude: `default`, `acceptEdits`, `plan`, `auto`, `bypassPermissions`) is passed to the engine; Agent Manager doesn't sandbox agents beyond that. Run agents in folders and with modes you'd be comfortable running the engine in by hand.
|
|
38
|
-
- **Other processes running as your user** can call the local API, just as they could run `claude` themselves. Agent Manager doesn't defend against malware already running as you.
|
|
37
|
+
- **Agents act as you.** Each agent's permission mode (for Claude: `default`, `acceptEdits`, `plan`, `auto`, `bypassPermissions`) is passed to the engine; AI Agent Manager doesn't sandbox agents beyond that. Run agents in folders and with modes you'd be comfortable running the engine in by hand.
|
|
38
|
+
- **Other processes running as your user** can call the local API, just as they could run `claude` themselves. AI Agent Manager doesn't defend against malware already running as you.
|
|
39
39
|
- **The AI judge** sends short summaries of an agent's screen, activity and brief to the same engine the agents use (by default Claude `haiku`), as separate calls. Turn it off with `agentmgr judge off`.
|
|
40
40
|
- **Remote access on an untrusted network** (café Wi-Fi) exposes the sign-in page on your local network. Leave it off there, or use Tailscale and the hub instead.
|
|
41
41
|
|
package/bin/agentmgr-hub.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// The hub on its own, for hosts without the rest of Agent Manager (Railway, a container).
|
|
2
|
+
// The hub on its own, for hosts without the rest of AI Agent Manager (Railway, a container).
|
|
3
3
|
// Locally, "agentmgr hub serve" does the same.
|
|
4
4
|
import { startHub } from '../src/hub.js';
|
|
5
5
|
|
package/bin/agentmgr.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
main(
|
|
2
|
+
// Dependencies are loaded behind a check, so a git checkout without `npm install` says so.
|
|
3
|
+
try {
|
|
4
|
+
const { main } = await import('../src/cli.js');
|
|
5
|
+
await main(process.argv);
|
|
6
|
+
} catch (err) {
|
|
7
|
+
if (err?.code !== 'ERR_MODULE_NOT_FOUND' || !/Cannot find package/.test(err.message)) throw err;
|
|
8
|
+
const dir = new URL('..', import.meta.url).pathname;
|
|
9
|
+
console.error(`agentmgr: dependencies are missing (${err.message.match(/'([^']+)'/)?.[1] ?? 'a package'}).\nRun \`npm install\` in ${dir} and try again.`);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
package/docs/architecture.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Architecture
|
|
2
2
|
|
|
3
|
-
Agent Manager is one long-running **daemon** per machine. It owns every agent's terminal and state. The **web UI** and the **CLI** are clients of its HTTP and WebSocket API. Optionally, daemons on several machines connect out to a **hub**.
|
|
3
|
+
AI Agent Manager is one long-running **daemon** per machine. It owns every agent's terminal and state. The **web UI** and the **CLI** are clients of its HTTP and WebSocket API. Optionally, daemons on several machines connect out to a **hub**.
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
browser (UI) ──┐ ┌── claude / codex / agy in PTYs (one per agent, plus shells)
|
package/docs/distributed.md
CHANGED
|
@@ -4,7 +4,7 @@ Status: phases 1–3 built (0.3, branch `v0.3-fleet`) · Phases 4–5: planned
|
|
|
4
4
|
|
|
5
5
|
## Problem
|
|
6
6
|
|
|
7
|
-
Agent Manager runs every agent on the machine its daemon runs on. Once you have agents on more than one machine (a Mac mini that is always on, a laptop, a cloud VM with more cores, a teammate's box), you get one UI per machine, one inbox per machine, and a backlog that can't use spare capacity elsewhere. Overlaps between agents on different machines go unnoticed until merge time.
|
|
7
|
+
AI Agent Manager runs every agent on the machine its daemon runs on. Once you have agents on more than one machine (a Mac mini that is always on, a laptop, a cloud VM with more cores, a teammate's box), you get one UI per machine, one inbox per machine, and a backlog that can't use spare capacity elsewhere. Overlaps between agents on different machines go unnoticed until merge time.
|
|
8
8
|
|
|
9
9
|
## Goals
|
|
10
10
|
|
package/docs/engines.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Status: phase 1, Codex and Antigravity built. Gemini CLI dropped: since June 18, 2026 it no longer serves personal Google accounts, and Antigravity CLI (`agy`, `src/engines/antigravity.js`, checked against 1.4.3, fixtures in `test/fixtures/antigravity/`) replaced it. 0.4 (branch `v0.4-engines`) · 2026-10-18. Targets the current releases of each CLI, checked in phase 1.
|
|
4
4
|
|
|
5
|
-
Agent Manager runs every agent with Claude Code. If Anthropic has an outage, a rate limit hits, or prices change, every agent stops at once. Running agents on other engines as well makes the fleet resilient across providers, and lets each task use the engine that suits it.
|
|
5
|
+
AI Agent Manager runs every agent with Claude Code. If Anthropic has an outage, a rate limit hits, or prices change, every agent stops at once. Running agents on other engines as well makes the fleet resilient across providers, and lets each task use the engine that suits it.
|
|
6
6
|
|
|
7
7
|
## Goals
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ Agent Manager runs every agent with Claude Code. If Anthropic has an outage, a r
|
|
|
14
14
|
## Non-goals
|
|
15
15
|
|
|
16
16
|
- **Moving a live conversation between engines.** Conversations stay with their engine. A task can continue on another engine through a handoff (below), which carries the work but not the chat history.
|
|
17
|
-
- **Editor-based agents** (Antigravity, Cursor, and so on). Agent Manager drives command-line agents in a terminal.
|
|
17
|
+
- **Editor-based agents** (Antigravity, Cursor, and so on). AI Agent Manager drives command-line agents in a terminal.
|
|
18
18
|
- **Running models directly through APIs.** Each engine keeps its own CLI, sign-in, tools and safety settings.
|
|
19
19
|
|
|
20
20
|
## What is Claude-specific today
|
|
@@ -91,9 +91,9 @@ Gemini CLI flags are checked against 0.64.0 (`test/fixtures/gemini/help-0.64.0.t
|
|
|
91
91
|
|
|
92
92
|
### Permission modes
|
|
93
93
|
|
|
94
|
-
Agent Manager's three modes map to each engine's own approval settings. The hub's rule stays: no mode that skips all prompts can be started from the hub.
|
|
94
|
+
AI Agent Manager's three modes map to each engine's own approval settings. The hub's rule stays: no mode that skips all prompts can be started from the hub.
|
|
95
95
|
|
|
96
|
-
| Agent Manager | Claude Code | Codex CLI | Gemini CLI |
|
|
96
|
+
| AI Agent Manager | Claude Code | Codex CLI | Gemini CLI |
|
|
97
97
|
| --- | --- | --- | --- |
|
|
98
98
|
| `default` (ask) | `default` | `--sandbox workspace-write --ask-for-approval on-request` (0.163 only has `on-request` and `never`) | `--approval-mode default` |
|
|
99
99
|
| `acceptEdits` | `acceptEdits` | the same: edits inside the workspace never ask | `--approval-mode auto_edit` |
|
|
@@ -107,7 +107,7 @@ The brief and questions files are what make an agent reviewable from the inbox,
|
|
|
107
107
|
- **Instructions:** today they go in `--append-system-prompt`. Codex and Gemini have no per-launch system prompt flag, so the instructions go in the first message of a new session, and are repeated briefly on resume (in the resume message where the engine accepts one). Writing them into the repo's `AGENTS.md`/`GEMINI.md` is rejected: that would change the user's repo.
|
|
108
108
|
- **Writing outside the repo:** Codex's sandbox only writes inside the workspace by default. Options, in order of preference:
|
|
109
109
|
1. Allow the brief folder as an extra writable root (`--add-dir` or `writable_roots`).
|
|
110
|
-
2. Have the agent write `.agentmgr/BRIEF.md` inside its worktree, add `.agentmgr/` to the worktree's local git excludes (`.git/info/exclude` of the worktree, never the repo's `.gitignore`), and have Agent Manager read it from there.
|
|
110
|
+
2. Have the agent write `.agentmgr/BRIEF.md` inside its worktree, add `.agentmgr/` to the worktree's local git excludes (`.git/info/exclude` of the worktree, never the repo's `.gitignore`), and have AI Agent Manager read it from there.
|
|
111
111
|
- **Parsing** (`parseBrief`, `parseQuestions`) is already engine-neutral.
|
|
112
112
|
|
|
113
113
|
### Usage, activity and stuck detection
|
package/docs/images/agents.jpg
CHANGED
|
Binary file
|
|
Binary file
|
package/docs/plugins.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plugins
|
|
2
2
|
|
|
3
|
-
A plugin extends Agent Manager from a separate package, without changing its code: add policies that can refuse actions, listen to what happens (for an audit trail), serve extra API routes, add an agent engine, or (on the hub) add a sign-in method.
|
|
3
|
+
A plugin extends AI Agent Manager from a separate package, without changing its code: add policies that can refuse actions, listen to what happens (for an audit trail), serve extra API routes, add an agent engine, or (on the hub) add a sign-in method.
|
|
4
4
|
|
|
5
5
|
## Loading
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ A plugin extends Agent Manager from a separate package, without changing its cod
|
|
|
10
10
|
{ "plugins": ["@acme/agentmanager-policy", "./plugins/audit.js"] }
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
Package names are resolved from Agent Manager's install; paths are relative to `~/.agentmanager` (`~` works too).
|
|
13
|
+
Package names are resolved from AI Agent Manager's install; paths are relative to `~/.agentmanager` (`~` works too).
|
|
14
14
|
|
|
15
15
|
**Hub:** `AGENTMGR_HUB_PLUGINS=@acme/agentmanager-sso,./plugins/hub-audit.js` (paths relative to the hub's state folder).
|
|
16
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-agentmanager",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Run background coding agents (Claude Code, Codex) per intent, and keep track of them from a web UI, your phone or the CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"bugs": {
|
|
20
20
|
"url": "https://github.com/jdmunta/ai-agentmanager-core/issues"
|
|
21
21
|
},
|
|
22
|
+
"author": "Jagadesh Munta (https://github.com/jdmunta)",
|
|
22
23
|
"license": "Apache-2.0",
|
|
23
24
|
"type": "module",
|
|
24
25
|
"bin": {
|
|
@@ -33,7 +34,8 @@
|
|
|
33
34
|
"README.md",
|
|
34
35
|
"LICENSE",
|
|
35
36
|
"NOTICE",
|
|
36
|
-
"SECURITY.md"
|
|
37
|
+
"SECURITY.md",
|
|
38
|
+
"CHANGELOG.md"
|
|
37
39
|
],
|
|
38
40
|
"scripts": {
|
|
39
41
|
"start": "node bin/agentmgr.js serve",
|
|
@@ -47,10 +49,10 @@
|
|
|
47
49
|
"@xterm/addon-fit": "^0.11.0",
|
|
48
50
|
"@xterm/xterm": "^6.0.0",
|
|
49
51
|
"commander": "^15.0.0",
|
|
50
|
-
"dompurify": "^3.4.
|
|
52
|
+
"dompurify": "^3.4.17",
|
|
51
53
|
"express": "^5.2.1",
|
|
52
54
|
"marked": "^18.0.14",
|
|
53
|
-
"mermaid": "^
|
|
55
|
+
"mermaid": "^12.2.0",
|
|
54
56
|
"node-pty": "^1.1.0",
|
|
55
57
|
"qrcode": "^1.5.4",
|
|
56
58
|
"ws": "^8.22.0"
|