agent-relay 1.0.21 → 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/dist/bridge/shadow-cli.d.ts +17 -0
- package/dist/bridge/shadow-cli.d.ts.map +1 -0
- package/dist/bridge/shadow-cli.js +75 -0
- package/dist/bridge/shadow-cli.js.map +1 -0
- package/dist/bridge/shadow-config.d.ts +87 -0
- package/dist/bridge/shadow-config.d.ts.map +1 -0
- package/dist/bridge/shadow-config.js +134 -0
- package/dist/bridge/shadow-config.js.map +1 -0
- package/dist/bridge/spawner.d.ts +15 -1
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +164 -4
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +55 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +796 -11
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +19 -0
- package/dist/cloud/api/auth.d.ts.map +1 -0
- package/dist/cloud/api/auth.js +216 -0
- package/dist/cloud/api/auth.js.map +1 -0
- package/dist/cloud/api/billing.d.ts +17 -0
- package/dist/cloud/api/billing.d.ts.map +1 -0
- package/dist/cloud/api/billing.js +353 -0
- package/dist/cloud/api/billing.js.map +1 -0
- package/dist/cloud/api/coordinators.d.ts +8 -0
- package/dist/cloud/api/coordinators.d.ts.map +1 -0
- package/dist/cloud/api/coordinators.js +347 -0
- package/dist/cloud/api/coordinators.js.map +1 -0
- package/dist/cloud/api/daemons.d.ts +12 -0
- package/dist/cloud/api/daemons.d.ts.map +1 -0
- package/dist/cloud/api/daemons.js +320 -0
- package/dist/cloud/api/daemons.js.map +1 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +36 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -0
- package/dist/cloud/api/middleware/planLimits.js +164 -0
- package/dist/cloud/api/middleware/planLimits.js.map +1 -0
- package/dist/cloud/api/onboarding.d.ts +8 -0
- package/dist/cloud/api/onboarding.d.ts.map +1 -0
- package/dist/cloud/api/onboarding.js +407 -0
- package/dist/cloud/api/onboarding.js.map +1 -0
- package/dist/cloud/api/providers.d.ts +7 -0
- package/dist/cloud/api/providers.d.ts.map +1 -0
- package/dist/cloud/api/providers.js +435 -0
- package/dist/cloud/api/providers.js.map +1 -0
- package/dist/cloud/api/repos.d.ts +7 -0
- package/dist/cloud/api/repos.d.ts.map +1 -0
- package/dist/cloud/api/repos.js +314 -0
- package/dist/cloud/api/repos.js.map +1 -0
- package/dist/cloud/api/teams.d.ts +7 -0
- package/dist/cloud/api/teams.d.ts.map +1 -0
- package/dist/cloud/api/teams.js +279 -0
- package/dist/cloud/api/teams.js.map +1 -0
- package/dist/cloud/api/usage.d.ts +7 -0
- package/dist/cloud/api/usage.d.ts.map +1 -0
- package/dist/cloud/api/usage.js +98 -0
- package/dist/cloud/api/usage.js.map +1 -0
- package/dist/cloud/api/workspaces.d.ts +7 -0
- package/dist/cloud/api/workspaces.d.ts.map +1 -0
- package/dist/cloud/api/workspaces.js +510 -0
- package/dist/cloud/api/workspaces.js.map +1 -0
- package/dist/cloud/billing/index.d.ts +9 -0
- package/dist/cloud/billing/index.d.ts.map +1 -0
- package/dist/cloud/billing/index.js +9 -0
- package/dist/cloud/billing/index.js.map +1 -0
- package/dist/cloud/billing/plans.d.ts +39 -0
- package/dist/cloud/billing/plans.d.ts.map +1 -0
- package/dist/cloud/billing/plans.js +232 -0
- package/dist/cloud/billing/plans.js.map +1 -0
- package/dist/cloud/billing/service.d.ts +80 -0
- package/dist/cloud/billing/service.d.ts.map +1 -0
- package/dist/cloud/billing/service.js +388 -0
- package/dist/cloud/billing/service.js.map +1 -0
- package/dist/cloud/billing/types.d.ts +135 -0
- package/dist/cloud/billing/types.d.ts.map +1 -0
- package/dist/cloud/billing/types.js +7 -0
- package/dist/cloud/billing/types.js.map +1 -0
- package/dist/cloud/config.d.ts +59 -0
- package/dist/cloud/config.d.ts.map +1 -0
- package/dist/cloud/config.js +83 -0
- package/dist/cloud/config.js.map +1 -0
- package/dist/cloud/db/drizzle.d.ts +132 -0
- package/dist/cloud/db/drizzle.d.ts.map +1 -0
- package/dist/cloud/db/drizzle.js +613 -0
- package/dist/cloud/db/drizzle.js.map +1 -0
- package/dist/cloud/db/index.d.ts +30 -0
- package/dist/cloud/db/index.d.ts.map +1 -0
- package/dist/cloud/db/index.js +44 -0
- package/dist/cloud/db/index.js.map +1 -0
- package/dist/cloud/db/schema.d.ts +1792 -0
- package/dist/cloud/db/schema.d.ts.map +1 -0
- package/dist/cloud/db/schema.js +234 -0
- package/dist/cloud/db/schema.js.map +1 -0
- package/dist/cloud/index.d.ts +11 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +37 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/provisioner/index.d.ts +51 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -0
- package/dist/cloud/provisioner/index.js +676 -0
- package/dist/cloud/provisioner/index.js.map +1 -0
- package/dist/cloud/server.d.ts +16 -0
- package/dist/cloud/server.d.ts.map +1 -0
- package/dist/cloud/server.js +190 -0
- package/dist/cloud/server.js.map +1 -0
- package/dist/cloud/services/coordinator.d.ts +62 -0
- package/dist/cloud/services/coordinator.d.ts.map +1 -0
- package/dist/cloud/services/coordinator.js +389 -0
- package/dist/cloud/services/coordinator.js.map +1 -0
- package/dist/cloud/services/planLimits.d.ts +110 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -0
- package/dist/cloud/services/planLimits.js +254 -0
- package/dist/cloud/services/planLimits.js.map +1 -0
- package/dist/cloud/vault/index.d.ts +76 -0
- package/dist/cloud/vault/index.d.ts.map +1 -0
- package/dist/cloud/vault/index.js +219 -0
- package/dist/cloud/vault/index.js.map +1 -0
- package/dist/daemon/agent-manager.d.ts +87 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -0
- package/dist/daemon/agent-manager.js +412 -0
- package/dist/daemon/agent-manager.js.map +1 -0
- package/dist/daemon/agent-registry.d.ts +2 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +3 -0
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +69 -0
- package/dist/daemon/api.d.ts.map +1 -0
- package/dist/daemon/api.js +425 -0
- package/dist/daemon/api.js.map +1 -0
- package/dist/daemon/cloud-sync.d.ts +101 -0
- package/dist/daemon/cloud-sync.d.ts.map +1 -0
- package/dist/daemon/cloud-sync.js +261 -0
- package/dist/daemon/cloud-sync.js.map +1 -0
- package/dist/daemon/index.d.ts +4 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +6 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts +155 -0
- package/dist/daemon/orchestrator.d.ts.map +1 -0
- package/dist/daemon/orchestrator.js +736 -0
- package/dist/daemon/orchestrator.js.map +1 -0
- package/dist/daemon/router.d.ts +24 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +71 -1
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +37 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +191 -16
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/types.d.ts +127 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +6 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/workspace-manager.d.ts +75 -0
- package/dist/daemon/workspace-manager.d.ts.map +1 -0
- package/dist/daemon/workspace-manager.js +289 -0
- package/dist/daemon/workspace-manager.js.map +1 -0
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/page-b6edd4dde8d08194.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/main-app-5d692157a8eb1fd9.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/{main-e0a1f53fe0617a63.js → main-c2f423b9c9f4591b.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{webpack-c81f7fd28659d64f.js → webpack-a5acc2831d094776.js} +1 -1
- package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +1 -0
- package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +1 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
- package/dist/dashboard/out/alt-logos/logo.svg +38 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
- package/dist/dashboard/out/app.html +14 -0
- package/dist/dashboard/out/app.txt +7 -0
- package/dist/dashboard/out/history.html +1 -0
- package/dist/dashboard/out/history.txt +7 -0
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +2 -2
- package/dist/dashboard/out/metrics.html +1 -515
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +13 -0
- package/dist/dashboard/out/pricing.txt +7 -0
- package/dist/dashboard-server/metrics.d.ts.map +1 -1
- package/dist/dashboard-server/metrics.js +3 -2
- package/dist/dashboard-server/metrics.js.map +1 -1
- package/dist/dashboard-server/server.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +1279 -56
- package/dist/dashboard-server/server.js.map +1 -1
- package/dist/protocol/types.d.ts +10 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resiliency/context-persistence.d.ts +140 -0
- package/dist/resiliency/context-persistence.d.ts.map +1 -0
- package/dist/resiliency/context-persistence.js +397 -0
- package/dist/resiliency/context-persistence.js.map +1 -0
- package/dist/resiliency/health-monitor.d.ts +97 -0
- package/dist/resiliency/health-monitor.d.ts.map +1 -0
- package/dist/resiliency/health-monitor.js +291 -0
- package/dist/resiliency/health-monitor.js.map +1 -0
- package/dist/resiliency/index.d.ts +63 -0
- package/dist/resiliency/index.d.ts.map +1 -0
- package/dist/resiliency/index.js +63 -0
- package/dist/resiliency/index.js.map +1 -0
- package/dist/resiliency/logger.d.ts +114 -0
- package/dist/resiliency/logger.d.ts.map +1 -0
- package/dist/resiliency/logger.js +250 -0
- package/dist/resiliency/logger.js.map +1 -0
- package/dist/resiliency/metrics.d.ts +115 -0
- package/dist/resiliency/metrics.d.ts.map +1 -0
- package/dist/resiliency/metrics.js +239 -0
- package/dist/resiliency/metrics.js.map +1 -0
- package/dist/resiliency/provider-context.d.ts +100 -0
- package/dist/resiliency/provider-context.d.ts.map +1 -0
- package/dist/resiliency/provider-context.js +360 -0
- package/dist/resiliency/provider-context.js.map +1 -0
- package/dist/resiliency/supervisor.d.ts +109 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -0
- package/dist/resiliency/supervisor.js +337 -0
- package/dist/resiliency/supervisor.js.map +1 -0
- package/dist/storage/adapter.d.ts +2 -0
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +12 -2
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +18 -14
- package/dist/storage/sqlite-adapter.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +84 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wrapper/client.d.ts +16 -1
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +32 -1
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +3 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +121 -18
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +28 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +166 -30
- package/dist/wrapper/pty-wrapper.js.map +1 -1
- package/dist/wrapper/tmux-wrapper.d.ts +5 -0
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +58 -18
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +652 -0
- package/docs/CLOUD-ONBOARDING-DESIGN.md +1983 -0
- package/docs/TESTING_PRESENCE_FEATURES.md +327 -0
- package/docs/agent-relay-snippet.md +107 -4
- package/docs/guides/CLOUD.md +236 -0
- package/docs/guides/LOCAL.md +535 -0
- package/docs/guides/SELF-HOSTED.md +494 -0
- package/docs/proposals/shadow-as-subagent.md +765 -0
- package/docs/proposals/slack-bot-integration.md +1457 -0
- package/package.json +33 -4
- package/dist/dashboard/out/_next/static/chunks/app/layout-c9d8c5d95e48c6bf.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-8aa9936bc6c771ab.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-49055e5d2b5e34ec.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-bae2e535de00de50.js +0 -1
- package/dist/dashboard/out/_next/static/css/50ed6996e3df7bdd.css +0 -1
- /package/dist/dashboard/out/_next/static/{gZXwjIKGDKJ0hiTH-HMeJ → 6HHWb2ZmnJ4OSm0zUP7h4}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{gZXwjIKGDKJ0hiTH-HMeJ → 6HHWb2ZmnJ4OSm0zUP7h4}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-3bef7b19f3e60751.js → 117-b2cd8d6485aacf2b.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-6cf686106c891ad3.js → 648-8f3f26864ce515e5.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-8ff6572bc7c9bc61.js → page-0b990dbb71d72a98.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-26bd8d656b496dba.js → fd9d1056-bf46c09eb57e019c.js} +0 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
# Self-Hosted Deployment
|
|
2
|
+
|
|
3
|
+
Run Agent Relay on your own infrastructure while using Agent Relay Cloud for authentication and dashboard.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Self-hosted mode gives you:
|
|
8
|
+
- **Your servers, your data** - Agents run on your infrastructure
|
|
9
|
+
- **Cloud authentication** - OAuth flows handled by Agent Relay Cloud
|
|
10
|
+
- **Cloud dashboard** - Logs sync to your cloud dashboard
|
|
11
|
+
- **Full control** - Custom security, networking, GPU access
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌────────────────────────────────────────────────────────────────┐
|
|
15
|
+
│ AGENT RELAY CLOUD │
|
|
16
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
|
|
17
|
+
│ │ Provider │ │ Dashboard │ │ Team │ │
|
|
18
|
+
│ │ Auth/Vault │ │ & Logs │ │ Management │ │
|
|
19
|
+
│ └─────┬──────┘ └─────▲──────┘ └────────────┘ │
|
|
20
|
+
└─────────┼───────────────┼──────────────────────────────────────┘
|
|
21
|
+
│ Credentials │ Sync
|
|
22
|
+
▼ │
|
|
23
|
+
┌─────────────────────────┴──────────────────────────────────────┐
|
|
24
|
+
│ YOUR INFRASTRUCTURE │
|
|
25
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
|
|
26
|
+
│ │agent-relay │ │ Agents │ │ Repos │ │
|
|
27
|
+
│ │ daemon │ │ (claude, │ │ (local) │ │
|
|
28
|
+
│ │ │ │ codex) │ │ │ │
|
|
29
|
+
│ └────────────┘ └────────────┘ └────────────┘ │
|
|
30
|
+
└────────────────────────────────────────────────────────────────┘
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## When to Use Self-Hosted
|
|
34
|
+
|
|
35
|
+
Choose self-hosted if you need:
|
|
36
|
+
|
|
37
|
+
- Compute in specific regions/clouds
|
|
38
|
+
- Custom security requirements (VPC, firewall rules)
|
|
39
|
+
- GPU workloads on specialized hardware
|
|
40
|
+
- Cost optimization for high-volume usage
|
|
41
|
+
- Data locality compliance
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
- **Node.js** 20+
|
|
46
|
+
- **tmux** installed
|
|
47
|
+
- **Build tools** (for node-pty compilation)
|
|
48
|
+
- Network access to `agent-relay.com` for auth
|
|
49
|
+
|
|
50
|
+
### Linux/Ubuntu
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
sudo apt-get update
|
|
54
|
+
sudo apt-get install -y build-essential tmux
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### macOS
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
brew install tmux
|
|
61
|
+
xcode-select --install # For build tools
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Installation
|
|
65
|
+
|
|
66
|
+
### 1. Install Agent Relay
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm install -g agent-relay
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 2. Connect to Cloud
|
|
73
|
+
|
|
74
|
+
This authenticates you with Agent Relay Cloud and syncs credentials:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
agent-relay cloud login
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
This will:
|
|
81
|
+
1. Display a URL to open in your browser
|
|
82
|
+
2. You authenticate with GitHub
|
|
83
|
+
3. Credentials sync to your server
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
$ agent-relay cloud login
|
|
87
|
+
|
|
88
|
+
To authenticate, open this URL in your browser:
|
|
89
|
+
|
|
90
|
+
┌────────────────────────────────────────────────────────────┐
|
|
91
|
+
│ https://agent-relay.com/auth/remote?session=xK9mPq2R │
|
|
92
|
+
└────────────────────────────────────────────────────────────┘
|
|
93
|
+
|
|
94
|
+
⏳ Waiting for authentication...
|
|
95
|
+
Session expires in 9:45
|
|
96
|
+
|
|
97
|
+
✅ Authenticated as user@example.com
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 3. Connect AI Providers
|
|
101
|
+
|
|
102
|
+
Connect each provider you want to use:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Connect Claude
|
|
106
|
+
agent-relay cloud connect anthropic
|
|
107
|
+
|
|
108
|
+
# Connect Codex
|
|
109
|
+
agent-relay cloud connect openai
|
|
110
|
+
|
|
111
|
+
# Connect Gemini
|
|
112
|
+
agent-relay cloud connect google
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Each command opens a browser for OAuth login. Credentials are encrypted and synced to your server.
|
|
116
|
+
|
|
117
|
+
### 4. Clone Your Repositories
|
|
118
|
+
|
|
119
|
+
Clone the repos you'll work with:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
git clone https://github.com/your-org/your-repo.git
|
|
123
|
+
cd your-repo
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 5. Start the Daemon
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
agent-relay up
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Your local dashboard is now available at `http://localhost:3888`.
|
|
133
|
+
|
|
134
|
+
## Running Agents
|
|
135
|
+
|
|
136
|
+
Once set up, use Agent Relay normally:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Start an agent
|
|
140
|
+
agent-relay -n Alice claude
|
|
141
|
+
|
|
142
|
+
# Start another agent
|
|
143
|
+
agent-relay -n Bob codex
|
|
144
|
+
|
|
145
|
+
# Check status
|
|
146
|
+
agent-relay status
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Agents communicate via the local daemon, and logs sync to your cloud dashboard.
|
|
150
|
+
|
|
151
|
+
## Docker Deployment
|
|
152
|
+
|
|
153
|
+
### Using the Official Image
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
docker run -d \
|
|
157
|
+
--name agent-relay \
|
|
158
|
+
-p 3888:3888 \
|
|
159
|
+
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
160
|
+
-v ~/.agent-relay:/root/.agent-relay \
|
|
161
|
+
-v ~/repos:/workspace \
|
|
162
|
+
ghcr.io/agentworkforce/agent-relay:latest
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Docker Compose
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
version: '3.8'
|
|
169
|
+
|
|
170
|
+
services:
|
|
171
|
+
agent-relay:
|
|
172
|
+
image: ghcr.io/agentworkforce/agent-relay:latest
|
|
173
|
+
ports:
|
|
174
|
+
- "3888:3888"
|
|
175
|
+
volumes:
|
|
176
|
+
- ./repos:/workspace
|
|
177
|
+
- agent-relay-data:/root/.agent-relay
|
|
178
|
+
environment:
|
|
179
|
+
- CLOUD_API_URL=https://api.agent-relay.com
|
|
180
|
+
restart: unless-stopped
|
|
181
|
+
|
|
182
|
+
volumes:
|
|
183
|
+
agent-relay-data:
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Building Your Own Image
|
|
187
|
+
|
|
188
|
+
```dockerfile
|
|
189
|
+
FROM node:20-slim
|
|
190
|
+
|
|
191
|
+
# Install dependencies
|
|
192
|
+
RUN apt-get update && apt-get install -y \
|
|
193
|
+
build-essential \
|
|
194
|
+
tmux \
|
|
195
|
+
git \
|
|
196
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
197
|
+
|
|
198
|
+
# Install agent-relay
|
|
199
|
+
RUN npm install -g agent-relay
|
|
200
|
+
|
|
201
|
+
# Install AI CLIs
|
|
202
|
+
RUN npm install -g @anthropic/claude-code
|
|
203
|
+
|
|
204
|
+
WORKDIR /workspace
|
|
205
|
+
|
|
206
|
+
# Start daemon
|
|
207
|
+
CMD ["agent-relay", "up", "--host", "0.0.0.0"]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Kubernetes Deployment
|
|
211
|
+
|
|
212
|
+
### Deployment
|
|
213
|
+
|
|
214
|
+
```yaml
|
|
215
|
+
apiVersion: apps/v1
|
|
216
|
+
kind: Deployment
|
|
217
|
+
metadata:
|
|
218
|
+
name: agent-relay
|
|
219
|
+
spec:
|
|
220
|
+
replicas: 1
|
|
221
|
+
selector:
|
|
222
|
+
matchLabels:
|
|
223
|
+
app: agent-relay
|
|
224
|
+
template:
|
|
225
|
+
metadata:
|
|
226
|
+
labels:
|
|
227
|
+
app: agent-relay
|
|
228
|
+
spec:
|
|
229
|
+
containers:
|
|
230
|
+
- name: agent-relay
|
|
231
|
+
image: ghcr.io/agentworkforce/agent-relay:latest
|
|
232
|
+
ports:
|
|
233
|
+
- containerPort: 3888
|
|
234
|
+
volumeMounts:
|
|
235
|
+
- name: workspace
|
|
236
|
+
mountPath: /workspace
|
|
237
|
+
- name: credentials
|
|
238
|
+
mountPath: /root/.agent-relay
|
|
239
|
+
readOnly: true
|
|
240
|
+
env:
|
|
241
|
+
- name: CLOUD_API_URL
|
|
242
|
+
value: "https://api.agent-relay.com"
|
|
243
|
+
volumes:
|
|
244
|
+
- name: workspace
|
|
245
|
+
persistentVolumeClaim:
|
|
246
|
+
claimName: agent-relay-workspace
|
|
247
|
+
- name: credentials
|
|
248
|
+
secret:
|
|
249
|
+
secretName: agent-relay-credentials
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Service
|
|
253
|
+
|
|
254
|
+
```yaml
|
|
255
|
+
apiVersion: v1
|
|
256
|
+
kind: Service
|
|
257
|
+
metadata:
|
|
258
|
+
name: agent-relay
|
|
259
|
+
spec:
|
|
260
|
+
selector:
|
|
261
|
+
app: agent-relay
|
|
262
|
+
ports:
|
|
263
|
+
- port: 3888
|
|
264
|
+
targetPort: 3888
|
|
265
|
+
type: ClusterIP
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Storing Credentials
|
|
269
|
+
|
|
270
|
+
Create a secret with your synced credentials:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# After running `agent-relay cloud login` locally
|
|
274
|
+
kubectl create secret generic agent-relay-credentials \
|
|
275
|
+
--from-file=credentials.json=$HOME/.agent-relay/credentials.json
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Configuration
|
|
279
|
+
|
|
280
|
+
### Environment Variables
|
|
281
|
+
|
|
282
|
+
| Variable | Description | Default |
|
|
283
|
+
|----------|-------------|---------|
|
|
284
|
+
| `CLOUD_API_URL` | Agent Relay Cloud API | `https://api.agent-relay.com` |
|
|
285
|
+
| `DASHBOARD_PORT` | Local dashboard port | `3888` |
|
|
286
|
+
| `LOG_LEVEL` | Logging verbosity | `info` |
|
|
287
|
+
| `SYNC_INTERVAL` | Cloud sync interval (ms) | `30000` |
|
|
288
|
+
|
|
289
|
+
### Config File
|
|
290
|
+
|
|
291
|
+
Create `~/.agent-relay/config.json`:
|
|
292
|
+
|
|
293
|
+
```json
|
|
294
|
+
{
|
|
295
|
+
"cloud": {
|
|
296
|
+
"apiUrl": "https://api.agent-relay.com",
|
|
297
|
+
"syncInterval": 30000
|
|
298
|
+
},
|
|
299
|
+
"dashboard": {
|
|
300
|
+
"port": 3888,
|
|
301
|
+
"host": "0.0.0.0"
|
|
302
|
+
},
|
|
303
|
+
"logging": {
|
|
304
|
+
"level": "info",
|
|
305
|
+
"file": "/var/log/agent-relay.log"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Credential Management
|
|
311
|
+
|
|
312
|
+
### How Credentials Work
|
|
313
|
+
|
|
314
|
+
1. You authenticate via `agent-relay cloud connect <provider>`
|
|
315
|
+
2. OAuth tokens are stored encrypted in Agent Relay Cloud
|
|
316
|
+
3. Encrypted credentials sync to your server
|
|
317
|
+
4. Local cache auto-refreshes via cloud
|
|
318
|
+
|
|
319
|
+
### Manual Credential Sync
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
# Force sync credentials from cloud
|
|
323
|
+
agent-relay cloud sync
|
|
324
|
+
|
|
325
|
+
# Check credential status
|
|
326
|
+
agent-relay cloud credentials
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Credential Storage Location
|
|
330
|
+
|
|
331
|
+
Credentials are stored in `~/.agent-relay/`:
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
~/.agent-relay/
|
|
335
|
+
├── config.json # Configuration
|
|
336
|
+
├── credentials.json # Encrypted provider tokens
|
|
337
|
+
└── cache/ # Local message cache
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Log Syncing
|
|
341
|
+
|
|
342
|
+
Logs from your self-hosted instance sync to your cloud dashboard.
|
|
343
|
+
|
|
344
|
+
### What Syncs
|
|
345
|
+
|
|
346
|
+
- Agent spawn/stop events
|
|
347
|
+
- Messages between agents
|
|
348
|
+
- Errors and warnings
|
|
349
|
+
- Compute usage metrics
|
|
350
|
+
|
|
351
|
+
### What Doesn't Sync
|
|
352
|
+
|
|
353
|
+
- File contents
|
|
354
|
+
- Full conversation history
|
|
355
|
+
- Repository data
|
|
356
|
+
|
|
357
|
+
### Disable Syncing
|
|
358
|
+
|
|
359
|
+
If you need fully offline operation:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
agent-relay up --no-sync
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Note: Without sync, you won't see activity in the cloud dashboard.
|
|
366
|
+
|
|
367
|
+
## Networking
|
|
368
|
+
|
|
369
|
+
### Firewall Rules
|
|
370
|
+
|
|
371
|
+
Agent Relay needs outbound access to:
|
|
372
|
+
|
|
373
|
+
| Destination | Port | Purpose |
|
|
374
|
+
|-------------|------|---------|
|
|
375
|
+
| `api.agent-relay.com` | 443 | Cloud API |
|
|
376
|
+
| `api.anthropic.com` | 443 | Claude API |
|
|
377
|
+
| `api.openai.com` | 443 | OpenAI API |
|
|
378
|
+
| `github.com` | 443 | Git operations |
|
|
379
|
+
|
|
380
|
+
### Behind a Proxy
|
|
381
|
+
|
|
382
|
+
```bash
|
|
383
|
+
export HTTP_PROXY=http://proxy.example.com:8080
|
|
384
|
+
export HTTPS_PROXY=http://proxy.example.com:8080
|
|
385
|
+
agent-relay up
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Air-Gapped Environments
|
|
389
|
+
|
|
390
|
+
For fully air-gapped environments, use local AI models:
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
# Start with Ollama
|
|
394
|
+
agent-relay -n Alice ollama
|
|
395
|
+
|
|
396
|
+
# Or LM Studio
|
|
397
|
+
agent-relay -n Bob lmstudio
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
No cloud connection required for local models.
|
|
401
|
+
|
|
402
|
+
## Monitoring
|
|
403
|
+
|
|
404
|
+
### Health Check
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
# Check daemon health
|
|
408
|
+
agent-relay status
|
|
409
|
+
|
|
410
|
+
# Detailed health info
|
|
411
|
+
agent-relay status --verbose
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### Prometheus Metrics
|
|
415
|
+
|
|
416
|
+
Enable metrics endpoint:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
agent-relay up --metrics-port 9090
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Available metrics:
|
|
423
|
+
- `agent_relay_agents_active` - Currently running agents
|
|
424
|
+
- `agent_relay_messages_total` - Total messages processed
|
|
425
|
+
- `agent_relay_spawn_duration_seconds` - Agent spawn latency
|
|
426
|
+
|
|
427
|
+
### Logging
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# View daemon logs
|
|
431
|
+
agent-relay logs
|
|
432
|
+
|
|
433
|
+
# Follow logs
|
|
434
|
+
agent-relay logs -f
|
|
435
|
+
|
|
436
|
+
# Export to file
|
|
437
|
+
agent-relay logs > /var/log/agent-relay.log
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
## Upgrading
|
|
441
|
+
|
|
442
|
+
### NPM
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
npm update -g agent-relay
|
|
446
|
+
agent-relay down && agent-relay up
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Docker
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
docker pull ghcr.io/agentworkforce/agent-relay:latest
|
|
453
|
+
docker-compose down && docker-compose up -d
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
## Troubleshooting
|
|
457
|
+
|
|
458
|
+
### "Cloud connection failed"
|
|
459
|
+
|
|
460
|
+
1. Check network access to `api.agent-relay.com`
|
|
461
|
+
2. Verify credentials: `agent-relay cloud credentials`
|
|
462
|
+
3. Re-authenticate: `agent-relay cloud login`
|
|
463
|
+
|
|
464
|
+
### "Provider not connected"
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
# Check provider status
|
|
468
|
+
agent-relay cloud credentials
|
|
469
|
+
|
|
470
|
+
# Reconnect provider
|
|
471
|
+
agent-relay cloud connect anthropic
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Credential Sync Issues
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
# Force credential refresh
|
|
478
|
+
agent-relay cloud sync --force
|
|
479
|
+
|
|
480
|
+
# Check sync status
|
|
481
|
+
agent-relay cloud status
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### Performance Issues
|
|
485
|
+
|
|
486
|
+
- Ensure adequate RAM (4GB+ recommended)
|
|
487
|
+
- Check disk space for repo clones
|
|
488
|
+
- Monitor with `agent-relay status --verbose`
|
|
489
|
+
|
|
490
|
+
## Support
|
|
491
|
+
|
|
492
|
+
- **Documentation**: [docs.agent-relay.com](https://docs.agent-relay.com)
|
|
493
|
+
- **GitHub Issues**: [github.com/khaliqgant/agent-relay/issues](https://github.com/khaliqgant/agent-relay/issues)
|
|
494
|
+
- **Email**: support@agent-relay.com (Pro+ plans)
|