aegiscode 3.1.10 → 3.4.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.
Files changed (209) hide show
  1. package/bin/aegis.js +165 -0
  2. package/package.json +18 -86
  3. package/LICENSE +0 -21
  4. package/README.md +0 -394
  5. package/dist/main.js +0 -2171
  6. package/gui/run-gui.cjs +0 -13
  7. package/src/agent/Agent.ts +0 -903
  8. package/src/agent/SimpleAgent.ts +0 -48
  9. package/src/agent/index.ts +0 -54
  10. package/src/agent/orchestrator/AppBuilder.ts +0 -443
  11. package/src/agent/orchestrator/CouncilAgent.ts +0 -310
  12. package/src/agent/orchestrator/DiscussionRoom.ts +0 -462
  13. package/src/agent/orchestrator/OrchestratorAgent.ts +0 -637
  14. package/src/agent/orchestrator/index.ts +0 -38
  15. package/src/agent/orchestrator/utils.ts +0 -397
  16. package/src/agent/pricing.ts +0 -115
  17. package/src/agent/router.ts +0 -74
  18. package/src/agent/routerStats.ts +0 -121
  19. package/src/agent/types.ts +0 -318
  20. package/src/auth/login.ts +0 -383
  21. package/src/cli/config.ts +0 -189
  22. package/src/cli/index.ts +0 -17
  23. package/src/cli/middleware.ts +0 -119
  24. package/src/cli/types.ts +0 -75
  25. package/src/config/ConfigManager.ts +0 -587
  26. package/src/config/index.ts +0 -7
  27. package/src/config/types.ts +0 -584
  28. package/src/context/CompactionService.ts +0 -300
  29. package/src/context/ContextManager.ts +0 -450
  30. package/src/context/FileAnalyzer.ts +0 -267
  31. package/src/context/TokenCounter.ts +0 -265
  32. package/src/context/index.ts +0 -27
  33. package/src/context/storage/CacheStore.ts +0 -176
  34. package/src/context/storage/JSONLStore.ts +0 -201
  35. package/src/context/storage/MemoryStore.ts +0 -205
  36. package/src/context/storage/PersistentStore.ts +0 -327
  37. package/src/context/storage/index.ts +0 -9
  38. package/src/context/storage/pathUtils.ts +0 -114
  39. package/src/context/test.ts +0 -309
  40. package/src/context/types.ts +0 -268
  41. package/src/hooks/HookExecutor.ts +0 -434
  42. package/src/hooks/HookManager.ts +0 -596
  43. package/src/hooks/HookService.ts +0 -269
  44. package/src/hooks/Matcher.ts +0 -157
  45. package/src/hooks/index.ts +0 -63
  46. package/src/hooks/types.ts +0 -424
  47. package/src/main.tsx +0 -596
  48. package/src/mcp/HealthMonitor.ts +0 -150
  49. package/src/mcp/McpClient.ts +0 -491
  50. package/src/mcp/McpRegistry.ts +0 -321
  51. package/src/mcp/createMcpTool.ts +0 -251
  52. package/src/mcp/index.ts +0 -15
  53. package/src/mcp/server.ts +0 -334
  54. package/src/mcp/test-server.ts +0 -88
  55. package/src/mcp/test.ts +0 -372
  56. package/src/mcp/types.ts +0 -247
  57. package/src/memory/AgentMemoryBus.ts +0 -432
  58. package/src/memory/CloudSync.ts +0 -99
  59. package/src/memory/DriveSync.ts +0 -106
  60. package/src/memory/SharedMemory.ts +0 -951
  61. package/src/memory/index.ts +0 -14
  62. package/src/memory/machineFingerprint.ts +0 -40
  63. package/src/orchestrator/SubAgentMetadata.ts +0 -136
  64. package/src/prompts/builder.ts +0 -213
  65. package/src/prompts/default.ts +0 -144
  66. package/src/prompts/index.ts +0 -16
  67. package/src/prompts/plan.ts +0 -64
  68. package/src/prompts/test.ts +0 -78
  69. package/src/services/AnthropicChatService.ts +0 -341
  70. package/src/services/ChatService.ts +0 -347
  71. package/src/services/ClaudeCliChatService.ts +0 -256
  72. package/src/services/CloudSync.ts +0 -168
  73. package/src/services/CostLedger.ts +0 -211
  74. package/src/services/Heartbeat.ts +0 -135
  75. package/src/services/LearningCollector.ts +0 -291
  76. package/src/services/OllamaInstaller.ts +0 -342
  77. package/src/services/VersionChecker.ts +0 -445
  78. package/src/services/index.ts +0 -57
  79. package/src/services/streaming/OpenAIEventAdapter.ts +0 -126
  80. package/src/services/streaming/RenderingProfile.ts +0 -90
  81. package/src/services/streaming/StreamEventParser.ts +0 -181
  82. package/src/services/streaming/ThrottledRenderer.ts +0 -139
  83. package/src/services/streaming/TranscriptBuffer.ts +0 -574
  84. package/src/services/streaming/eventStatusMap.ts +0 -52
  85. package/src/services/streaming/index.ts +0 -46
  86. package/src/services/streaming/renderFormatting.ts +0 -79
  87. package/src/services/streaming/types.ts +0 -234
  88. package/src/skills/SkillLoader.ts +0 -126
  89. package/src/skills/SkillRegistry.ts +0 -366
  90. package/src/skills/index.ts +0 -48
  91. package/src/skills/types.ts +0 -146
  92. package/src/slash-commands/billing.ts +0 -70
  93. package/src/slash-commands/build.ts +0 -413
  94. package/src/slash-commands/builtinCommands.ts +0 -2733
  95. package/src/slash-commands/clone.ts +0 -242
  96. package/src/slash-commands/council.ts +0 -125
  97. package/src/slash-commands/custom/CustomCommandExecutor.ts +0 -143
  98. package/src/slash-commands/custom/CustomCommandLoader.ts +0 -251
  99. package/src/slash-commands/custom/CustomCommandRegistry.ts +0 -144
  100. package/src/slash-commands/custom/index.ts +0 -7
  101. package/src/slash-commands/debate.ts +0 -254
  102. package/src/slash-commands/gmail.ts +0 -105
  103. package/src/slash-commands/index.ts +0 -388
  104. package/src/slash-commands/mcpCommand.ts +0 -205
  105. package/src/slash-commands/types.ts +0 -201
  106. package/src/store/index.ts +0 -76
  107. package/src/store/selectors.ts +0 -246
  108. package/src/store/slices/appSlice.ts +0 -205
  109. package/src/store/slices/commandSlice.ts +0 -115
  110. package/src/store/slices/configSlice.ts +0 -46
  111. package/src/store/slices/focusSlice.ts +0 -64
  112. package/src/store/slices/index.ts +0 -9
  113. package/src/store/slices/sessionSlice.ts +0 -424
  114. package/src/store/streaming-buffer.ts +0 -425
  115. package/src/store/test.ts +0 -296
  116. package/src/store/types.ts +0 -274
  117. package/src/store/vanilla.ts +0 -186
  118. package/src/tools/builtin/bash.ts +0 -236
  119. package/src/tools/builtin/council.ts +0 -105
  120. package/src/tools/builtin/edit.ts +0 -213
  121. package/src/tools/builtin/glob.ts +0 -136
  122. package/src/tools/builtin/grep.ts +0 -263
  123. package/src/tools/builtin/index.ts +0 -61
  124. package/src/tools/builtin/memory.ts +0 -66
  125. package/src/tools/builtin/read.ts +0 -168
  126. package/src/tools/builtin/skill.ts +0 -97
  127. package/src/tools/builtin/snapshot.ts +0 -40
  128. package/src/tools/builtin/task.ts +0 -106
  129. package/src/tools/builtin/write.ts +0 -134
  130. package/src/tools/createTool.ts +0 -221
  131. package/src/tools/execution/ExecutionPipeline.ts +0 -263
  132. package/src/tools/execution/index.ts +0 -40
  133. package/src/tools/execution/stages/CacheStage.ts +0 -131
  134. package/src/tools/execution/stages/ConfirmationStage.ts +0 -203
  135. package/src/tools/execution/stages/DiscoveryStage.ts +0 -46
  136. package/src/tools/execution/stages/ExecutionStage.ts +0 -48
  137. package/src/tools/execution/stages/FormattingStage.ts +0 -44
  138. package/src/tools/execution/stages/HookStage.ts +0 -72
  139. package/src/tools/execution/stages/PermissionStage.ts +0 -287
  140. package/src/tools/execution/stages/PostHookStage.ts +0 -71
  141. package/src/tools/execution/stages/index.ts +0 -12
  142. package/src/tools/execution/test.ts +0 -266
  143. package/src/tools/execution/types.ts +0 -273
  144. package/src/tools/index.ts +0 -81
  145. package/src/tools/registry.ts +0 -304
  146. package/src/tools/schemas.ts +0 -109
  147. package/src/tools/test.ts +0 -220
  148. package/src/tools/types.ts +0 -175
  149. package/src/tools/validation/PermissionChecker.ts +0 -242
  150. package/src/tools/validation/SensitiveFileDetector.ts +0 -210
  151. package/src/tools/validation/index.ts +0 -11
  152. package/src/ui/App.tsx +0 -166
  153. package/src/ui/components/AegisInterface.tsx +0 -484
  154. package/src/ui/components/common/ChatSearch.tsx +0 -150
  155. package/src/ui/components/common/ErrorBoundary.tsx +0 -82
  156. package/src/ui/components/common/ExitMessage.tsx +0 -120
  157. package/src/ui/components/common/LoadingIndicator.tsx +0 -49
  158. package/src/ui/components/common/index.ts +0 -6
  159. package/src/ui/components/dialog/ConfirmationPrompt.tsx +0 -208
  160. package/src/ui/components/dialog/InteractiveSelector.tsx +0 -149
  161. package/src/ui/components/dialog/SetupWizard.tsx +0 -297
  162. package/src/ui/components/dialog/UpdatePrompt.tsx +0 -155
  163. package/src/ui/components/dialog/index.ts +0 -8
  164. package/src/ui/components/index.ts +0 -28
  165. package/src/ui/components/input/CommandSuggestions.tsx +0 -139
  166. package/src/ui/components/input/CustomTextInput.tsx +0 -220
  167. package/src/ui/components/input/InputArea.tsx +0 -361
  168. package/src/ui/components/input/PromptSuggestions.tsx +0 -66
  169. package/src/ui/components/input/index.ts +0 -6
  170. package/src/ui/components/layout/ChatStatusBar.tsx +0 -90
  171. package/src/ui/components/layout/ContextBar.tsx +0 -79
  172. package/src/ui/components/layout/MessageArea.tsx +0 -96
  173. package/src/ui/components/layout/MessageList.tsx +0 -647
  174. package/src/ui/components/layout/MessageSeparator.tsx +0 -26
  175. package/src/ui/components/layout/WelcomeMessage.tsx +0 -93
  176. package/src/ui/components/layout/index.ts +0 -7
  177. package/src/ui/components/markdown/CodeHighlighter.tsx +0 -292
  178. package/src/ui/components/markdown/MessageRenderer.tsx +0 -1211
  179. package/src/ui/components/markdown/index.ts +0 -8
  180. package/src/ui/components/markdown/parser.ts +0 -336
  181. package/src/ui/components/markdown/types.ts +0 -66
  182. package/src/ui/focus/FocusManager.ts +0 -137
  183. package/src/ui/focus/index.ts +0 -13
  184. package/src/ui/focus/types.ts +0 -54
  185. package/src/ui/focus/useFocus.ts +0 -75
  186. package/src/ui/hooks/index.ts +0 -11
  187. package/src/ui/hooks/useAgent.ts +0 -284
  188. package/src/ui/hooks/useCommandHistory.ts +0 -87
  189. package/src/ui/hooks/useCommandProcessor.ts +0 -443
  190. package/src/ui/hooks/useConfirmation.ts +0 -99
  191. package/src/ui/hooks/useCtrlCHandler.ts +0 -100
  192. package/src/ui/hooks/useInputBuffer.ts +0 -122
  193. package/src/ui/hooks/useTerminalSize.ts +0 -68
  194. package/src/ui/hooks/useTerminalWidth.ts +0 -5
  195. package/src/ui/hooks/useWindowedList.ts +0 -118
  196. package/src/ui/render-debugger.ts +0 -621
  197. package/src/ui/test.ts +0 -189
  198. package/src/ui/themes/ThemeManager.ts +0 -332
  199. package/src/ui/themes/aegisTheme.ts +0 -87
  200. package/src/ui/themes/darkTheme.ts +0 -87
  201. package/src/ui/themes/defaultTheme.ts +0 -85
  202. package/src/ui/themes/index.ts +0 -10
  203. package/src/ui/themes/lightTheme.ts +0 -89
  204. package/src/ui/themes/popularThemes.ts +0 -187
  205. package/src/ui/themes/types.ts +0 -130
  206. package/src/utils/clipboard.ts +0 -48
  207. package/src/utils/debug.ts +0 -43
  208. package/src/utils/environment.ts +0 -68
  209. package/src/utils/index.ts +0 -10
