aegiscode 5.2.32 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +123 -392
- package/bin/aegiscode.js +197 -0
- package/package.json +30 -83
- package/scripts/demo.mjs +92 -0
- package/scripts/predist.mjs +86 -0
- package/src/app.js +543 -0
- package/src/art.js +45 -0
- package/src/commands.js +163 -0
- package/src/deps.js +65 -0
- package/src/format.js +54 -0
- package/src/render.js +281 -0
- package/src/screen.js +177 -0
- package/src/theme.js +120 -0
- package/vendor/client/aegis.js +809 -0
- package/vendor/client/foreign-memory.js +666 -0
- package/vendor/desktop/renderer/usage.js +42 -0
- package/vendor/mcp/tools.js +356 -0
- package/LICENSE +0 -21
- package/bin/cli.js +0 -2362
- package/scripts/download-binary.mjs +0 -155
- package/scripts/empty-stub.mjs +0 -1
- package/scripts/ensure-node-version.mjs +0 -27
- package/scripts/install-alacritty.ps1 +0 -149
- package/scripts/install-alacritty.sh +0 -164
- package/scripts/install.sh +0 -121
- package/scripts/make-bin.mjs +0 -17
- package/scripts/release-local.sh +0 -68
- package/scripts/repro-compact.ts +0 -59
- package/scripts/repro-tokencount.ts +0 -45
- package/scripts/sharp-stub/index.js +0 -9
- package/scripts/sharp-stub/package.json +0 -5
package/README.md
CHANGED
|
@@ -1,422 +1,153 @@
|
|
|
1
|
-
# aegiscode
|
|
1
|
+
# aegiscode — the terminal host
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`aegiscode` in your shell — the command-line version of AEGIS Desktop. The same
|
|
4
|
+
tool surface the Claude Code plugin exposes over MCP, plus a terminal instead of
|
|
5
|
+
an editor — built on the same two shared pieces and no others:
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
| Shared piece | What it is |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `client/aegis.js` | The thin transport. Holds the API key, speaks HTTP/SSE. No brain logic. |
|
|
10
|
+
| `mcp/tools.js` | The tool registry — names, JSON schemas, result formatting. |
|
|
11
|
+
| `desktop/renderer/usage.js` | The token-usage → number mapping, shared with the GUI so the two can never disagree. |
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
Routing, model tiers, memory and billing all stay behind aegiscloud.org.
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
## Names: one name, `aegiscode`
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<img src="assets/demo.svg" alt="aegiscode terminal demo — animated" width="100%"/>
|
|
18
|
-
</picture>
|
|
17
|
+
This host and the CLI used to be two names for two packages. They are one
|
|
18
|
+
product, so they are one name now:
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
| Name | Status |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `aegiscode` | **this host**, v6.0.0. Installs a single binary, `aegiscode`. |
|
|
23
|
+
| `aegis-terminal` | deprecated — the 0.1.x spelling of this package, folded into `aegiscode`. |
|
|
24
|
+
| `aegiscode-cli` | 4.0.3, an earlier name of the full `aegisinfo/aegiscode` coding-assistant CLI. Untouched. |
|
|
25
|
+
| `aegis-cli` | 0.4.8 (unrelated). |
|
|
26
|
+
| `aegis` (bin) | claimed **twice already** — by `aegiscode-cli` (→ `bin/cli.js`) and by `aegis-desktop` (→ `bin/aegis.js`). Pre-existing; whichever installs last wins. |
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- **Cloud sync — $2/month** — keep cross-session semantic memory and sync every session across machines. Activate with a single code.
|
|
26
|
-
|
|
27
|
-
> ### Semantic memory — €2/month
|
|
28
|
-
> The AI remembers your project, stack, and decisions across every session.
|
|
29
|
-
> Subscribe at **[aegiscloud.org](https://aegiscloud.org)**, then activate with one command:
|
|
30
|
-
>
|
|
31
|
-
> ```
|
|
32
|
-
> /memory activate <token>
|
|
33
|
-
> ```
|
|
34
|
-
|
|
35
|
-
---
|
|
28
|
+
Publishing this host as `aegiscode` moves the `latest` dist-tag for that name
|
|
29
|
+
onto it. The previous line (`aegiscode@5.x`, the `aegisinfo/aegiscode` agent) is
|
|
30
|
+
still installable and immutable on the registry — pin `aegiscode@5` for it.
|
|
36
31
|
|
|
37
32
|
## Install
|
|
38
33
|
|
|
39
|
-
> Requires **Node.js >= 22**. Install via [nvm](https://github.com/nvm-sh/nvm): `nvm install 22`
|
|
40
|
-
|
|
41
|
-
> **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.
|
|
42
|
-
|
|
43
34
|
```bash
|
|
44
35
|
npm install -g aegiscode
|
|
36
|
+
# or, from a source checkout — no install needed:
|
|
37
|
+
node cli/bin/aegiscode.js
|
|
45
38
|
```
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
git clone https://github.com/aegisinfo/aegiscodex-
|
|
51
|
-
cd aegiscodex-
|
|
52
|
-
bash install.sh
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
`install.sh` builds the project and creates an `aegis-cli` wrapper in `~/.local/bin` — no sudo needed.
|
|
56
|
-
|
|
57
|
-
**Prefer a native window over a raw terminal?** [ds-terminal](https://github.com/aegisinfo/ds-terminal) wraps `aegis-cli` in a GPU-accelerated Alacritty window with a split-pane layout — AI session on top, shell below.
|
|
40
|
+
Requires Node 18+. Set your key once:
|
|
58
41
|
|
|
59
42
|
```bash
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## First run
|
|
66
|
-
|
|
67
|
-
Run `aegis-cli` — the first thing it does is open your browser for a one-time login to your free aegiscloud.org account (Google sign-in). This is required even for fully local/Ollama-only use; once logged in, the session is cached and you won't see it again.
|
|
68
|
-
|
|
69
|
-
After login, if no API keys are configured, an interactive setup guide launches automatically:
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
◆ aegiscode — Setup
|
|
73
|
-
|
|
74
|
-
Keys are saved to ~/.aegiscode/.env
|
|
75
|
-
|
|
76
|
-
Select provider:
|
|
77
|
-
❯ Anthropic (Claude) ANTHROPIC_API_KEY
|
|
78
|
-
OpenAI (GPT) OPENAI_API_KEY
|
|
79
|
-
DeepSeek DEEPSEEK_API_KEY
|
|
80
|
-
Groq GROQ_API_KEY
|
|
81
|
-
Google Gemini GEMINI_API_KEY
|
|
82
|
-
Ollama (local) (no key needed)
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Pick a provider, paste your key, and optionally add more. Keys are saved to `~/.aegiscode/.env` and the app starts immediately.
|
|
86
|
-
|
|
87
|
-
**Or configure manually** — create `~/.aegiscode/.env`:
|
|
88
|
-
|
|
89
|
-
```env
|
|
90
|
-
ANTHROPIC_API_KEY=YOUR_ANTHROPIC_API_KEY
|
|
91
|
-
OPENAI_API_KEY=YOUR_OPENAI_API_KEY
|
|
92
|
-
DEEPSEEK_API_KEY=YOUR_DEEPSEEK_API_KEY
|
|
93
|
-
GROQ_API_KEY=YOUR_GROQ_API_KEY
|
|
94
|
-
GEMINI_API_KEY=YOUR_GEMINI_API_KEY
|
|
43
|
+
export AEGIS_API_KEY="aegis_..."
|
|
95
44
|
```
|
|
96
45
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Claude Code Pro/Max subscription login
|
|
102
|
-
|
|
103
|
-
Already paying for Claude Code? Use your subscription instead of a pay-per-token Anthropic API key:
|
|
46
|
+
## Use
|
|
104
47
|
|
|
105
48
|
```bash
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
49
|
+
aegiscode # interactive session
|
|
50
|
+
aegiscode "why is the sky blue" # one-shot, prints the answer and the tokens
|
|
51
|
+
aegiscode -p "..." --json # machine-readable
|
|
52
|
+
echo "q" | aegiscode -p - # prompt on stdin
|
|
53
|
+
aegiscode -m deepseek/deepseek-v4-flash -p "..." # pin a model
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
In a session, plain text is a prompt. `/help` lists commands:
|
|
57
|
+
|
|
58
|
+
| Command | What it does |
|
|
59
|
+
|---|---|
|
|
60
|
+
| `/ask <prompt>` | Pooled inference (identical to typing the prompt) |
|
|
61
|
+
| `/status` | Key, plan, account, memory state |
|
|
62
|
+
| `/models` | The model ids you can pin |
|
|
63
|
+
| `/balance` | Token-bank balance and recent spend — tokens beside € |
|
|
64
|
+
| `/recall <query>` | Search cloud memory |
|
|
65
|
+
| `/remember <text>` | Save a durable note |
|
|
66
|
+
| `/memory` `/import` | Review or import memory from other tools |
|
|
67
|
+
| `/byok` `/byok-set` `/byok-rm` | Bring-your-own-key status and management (the key is prompted, never echoed) |
|
|
68
|
+
| `/model` `/stream` `/theme` `/cost` `/clear` `/help` `/quit` | Session controls |
|
|
69
|
+
| `/tool <name> [json]` | Call any registry tool directly |
|
|
70
|
+
|
|
71
|
+
Every command above that talks to AEGIS names a tool from `mcp/tools.js`, and
|
|
72
|
+
the test suite asserts both directions: no command points at a tool that does
|
|
73
|
+
not exist, and no tool is unreachable from the prompt.
|
|
74
|
+
|
|
75
|
+
## What it looks like
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
▄▄▄▄▄▄▄
|
|
79
|
+
▟███████▙
|
|
80
|
+
▜███▀███▛
|
|
81
|
+
▜█████▛
|
|
82
|
+
▜███▛
|
|
83
|
+
▜▛
|
|
84
|
+
|
|
85
|
+
A E G I S C O D E
|
|
86
|
+
Cloud brain in your shell.
|
|
87
|
+
|
|
88
|
+
┏━ aegiscode ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
89
|
+
┃ version v6.0.0 ┃
|
|
90
|
+
┃ model nexus-brain ┃
|
|
91
|
+
┃ base https://aegiscloud.org ┃
|
|
92
|
+
┃ key aegis_••••4f2a ┃
|
|
93
|
+
┃ render streaming ┃
|
|
94
|
+
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
95
|
+
type /help for commands ∙ /quit to exit
|
|
96
|
+
|
|
97
|
+
┃» you
|
|
98
|
+
┃ summarise what changed in the token accounting
|
|
99
|
+
┃⬢ aegis
|
|
100
|
+
┃ Three things changed, and one of them was costing you money:
|
|
101
|
+
┃
|
|
102
|
+
┃ ∙ the pool merges worker usage instead of overwriting it
|
|
103
|
+
┃ ∙ cache reads and writes are billed, not ignored
|
|
104
|
+
┃ ∙ a zero-token call no longer refunds its reservation
|
|
105
|
+
┃
|
|
106
|
+
┃ merge_usage({input_tokens: 1250}, {output_tokens: 312})
|
|
107
|
+
┃ => 1562 total
|
|
108
|
+
┣─ ∅ nexus-brain ∙ 1,562 tok ∙ 1,250/312 ∙ €0.0007 ∙ 4.2s ∙ 4 calls
|
|
109
|
+
|
|
110
|
+
⬢ aegis ∙ nexus-brain ∙ 1,562 tok ∙ €0.0007 ∙ stream ctrl+c quit
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Render it yourself, with no key and no network:
|
|
115
114
|
|
|
116
115
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
aegis-cli --model deepseek-chat # use a specific model
|
|
120
|
-
aegis-cli --router # start with the auto-router on
|
|
121
|
-
aegis-cli --continue # resume last session
|
|
122
|
-
aegis-cli --resume <session-id> # resume specific session
|
|
123
|
-
aegis-cli --print "what does this repo do?" # headless — print response, exit
|
|
124
|
-
aegis-cli --print --output-format json "summarize this" # headless JSON output, for scripts
|
|
116
|
+
node cli/scripts/demo.mjs # from a source checkout
|
|
117
|
+
# --light, --width 100, --plain also work
|
|
125
118
|
```
|
|
126
119
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
## Configuration
|
|
130
|
-
|
|
131
|
-
Config lives at `~/.aegiscode/config.json`. It is created automatically on first run.
|
|
132
|
-
|
|
133
|
-
API keys are read from `~/.aegiscode/.env` — you don't need to put them in `config.json`.
|
|
120
|
+
## Design notes
|
|
134
121
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Built-in models
|
|
144
|
-
|
|
145
|
-
| ID | Model | Provider |
|
|
146
|
-
|----|-------|----------|
|
|
147
|
-
| `claude-fable-5` | claude-fable-5 | Anthropic |
|
|
148
|
-
| `claude-sonnet-4` | claude-sonnet-4-6 | Anthropic |
|
|
149
|
-
| `claude-opus-4` | claude-opus-4-8 | Anthropic |
|
|
150
|
-
| `claude-haiku-4` | claude-haiku-4-5-20251001 | Anthropic |
|
|
151
|
-
| `openai-gpt-5.5` | gpt-5.5 | OpenAI |
|
|
152
|
-
| `openai-gpt-4o` | gpt-4o | OpenAI |
|
|
153
|
-
| `openai-o3` | o3 | OpenAI |
|
|
154
|
-
| `deepseek-chat` | deepseek-chat | DeepSeek |
|
|
155
|
-
| `deepseek-reasoner` | deepseek-reasoner | DeepSeek |
|
|
156
|
-
| `groq-llama` | llama-3.3-70b-versatile | Groq |
|
|
157
|
-
| `groq-deepseek` | qwen-qwq-32b | Groq |
|
|
158
|
-
| `gemini-2.5-pro` | gemini-2.5-pro | Google |
|
|
159
|
-
| `gemini-2.5-flash` | gemini-2.5-flash | Google |
|
|
160
|
-
| `ollama-local` | llama3.2 | Ollama (local) |
|
|
161
|
-
|
|
162
|
-
Any OpenAI-compatible API can be added as a custom model.
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## Commands
|
|
167
|
-
|
|
168
|
-
Full reference with copy-paste examples: **[aegiscloud.org/aegiscode/commands](https://aegiscloud.org/aegiscode/commands)**
|
|
169
|
-
|
|
170
|
-
### Session & Help
|
|
171
|
-
|
|
172
|
-
| Command | Alias | Description |
|
|
173
|
-
|---------|-------|-------------|
|
|
174
|
-
| `/help [command]` | `/?` `/h` | Show all commands, or detailed help for one |
|
|
175
|
-
| `/clear` | `/cls` | Clear chat history, same session ID |
|
|
176
|
-
| `/compact` | | Manually compress conversation to free up context window |
|
|
177
|
-
| `/status` | `/st` | Session info — current model, permission mode, message count, context usage |
|
|
178
|
-
| `/tokens` | `/tok` | Token usage graph and estimated dollar spend |
|
|
179
|
-
| `/version` | `/v` | Show installed aegiscode version |
|
|
180
|
-
|
|
181
|
-
### Models & Routing
|
|
182
|
-
|
|
183
|
-
| Command | Alias | Description |
|
|
184
|
-
|---------|-------|-------------|
|
|
185
|
-
| `/model [id]` | `/m` | Interactive model switcher, or jump to a model by ID |
|
|
186
|
-
| `/model list` | | List all configured models |
|
|
187
|
-
| `/model add <id> <name> <model> <baseURL> <apiKey>` | | Add a custom model |
|
|
188
|
-
| `/model remove <id>` | | Remove a model |
|
|
189
|
-
| `/router [on\|off\|stats]` | | Auto-pick the cheapest model per task based on complexity |
|
|
190
|
-
| `/router set <tier> <id>` | | Pin a model to the simple/medium/complex tier |
|
|
191
|
-
| `/effort [off\|low\|medium\|high\|max]` | | Set Claude's extended-thinking effort level |
|
|
192
|
-
| `/confirm [on\|off] [model-id\|claude\|deepseek\|all]` | `/confirmations` | Toggle tool-call confirmation prompt per model |
|
|
193
|
-
| `/yolo [on\|off]` | | Toggle auto-approve for all tool calls (no prompts) |
|
|
194
|
-
|
|
195
|
-
### Multi-Agent
|
|
196
|
-
|
|
197
|
-
| Command | Alias | Description |
|
|
198
|
-
|---------|-------|-------------|
|
|
199
|
-
| `/multi <task>` | | Orchestrate multiple AI agents on a complex task |
|
|
200
|
-
| `/multiyolo <task>` | | Same as `/multi` with auto-approved tool calls |
|
|
201
|
-
| `/build <description>` | `/forge` | Build an app with multiple AI models in parallel |
|
|
202
|
-
| `/clone <url> [--name <project>]` | `/fetch-site` `/websnap` | Clone a website's structure and styling using DeepSeek |
|
|
203
|
-
| `/council <question>` | | Send to every configured model, surface the majority answer |
|
|
204
|
-
| `/debate <topic> [--models id1,id2] [--rounds N]` | `/db` | Structured multi-round debate between models |
|
|
205
|
-
| `/research <question>` | | Multi-agent deliberation research |
|
|
206
|
-
|
|
207
|
-
### Agent Apps (prebuilt pipelines)
|
|
208
|
-
|
|
209
|
-
| Command | Description |
|
|
210
|
-
|---------|-------------|
|
|
211
|
-
| `/audit` | Full security audit — Scanner → Risk Analyzer → Reporter (3 agents) |
|
|
212
|
-
| `/refactor` | Analyze and apply refactoring — Analyzer → Planner → Implementer (3 agents) |
|
|
213
|
-
| `/test-gen` | Generate comprehensive test suite — Explorer → Designer → Writer (3 agents) |
|
|
214
|
-
|
|
215
|
-
### Memory & Cloud
|
|
216
|
-
|
|
217
|
-
| Command | Alias | Description |
|
|
218
|
-
|---------|-------|-------------|
|
|
219
|
-
| `/memory activate <token>` | | Activate persistent cross-session semantic memory |
|
|
220
|
-
| `/memory stats` | | Show memory usage and quota |
|
|
221
|
-
| `/memory clear` | | Wipe stored memory |
|
|
222
|
-
| `/memory load <url\|path>` | | Load content into memory index |
|
|
223
|
-
| `/memory upload` | | Upload memory to cloud |
|
|
224
|
-
| `/cloud [status\|key <k>\|activate\|deactivate]` | | Manage AEGIS Cloud sync — sessions browsable at aegiscloud.org/dashboard |
|
|
225
|
-
| `/billing` | | Show subscription tier, next billing date, memory quota |
|
|
226
|
-
|
|
227
|
-
### Customization
|
|
228
|
-
|
|
229
|
-
| Command | Alias | Description |
|
|
230
|
-
|---------|-------|-------------|
|
|
231
|
-
| `/theme [name]` | `/t` | Show or switch UI theme |
|
|
232
|
-
| `/thinking` | | Toggle extended-thinking blocks expanded/collapsed |
|
|
233
|
-
| `/copy [n\|last\|list\|raw]` | `/cp` | Copy a code block to clipboard |
|
|
234
|
-
| `/skills [name\|refresh]` | `/sk` | List, show, or refresh discovered skills |
|
|
235
|
-
| `/hooks [status\|list]` | | View configured hooks and their status |
|
|
236
|
-
| `/mcp [tools\|<server-name>]` | | Show connected MCP server status and tools |
|
|
237
|
-
|
|
238
|
-
### Copy, paste & text selection
|
|
239
|
-
|
|
240
|
-
| Action | How |
|
|
241
|
-
|--------|-----|
|
|
242
|
-
| Copy last assistant reply | `Alt+C` or `Ctrl+C` at idle (markdown stripped) |
|
|
243
|
-
| Copy your last message | `Alt+U` |
|
|
244
|
-
| Copy a code block | `/copy [n\|last\|list\|raw]` or `/cp` |
|
|
245
|
-
| Select text with the mouse + copy | `Alt+S` toggles **selection mode** — suspends mouse-wheel tracking and pauses the idle cursor blink (which would otherwise erase your selection every 800 ms) so the terminal's native mark/select + `Ctrl+Shift+C` works, then `Alt+S` again to resume wheel scrolling |
|
|
246
|
-
| Paste into the input | Works via bracketed paste (`Ctrl+Shift+V` / middle-click); a multi-line paste is collapsed to a **first-line + `…`** preview while the full text is kept and submitted |
|
|
247
|
-
|
|
248
|
-
> Note: on VTE-based terminals (gnome-terminal, xfce4-terminal) and Windows Terminal, the app's mouse-wheel tracking disables native mouse selection — use `Alt+S` there. On kitty/iTerm2/wezterm selection works alongside wheel scrolling, so the toggle is rarely needed.
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## /router — automatic model routing
|
|
253
|
-
|
|
254
|
-
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.
|
|
255
|
-
|
|
256
|
-
```
|
|
257
|
-
/router on # start auto-picking a model per message
|
|
258
|
-
/router set simple deepseek-chat # pin a tier to a specific model id
|
|
259
|
-
/router # show current status + tier mapping
|
|
260
|
-
```
|
|
122
|
+
**It is not a Claude Code look-alike.** Violet-and-cyan on ink; a hexagonal
|
|
123
|
+
shield sigil rather than a mascot; a `»` prompt and a `┃` transcript rail rather
|
|
124
|
+
than `❯` and `✻`; heavy box corners rather than rounded ones. This is a
|
|
125
|
+
deliberate divergence, not an accident of taste: `test/cli-identity.test.mjs`
|
|
126
|
+
fails if any of Claude Code's exact RGB triples, glyphs, spinner frames or art
|
|
127
|
+
rows appear in this host.
|
|
261
128
|
|
|
262
|
-
|
|
129
|
+
**A linear transcript, not a full-screen TUI.** Finished turns are written once
|
|
130
|
+
to the scrollback; only the one live line (spinner, elapsed time) is redrawn.
|
|
131
|
+
Output stays selectable, searchable and pipeable, which matters for a tool you
|
|
132
|
+
script.
|
|
263
133
|
|
|
264
|
-
|
|
134
|
+
**Tokens beside money, always.** A turn prints what it consumed and what it
|
|
135
|
+
settled at, in the same line: `1,562 tok ∙ 1,250/312 ∙ €0.0007`. Sub-cent
|
|
136
|
+
amounts keep four decimals, because a €0.0007 call rendered at 2dp reads as
|
|
137
|
+
free usage next to a token count.
|
|
265
138
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
## /build — parallel multi-model app builder
|
|
269
|
-
|
|
270
|
-
`/build` decomposes your task into components, assigns each to the best available AI model, and builds everything simultaneously.
|
|
271
|
-
|
|
272
|
-
```
|
|
273
|
-
/build a REST API for a todo app with PostgreSQL
|
|
274
|
-
/build a CLI tool that summarizes git commits
|
|
275
|
-
/build a Flask web app with login and dashboard
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
**How it works:**
|
|
279
|
-
|
|
280
|
-
1. **Plan** — primary model produces a component tree (JSON)
|
|
281
|
-
2. **Build** — all components built in parallel, each by the best model for that role:
|
|
282
|
-
- DeepSeek → backend, algorithms (`DEEPSEEK_API_KEY`)
|
|
283
|
-
- GPT-4o → frontend, UI (`OPENAI_API_KEY`)
|
|
284
|
-
- Llama via Groq → tests, docs (`GROQ_API_KEY`)
|
|
285
|
-
- Primary model → architecture, integration
|
|
286
|
-
3. **Sync** — summary of files written and how to run the app
|
|
287
|
-
|
|
288
|
-
All agents write real files to your current directory. The more API keys you have configured, the more models work in parallel.
|
|
289
|
-
|
|
290
|
-
---
|
|
291
|
-
|
|
292
|
-
## /council & /debate — many models, one answer
|
|
293
|
-
|
|
294
|
-
Don't trust a single model on a hard call. Put several to work on it.
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
/council "is a state machine overkill for this form?" # they vote, consensus wins
|
|
298
|
-
/debate "monorepo vs polyrepo for this team" --rounds 3 # they argue it out across rounds
|
|
299
|
-
/debate "React vs SolidJS" --models gpt-4o,deepseek # pick the panel
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
`/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.
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
## Tools
|
|
307
|
-
|
|
308
|
-
aegiscode can read, write, and execute files in your project. Tool permissions are configured per-project in `.aegiscode/settings.json`:
|
|
309
|
-
|
|
310
|
-
```json
|
|
311
|
-
{
|
|
312
|
-
"permissions": {
|
|
313
|
-
"allow": ["Bash(git *)", "Bash(ls *)"],
|
|
314
|
-
"ask": ["Bash(curl *)", "Bash(rm -r *)"],
|
|
315
|
-
"deny": ["Bash(sudo *)", "Read(.env)"]
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
Permission modes:
|
|
321
|
-
|
|
322
|
-
| Mode | Behavior |
|
|
323
|
-
|------|----------|
|
|
324
|
-
| `default` | Read auto, write requires confirmation |
|
|
325
|
-
| `autoEdit` | Read + write auto, execute requires confirmation |
|
|
326
|
-
| `yolo` | Everything auto-approved |
|
|
327
|
-
| `plan` | Read only, everything else blocked |
|
|
328
|
-
|
|
329
|
-
---
|
|
330
|
-
|
|
331
|
-
## Memory
|
|
332
|
-
|
|
333
|
-
Persistent cross-session memory requires an active subscription (€2/month).
|
|
334
|
-
|
|
335
|
-
**How to activate:**
|
|
336
|
-
|
|
337
|
-
1. Subscribe at [aegiscloud.org](https://aegiscloud.org)
|
|
338
|
-
2. Check your inbox for the activation token
|
|
339
|
-
3. Run inside aegiscode:
|
|
340
|
-
|
|
341
|
-
```
|
|
342
|
-
/memory activate <token>
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
Once active, the AI remembers your stack, past decisions, and project context across every session — no re-explaining needed.
|
|
346
|
-
|
|
347
|
-
```
|
|
348
|
-
/memory stats # usage and quota
|
|
349
|
-
/memory clear # wipe stored memory
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
---
|
|
353
|
-
|
|
354
|
-
## Sessions
|
|
355
|
-
|
|
356
|
-
Sessions are stored locally as JSONL files. Resume a previous session:
|
|
139
|
+
## Tests
|
|
357
140
|
|
|
358
141
|
```bash
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
```
|
|
372
|
-
.aegis/skills/<name>/SKILL.md # project-level, git-tracked
|
|
373
|
-
~/.aegis/skills/<name>/SKILL.md # user-level, global
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
`.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.
|
|
377
|
-
|
|
378
|
-
```
|
|
379
|
-
/skills # list discovered skills
|
|
380
|
-
/skills <name> # show a skill's full details
|
|
381
|
-
/skills refresh # rescan skill directories
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
A `SKILL.md` is just frontmatter + instructions:
|
|
385
|
-
|
|
386
|
-
```markdown
|
|
387
|
-
---
|
|
388
|
-
name: my-skill
|
|
389
|
-
description: What it does and when to use it — this is what the AI sees by default.
|
|
390
|
-
allowed-tools: [Read, Grep, Bash]
|
|
391
|
-
user-invocable: true
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
Full instructions, loaded only when the skill is actually triggered.
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
---
|
|
398
|
-
|
|
399
|
-
## MCP
|
|
400
|
-
|
|
401
|
-
aegiscode supports MCP (Model Context Protocol) servers. Configure in `~/.aegiscode/config.json`:
|
|
402
|
-
|
|
403
|
-
```json
|
|
404
|
-
{
|
|
405
|
-
"mcpEnabled": true,
|
|
406
|
-
"mcpServers": {
|
|
407
|
-
"my-server": {
|
|
408
|
-
"type": "stdio",
|
|
409
|
-
"command": "npx",
|
|
410
|
-
"args": ["-y", "@my/mcp-server"]
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
## Built by
|
|
419
|
-
|
|
420
|
-
**Niklas Borneklint** — [aegiscloud.org](https://aegiscloud.org) · [@aegisinfo](https://github.com/aegisinfo)
|
|
421
|
-
|
|
422
|
-
Part of the ÆGIS ecosystem.
|
|
142
|
+
node ../../test/cli-identity.test.mjs # the divergence guard
|
|
143
|
+
node ../../test/cli-render.test.mjs # width safety, accounting, live region
|
|
144
|
+
node ../../test/cli-tools.test.mjs # registry parity with the MCP host + dispatch
|
|
145
|
+
node ../../test/cli-run.test.mjs # the real binary against a real backend
|
|
146
|
+
node ../../test/cli-package.test.mjs # the published layout, isolated from the repo
|
|
147
|
+
npm test # all of the above
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
`npm run predist` stages `client/`, `mcp/tools.js` and the desktop's `usage.js`
|
|
151
|
+
into `cli/vendor/` (gitignored) so the published package resolves its own
|
|
152
|
+
modules. `test/cli-package.test.mjs` copies that tree somewhere with no repo
|
|
153
|
+
around it and runs the binary there.
|