ags-cli 0.1.0__tar.gz

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.
Files changed (161) hide show
  1. ags_cli-0.1.0/PKG-INFO +332 -0
  2. ags_cli-0.1.0/README.md +290 -0
  3. ags_cli-0.1.0/ags_cli.egg-info/PKG-INFO +332 -0
  4. ags_cli-0.1.0/ags_cli.egg-info/SOURCES.txt +159 -0
  5. ags_cli-0.1.0/ags_cli.egg-info/dependency_links.txt +1 -0
  6. ags_cli-0.1.0/ags_cli.egg-info/entry_points.txt +2 -0
  7. ags_cli-0.1.0/ags_cli.egg-info/requires.txt +36 -0
  8. ags_cli-0.1.0/ags_cli.egg-info/top_level.txt +2 -0
  9. ags_cli-0.1.0/cli/__init__.py +0 -0
  10. ags_cli-0.1.0/cli/__main__.py +4 -0
  11. ags_cli-0.1.0/cli/client.py +145 -0
  12. ags_cli-0.1.0/cli/commands/__init__.py +0 -0
  13. ags_cli-0.1.0/cli/commands/adapter.py +33 -0
  14. ags_cli-0.1.0/cli/commands/artifact.py +21 -0
  15. ags_cli-0.1.0/cli/commands/ask.py +212 -0
  16. ags_cli-0.1.0/cli/commands/chat.py +649 -0
  17. ags_cli-0.1.0/cli/commands/diff.py +49 -0
  18. ags_cli-0.1.0/cli/commands/doctor.py +93 -0
  19. ags_cli-0.1.0/cli/commands/gui.py +45 -0
  20. ags_cli-0.1.0/cli/commands/init.py +20 -0
  21. ags_cli-0.1.0/cli/commands/mcp.py +50 -0
  22. ags_cli-0.1.0/cli/commands/memory.py +65 -0
  23. ags_cli-0.1.0/cli/commands/model.py +73 -0
  24. ags_cli-0.1.0/cli/commands/policy.py +52 -0
  25. ags_cli-0.1.0/cli/commands/project.py +122 -0
  26. ags_cli-0.1.0/cli/commands/quota.py +107 -0
  27. ags_cli-0.1.0/cli/commands/run.py +84 -0
  28. ags_cli-0.1.0/cli/commands/serve.py +171 -0
  29. ags_cli-0.1.0/cli/commands/service.py +236 -0
  30. ags_cli-0.1.0/cli/commands/session.py +219 -0
  31. ags_cli-0.1.0/cli/commands/stats.py +96 -0
  32. ags_cli-0.1.0/cli/commands/status.py +36 -0
  33. ags_cli-0.1.0/cli/commands/task.py +37 -0
  34. ags_cli-0.1.0/cli/commands/usage.py +86 -0
  35. ags_cli-0.1.0/cli/local.py +84 -0
  36. ags_cli-0.1.0/cli/main.py +149 -0
  37. ags_cli-0.1.0/harness/__init__.py +4 -0
  38. ags_cli-0.1.0/harness/adapters/__init__.py +26 -0
  39. ags_cli-0.1.0/harness/adapters/antigravity.py +301 -0
  40. ags_cli-0.1.0/harness/adapters/claude_code.py +522 -0
  41. ags_cli-0.1.0/harness/adapters/local_openai.py +534 -0
  42. ags_cli-0.1.0/harness/adapters/mock.py +112 -0
  43. ags_cli-0.1.0/harness/adapters/probe.py +65 -0
  44. ags_cli-0.1.0/harness/adapters/registry.py +56 -0
  45. ags_cli-0.1.0/harness/adapters/warm_pool.py +255 -0
  46. ags_cli-0.1.0/harness/api/__init__.py +0 -0
  47. ags_cli-0.1.0/harness/api/router.py +38 -0
  48. ags_cli-0.1.0/harness/api/v1/__init__.py +0 -0
  49. ags_cli-0.1.0/harness/api/v1/adapters.py +105 -0
  50. ags_cli-0.1.0/harness/api/v1/approvals.py +173 -0
  51. ags_cli-0.1.0/harness/api/v1/artifacts.py +44 -0
  52. ags_cli-0.1.0/harness/api/v1/attachments.py +48 -0
  53. ags_cli-0.1.0/harness/api/v1/doctor.py +22 -0
  54. ags_cli-0.1.0/harness/api/v1/health.py +37 -0
  55. ags_cli-0.1.0/harness/api/v1/mcp.py +131 -0
  56. ags_cli-0.1.0/harness/api/v1/memory.py +80 -0
  57. ags_cli-0.1.0/harness/api/v1/policies.py +49 -0
  58. ags_cli-0.1.0/harness/api/v1/project.py +302 -0
  59. ags_cli-0.1.0/harness/api/v1/runs.py +98 -0
  60. ags_cli-0.1.0/harness/api/v1/sessions.py +248 -0
  61. ags_cli-0.1.0/harness/api/v1/stream.py +110 -0
  62. ags_cli-0.1.0/harness/api/v1/tasks.py +30 -0
  63. ags_cli-0.1.0/harness/api/v1/usage.py +58 -0
  64. ags_cli-0.1.0/harness/bootstrap.py +216 -0
  65. ags_cli-0.1.0/harness/db.py +164 -0
  66. ags_cli-0.1.0/harness/deps.py +58 -0
  67. ags_cli-0.1.0/harness/eventbus/__init__.py +20 -0
  68. ags_cli-0.1.0/harness/eventbus/inprocess_bus.py +85 -0
  69. ags_cli-0.1.0/harness/main.py +144 -0
  70. ags_cli-0.1.0/harness/mcp/__init__.py +22 -0
  71. ags_cli-0.1.0/harness/mcp/client.py +139 -0
  72. ags_cli-0.1.0/harness/mcp/config_gen.py +77 -0
  73. ags_cli-0.1.0/harness/mcp/registry.py +156 -0
  74. ags_cli-0.1.0/harness/mcp/tools.py +81 -0
  75. ags_cli-0.1.0/harness/memory/__init__.py +13 -0
  76. ags_cli-0.1.0/harness/memory/context_budget.py +116 -0
  77. ags_cli-0.1.0/harness/memory/embed.py +217 -0
  78. ags_cli-0.1.0/harness/memory/extract.py +74 -0
  79. ags_cli-0.1.0/harness/memory/ingest.py +106 -0
  80. ags_cli-0.1.0/harness/memory/namespaces.py +57 -0
  81. ags_cli-0.1.0/harness/memory/ranking.py +31 -0
  82. ags_cli-0.1.0/harness/memory/redact.py +37 -0
  83. ags_cli-0.1.0/harness/memory/service.py +320 -0
  84. ags_cli-0.1.0/harness/memory/sqlite_vec_backend.py +266 -0
  85. ags_cli-0.1.0/harness/memory/summarize.py +68 -0
  86. ags_cli-0.1.0/harness/models/__init__.py +35 -0
  87. ags_cli-0.1.0/harness/models/adapter_health.py +27 -0
  88. ags_cli-0.1.0/harness/models/approval.py +37 -0
  89. ags_cli-0.1.0/harness/models/artifact.py +35 -0
  90. ags_cli-0.1.0/harness/models/audit_log.py +33 -0
  91. ags_cli-0.1.0/harness/models/comparison.py +33 -0
  92. ags_cli-0.1.0/harness/models/enums.py +146 -0
  93. ags_cli-0.1.0/harness/models/mcp_server_config.py +49 -0
  94. ags_cli-0.1.0/harness/models/memory.py +76 -0
  95. ags_cli-0.1.0/harness/models/policy.py +29 -0
  96. ags_cli-0.1.0/harness/models/provider_config.py +35 -0
  97. ags_cli-0.1.0/harness/models/run.py +46 -0
  98. ags_cli-0.1.0/harness/models/run_event.py +35 -0
  99. ags_cli-0.1.0/harness/models/session.py +50 -0
  100. ags_cli-0.1.0/harness/models/task.py +30 -0
  101. ags_cli-0.1.0/harness/models/types.py +63 -0
  102. ags_cli-0.1.0/harness/models/workspace.py +27 -0
  103. ags_cli-0.1.0/harness/observability/__init__.py +4 -0
  104. ags_cli-0.1.0/harness/observability/audit.py +88 -0
  105. ags_cli-0.1.0/harness/observability/logging.py +47 -0
  106. ags_cli-0.1.0/harness/observability/metrics.py +43 -0
  107. ags_cli-0.1.0/harness/observability/tracing.py +38 -0
  108. ags_cli-0.1.0/harness/orchestrator/__init__.py +19 -0
  109. ags_cli-0.1.0/harness/orchestrator/engine.py +821 -0
  110. ags_cli-0.1.0/harness/orchestrator/handoff.py +33 -0
  111. ags_cli-0.1.0/harness/orchestrator/lifecycle.py +69 -0
  112. ags_cli-0.1.0/harness/orchestrator/native_resume.py +93 -0
  113. ags_cli-0.1.0/harness/orchestrator/policies.py +101 -0
  114. ags_cli-0.1.0/harness/orchestrator/reconcile.py +39 -0
  115. ags_cli-0.1.0/harness/orchestrator/run_graph.py +62 -0
  116. ags_cli-0.1.0/harness/orchestrator/snapshot.py +49 -0
  117. ags_cli-0.1.0/harness/schemas/__init__.py +1 -0
  118. ags_cli-0.1.0/harness/schemas/adapter.py +26 -0
  119. ags_cli-0.1.0/harness/schemas/approval.py +25 -0
  120. ags_cli-0.1.0/harness/schemas/artifact.py +17 -0
  121. ags_cli-0.1.0/harness/schemas/common.py +20 -0
  122. ags_cli-0.1.0/harness/schemas/memory.py +50 -0
  123. ags_cli-0.1.0/harness/schemas/policy.py +39 -0
  124. ags_cli-0.1.0/harness/schemas/run.py +116 -0
  125. ags_cli-0.1.0/harness/schemas/session.py +93 -0
  126. ags_cli-0.1.0/harness/schemas/task.py +24 -0
  127. ags_cli-0.1.0/harness/security/__init__.py +5 -0
  128. ags_cli-0.1.0/harness/security/approval_policy.py +107 -0
  129. ags_cli-0.1.0/harness/security/auth.py +106 -0
  130. ags_cli-0.1.0/harness/security/permissions.py +59 -0
  131. ags_cli-0.1.0/harness/security/risk.py +59 -0
  132. ags_cli-0.1.0/harness/security/secrets.py +49 -0
  133. ags_cli-0.1.0/harness/services/__init__.py +1 -0
  134. ags_cli-0.1.0/harness/services/adapters_health.py +212 -0
  135. ags_cli-0.1.0/harness/services/approvals.py +84 -0
  136. ags_cli-0.1.0/harness/services/artifacts.py +78 -0
  137. ags_cli-0.1.0/harness/services/attachments.py +228 -0
  138. ags_cli-0.1.0/harness/services/comparison.py +345 -0
  139. ags_cli-0.1.0/harness/services/doctor.py +156 -0
  140. ags_cli-0.1.0/harness/services/files.py +287 -0
  141. ags_cli-0.1.0/harness/services/mcp_servers.py +179 -0
  142. ags_cli-0.1.0/harness/services/project_git.py +101 -0
  143. ags_cli-0.1.0/harness/services/retention.py +97 -0
  144. ags_cli-0.1.0/harness/services/runs.py +155 -0
  145. ags_cli-0.1.0/harness/services/runs_diff.py +201 -0
  146. ags_cli-0.1.0/harness/services/sessions.py +242 -0
  147. ags_cli-0.1.0/harness/services/ssh.py +300 -0
  148. ags_cli-0.1.0/harness/services/stats.py +132 -0
  149. ags_cli-0.1.0/harness/services/tasks.py +41 -0
  150. ags_cli-0.1.0/harness/services/workspaces.py +184 -0
  151. ags_cli-0.1.0/harness/services/worktrees.py +439 -0
  152. ags_cli-0.1.0/harness/settings.py +186 -0
  153. ags_cli-0.1.0/harness/skills/__init__.py +11 -0
  154. ags_cli-0.1.0/harness/skills/manager.py +141 -0
  155. ags_cli-0.1.0/harness/tools/__init__.py +1 -0
  156. ags_cli-0.1.0/harness/tools/fs_tools.py +295 -0
  157. ags_cli-0.1.0/harness/workers/__init__.py +0 -0
  158. ags_cli-0.1.0/harness/workers/dispatch.py +26 -0
  159. ags_cli-0.1.0/harness/workers/inprocess.py +135 -0
  160. ags_cli-0.1.0/pyproject.toml +115 -0
  161. ags_cli-0.1.0/setup.cfg +4 -0