package/package.json CHANGED
@@ -1,100 +1,32 @@
1
1
  {
2
2
  "name": "aegiscode",
3
- "version": "3.1.10",
4
- "description": "A CLI Coding Agent inspired by Claude Code - An AI-powered coding assistant that can read, write, and execute code",
5
- "type": "module",
6
- "main": "dist/main.js",
3
+ "version": "3.4.2",
4
+ "description": "AEGIS \u2014 terminal AI coding agent CLI",
7
5
  "bin": {
8
- "aegis": "./dist/main.js",
9
- "aegis-cli": "./dist/main.js",
10
- "aegis-gui": "./gui/run-gui.cjs"
6
+ "aegis": "./bin/aegis.js",
7
+ "aegis-cli": "./bin/aegis.js"
11
8
  },
12
- "scripts": {
13
- "dev": "NODE_NO_WARNINGS=1 tsx src/main.tsx",
14
- "build": "node esbuild.mjs",
15
- "publish:release": "node esbuild.mjs",
16
- "start": "node --no-deprecation dist/main.js",
17
- "typecheck": "tsc --noEmit",
18
- "test:prompts": "tsx src/prompts/test.ts",
19
- "test:tools": "tsx src/tools/test.ts",
20
- "test:pipeline": "tsx src/tools/execution/test.ts",
21
- "test:context": "tsx src/context/test.ts",
22
- "test:mcp": "tsx src/mcp/test.ts",
23
- "test:store": "tsx src/store/test.ts",
24
- "gui": "node ./gui/run-gui.cjs",
25
- "obfuscate": "echo '[obfuscate] SKIPPED — open source build does not obfuscate'",
26
- "prepublishOnly": "npm run build"
9
+ "files": [
10
+ "bin/aegis.js"
11
+ ],
12
+ "engines": {
13
+ "node": ">=18.0.0"
27
14
  },
28
15
  "keywords": [
29
- "cli",
30
16
  "ai",
17
+ "cli",
31
18
  "coding-agent",
32
- "llm",
33
- "openai",
34
- "gpt",
35
- "claude",
36
- "copilot",
37
- "assistant",
38
19
  "terminal",
39
- "developer-tools"
20
+ "claude",
21
+ "aegis"
40
22
  ],
41
- "author": "Niklas Borneklint",
23
+ "author": "aegisinfo",
42
24
  "license": "MIT",
43
- "repository": {
44
- "type": "git",
45
- "url": "git+https://github.com/aegisinfo/aegiscode.git"
46
- },
47
- "homepage": "https://github.com/aegisinfo/aegiscode#readme",
48
- "bugs": {
49
- "url": "https://github.com/aegisinfo/aegiscode/issues"
50
- },
51
- "files": [
52
- "dist/main.js",
53
- "gui/run-gui.cjs",
54
- "src/**/*",
55
- "README.md",
56
- "LICENSE"
57
- ],
58
- "engines": {
59
- "node": ">=22.0.0"
25
+ "devDependencies": {
26
+ "javascript-obfuscator": "^5.4.3"
60
27
  },
61
28
  "dependencies": {
62
- "@modelcontextprotocol/sdk": "^1.25.3",
63
- "@xenova/transformers": "^2.17.2",
64
- "chalk": "^5.4.1",
65
- "dotenv": "^17.4.2",
66
- "fuse.js": "^7.4.1",
67
- "glob": "^13.0.0",
68
- "ink": "^7.0.5",
69
- "ink-text-input": "^6.0.0",
70
- "js-tiktoken": "^1.0.21",
71
- "lowlight": "^3.3.0",
72
- "minimatch": "^10.1.1",
73
- "nanoid": "^5.1.6",
74
- "openai": "^4.77.0",
75
- "react": "^19.2.7",
76
- "react-dom": "^19.2.7",
77
- "sql.js": "^1.14.1",
78
- "string-width": "^8.1.1",
79
- "uuid": "^14.0.0",
80
- "yaml": "^2.8.2",
81
- "yargs": "^17.7.2",
82
- "zod": "^3.24.2",
83
- "zod-to-json-schema": "^3.25.1",
84
- "zustand": "^5.0.14"
29
+ "sql.js": "^1.14.1"
85
30
  },
86
- "devDependencies": {
87
- "@types/minimatch": "^6.0.0",
88
- "@types/node": "^22.19.19",
89
- "@types/react": "^19.2.16",
90
- "@types/react-dom": "^19.2.3",
91
- "@types/sql.js": "^1.4.11",
92
- "@types/uuid": "^11.0.0",
93
- "@types/yargs": "^17.0.33",
94
- "electron": "^42.4.1",
95
- "esbuild": "^0.28.0",
96
- "react-devtools-core": "^7.0.1",
97
- "tsx": "^4.22.4",
98
- "typescript": "^5.7.2"
99
- }
100
- }
31
+ "type": "module"
32
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Niklas Borneklint
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/README.md DELETED
@@ -1,394 +0,0 @@
1
- # aegiscode
2
-
3
- **aegiscode remembers your project between sessions — so you never have to re-explain your stack, decisions, or context.**
4
-
5
- <picture>
6
- <source media="(prefers-color-scheme: dark)" srcset="assets/demo.svg">
7
- <img src="assets/demo.svg" alt="aegiscode terminal demo — animated" width="100%"/>
8
- </picture>
9
-
10
- Multi-model terminal coding assistant. Works with Claude, OpenAI, DeepSeek, Groq, Gemini and Ollama. BYOK — your keys, your cost.
11
-
12
- - **Private AI, no keys needed** — run fully local with Ollama. Nothing leaves your machine, no API key, no account.
13
- - **A model that grows over time** — `/router` auto-picks the cheapest model that can handle each task and learns from every session, so cost drops while quality holds.
14
- - **Many models, one answer** — `/council` votes and `/debate` makes them argue it out, so you get a reasoned consensus instead of one model's guess.
15
- - **Cloud sync — $2/month** — keep cross-session semantic memory and sync every session across machines. Activate with a single code.
16
-
17
- > ### Semantic memory — €2/month
18
- > The AI remembers your project, stack, and decisions across every session.
19
- > Subscribe at **[aegiscloud.org](https://aegiscloud.org)**, then activate with one command:
20
- >
21
- > ```
22
- > /memory activate <token>
23
- > ```
24
-
25
- ---
26
-
27
- ## Install
28
-
29
- > Requires **Node.js >= 22**. Install via [nvm](https://github.com/nvm-sh/nvm): `nvm install 22`
30
-
31
- > **Important:** Use [Kitty](https://sw.kovidgoyal.net/kitty/) (recommended) or a modern terminal emulator (Ghostty, WezTerm, Alacritty, iTerm2, Windows Terminal) for the best experience. Older terminals may have rendering issues.
32
-
33
- ```bash
34
- npm install -g aegiscode
35
- ```
36
-
37
- Or from source:
38
-
39
- ```bash
40
- git clone https://github.com/aegisinfo/aegiscode
41
- cd aegiscode
42
- bash install.sh
43
- ```
44
-
45
- `install.sh` builds the project and creates an `aegis` wrapper in `~/.local/bin` — no sudo needed.
46
-
47
- Either way, the command is `aegis`.
48
-
49
- ---
50
-
51
- ## Desktop GUI
52
-
53
- aegiscode also ships as a native Electron desktop app — same AI engine, same memory, with a split-pane terminal + shell.
54
-
55
- **Download (Linux / macOS / Windows):**
56
-
57
- → **[aegiscloud.org/aegiscode#download](https://aegiscloud.org/aegiscode#download)**
58
-
59
- ```bash
60
- # Linux
61
- wget https://dl.aegiscloud.org/aegiscode-gui.deb
62
- sudo dpkg -i aegiscode-gui.deb
63
- ```
64
-
65
- **Launch:**
66
-
67
- ```bash
68
- aegis
69
- ```
70
-
71
- **Tabs:**
72
-
73
- | Tab | Description |
74
- |-----|-------------|
75
- | Terminal ⌨ | Full aegiscode session with true color and resize support |
76
- | History ◷ | Browse and resume past sessions |
77
- | Memory ⬡ | Search stored memory entries, view stats, manage subscription |
78
- | Cloud ⬡ | Cloud sync status and API key |
79
- | Settings ⚙ | Configure API key and model |
80
-
81
- Memory and cloud sync are activated by pasting your API key in the Memory tab after subscribing at [aegiscloud.org](https://aegiscloud.org).
82
-
83
- ---
84
-
85
- ## First run
86
-
87
- Run `aegis` — if no API keys are configured, an interactive setup guide launches automatically:
88
-
89
- ```
90
- ◆ aegiscode — Setup
91
-
92
- Keys are saved to ~/.aegiscode/.env
93
-
94
- Select provider:
95
- ❯ Anthropic (Claude) ANTHROPIC_API_KEY
96
- OpenAI (GPT) OPENAI_API_KEY
97
- DeepSeek DEEPSEEK_API_KEY
98
- Groq GROQ_API_KEY
99
- Google Gemini GEMINI_API_KEY
100
- Ollama (local) (no key needed)
101
- ```
102
-
103
- Pick a provider, paste your key, and optionally add more. Keys are saved to `~/.aegiscode/.env` and the app starts immediately.
104
-
105
- **Or configure manually** — create `~/.aegiscode/.env`:
106
-
107
- ```env
108
- ANTHROPIC_API_KEY=YOUR_ANTHROPIC_API_KEY
109
- OPENAI_API_KEY=YOUR_OPENAI_API_KEY
110
- DEEPSEEK_API_KEY=YOUR_DEEPSEEK_API_KEY
111
- GROQ_API_KEY=YOUR_GROQ_API_KEY
112
- GEMINI_API_KEY=YOUR_GEMINI_API_KEY
113
- ```
114
-
115
- Only add the keys for providers you want to use. aegiscode picks them up automatically.
116
-
117
- ---
118
-
119
- ## Claude Code Pro/Max subscription login
120
-
121
- Already paying for Claude Code? Use your subscription instead of a pay-per-token Anthropic API key:
122
-
123
- ```bash
124
- claude setup-token # generates a Claude Code OAuth token (sk-ant-oat...)
125
- aegis login --claude-pro # paste it in
126
- ```
127
-
128
- The token is saved to `~/.aegiscode/.env` as `CLAUDE_CODE_OAUTH_TOKEN` and takes priority over `ANTHROPIC_API_KEY` for any Anthropic model. Anthropic only allows OAuth subscription tokens to make API calls through the official `claude` binary, so aegiscode shells out to it instead of calling the API directly — the `claude` CLI must be installed and on `PATH`. Tool calls (file edits, shell commands) run through `claude`'s own permission system, following whichever permission mode you've set in aegiscode.
129
-
130
- ---
131
-
132
- ## Quick start
133
-
134
- ```bash
135
- aegis # interactive mode
136
- aegis "refactor this file" # start with a message
137
- aegis --model deepseek-chat # use a specific model
138
- aegis --router # start with the auto-router on
139
- aegis --continue # resume last session
140
- aegis --resume <session-id> # resume specific session
141
- aegis --print "what does this repo do?" # headless — print response, exit
142
- aegis --print --output-format json "summarize this" # headless JSON output, for scripts
143
- ```
144
-
145
- ---
146
-
147
- ## Configuration
148
-
149
- Config lives at `~/.aegiscode/config.json`. It is created automatically on first run.
150
-
151
- API keys are read from `~/.aegiscode/.env` — you don't need to put them in `config.json`.
152
-
153
- To add a custom model inside the app:
154
-
155
- ```
156
- /model add openrouter-mixtral "Mixtral 8x7B" mistralai/mixtral-8x7b-instruct https://openrouter.ai/api/v1 sk-or-...
157
- ```
158
-
159
- ---
160
-
161
- ## Built-in models
162
-
163
- | ID | Model | Provider |
164
- |----|-------|----------|
165
- | `claude-fable-5` | claude-fable-5 | Anthropic |
166
- | `claude-sonnet-4` | claude-sonnet-4-6 | Anthropic |
167
- | `claude-opus-4` | claude-opus-4-8 | Anthropic |
168
- | `claude-haiku-4` | claude-haiku-4-5-20251001 | Anthropic |
169
- | `openai-gpt-5.5` | gpt-5.5 | OpenAI |
170
- | `openai-gpt-4o` | gpt-4o | OpenAI |
171
- | `openai-o3` | o3 | OpenAI |
172
- | `deepseek-chat` | deepseek-chat | DeepSeek |
173
- | `deepseek-reasoner` | deepseek-reasoner | DeepSeek |
174
- | `groq-llama` | llama-3.3-70b-versatile | Groq |
175
- | `groq-deepseek` | qwen-qwq-32b | Groq |
176
- | `gemini-2.5-pro` | gemini-2.5-pro | Google |
177
- | `gemini-2.5-flash` | gemini-2.5-flash | Google |
178
- | `ollama-local` | llama3.2 | Ollama (local) |
179
-
180
- Any OpenAI-compatible API can be added as a custom model.
181
-
182
- ---
183
-
184
- ## Commands
185
-
186
- Full reference with copy-paste examples: **[aegiscloud.org/aegiscode/commands](https://aegiscloud.org/aegiscode/commands)**
187
-
188
- | Command | Alias | Description |
189
- |---------|-------|-------------|
190
- | `/help [command]` | `/?` `/h` | Show all commands, or detailed help for one |
191
- | `/model [id]` | `/m` | Interactive model switcher, or switch by ID |
192
- | `/model list` | | List all configured models |
193
- | `/model add <id> <name> <model> <baseURL> <apiKey>` | | Add a custom model |
194
- | `/model remove <id>` | | Remove a model |
195
- | `/router [on\|off\|stats]` | | Show/toggle auto-router status and tier mapping |
196
- | `/router set <tier> <id>` | | Pin a model to the simple/medium/complex tier |
197
- | `/effort [off\|low\|medium\|high\|max]` | | Set Claude's extended-thinking effort level |
198
- | `/confirm [on\|off] [model-id]` | `/confirmations` | Toggle tool-call confirmation prompt |
199
- | `/yolo [on\|off]` | | Toggle auto-approve for all tool calls |
200
- | `/clear` | `/cls` | Clear chat history |
201
- | `/compact` | | Compress context to save tokens |
202
- | `/status` | `/st` | Show session info and token usage |
203
- | `/tokens` | `/tok` | Token usage graph and estimated spend |
204
- | `/theme [name]` | `/t` | Show or switch UI theme |
205
- | `/thinking` | | Toggle thinking blocks |
206
- | `/copy [n\|last\|list]` | `/cp` | Copy a code block to clipboard |
207
- | `/multi <task>` | | Run task across multiple agents in parallel |
208
- | `/multiyolo <task>` | | Same as `/multi` with auto-approved tool calls |
209
- | `/build <description>` | `/forge` | Build an app with multiple AI models in parallel |
210
- | `/clone <url> [--name <project>]` | `/fetch-site` `/websnap` | Clone a website using DeepSeek |
211
- | `/council <question>` | | Multi-model majority vote |
212
- | `/debate <topic> [--rounds N]` | `/db` | Structured multi-model debate across rounds |
213
- | `/research <question>` | | Multi-agent research |
214
- | `/memory [activate\|stats\|clear]` | | Manage semantic memory |
215
- | `/cloud [activate\|status]` | | Manage AEGIS Cloud sync |
216
- | `/billing` | | Show subscription and billing info |
217
- | `/skills [refresh]` | `/sk` | List and manage loaded skills |
218
- | `/hooks [status\|list]` | | View and manage hooks |
219
- | `/mcp [tools\|<server>]` | | Show MCP server status and tools |
220
- | `/version` | `/v` | Show version info |
221
-
222
- ---
223
-
224
- ## /router — automatic model routing
225
-
226
- aegiscode can pick which configured model handles each message for you, based on how hard the task actually looks — so a quick lookup doesn't pay for an expensive model, and a real architecture question doesn't get shortchanged by a cheap one.
227
-
228
- ```
229
- /router on # start auto-picking a model per message
230
- /router set simple deepseek-chat # pin a tier to a specific model id
231
- /router # show current status + tier mapping
232
- ```
233
-
234
- Classification is a handful of cheap heuristics (message length, question phrasing, keywords like "architecture" or "security") — no extra model call to decide. When no tier is pinned explicitly, it defaults to a fixed cost-ordered list of the built-in models filtered to ones you have an API key for — and learns from there: if you abort (`Esc`/`Ctrl+C`) a response, that costs the model handling it some confidence for that tier, so a model that keeps getting cut off loses ground to the next cheapest one over time. `/router stats` shows the learned success rate per tier and model. This is a noisy signal (people abort for reasons that have nothing to do with quality too), so don't expect it to be perfectly tuned after a handful of sessions — it's real adaptation from real usage, not a black box.
235
-
236
- Running `/model <id>` always wins — it pins your choice for the rest of the session and the router backs off until you run `/router on` again. The status bar shows `model: <name> (auto)` whenever the router picked it for you.
237
-
238
- ---
239
-
240
- ## /build — parallel multi-model app builder
241
-
242
- `/build` decomposes your task into components, assigns each to the best available AI model, and builds everything simultaneously.
243
-
244
- ```
245
- /build a REST API for a todo app with PostgreSQL
246
- /build a CLI tool that summarizes git commits
247
- /build a Flask web app with login and dashboard
248
- ```
249
-
250
- **How it works:**
251
-
252
- 1. **Plan** — primary model produces a component tree (JSON)
253
- 2. **Build** — all components built in parallel, each by the best model for that role:
254
- - DeepSeek → backend, algorithms (`DEEPSEEK_API_KEY`)
255
- - GPT-4o → frontend, UI (`OPENAI_API_KEY`)
256
- - Llama via Groq → tests, docs (`GROQ_API_KEY`)
257
- - Primary model → architecture, integration
258
- 3. **Sync** — summary of files written and how to run the app
259
-
260
- All agents write real files to your current directory. The more API keys you have configured, the more models work in parallel.
261
-
262
- ---
263
-
264
- ## /council & /debate — many models, one answer
265
-
266
- Don't trust a single model on a hard call. Put several to work on it.
267
-
268
- ```
269
- /council "is a state machine overkill for this form?" # they vote, consensus wins
270
- /debate "monorepo vs polyrepo for this team" --rounds 3 # they argue it out across rounds
271
- /debate "React vs SolidJS" --models gpt-4o,deepseek # pick the panel
272
- ```
273
-
274
- `/council` sends the question to multiple configured models simultaneously, then surfaces the majority answer with the dissents. `/debate` runs a structured, multi-round discussion — each model sees the others' arguments and refines or pushes back — so you get reasoning, not just a tally. Both auto-pick from the models you have keys for; add more keys, get a bigger panel.
275
-
276
- ---
277
-
278
- ## Tools
279
-
280
- aegiscode can read, write, and execute files in your project. Tool permissions are configured per-project in `.aegiscode/settings.json`:
281
-
282
- ```json
283
- {
284
- "permissions": {
285
- "allow": ["Bash(git *)", "Bash(ls *)"],
286
- "ask": ["Bash(curl *)", "Bash(rm -r *)"],
287
- "deny": ["Bash(sudo *)", "Read(.env)"]
288
- }
289
- }
290
- ```
291
-
292
- Permission modes:
293
-
294
- | Mode | Behavior |
295
- |------|----------|
296
- | `default` | Read auto, write requires confirmation |
297
- | `autoEdit` | Read + write auto, execute requires confirmation |
298
- | `yolo` | Everything auto-approved |
299
- | `plan` | Read only, everything else blocked |
300
-
301
- ---
302
-
303
- ## Memory
304
-
305
- Persistent cross-session memory requires an active subscription (€2/month).
306
-
307
- **How to activate:**
308
-
309
- 1. Subscribe at [aegiscloud.org](https://aegiscloud.org)
310
- 2. Check your inbox for the activation token
311
- 3. Run inside aegiscode:
312
-
313
- ```
314
- /memory activate <token>
315
- ```
316
-
317
- Once active, the AI remembers your stack, past decisions, and project context across every session — no re-explaining needed.
318
-
319
- ```
320
- /memory stats # usage and quota
321
- /memory clear # wipe stored memory
322
- ```
323
-
324
- ---
325
-
326
- ## Sessions
327
-
328
- Sessions are stored locally as JSONL files. Resume a previous session:
329
-
330
- ```bash
331
- aegis --continue # resume most recent
332
- aegis --resume <session-id> # resume by ID
333
- ```
334
-
335
- If cloud sync is active (`/cloud activate`, requires an aegiscloud.org API key), every session is also uploaded and browsable from **[aegiscloud.org/dashboard](https://aegiscloud.org/dashboard)** — search, folders, notes, and bulk export, from any browser. The desktop GUI's Cloud tab links straight there.
336
-
337
- ---
338
-
339
- ## Skills
340
-
341
- Skills are Markdown files (`SKILL.md`) that teach aegiscode a specialized capability or house rule — discovered automatically, loaded only when relevant so they don't cost tokens up front.
342
-
343
- ```
344
- .aegis/skills/<name>/SKILL.md # project-level, git-tracked
345
- ~/.aegis/skills/<name>/SKILL.md # user-level, global
346
- ```
347
-
348
- `.claude/skills/` is also scanned for compatibility with Claude Code skills. Project-level skills win over user-level ones with the same name, so a project can override a global skill with local knowledge.
349
-
350
- ```
351
- /skills # list discovered skills
352
- /load <name> # load a skill's full content on demand
353
- /skill <name> <desc> # scaffold a new skill
354
- ```
355
-
356
- A `SKILL.md` is just frontmatter + instructions:
357
-
358
- ```markdown
359
- ---
360
- name: my-skill
361
- description: What it does and when to use it — this is what the AI sees by default.
362
- allowed-tools: [Read, Grep, Bash]
363
- user-invocable: true
364
- ---
365
-
366
- Full instructions, loaded only when the skill is actually triggered.
367
- ```
368
-
369
- ---
370
-
371
- ## MCP
372
-
373
- aegiscode supports MCP (Model Context Protocol) servers. Configure in `~/.aegiscode/config.json`:
374
-
375
- ```json
376
- {
377
- "mcpEnabled": true,
378
- "mcpServers": {
379
- "my-server": {
380
- "type": "stdio",
381
- "command": "npx",
382
- "args": ["-y", "@my/mcp-server"]
383
- }
384
- }
385
- }
386
- ```
387
-
388
- ---
389
-
390
- ## Built by
391
-
392
- **Niklas Borneklint** — [aegiscloud.org](https://aegiscloud.org) · [@aegisinfo](https://github.com/aegisinfo)
393
-
394
- Part of the ÆGIS ecosystem.