@hanskristoffer/agentpool 0.7.0 → 0.9.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/README.md +34 -11
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ One daemon per machine that:
|
|
|
6
6
|
- hosts **MCP servers** and gives each GitHub repo its own set (e.g. a separate PostHog project per repo), plus general ones for every repo;
|
|
7
7
|
- **shares** all of it between your machines over Tailscale or an end-to-end encrypted relay, and keeps working when the other machines are offline.
|
|
8
8
|
|
|
9
|
-
T3 Code (or plain Claude Code / Codex) runs the sessions; agentgate sits underneath. The optional **Tauri macOS app** controls your local or remote setup. The daemon and CLI work independently, including on headless Linux servers. There is no web UI. See [
|
|
9
|
+
T3 Code (or plain Claude Code / Codex) runs the sessions; agentgate sits underneath. The optional **Tauri macOS app** controls your local or remote setup. The daemon and CLI work independently, including on headless Linux servers. There is no web UI. See [running agentgate](docs/operations/running.md).
|
|
10
10
|
|
|
11
11
|
## Using the Claude Desktop app
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ Agentgate works with Claude Desktop without any terminal: open the Agentgate app
|
|
|
15
15
|
- **Switch accounts**: Claude Desktop stays signed in to your full Claude account (Chat, Cowork, Code). Agentgate keeps a saved login per account on this Mac and switches with one click, from the app or the menu bar. Desktop restarts when you switch.
|
|
16
16
|
- **Share automatically**: Claude Desktop's Code tab uses whichever subscription has room and moves on by itself. Desktop runs a separate local profile without Chat.
|
|
17
17
|
|
|
18
|
-
Agentgate's MCP servers also work in Desktop's Code tab. See [Using Agentgate with Claude Desktop](docs/claude-desktop.md).
|
|
18
|
+
Agentgate's MCP servers also work in Desktop's Code tab. See [Using Agentgate with Claude Desktop](docs/user/claude-desktop.md).
|
|
19
19
|
|
|
20
20
|
## Install
|
|
21
21
|
|
|
@@ -66,7 +66,7 @@ agentgate service install # also runs `loginctl enable-linger` so it s
|
|
|
66
66
|
|
|
67
67
|
The server now has every account, MCP instance and repo mapping, and takes over token refreshes.
|
|
68
68
|
|
|
69
|
-
**The relay invite never expires and is a master key.** Anyone who has it can read every account and MCP login, so share it privately. If it leaks, run `agentgate relay rotate` and have every relay machine join again with the new command. Removing a relay machine (`agentgate unpair <node>` or **Remove** in the app) rotates the same way. A rotation can't revoke Tailscale links, so also unpair the removed machine on every machine you keep. By default it uses the hosted relay at `https://agentgate-relay.hanskristoffer.dk`. To use your own instead, deploy `apps/relay` to your Cloudflare account (see [
|
|
69
|
+
**The relay invite never expires and is a master key.** Anyone who has it can read every account and MCP login, so share it privately. If it leaks, run `agentgate relay rotate` and have every relay machine join again with the new command. Removing a relay machine (`agentgate unpair <node>` or **Remove** in the app) rotates the same way. A rotation can't revoke Tailscale links, so also unpair the removed machine on every machine you keep. By default it uses the hosted relay at `https://agentgate-relay.hanskristoffer.dk`. To use your own instead, deploy `apps/relay` to your Cloudflare account (see [the relay](docs/operations/relay.md#deploying-and-self-hosting)) and pass `--relay-url`, or set `AGENTGATE_RELAY_URL`. `agentgate relay status` shows sync state and errors.
|
|
70
70
|
|
|
71
71
|
To control the server from the native app over Tailscale, open the connection settings at the bottom of the sidebar, enter `http://srv.<tailnet>.ts.net:7878`, and paste the token printed by `agentgate admin-token` on the server. Remote management uses bearer authentication over Tailscale. The relay carries sync only, not remote management.
|
|
72
72
|
|
|
@@ -83,9 +83,9 @@ One instance per provider covers every account; the daemon switches eligible acc
|
|
|
83
83
|
|
|
84
84
|
### Or: your normal Claude login
|
|
85
85
|
|
|
86
|
-
`agentgate setup --primary` adds `ANTHROPIC_BASE_URL` to `~/.claude/settings.json` and the agentgate MCP server to `~/.claude.json`, so the Claude Code you already use (and T3's default Claude instance) goes through agentgate while keeping its own login. Claude Desktop is not affected: it sets its own API address; see [Claude Desktop](docs/claude-desktop.md). For only the MCP servers, use `agentgate setup --mcp`. Model requests use the pool; other requests keep your login, and your login is also the last resort when every pooled account is exhausted. Undo with `agentgate setup --primary off` (the previous base URL is restored, and later settings edits are preserved). It does the same for `~/.codex/config.toml` (or `$CODEX_HOME`): an `agentgate` model provider with `requires_openai_auth = true`, so Codex, the Codex app and T3's default Codex instance send their own ChatGPT login along as the last resort. Only do this with `agentgate service install`, or Claude Code and Codex can't reach their providers while the daemon is down.
|
|
86
|
+
`agentgate setup --primary` adds `ANTHROPIC_BASE_URL` to `~/.claude/settings.json` and the agentgate MCP server to `~/.claude.json`, so the Claude Code you already use (and T3's default Claude instance) goes through agentgate while keeping its own login. Claude Desktop is not affected: it sets its own API address; see [Claude Desktop](docs/user/claude-desktop.md). For only the MCP servers, use `agentgate setup --mcp`. Model requests use the pool; other requests keep your login, and your login is also the last resort when every pooled account is exhausted. Undo with `agentgate setup --primary off` (the previous base URL is restored, and later settings edits are preserved). It does the same for `~/.codex/config.toml` (or `$CODEX_HOME`): an `agentgate` model provider with `requires_openai_auth = true`, so Codex, the Codex app and T3's default Codex instance send their own ChatGPT login along as the last resort. Only do this with `agentgate service install`, or Claude Code and Codex can't reach their providers while the daemon is down.
|
|
87
87
|
|
|
88
|
-
The proxy now provides quota freshness and reset visibility, searchable **Activity** with request attempts and stream outcomes, bounded retries and local cooldowns, routing strategies and optional session affinity, model discovery/aliases/policies, batch verification, and revision-safe configuration previews. See [proxy
|
|
88
|
+
The proxy now provides quota freshness and reset visibility, searchable **Activity** with request attempts and stream outcomes, bounded retries and local cooldowns, routing strategies and optional session affinity, model discovery/aliases/policies, batch verification, and revision-safe configuration previews. See [the proxy guide](docs/user/proxy.md) for controls, CLI examples, defaults, and upgrade requirements. Codex background usage polling is opt-in pending live endpoint validation.
|
|
89
89
|
|
|
90
90
|
## MCP servers per repo
|
|
91
91
|
|
|
@@ -121,7 +121,15 @@ agentgate skills update # refetch every installed skill from
|
|
|
121
121
|
agentgate skills prepare . # wait for checkout links before launching an agent
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
**Connect GitHub repo** keeps a public repository's skills in sync instead of copying them once: agentgate installs every skill in its `.claude/skills` and `.agents/skills` folders, asks whether they are for every session or specific repos, and checks for new commits every 10 minutes. New skills in the repository are used where it is connected, and skills removed from it are removed. To stop using one of its skills, unlink it from its projects; disconnecting removes them all.
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
agentgate skills repo add https://github.com/owner/team-skills --project '*'
|
|
128
|
+
agentgate skills repo projects owner/team-skills Lullu-ai/lullu # where its skills are used
|
|
129
|
+
agentgate skills repo ls | sync | rm owner/team-skills
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Fetching needs Node (`npx`) or Bun (`bunx`) on the daemon's machine, and connected repositories need `git`; other machines get the files through sync. Each node writes skills to `~/.config/agentgate/skills/<name>` and only creates symlinks to them:
|
|
125
133
|
|
|
126
134
|
- **Every session**: the Claude and Codex folders `agentgate setup` writes (`~/.config/agentgate/{claude,codex}/skills`), plus `~/.claude/skills` and `~/.codex/skills` while `setup --primary` is on.
|
|
127
135
|
- **One repo**: `.claude/skills/<name>` in the main checkout (Claude Code falls back to it from worktrees) and `.agents/skills/<name>` in the main checkout and every worktree (Codex). The entries are added to `.git/info/exclude`.
|
|
@@ -134,6 +142,19 @@ Bundles must contain a nonempty root `SKILL.md`, with unique portable paths and
|
|
|
134
142
|
|
|
135
143
|
Repository-owned skills are mirrored only when you opt in under Projects → **Repository skill mirroring**. Mirroring creates relative links that can be reviewed and committed. Stopping mirroring stops future maintenance and leaves existing links in place; repository-owned links are preserved.
|
|
136
144
|
|
|
145
|
+
## Your MCP servers and skills in Grok
|
|
146
|
+
|
|
147
|
+
Assistants such as Grok only accept an MCP server URL and an `Authorization` header. A **virtual project** gives them one: in Projects, choose **New virtual project**, pick its MCP servers and skills, then **Connect to Grok** and copy the URL and `Authorization` value into Grok. One of your machines (an always-on server by default) answers through the relay. Grok also gets `skills__list` and `skills__read` tools, so it can find a skill and follow its SKILL.md.
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
agentgate project set @grok linear=linear posthog=posthog-lullu
|
|
151
|
+
agentgate skills projects release-notes @grok
|
|
152
|
+
agentgate remote enable @grok # prints the URL and Authorization header
|
|
153
|
+
agentgate remote secret @grok # new secret, same URL
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Unlike sync, this traffic is readable by the relay (your logins stay on your machines), and anyone with the URL and secret can use those tools. See [remote MCP endpoints](docs/operations/relay.md#remote-mcp-endpoints).
|
|
157
|
+
|
|
137
158
|
## Commands
|
|
138
159
|
|
|
139
160
|
Run `agentgate --help`. Useful ones: `status`, `accounts`, `accounts exhaust <id> [min]` (pretend an account hit its limit, for testing), `nodes`, `unpair <node>`, `relay status|reconcile|rotate|leave`, `export [--no-secrets]`, `import-backup <file>`, `service logs`.
|
|
@@ -148,14 +169,16 @@ Run `agentgate --help`. Useful ones: `status`, `accounts`, `accounts exhaust <id
|
|
|
148
169
|
|
|
149
170
|
```sh
|
|
150
171
|
bun install
|
|
151
|
-
bun run
|
|
172
|
+
bun run seed-dev-store # optional: realistic data from your install, without its logins
|
|
173
|
+
bun run cli -- init # or an empty node
|
|
152
174
|
bun start # foreground daemon, no app required
|
|
153
|
-
bun dev
|
|
175
|
+
bun run dev # daemon plus the Tauri app with Vite hot reload (Rust + Xcode tools required)
|
|
154
176
|
bun test
|
|
155
177
|
bun run typecheck
|
|
156
|
-
AGENTGATE_HOME=/tmp/ag AGENTGATE_PORT=7979 bun run cli -- init # a throwaway node
|
|
157
178
|
```
|
|
158
179
|
|
|
180
|
+
Running from a git checkout keeps its state in the checkout's gitignored `.agentgate` on a port derived from the checkout path, so it never touches your installed agentgate. It also refuses to install the service or change `~/.claude`, `~/.codex` and Claude Desktop. Set `AGENTGATE_HOME` and `AGENTGATE_PORT` to choose a state folder and port yourself. Contributors and coding agents should read [AGENTS.md](AGENTS.md).
|
|
181
|
+
|
|
159
182
|
## Monorepo
|
|
160
183
|
|
|
161
184
|
| Workspace | Role |
|
|
@@ -176,7 +199,7 @@ The app uses Tauri commands to send HTTP requests from Rust. It has no browser H
|
|
|
176
199
|
|
|
177
200
|
## Reliability
|
|
178
201
|
|
|
179
|
-
See [
|
|
202
|
+
See [running agentgate](docs/operations/running.md) for backup, upgrade, and live distribution checks. Account and MCP OAuth refreshes share holder coordination and a local cross-process lease. Running MCP shims reconnect after daemon restarts and update per-session mappings; tool calls with uncertain outcomes are never automatically replayed.
|
|
180
203
|
|
|
181
204
|
Nodes use **sync protocol 5** (update every paired machine together) and the app checks **management API version 3** when connecting. Deletion history is retained so offline machines cannot resurrect old configuration.
|
|
182
205
|
|
|
@@ -224,4 +247,4 @@ The release also carries a signed app archive and `latest.json`. Installed apps
|
|
|
224
247
|
|
|
225
248
|
The bundled daemon is signed with the app's `Entitlements.plist`. It holds only `allow-jit`: under the hardened runtime, a compiled Bun binary without it falls back to the JavaScript interpreter and runs about 50 times slower. The standalone CLI binaries are not signed.
|
|
226
249
|
|
|
227
|
-
See [release and recovery instructions](docs/releasing.md).
|
|
250
|
+
See [release and recovery instructions](docs/operations/releasing.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanskristoffer/agentpool",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"agentgate": "bin/agentpool.js"
|
|
23
23
|
},
|
|
24
24
|
"optionalDependencies": {
|
|
25
|
-
"agentpool-darwin-arm64": "0.
|
|
26
|
-
"agentpool-darwin-x64": "0.
|
|
27
|
-
"agentpool-linux-x64": "0.
|
|
28
|
-
"agentpool-linux-arm64": "0.
|
|
25
|
+
"agentpool-darwin-arm64": "0.9.0",
|
|
26
|
+
"agentpool-darwin-x64": "0.9.0",
|
|
27
|
+
"agentpool-linux-x64": "0.9.0",
|
|
28
|
+
"agentpool-linux-arm64": "0.9.0"
|
|
29
29
|
}
|
|
30
30
|
}
|