ags_cli-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,332 @@
1
+ Metadata-Version: 2.4
2
+ Name: ags-cli
3
+ Version: 0.1.0
4
+ Summary: AgentS: one unified interface over Claude Code, Google CLI (agy), and OpenAI-compatible local LLMs.
5
+ Author: Platform Engineering
6
+ License: Apache-2.0
7
+ Requires-Python: >=3.12
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: fastapi>=0.115
10
+ Requires-Dist: uvicorn[standard]>=0.32
11
+ Requires-Dist: pydantic>=2.9
12
+ Requires-Dist: pydantic-settings>=2.5
13
+ Requires-Dist: python-dotenv>=1.0
14
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.35
15
+ Requires-Dist: aiosqlite>=0.20
16
+ Requires-Dist: httpx>=0.27
17
+ Requires-Dist: typer>=0.12
18
+ Requires-Dist: rich>=13.9
19
+ Requires-Dist: structlog>=24.4
20
+ Requires-Dist: prometheus-client>=0.21
21
+ Requires-Dist: opentelemetry-api>=1.27
22
+ Requires-Dist: opentelemetry-sdk>=1.27
23
+ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.48b0
24
+ Requires-Dist: pyyaml>=6.0
25
+ Requires-Dist: mcp>=1.2
26
+ Requires-Dist: python-multipart>=0.0.12
27
+ Requires-Dist: bcrypt>=4.2
28
+ Requires-Dist: pyjwt>=2.9
29
+ Requires-Dist: ags-sdk>=0.1.0
30
+ Provides-Extra: embed
31
+ Requires-Dist: fastembed>=0.4; extra == "embed"
32
+ Provides-Extra: vec
33
+ Requires-Dist: sqlite-vec>=0.1.6; extra == "vec"
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=8.3; extra == "dev"
36
+ Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
37
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
38
+ Requires-Dist: anyio>=4.6; extra == "dev"
39
+ Requires-Dist: ruff>=0.7; extra == "dev"
40
+ Requires-Dist: mypy>=1.13; extra == "dev"
41
+ Requires-Dist: respx>=0.21; extra == "dev"
42
+
43
+ # AgentS
44
+
45
+ One agent over many AI coding agents. AgentS gives you a single interface
46
+ over **Claude Code**, **Antigravity** (Google's `agy`), and any
47
+ **OpenAI-compatible local LLM** (Ollama / LM Studio / vLLM / OpenRouter / …).
48
+ It keeps a shared, vendor-neutral **memory** and an append-only **run ledger**
49
+ in your own database, so the same task can run on one provider or several, be
50
+ compared and merged, and pick up where another agent left off — without sharing
51
+ vendor credentials.
52
+
53
+ # Install & Getting Started
54
+
55
+ AgentS ships as a single desktop application for **Windows**, **macOS**, and
56
+ **Linux**. This guide covers installing the app, satisfying its two
57
+ prerequisites (the **Antigravity** and **Claude Code** CLIs), fixing the most
58
+ common startup problem (agents not found on `PATH`), and taking your first
59
+ steps in the GUI.
60
+
61
+ > This guide covers the **GUI (desktop) application only**. The desktop app is
62
+ > self-contained: it bundles the AgentS engine and starts it for you in the
63
+ > background — there is nothing else to install or run from a terminal.
64
+
65
+ ---
66
+
67
+ ## 1. Prerequisites
68
+
69
+ AgentS is an orchestrator: it drives the **official Antigravity and Claude Code
70
+ CLIs** as subprocesses. It does **not** ship, replace, or embed them, and it
71
+ never reads, stores, or reuses your credentials — each agent uses its own login.
72
+
73
+ Before installing AgentS, both agent binaries must be **installed** *and*
74
+ **authenticated** on your machine:
75
+
76
+ | Agent | Binary | Install | Authenticate | Verify |
77
+ |---|---|---|---|---|
78
+ | **Claude Code** | `claude` | `npm i -g @anthropic-ai/claude-code` (or the official installer) | Run `claude` once and log in (or set `ANTHROPIC_API_KEY`) | `claude --version` |
79
+ | **Antigravity** | `agy` | Follow Google's official Antigravity install guide | Run `agy` once and sign in (or set `ANTIGRAVITY_API_KEY`) | `agy --version` |
80
+
81
+ Both checks must succeed in a terminal **before** you launch AgentS:
82
+
83
+ ```bash
84
+ claude --version # e.g. 1.x.x
85
+ agy --version # e.g. 0.x.x
86
+ ```
87
+
88
+ If either command prints a version but the agent later fails **inside AgentS**,
89
+ it is almost always a `PATH` problem — see [§4](#4-fixing-path-issues-agents-not-found)
90
+ below.
91
+
92
+ > You only need the agent(s) you intend to use. If you install just `claude`,
93
+ > the Claude Code agent works and Antigravity simply shows as unavailable (and
94
+ > vice-versa).
95
+
96
+ ---
97
+
98
+ ## 2. Download
99
+
100
+ Download the installer for your operating system from the
101
+ **[latest release](https://github.com/farookmfk/AgentS/releases/latest)**:
102
+
103
+ | OS | Download | Notes |
104
+ |---|---|---|
105
+ | **Windows** | `AgentS_<version>_x64-setup.exe` (or the `.msi`) | 64-bit Windows 10/11 |
106
+ | **macOS** | `AgentS_<version>_aarch64.dmg` | Apple Silicon (M-series) |
107
+ | **Linux** | `AgentS_<version>_amd64.AppImage` or `.deb` | AppImage runs anywhere; `.deb` for Debian/Ubuntu |
108
+
109
+ ---
110
+
111
+ ## 3. Install
112
+
113
+ ### Windows
114
+
115
+ 1. Run the downloaded `.exe` (or `.msi`) installer and follow the prompts.
116
+ 2. Launch **AgentS** from the Start menu.
117
+ 3. If SmartScreen shows a "Windows protected your PC" dialog, click
118
+ **More info → Run anyway** (the app is signed on official releases; this can
119
+ appear on first launch).
120
+
121
+ ### macOS
122
+
123
+ 1. Open the `.dmg` and drag **AgentS** into **Applications**.
124
+ 2. Launch it from **Applications** (or Spotlight).
125
+ 3. Official releases are signed and notarized, so Gatekeeper clears the app on
126
+ first launch (an online check — the first launch needs network). If a
127
+ download is still flagged, clear the quarantine attribute once:
128
+ ```bash
129
+ xattr -d com.apple.quarantine /Applications/AgentS.app
130
+ ```
131
+
132
+ ### Linux
133
+
134
+ **AppImage** (no install — runs anywhere):
135
+
136
+ ```bash
137
+ chmod +x AgentS_*_amd64.AppImage
138
+ ./AgentS_*_amd64.AppImage
139
+ ```
140
+
141
+ **Debian / Ubuntu (`.deb`):**
142
+
143
+ ```bash
144
+ sudo apt install ./AgentS_*_amd64.deb
145
+ # then launch "AgentS" from your app menu, or run:
146
+ agents
147
+ ```
148
+
149
+ On first launch AgentS creates its local state under `~/.ags/`
150
+ (`%USERPROFILE%\.ags\` on Windows) — a configuration file, a SQLite database,
151
+ and logs. Everything stays on your machine; there are no daemons or servers to
152
+ manage.
153
+
154
+ ---
155
+
156
+ ## 4. Fixing PATH issues (agents not found)
157
+
158
+ **The single most common problem.** Everything works in your terminal, but
159
+ inside AgentS the Claude Code or Antigravity agent shows as unavailable or its
160
+ runs fail with something like *"binary not on PATH"*.
161
+
162
+ **Why it happens:** a desktop app launched from the Start menu, the macOS Dock,
163
+ or an app menu does **not** inherit the `PATH` from your shell startup files
164
+ (`.bashrc`, `.zshrc`, `.profile`). So agents installed to a non-standard
165
+ location — npm's global prefix, `nvm`, Homebrew on Apple Silicon
166
+ (`/opt/homebrew/bin`), a custom `~/.local/bin`, etc. — are visible in your
167
+ terminal but invisible to AgentS.
168
+
169
+ You have two ways to fix it. **Either one** works — pick whichever you prefer.
170
+
171
+ ### Option A — Put the agents on a system-wide PATH
172
+
173
+ First, find where each agent actually lives:
174
+
175
+ ```bash
176
+ # macOS / Linux
177
+ which claude
178
+ which agy
179
+
180
+ # Windows (PowerShell)
181
+ where.exe claude
182
+ where.exe agy
183
+ ```
184
+
185
+ Then make that location visible to GUI apps:
186
+
187
+ - **macOS / Linux** — symlink (or move) each binary into a standard system
188
+ directory that GUI apps always see:
189
+ ```bash
190
+ sudo ln -sf "$(which claude)" /usr/local/bin/claude
191
+ sudo ln -sf "$(which agy)" /usr/local/bin/agy
192
+ ```
193
+ - **Windows** — add the folder that contains `claude.exe` / `agy.exe` (or the
194
+ npm global folder, e.g. `%APPDATA%\npm`) to the **System** `PATH`:
195
+ *Settings → System → About → Advanced system settings → Environment
196
+ Variables → System variables → Path → Edit → New*. Then **log out and back
197
+ in** so the desktop environment picks up the change.
198
+
199
+ ### Option B — Set the full path explicitly in `config.yaml`
200
+
201
+ If you'd rather not touch your system `PATH`, tell AgentS exactly where each
202
+ binary is. Edit the config file:
203
+
204
+ | OS | Config file |
205
+ |---|---|
206
+ | macOS / Linux | `~/.ags/config.yaml` |
207
+ | Windows | `%USERPROFILE%\.ags\config.yaml` |
208
+
209
+ Find the `providers:` section and set each agent's `params.bin` to the **full
210
+ absolute path** you got from `which` / `where.exe` above:
211
+
212
+ ```yaml
213
+ providers:
214
+ - name: claude
215
+ kind: claude_code
216
+ enabled: true
217
+ model: claude-opus-4-8
218
+ params:
219
+ bin: /usr/local/bin/claude # ← full path instead of just "claude"
220
+ permission_mode: plan
221
+ timeout_s: 600
222
+
223
+ - name: antigravity
224
+ kind: antigravity
225
+ enabled: true
226
+ model: gemini-1.5-pro
227
+ params:
228
+ bin: /opt/homebrew/bin/agy # ← full path instead of just "agy"
229
+ pty: true
230
+ timeout_s: 600
231
+ ```
232
+
233
+ **Windows path note:** use the full path including the extension, and prefer
234
+ forward slashes or a quoted string, e.g.
235
+ `bin: "C:/Users/you/AppData/Roaming/npm/claude.cmd"`. npm-installed CLIs on
236
+ Windows are usually `claude.cmd` / `agy.cmd`, not `.exe`.
237
+
238
+ ### After either fix
239
+
240
+ **Fully quit and reopen AgentS** so it restarts its engine and re-reads the
241
+ config. Then confirm the agents are healthy in the GUI:
242
+
243
+ - Open **Settings → Adapters** and click **Test** next to `claude` and
244
+ `antigravity`. A green result means the binary was found and responded.
245
+
246
+ If it still fails, check the diagnostic logs for the exact error:
247
+
248
+ - `~/.ags/sidecar.log` — did the engine start? (`%USERPROFILE%\.ags\sidecar.log`)
249
+ - `~/.ags/server.log` — runtime errors from the engine.
250
+
251
+ ---
252
+
253
+ ## 5. Getting started with the GUI
254
+
255
+ When AgentS opens you get a dashboard with a left sidebar:
256
+ **Dashboard**, **New session**, **Sessions**, and a **Settings** group
257
+ (**Project selection**, **Remote hosts**, **Adapters**, **MCP**, **Usage**,
258
+ **Approvals**).
259
+
260
+ ### 5.1 Add a project (local or remote)
261
+
262
+ Agents work inside a **project folder**. Set it under
263
+ **Settings → Project selection**:
264
+
265
+ - **Local** — keep the **Local** tab selected and browse to the folder on this
266
+ machine you want agents to read and edit. Click a folder to choose it.
267
+ - **Remote** — run agents against a folder on another machine over SSH:
268
+ 1. First save the machine under **Settings → Remote hosts**: give it a label
269
+ and an SSH target (e.g. `user@build-box`). AgentS uses your existing
270
+ `~/.ssh` config, keys, and agent. The agent CLI (`claude` / `agy`) must be
271
+ installed **on the remote host** too. Use **Test** to verify the
272
+ connection and that the CLI is present.
273
+ 2. Back on **Project selection**, switch to the **Remote** tab, pick the saved
274
+ host, and browse to the folder on that host.
275
+
276
+ Changes apply to the **next turn** — no restart needed. The current project
277
+ (and whether it's local or remote) is shown at the top of the page.
278
+
279
+ ### 5.2 Start a session — pick an agent and model
280
+
281
+ Click **New session** in the sidebar:
282
+
283
+ 1. **Agent** — choose **Antigravity** (`antigravity`) or **Claude Code**
284
+ (`claude`) from the dropdown. Only installed, healthy agents appear here.
285
+ 2. **Model (optional override)** — pick a specific model for the chosen agent
286
+ (e.g. `claude-opus-4-8` for Claude Code, `gemini-1.5-pro` for Antigravity), or
287
+ leave it to use the agent's default.
288
+ 3. **First message** — type your task (e.g. *"Audit the cache layer and propose
289
+ the safest fix"*). You can also drag-and-drop or paste files to attach them.
290
+ 4. **Mode** — **Plan** (read-only; the agent proposes but doesn't write) is the
291
+ default. Switch to **Edit** to let the agent modify files.
292
+ 5. **Private workspace** — leave checked to work on an isolated git branch and
293
+ merge back when you're happy; uncheck to edit the project folder directly.
294
+ 6. Click **Start session** (or press ⌘/Ctrl+Enter).
295
+
296
+ Responses stream live with Markdown rendering, and tool calls (file reads,
297
+ edits, commands) show compactly as the agent works. You can switch the active
298
+ agent mid-conversation from within the session.
299
+
300
+ ### 5.3 Add MCP servers (external tools)
301
+
302
+ MCP (Model Context Protocol) servers give agents extra tools — filesystems,
303
+ GitHub, databases, and more. Manage them under **Settings → MCP**:
304
+
305
+ 1. Click **Add server** and choose a transport:
306
+ - **stdio** — a local command, e.g. command `npx` with args
307
+ `-y @modelcontextprotocol/server-filesystem /path/to/project`.
308
+ - **http** — a remote endpoint URL, e.g.
309
+ `https://api.githubcopilot.com/mcp/`. Provide the token via an environment
310
+ variable reference (stored as a `0600` secret file, never inline).
311
+ 2. Optionally set a **tool allowlist** (empty = all tools) and mark the server
312
+ **read-only** so its tools are offered even in Plan mode.
313
+ 3. **Enable** the server, then click **Test** to connect and list the tools it
314
+ advertises. Tools appear to agents namespaced as `mcp__<server>__<tool>`.
315
+
316
+ Changes take effect immediately on the next run — no restart required.
317
+
318
+ ---
319
+
320
+ ## 6. Where things live
321
+
322
+ | Path | What it is |
323
+ |---|---|
324
+ | `~/.ags/config.yaml` | Providers (agents), models, MCP servers, memory settings |
325
+ | `~/.ags/harness.db` | Local SQLite database (sessions, run ledger, memory) |
326
+ | `~/.ags/sidecar.log` | Desktop-app ↔ engine startup diagnostics |
327
+ | `~/.ags/server.log` | Engine runtime log |
328
+
329
+ On Windows these live under `%USERPROFILE%\.ags\`.
330
+
331
+ To fully reset AgentS, quit the app and delete the `~/.ags` folder — it is
332
+ recreated with defaults on the next launch.
@@ -0,0 +1,290 @@
1
+ # AgentS
2
+
3
+ One agent over many AI coding agents. AgentS gives you a single interface
4
+ over **Claude Code**, **Antigravity** (Google's `agy`), and any
5
+ **OpenAI-compatible local LLM** (Ollama / LM Studio / vLLM / OpenRouter / …).
6
+ It keeps a shared, vendor-neutral **memory** and an append-only **run ledger**
7
+ in your own database, so the same task can run on one provider or several, be
8
+ compared and merged, and pick up where another agent left off — without sharing
9
+ vendor credentials.
10
+
11
+ # Install & Getting Started
12
+
13
+ AgentS ships as a single desktop application for **Windows**, **macOS**, and
14
+ **Linux**. This guide covers installing the app, satisfying its two
15
+ prerequisites (the **Antigravity** and **Claude Code** CLIs), fixing the most
16
+ common startup problem (agents not found on `PATH`), and taking your first
17
+ steps in the GUI.
18
+
19
+ > This guide covers the **GUI (desktop) application only**. The desktop app is
20
+ > self-contained: it bundles the AgentS engine and starts it for you in the
21
+ > background — there is nothing else to install or run from a terminal.
22
+
23
+ ---
24
+
25
+ ## 1. Prerequisites
26
+
27
+ AgentS is an orchestrator: it drives the **official Antigravity and Claude Code
28
+ CLIs** as subprocesses. It does **not** ship, replace, or embed them, and it
29
+ never reads, stores, or reuses your credentials — each agent uses its own login.
30
+
31
+ Before installing AgentS, both agent binaries must be **installed** *and*
32
+ **authenticated** on your machine:
33
+
34
+ | Agent | Binary | Install | Authenticate | Verify |
35
+ |---|---|---|---|---|
36
+ | **Claude Code** | `claude` | `npm i -g @anthropic-ai/claude-code` (or the official installer) | Run `claude` once and log in (or set `ANTHROPIC_API_KEY`) | `claude --version` |
37
+ | **Antigravity** | `agy` | Follow Google's official Antigravity install guide | Run `agy` once and sign in (or set `ANTIGRAVITY_API_KEY`) | `agy --version` |
38
+
39
+ Both checks must succeed in a terminal **before** you launch AgentS:
40
+
41
+ ```bash
42
+ claude --version # e.g. 1.x.x
43
+ agy --version # e.g. 0.x.x
44
+ ```
45
+
46
+ If either command prints a version but the agent later fails **inside AgentS**,
47
+ it is almost always a `PATH` problem — see [§4](#4-fixing-path-issues-agents-not-found)
48
+ below.
49
+
50
+ > You only need the agent(s) you intend to use. If you install just `claude`,
51
+ > the Claude Code agent works and Antigravity simply shows as unavailable (and
52
+ > vice-versa).
53
+
54
+ ---
55
+
56
+ ## 2. Download
57
+
58
+ Download the installer for your operating system from the
59
+ **[latest release](https://github.com/farookmfk/AgentS/releases/latest)**:
60
+
61
+ | OS | Download | Notes |
62
+ |---|---|---|
63
+ | **Windows** | `AgentS_<version>_x64-setup.exe` (or the `.msi`) | 64-bit Windows 10/11 |
64
+ | **macOS** | `AgentS_<version>_aarch64.dmg` | Apple Silicon (M-series) |
65
+ | **Linux** | `AgentS_<version>_amd64.AppImage` or `.deb` | AppImage runs anywhere; `.deb` for Debian/Ubuntu |
66
+
67
+ ---
68
+
69
+ ## 3. Install
70
+
71
+ ### Windows
72
+
73
+ 1. Run the downloaded `.exe` (or `.msi`) installer and follow the prompts.
74
+ 2. Launch **AgentS** from the Start menu.
75
+ 3. If SmartScreen shows a "Windows protected your PC" dialog, click
76
+ **More info → Run anyway** (the app is signed on official releases; this can
77
+ appear on first launch).
78
+
79
+ ### macOS
80
+
81
+ 1. Open the `.dmg` and drag **AgentS** into **Applications**.
82
+ 2. Launch it from **Applications** (or Spotlight).
83
+ 3. Official releases are signed and notarized, so Gatekeeper clears the app on
84
+ first launch (an online check — the first launch needs network). If a
85
+ download is still flagged, clear the quarantine attribute once:
86
+ ```bash
87
+ xattr -d com.apple.quarantine /Applications/AgentS.app
88
+ ```
89
+
90
+ ### Linux
91
+
92
+ **AppImage** (no install — runs anywhere):
93
+
94
+ ```bash
95
+ chmod +x AgentS_*_amd64.AppImage
96
+ ./AgentS_*_amd64.AppImage
97
+ ```
98
+
99
+ **Debian / Ubuntu (`.deb`):**
100
+
101
+ ```bash
102
+ sudo apt install ./AgentS_*_amd64.deb
103
+ # then launch "AgentS" from your app menu, or run:
104
+ agents
105
+ ```
106
+
107
+ On first launch AgentS creates its local state under `~/.ags/`
108
+ (`%USERPROFILE%\.ags\` on Windows) — a configuration file, a SQLite database,
109
+ and logs. Everything stays on your machine; there are no daemons or servers to
110
+ manage.
111
+
112
+ ---
113
+
114
+ ## 4. Fixing PATH issues (agents not found)
115
+
116
+ **The single most common problem.** Everything works in your terminal, but
117
+ inside AgentS the Claude Code or Antigravity agent shows as unavailable or its
118
+ runs fail with something like *"binary not on PATH"*.
119
+
120
+ **Why it happens:** a desktop app launched from the Start menu, the macOS Dock,
121
+ or an app menu does **not** inherit the `PATH` from your shell startup files
122
+ (`.bashrc`, `.zshrc`, `.profile`). So agents installed to a non-standard
123
+ location — npm's global prefix, `nvm`, Homebrew on Apple Silicon
124
+ (`/opt/homebrew/bin`), a custom `~/.local/bin`, etc. — are visible in your
125
+ terminal but invisible to AgentS.
126
+
127
+ You have two ways to fix it. **Either one** works — pick whichever you prefer.
128
+
129
+ ### Option A — Put the agents on a system-wide PATH
130
+
131
+ First, find where each agent actually lives:
132
+
133
+ ```bash
134
+ # macOS / Linux
135
+ which claude
136
+ which agy
137
+
138
+ # Windows (PowerShell)
139
+ where.exe claude
140
+ where.exe agy
141
+ ```
142
+
143
+ Then make that location visible to GUI apps:
144
+
145
+ - **macOS / Linux** — symlink (or move) each binary into a standard system
146
+ directory that GUI apps always see:
147
+ ```bash
148
+ sudo ln -sf "$(which claude)" /usr/local/bin/claude
149
+ sudo ln -sf "$(which agy)" /usr/local/bin/agy
150
+ ```
151
+ - **Windows** — add the folder that contains `claude.exe` / `agy.exe` (or the
152
+ npm global folder, e.g. `%APPDATA%\npm`) to the **System** `PATH`:
153
+ *Settings → System → About → Advanced system settings → Environment
154
+ Variables → System variables → Path → Edit → New*. Then **log out and back
155
+ in** so the desktop environment picks up the change.
156
+
157
+ ### Option B — Set the full path explicitly in `config.yaml`
158
+
159
+ If you'd rather not touch your system `PATH`, tell AgentS exactly where each
160
+ binary is. Edit the config file:
161
+
162
+ | OS | Config file |
163
+ |---|---|
164
+ | macOS / Linux | `~/.ags/config.yaml` |
165
+ | Windows | `%USERPROFILE%\.ags\config.yaml` |
166
+
167
+ Find the `providers:` section and set each agent's `params.bin` to the **full
168
+ absolute path** you got from `which` / `where.exe` above:
169
+
170
+ ```yaml
171
+ providers:
172
+ - name: claude
173
+ kind: claude_code
174
+ enabled: true
175
+ model: claude-opus-4-8
176
+ params:
177
+ bin: /usr/local/bin/claude # ← full path instead of just "claude"
178
+ permission_mode: plan
179
+ timeout_s: 600
180
+
181
+ - name: antigravity
182
+ kind: antigravity
183
+ enabled: true
184
+ model: gemini-1.5-pro
185
+ params:
186
+ bin: /opt/homebrew/bin/agy # ← full path instead of just "agy"
187
+ pty: true
188
+ timeout_s: 600
189
+ ```
190
+
191
+ **Windows path note:** use the full path including the extension, and prefer
192
+ forward slashes or a quoted string, e.g.
193
+ `bin: "C:/Users/you/AppData/Roaming/npm/claude.cmd"`. npm-installed CLIs on
194
+ Windows are usually `claude.cmd` / `agy.cmd`, not `.exe`.
195
+
196
+ ### After either fix
197
+
198
+ **Fully quit and reopen AgentS** so it restarts its engine and re-reads the
199
+ config. Then confirm the agents are healthy in the GUI:
200
+
201
+ - Open **Settings → Adapters** and click **Test** next to `claude` and
202
+ `antigravity`. A green result means the binary was found and responded.
203
+
204
+ If it still fails, check the diagnostic logs for the exact error:
205
+
206
+ - `~/.ags/sidecar.log` — did the engine start? (`%USERPROFILE%\.ags\sidecar.log`)
207
+ - `~/.ags/server.log` — runtime errors from the engine.
208
+
209
+ ---
210
+
211
+ ## 5. Getting started with the GUI
212
+
213
+ When AgentS opens you get a dashboard with a left sidebar:
214
+ **Dashboard**, **New session**, **Sessions**, and a **Settings** group
215
+ (**Project selection**, **Remote hosts**, **Adapters**, **MCP**, **Usage**,
216
+ **Approvals**).
217
+
218
+ ### 5.1 Add a project (local or remote)
219
+
220
+ Agents work inside a **project folder**. Set it under
221
+ **Settings → Project selection**:
222
+
223
+ - **Local** — keep the **Local** tab selected and browse to the folder on this
224
+ machine you want agents to read and edit. Click a folder to choose it.
225
+ - **Remote** — run agents against a folder on another machine over SSH:
226
+ 1. First save the machine under **Settings → Remote hosts**: give it a label
227
+ and an SSH target (e.g. `user@build-box`). AgentS uses your existing
228
+ `~/.ssh` config, keys, and agent. The agent CLI (`claude` / `agy`) must be
229
+ installed **on the remote host** too. Use **Test** to verify the
230
+ connection and that the CLI is present.
231
+ 2. Back on **Project selection**, switch to the **Remote** tab, pick the saved
232
+ host, and browse to the folder on that host.
233
+
234
+ Changes apply to the **next turn** — no restart needed. The current project
235
+ (and whether it's local or remote) is shown at the top of the page.
236
+
237
+ ### 5.2 Start a session — pick an agent and model
238
+
239
+ Click **New session** in the sidebar:
240
+
241
+ 1. **Agent** — choose **Antigravity** (`antigravity`) or **Claude Code**
242
+ (`claude`) from the dropdown. Only installed, healthy agents appear here.
243
+ 2. **Model (optional override)** — pick a specific model for the chosen agent
244
+ (e.g. `claude-opus-4-8` for Claude Code, `gemini-1.5-pro` for Antigravity), or
245
+ leave it to use the agent's default.
246
+ 3. **First message** — type your task (e.g. *"Audit the cache layer and propose
247
+ the safest fix"*). You can also drag-and-drop or paste files to attach them.
248
+ 4. **Mode** — **Plan** (read-only; the agent proposes but doesn't write) is the
249
+ default. Switch to **Edit** to let the agent modify files.
250
+ 5. **Private workspace** — leave checked to work on an isolated git branch and
251
+ merge back when you're happy; uncheck to edit the project folder directly.
252
+ 6. Click **Start session** (or press ⌘/Ctrl+Enter).
253
+
254
+ Responses stream live with Markdown rendering, and tool calls (file reads,
255
+ edits, commands) show compactly as the agent works. You can switch the active
256
+ agent mid-conversation from within the session.
257
+
258
+ ### 5.3 Add MCP servers (external tools)
259
+
260
+ MCP (Model Context Protocol) servers give agents extra tools — filesystems,
261
+ GitHub, databases, and more. Manage them under **Settings → MCP**:
262
+
263
+ 1. Click **Add server** and choose a transport:
264
+ - **stdio** — a local command, e.g. command `npx` with args
265
+ `-y @modelcontextprotocol/server-filesystem /path/to/project`.
266
+ - **http** — a remote endpoint URL, e.g.
267
+ `https://api.githubcopilot.com/mcp/`. Provide the token via an environment
268
+ variable reference (stored as a `0600` secret file, never inline).
269
+ 2. Optionally set a **tool allowlist** (empty = all tools) and mark the server
270
+ **read-only** so its tools are offered even in Plan mode.
271
+ 3. **Enable** the server, then click **Test** to connect and list the tools it
272
+ advertises. Tools appear to agents namespaced as `mcp__<server>__<tool>`.
273
+
274
+ Changes take effect immediately on the next run — no restart required.
275
+
276
+ ---
277
+
278
+ ## 6. Where things live
279
+
280
+ | Path | What it is |
281
+ |---|---|
282
+ | `~/.ags/config.yaml` | Providers (agents), models, MCP servers, memory settings |
283
+ | `~/.ags/harness.db` | Local SQLite database (sessions, run ledger, memory) |
284
+ | `~/.ags/sidecar.log` | Desktop-app ↔ engine startup diagnostics |
285
+ | `~/.ags/server.log` | Engine runtime log |
286
+
287
+ On Windows these live under `%USERPROFILE%\.ags\`.
288
+
289
+ To fully reset AgentS, quit the app and delete the `~/.ags` folder — it is
290
+ recreated with defaults on the next launch.