navada-edge-cli 2.1.1 → 2.2.1
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 +216 -76
- package/lib/registry.js +32 -1
- package/network.svg +194 -184
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,145 +1,285 @@
|
|
|
1
1
|
# navada-edge-cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An AI-powered terminal agent for the **NAVADA Edge Network**. Full computer access, distributed infrastructure control, and conversational AI — all from your terminal.
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```bash
|
|
6
6
|
npm install -g navada-edge-cli
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
+
```
|
|
10
|
+
╭─────────────────────────────────────────────────────────╮
|
|
11
|
+
│ ███╗ ██╗ █████╗ ██╗ ██╗ █████╗ ██████╗ █████╗ │
|
|
12
|
+
│ ██╔██╗ ██║███████║██║ ██║███████║██║ ██║███████║ │
|
|
13
|
+
│ ██║ ╚████║██║ ██║ ╚████╔╝ ██║ ██║██████╔╝██║ ██║ │
|
|
14
|
+
│ E D G E N E T W O R K v2.1.1 │
|
|
15
|
+
╰─────────────────────────────────────────────────────────╯
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## What is this?
|
|
19
|
+
|
|
20
|
+
NAVADA Edge CLI is a **conversational AI agent** that runs in your terminal. It has full access to your local machine (files, shell, processes) and connects to the NAVADA Edge Network — a distributed infrastructure spanning 4 physical nodes, Cloudflare, Azure, and AI services.
|
|
21
|
+
|
|
22
|
+
**Just type naturally.** No commands needed.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
navada> what images are in the docker registry?
|
|
26
|
+
[docker_registry] {}
|
|
27
|
+
|
|
28
|
+
NAVADA
|
|
29
|
+
The private registry contains: my-api, navada-command-dashboard,
|
|
30
|
+
navada-edge-mcp, navada-opencode-serve, navada-opencode-server.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
navada> check disk space on EC2
|
|
35
|
+
[lucas_ssh] {"node":"ec2","command":"df -h"}
|
|
36
|
+
|
|
37
|
+
NAVADA
|
|
38
|
+
EC2 disk usage: 45% used (12G/26G). /dev/xvda1 mounted at /.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
navada> create a file called hello.txt with "Hello from NAVADA"
|
|
43
|
+
[write_file] {"path":"hello.txt","content":"Hello from NAVADA"}
|
|
44
|
+
|
|
45
|
+
NAVADA
|
|
46
|
+
✓ Written: /Users/you/hello.txt
|
|
47
|
+
```
|
|
48
|
+
|
|
9
49
|
## Network Architecture
|
|
10
50
|
|
|
11
|
-

|
|
12
52
|
|
|
13
53
|
## Quick Start
|
|
14
54
|
|
|
15
55
|
```bash
|
|
16
|
-
#
|
|
56
|
+
# Install
|
|
57
|
+
npm install -g navada-edge-cli
|
|
58
|
+
|
|
59
|
+
# Start the CLI
|
|
17
60
|
navada
|
|
18
61
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
62
|
+
# Login with your API key (Anthropic recommended for full agent mode)
|
|
63
|
+
/login sk-ant-your-key-here
|
|
64
|
+
|
|
65
|
+
# Start talking
|
|
66
|
+
hello, what can you do?
|
|
24
67
|
```
|
|
25
68
|
|
|
26
|
-
|
|
69
|
+
The CLI accepts **any** API key:
|
|
27
70
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
71
|
+
| Key Type | Prefix | What You Get |
|
|
72
|
+
|----------|--------|-------------|
|
|
73
|
+
| **Anthropic** | `sk-ant-...` | Full agent with tool use — recommended |
|
|
74
|
+
| **OpenAI** | `sk-...` | GPT-4o chat |
|
|
75
|
+
| **HuggingFace** | `hf_...` | Qwen Coder (FREE) |
|
|
76
|
+
| **NAVADA Edge** | `nv_edge_...` | MCP server access + all network tools |
|
|
31
77
|
|
|
32
|
-
|
|
33
|
-
navada login <your-api-key>
|
|
78
|
+
## Features
|
|
34
79
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
navada init dashboard http://10.0.0.1:7900
|
|
39
|
-
navada init registry http://10.0.0.1:5000
|
|
40
|
-
```
|
|
80
|
+
### AI Agent with Tool Use
|
|
81
|
+
|
|
82
|
+
The CLI is powered by Claude Sonnet 4 with 13 tools. It doesn't just answer questions — it **executes tasks**:
|
|
41
83
|
|
|
42
|
-
|
|
84
|
+
| Tool | What it does |
|
|
85
|
+
|------|-------------|
|
|
86
|
+
| `shell` | Run any command on your local machine |
|
|
87
|
+
| `read_file` | Read files from your filesystem |
|
|
88
|
+
| `write_file` | Create or modify files |
|
|
89
|
+
| `list_files` | Browse directories |
|
|
90
|
+
| `system_info` | CPU, RAM, disk, hostname, OS |
|
|
91
|
+
| `network_status` | Ping all NAVADA Edge nodes |
|
|
92
|
+
| `lucas_exec` | Run bash on EC2 via Lucas CTO |
|
|
93
|
+
| `lucas_ssh` | SSH to any node via Lucas |
|
|
94
|
+
| `lucas_docker` | Docker exec in remote containers |
|
|
95
|
+
| `mcp_call` | Call any of 18 MCP server tools |
|
|
96
|
+
| `docker_registry` | Query the private Docker registry |
|
|
97
|
+
| `send_email` | Send email via SMTP or MCP |
|
|
98
|
+
| `generate_image` | Generate images (Flux FREE / DALL-E) |
|
|
43
99
|
|
|
44
|
-
|
|
100
|
+
### Two AI Agents
|
|
45
101
|
|
|
46
|
-
|
|
102
|
+
| Agent | Role | Access |
|
|
103
|
+
|-------|------|--------|
|
|
104
|
+
| **Lucas CTO** | Infrastructure agent on EC2 | bash, SSH, Docker, deploy, file operations |
|
|
105
|
+
| **Claude CoS** | Chief of Staff | Email, image gen, SMS, research, automation |
|
|
47
106
|
|
|
48
107
|
```
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
██║╚██╗██║██╔══██║╚██╗ ██╔╝██╔══██║██║ ██║██╔══██║
|
|
53
|
-
██║ ╚████║██║ ██║ ╚████╔╝ ██║ ██║██████╔╝██║ ██║
|
|
54
|
-
╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝
|
|
55
|
-
─────────────────────────────────────────────────────
|
|
56
|
-
E D G E N E T W O R K v1.0.0
|
|
57
|
-
─────────────────────────────────────────────────────
|
|
108
|
+
navada> /agents
|
|
109
|
+
● Lucas CTO ONLINE (MCP http://100.x.x.x:8820)
|
|
110
|
+
Tools: bash, ssh, docker_exec, deploy, read_file, write_file
|
|
58
111
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
●
|
|
63
|
-
|
|
64
|
-
○ AZURE OFFLINE (unreachable)
|
|
65
|
-
● CLOUDFLARE ONLINE (HTTP 200)
|
|
112
|
+
● Claude CoS ONLINE (Dashboard http://100.x.x.x:7900)
|
|
113
|
+
Controls: Telegram, email, SMS, image gen, R2, cost tracking
|
|
114
|
+
|
|
115
|
+
● MCP Server ONLINE (http://100.x.x.x:8811)
|
|
116
|
+
Version: 1.0.0
|
|
66
117
|
```
|
|
67
118
|
|
|
68
|
-
|
|
119
|
+
### 45+ Slash Commands
|
|
120
|
+
|
|
121
|
+
Use `/commands` for direct control, or just type naturally for the AI agent.
|
|
69
122
|
|
|
70
|
-
|
|
123
|
+
**Network**
|
|
71
124
|
| Command | Description |
|
|
72
125
|
|---------|-------------|
|
|
73
126
|
| `/status` | Ping all nodes + cloud services |
|
|
74
127
|
| `/nodes` | Show node configuration |
|
|
75
|
-
| `/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
|
79
|
-
|
|
80
|
-
| `/mcp tools` | List MCP tools |
|
|
81
|
-
| `/mcp call <tool> [json]` | Call an MCP tool |
|
|
128
|
+
| `/doctor` | Validate all connections |
|
|
129
|
+
| `/ping` | Quick all-nodes ping |
|
|
130
|
+
| `/metrics` | CPU/RAM/disk for all nodes |
|
|
131
|
+
| `/health` | Deep health check |
|
|
132
|
+
| `/dashboard` | Command Dashboard status |
|
|
82
133
|
|
|
83
|
-
|
|
134
|
+
**Agents**
|
|
84
135
|
| Command | Description |
|
|
85
136
|
|---------|-------------|
|
|
86
|
-
| `/
|
|
137
|
+
| `/agents` | Show Lucas CTO + Claude CoS status |
|
|
138
|
+
| `/claude <msg>` | Send message to Claude CoS |
|
|
139
|
+
| `/lucas exec <cmd>` | Run bash on EC2 via Lucas |
|
|
87
140
|
| `/lucas ssh <node> <cmd>` | SSH to node via Lucas |
|
|
88
141
|
| `/lucas docker <ctr> <cmd>` | Docker exec via Lucas |
|
|
89
|
-
| `/lucas
|
|
142
|
+
| `/lucas deploy <name> <node>` | Deploy container |
|
|
90
143
|
|
|
91
|
-
|
|
144
|
+
**Docker**
|
|
92
145
|
| Command | Description |
|
|
93
146
|
|---------|-------------|
|
|
94
147
|
| `/registry` | List images in private registry |
|
|
95
148
|
| `/registry tags <image>` | List tags for an image |
|
|
149
|
+
| `/deploy <name> <node>` | Deploy container to node |
|
|
150
|
+
| `/logs <container>` | View container logs |
|
|
96
151
|
|
|
97
|
-
|
|
152
|
+
**AI**
|
|
98
153
|
| Command | Description |
|
|
99
154
|
|---------|-------------|
|
|
100
|
-
| `/
|
|
155
|
+
| `/chat <msg>` | Chat with NAVADA Edge AI |
|
|
156
|
+
| `/qwen <prompt>` | Qwen Coder 32B (FREE) |
|
|
157
|
+
| `/yolo detect <img>` | Object detection |
|
|
158
|
+
| `/image <prompt>` | Generate image (Flux FREE) |
|
|
159
|
+
| `/image --dalle <prompt>` | Generate with DALL-E 3 |
|
|
160
|
+
| `/model` | Show/set AI model |
|
|
161
|
+
| `/research <query>` | RAG search via MCP |
|
|
101
162
|
|
|
102
|
-
|
|
163
|
+
**Cloudflare**
|
|
103
164
|
| Command | Description |
|
|
104
165
|
|---------|-------------|
|
|
105
166
|
| `/r2 ls [prefix]` | List R2 objects |
|
|
106
|
-
| `/r2
|
|
107
|
-
| `/r2 upload <key> <file>` | Upload file to R2 |
|
|
167
|
+
| `/r2 upload <key> <file>` | Upload to R2 |
|
|
108
168
|
| `/dns` | List DNS records |
|
|
109
|
-
| `/dns create <type> <name> <
|
|
169
|
+
| `/dns create <type> <name> <val>` | Create DNS record |
|
|
110
170
|
| `/tunnel` | List Cloudflare tunnels |
|
|
111
171
|
| `/stream` | List Stream videos |
|
|
112
172
|
| `/flux <prompt>` | Generate image (FREE) |
|
|
113
|
-
| `/trace <url>` | Trace through
|
|
173
|
+
| `/trace <url>` | Trace through WAF |
|
|
114
174
|
|
|
115
|
-
|
|
175
|
+
**Database**
|
|
116
176
|
| Command | Description |
|
|
117
177
|
|---------|-------------|
|
|
118
|
-
| `/
|
|
119
|
-
| `/qwen <prompt>` | Qwen Coder (FREE) |
|
|
120
|
-
| `/yolo` | YOLO service status |
|
|
121
|
-
| `/yolo detect <image>` | Run object detection |
|
|
178
|
+
| `/db <sql>` | Query Postgres |
|
|
122
179
|
|
|
123
|
-
|
|
180
|
+
**System**
|
|
124
181
|
| Command | Description |
|
|
125
182
|
|---------|-------------|
|
|
126
|
-
| `/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
|
130
|
-
|
|
131
|
-
| `/
|
|
132
|
-
| `/
|
|
133
|
-
| `/
|
|
183
|
+
| `/config` | Show all configuration |
|
|
184
|
+
| `/login <key>` | Set API key (auto-detects type) |
|
|
185
|
+
| `/setup` | Guided onboarding wizard |
|
|
186
|
+
| `/theme [name]` | Switch theme (dark/crow/matrix/light) |
|
|
187
|
+
| `/history` | Command history |
|
|
188
|
+
| `/alias <name> <cmd>` | Create shortcut |
|
|
189
|
+
| `/watch <cmd> <sec>` | Repeat command on interval |
|
|
190
|
+
| `/export <file>` | Save output to file |
|
|
191
|
+
| `/pipe` | Copy output to clipboard |
|
|
192
|
+
| `/email <to> <subj> <body>` | Send email (SMTP/MCP) |
|
|
193
|
+
| `/email setup` | Configure SMTP (Hotmail/Gmail/Zoho) |
|
|
194
|
+
| `/serve [port]` | Start mobile HTTP UI |
|
|
195
|
+
| `/version` | Version + tier info |
|
|
196
|
+
| `/upgrade` | Check for updates |
|
|
134
197
|
| `/clear` | Clear screen |
|
|
135
198
|
| `/exit` | Exit CLI |
|
|
136
199
|
|
|
200
|
+
### 4 Themes
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
navada> /theme crow # achromatic, minimal
|
|
204
|
+
navada> /theme matrix # green terminal
|
|
205
|
+
navada> /theme dark # default
|
|
206
|
+
navada> /theme light # blue + white
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Mobile Access
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
navada> /serve 7800
|
|
213
|
+
MOBILE SERVER
|
|
214
|
+
Local http://localhost:7800
|
|
215
|
+
Network http://100.x.x.x:7800
|
|
216
|
+
[QR code displayed]
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Opens a web UI on your phone — same commands, same network access.
|
|
220
|
+
|
|
221
|
+
### Email
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# Configure SMTP (Hotmail, Gmail, Zoho)
|
|
225
|
+
navada> /email setup
|
|
226
|
+
|
|
227
|
+
# Send directly
|
|
228
|
+
navada> /email user@example.com "Subject" "Body text"
|
|
229
|
+
|
|
230
|
+
# Or ask the agent naturally
|
|
231
|
+
navada> email lee the network status report
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Persistent History
|
|
235
|
+
|
|
236
|
+
Commands survive restarts. Search with `/history docker` to find previous Docker commands.
|
|
237
|
+
|
|
238
|
+
### Docker
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# Run in Docker
|
|
242
|
+
docker run -it --env-file .env navada-edge-cli
|
|
243
|
+
|
|
244
|
+
# With mobile access
|
|
245
|
+
docker run -it -p 7800:7800 --env-file .env navada-edge-cli --serve
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Configuration
|
|
249
|
+
|
|
250
|
+
All config lives in `~/.navada/config.json`. Set values with:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
navada> /login sk-ant-your-key # API key
|
|
254
|
+
navada> /init asus 100.x.x.x # Node IP
|
|
255
|
+
navada> /init mcp http://x.x.x:8811 # MCP server
|
|
256
|
+
navada> /theme crow # Theme
|
|
257
|
+
navada> /alias s status # Alias
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Or use environment variables:
|
|
261
|
+
|
|
262
|
+
```env
|
|
263
|
+
ANTHROPIC_API_KEY=sk-ant-...
|
|
264
|
+
NAVADA_ASUS=100.x.x.x
|
|
265
|
+
NAVADA_MCP=http://100.x.x.x:8811
|
|
266
|
+
NAVADA_DASHBOARD=http://100.x.x.x:7900
|
|
267
|
+
NAVADA_REGISTRY=http://100.x.x.x:5000
|
|
268
|
+
NAVADA_LUCAS=http://100.x.x.x:8820
|
|
269
|
+
```
|
|
270
|
+
|
|
137
271
|
## NAVADA Edge Ecosystem
|
|
138
272
|
|
|
139
273
|
| Package | Install | Purpose |
|
|
140
274
|
|---------|---------|---------|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
275
|
+
| **navada-edge-sdk** | `npm i navada-edge-sdk` | SDK — use in your Node.js apps |
|
|
276
|
+
| **navada-edge-cli** | `npm i -g navada-edge-cli` | CLI — AI agent in your terminal |
|
|
277
|
+
| **MCP Server** | `POST /mcp` | JSON-RPC tool server (18 tools) |
|
|
278
|
+
| **Docker** | `docker pull navada-edge-cli` | Run CLI in a container |
|
|
279
|
+
|
|
280
|
+
## Telemetry
|
|
281
|
+
|
|
282
|
+
The CLI reports anonymous usage events (install, session start, command counts) to the NAVADA Edge Dashboard for monitoring. No personal data or API keys are transmitted. Telemetry requires a configured dashboard endpoint.
|
|
143
283
|
|
|
144
284
|
## License
|
|
145
285
|
|
package/lib/registry.js
CHANGED
|
@@ -59,7 +59,38 @@ async function execute(input) {
|
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
// No slash —
|
|
62
|
+
// No slash — check if first word is a known command anyway
|
|
63
|
+
const firstWord = trimmed.split(/\s+/)[0].toLowerCase();
|
|
64
|
+
const restArgs = trimmed.split(/\s+/).slice(1);
|
|
65
|
+
|
|
66
|
+
// Check built-in commands (login, setup, status, etc.)
|
|
67
|
+
if (commands[firstWord]) {
|
|
68
|
+
try {
|
|
69
|
+
await commands[firstWord].handler(restArgs);
|
|
70
|
+
} catch (e) {
|
|
71
|
+
const ui = require('./ui');
|
|
72
|
+
console.log(ui.error(e.message));
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Check user aliases
|
|
78
|
+
const userAliases = config.getAliases();
|
|
79
|
+
if (userAliases[firstWord]) {
|
|
80
|
+
const expanded = userAliases[firstWord].split(/\s+/);
|
|
81
|
+
const aliasCmd = commands[expanded[0]];
|
|
82
|
+
if (aliasCmd) {
|
|
83
|
+
try {
|
|
84
|
+
await aliasCmd.handler([...expanded.slice(1), ...restArgs]);
|
|
85
|
+
} catch (e) {
|
|
86
|
+
const ui = require('./ui');
|
|
87
|
+
console.log(ui.error(e.message));
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Not a command — treat as natural language → route to AI agent
|
|
63
94
|
try {
|
|
64
95
|
await commands['chat'].handler(trimmed.split(/\s+/));
|
|
65
96
|
} catch (e) {
|
package/network.svg
CHANGED
|
@@ -1,197 +1,207 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
2
|
-
<
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 720" font-family="'SF Mono','Cascadia Code','Courier New',monospace">
|
|
2
|
+
<defs>
|
|
3
|
+
<style>
|
|
4
|
+
.bg { fill: #050505; }
|
|
5
|
+
.card { fill: #0a0a0a; stroke: #1a1a1a; stroke-width: 1; }
|
|
6
|
+
.card-hdr { fill: #0f0f0f; }
|
|
7
|
+
.t-title { fill: #fff; font-size: 20px; font-weight: 700; letter-spacing: 3px; }
|
|
8
|
+
.t-sub { fill: #555; font-size: 10px; letter-spacing: 1.5px; }
|
|
9
|
+
.t-label { fill: #555; font-size: 8px; letter-spacing: 1px; text-transform: uppercase; }
|
|
10
|
+
.t-name { fill: #fff; font-size: 11px; font-weight: 600; }
|
|
11
|
+
.t-role { fill: #666; font-size: 9px; }
|
|
12
|
+
.t-svc { fill: #bbb; font-size: 9px; }
|
|
13
|
+
.t-port { fill: #555; font-size: 9px; }
|
|
14
|
+
.t-ip { fill: #444; font-size: 8px; }
|
|
15
|
+
.t-count { fill: #555; font-size: 8px; }
|
|
16
|
+
.t-pill { fill: #e0e0e0; font-size: 10px; }
|
|
17
|
+
.t-pill-sub { fill: #555; font-size: 8px; }
|
|
18
|
+
.t-footer { fill: #333; font-size: 9px; letter-spacing: 0.5px; }
|
|
19
|
+
.dot-on { fill: #22c55e; }
|
|
20
|
+
.dot-off { fill: #444; }
|
|
21
|
+
.line-v { stroke: #1a1a1a; stroke-width: 1; }
|
|
22
|
+
.line-accent { stroke: #fff; stroke-width: 2; }
|
|
23
|
+
.line-dim { stroke: #333; stroke-width: 2; }
|
|
24
|
+
.line-dark { stroke: #222; stroke-width: 2; }
|
|
25
|
+
.badge { fill: none; stroke: #222; stroke-width: 1; }
|
|
26
|
+
.badge-text { fill: #666; font-size: 7px; letter-spacing: 0.5px; }
|
|
27
|
+
.pill-box { fill: none; stroke: #1a1a1a; stroke-width: 1; }
|
|
28
|
+
.mesh-bar { fill: #080808; stroke: #1a1a1a; stroke-width: 1; }
|
|
29
|
+
.arrow { fill: #222; }
|
|
30
|
+
</style>
|
|
31
|
+
</defs>
|
|
32
|
+
|
|
33
|
+
<!-- Background -->
|
|
34
|
+
<rect width="900" height="720" class="bg"/>
|
|
3
35
|
|
|
4
36
|
<!-- Title -->
|
|
5
|
-
<text x="
|
|
6
|
-
<text x="
|
|
7
|
-
|
|
8
|
-
<!-- Clients -->
|
|
9
|
-
<rect x="400" y="78" width="400" height="50" fill="#0a0a0a" stroke="#1a1a1a"/>
|
|
10
|
-
<text x="470" y="100" fill="#e0e0e0" font-size="11">iPhone</text>
|
|
11
|
-
<text x="470" y="115" fill="#444" font-size="9">Telegram</text>
|
|
12
|
-
<text x="580" y="100" fill="#e0e0e0" font-size="11">Desktop</text>
|
|
13
|
-
<text x="580" y="115" fill="#444" font-size="9">VS Code / Browser</text>
|
|
14
|
-
<text x="700" y="100" fill="#e0e0e0" font-size="11">API Consumer</text>
|
|
15
|
-
<text x="700" y="115" fill="#444" font-size="9">SDK / CLI / MCP</text>
|
|
16
|
-
|
|
17
|
-
<!-- Arrow -->
|
|
18
|
-
<line x1="600" y1="128" x2="600" y2="148" stroke="#333" stroke-width="1"/>
|
|
19
|
-
<polygon points="596,148 604,148 600,155" fill="#333"/>
|
|
37
|
+
<text x="450" y="36" text-anchor="middle" class="t-title">NAVADA EDGE NETWORK</text>
|
|
38
|
+
<text x="450" y="52" text-anchor="middle" class="t-sub">Distributed AI Infrastructure</text>
|
|
20
39
|
|
|
21
40
|
<!-- Mesh Bar -->
|
|
22
|
-
<rect x="
|
|
23
|
-
<text x="
|
|
24
|
-
<text x="
|
|
25
|
-
<text x="
|
|
26
|
-
<text x="
|
|
27
|
-
<text x="
|
|
28
|
-
<text x="
|
|
41
|
+
<rect x="40" y="68" width="820" height="36" rx="0" class="mesh-bar"/>
|
|
42
|
+
<text x="140" y="82" class="t-label">VPN</text>
|
|
43
|
+
<text x="140" y="95" class="t-svc">Tailscale WireGuard</text>
|
|
44
|
+
<text x="370" y="82" class="t-label">TUNNEL</text>
|
|
45
|
+
<text x="370" y="95" class="t-svc">Cloudflare *.navada-edge-server.uk</text>
|
|
46
|
+
<text x="680" y="82" class="t-label">REGISTRY</text>
|
|
47
|
+
<text x="680" y="95" class="t-svc">Private Docker :5000</text>
|
|
29
48
|
|
|
30
49
|
<!-- Arrow -->
|
|
31
|
-
<line x1="
|
|
32
|
-
<polygon points="
|
|
33
|
-
|
|
34
|
-
<!--
|
|
35
|
-
<text x="
|
|
36
|
-
|
|
37
|
-
<!--
|
|
38
|
-
<rect x="
|
|
39
|
-
<rect x="
|
|
40
|
-
<rect x="
|
|
41
|
-
<
|
|
42
|
-
<text x="
|
|
43
|
-
<text x="
|
|
44
|
-
<text x="
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
<text x="
|
|
48
|
-
<line x1="
|
|
49
|
-
<text x="
|
|
50
|
-
<line x1="
|
|
51
|
-
<text x="
|
|
52
|
-
<line x1="
|
|
53
|
-
<text x="
|
|
54
|
-
<line x1="
|
|
55
|
-
<text x="
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
<
|
|
64
|
-
<
|
|
65
|
-
<text x="
|
|
66
|
-
<
|
|
67
|
-
<text x="
|
|
68
|
-
<
|
|
69
|
-
<
|
|
70
|
-
<
|
|
71
|
-
<
|
|
72
|
-
<
|
|
73
|
-
<
|
|
74
|
-
<
|
|
75
|
-
<
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
<
|
|
80
|
-
<
|
|
81
|
-
<
|
|
82
|
-
<text x="
|
|
83
|
-
<
|
|
84
|
-
<text x="
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
<
|
|
88
|
-
<
|
|
89
|
-
<
|
|
90
|
-
<
|
|
91
|
-
<text x="
|
|
92
|
-
<
|
|
93
|
-
<text x="
|
|
94
|
-
<
|
|
95
|
-
<text x="
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
<
|
|
99
|
-
<
|
|
100
|
-
<
|
|
101
|
-
<
|
|
102
|
-
<
|
|
103
|
-
<text x="
|
|
104
|
-
<
|
|
105
|
-
<text x="
|
|
106
|
-
<line x1="
|
|
107
|
-
<text x="
|
|
108
|
-
<line x1="
|
|
109
|
-
<text x="
|
|
110
|
-
|
|
111
|
-
<!--
|
|
112
|
-
<
|
|
113
|
-
<rect x="900" y="255" width="3" height="32" fill="#333"/>
|
|
114
|
-
<rect x="900" y="255" width="240" height="32" fill="#0a0a0a" stroke="#1a1a1a"/>
|
|
115
|
-
<text x="912" y="274" fill="#fff" font-size="12" font-weight="600">HP EliteBook</text>
|
|
116
|
-
<text x="912" y="282" fill="#555" font-size="9">Database Node</text>
|
|
117
|
-
<text x="1126" y="271" fill="#444" font-size="9" text-anchor="end">100.121.187.67</text>
|
|
118
|
-
<text x="1126" y="282" fill="#555" font-size="9" text-anchor="end">2 containers</text>
|
|
119
|
-
<circle cx="1132" cy="277" r="4" fill="#22c55e"/>
|
|
120
|
-
<text x="912" y="304" fill="#e0e0e0" font-size="10">PostgreSQL 17</text><text x="1126" y="304" fill="#444" font-size="10" text-anchor="end">:5433</text>
|
|
121
|
-
<line x1="912" y1="310" x2="1126" y2="310" stroke="#111" stroke-width="0.5"/>
|
|
122
|
-
<text x="912" y="324" fill="#e0e0e0" font-size="10">OpenCode</text><text x="1126" y="324" fill="#444" font-size="10" text-anchor="end">:3200</text>
|
|
123
|
-
<line x1="912" y1="330" x2="1126" y2="330" stroke="#111" stroke-width="0.5"/>
|
|
124
|
-
<text x="912" y="344" fill="#e0e0e0" font-size="10">Portainer Agent</text><text x="1126" y="344" fill="#444" font-size="10" text-anchor="end">:9001</text>
|
|
125
|
-
|
|
126
|
-
<!-- Section: Cloud -->
|
|
127
|
-
<text x="68" y="535" fill="#333" font-size="9" letter-spacing="2">CLOUD SERVICES</text>
|
|
50
|
+
<line x1="450" y1="104" x2="450" y2="118" class="line-v"/>
|
|
51
|
+
<polygon points="447,118 453,118 450,124" class="arrow"/>
|
|
52
|
+
|
|
53
|
+
<!-- ==================== 4 NODES ==================== -->
|
|
54
|
+
<text x="48" y="140" class="t-label">NODES</text>
|
|
55
|
+
|
|
56
|
+
<!-- ASUS -->
|
|
57
|
+
<rect x="40" y="148" width="200" height="184" class="card"/>
|
|
58
|
+
<rect x="40" y="148" width="200" height="26" class="card-hdr"/>
|
|
59
|
+
<rect x="40" y="148" width="3" height="26" class="line-accent" style="stroke:none;fill:#fff"/>
|
|
60
|
+
<circle cx="228" cy="161" r="3" class="dot-on"/>
|
|
61
|
+
<text x="52" y="163" class="t-name">ASUS Zenbook</text>
|
|
62
|
+
<text x="52" y="172" class="t-role">Production Engine</text>
|
|
63
|
+
<text x="210" y="172" text-anchor="end" class="t-ip">7 containers</text>
|
|
64
|
+
<text x="52" y="192" class="t-svc">MCP Server</text><text x="228" y="192" text-anchor="end" class="t-port">:8811</text>
|
|
65
|
+
<line x1="52" y1="197" x2="228" y2="197" style="stroke:#111;stroke-width:0.5"/>
|
|
66
|
+
<text x="52" y="209" class="t-svc">Command Dashboard</text><text x="228" y="209" text-anchor="end" class="t-port">:7900</text>
|
|
67
|
+
<line x1="52" y1="214" x2="228" y2="214" style="stroke:#111;stroke-width:0.5"/>
|
|
68
|
+
<text x="52" y="226" class="t-svc">Docker Registry</text><text x="228" y="226" text-anchor="end" class="t-port">:5000</text>
|
|
69
|
+
<line x1="52" y1="231" x2="228" y2="231" style="stroke:#111;stroke-width:0.5"/>
|
|
70
|
+
<text x="52" y="243" class="t-svc">OpenCode</text><text x="228" y="243" text-anchor="end" class="t-port">:3200</text>
|
|
71
|
+
<line x1="52" y1="248" x2="228" y2="248" style="stroke:#111;stroke-width:0.5"/>
|
|
72
|
+
<text x="52" y="260" class="t-svc">Portainer Agent</text><text x="228" y="260" text-anchor="end" class="t-port">:9001</text>
|
|
73
|
+
<line x1="52" y1="265" x2="228" y2="265" style="stroke:#111;stroke-width:0.5"/>
|
|
74
|
+
<text x="52" y="277" class="t-svc">Builder + Sandbox</text><text x="228" y="277" text-anchor="end" class="t-port">:4000 :3100</text>
|
|
75
|
+
|
|
76
|
+
<!-- EC2 -->
|
|
77
|
+
<rect x="250" y="148" width="200" height="184" class="card"/>
|
|
78
|
+
<rect x="250" y="148" width="200" height="26" class="card-hdr"/>
|
|
79
|
+
<rect x="250" y="148" width="3" height="26" style="fill:#666"/>
|
|
80
|
+
<circle cx="438" cy="161" r="3" class="dot-on"/>
|
|
81
|
+
<text x="262" y="163" class="t-name">AWS EC2</text>
|
|
82
|
+
<text x="262" y="172" class="t-role">Monitoring + Bots</text>
|
|
83
|
+
<text x="420" y="172" text-anchor="end" class="t-ip">8 containers</text>
|
|
84
|
+
<text x="262" y="192" class="t-svc">Telegram Bot (Claude)</text><text x="438" y="192" text-anchor="end" class="t-port">:3456</text>
|
|
85
|
+
<line x1="262" y1="197" x2="438" y2="197" style="stroke:#111;stroke-width:0.5"/>
|
|
86
|
+
<text x="262" y="209" class="t-svc">Lucas CTO MCP</text><text x="438" y="209" text-anchor="end" class="t-port">:8820</text>
|
|
87
|
+
<line x1="262" y1="214" x2="438" y2="214" style="stroke:#111;stroke-width:0.5"/>
|
|
88
|
+
<text x="262" y="226" class="t-svc">Health Monitor</text><text x="438" y="226" text-anchor="end" class="t-port">24/7</text>
|
|
89
|
+
<line x1="262" y1="231" x2="438" y2="231" style="stroke:#111;stroke-width:0.5"/>
|
|
90
|
+
<text x="262" y="243" class="t-svc">OpenCode + Dashboard</text><text x="438" y="243" text-anchor="end" class="t-port">:3200 :9090</text>
|
|
91
|
+
<line x1="262" y1="248" x2="438" y2="248" style="stroke:#111;stroke-width:0.5"/>
|
|
92
|
+
<text x="262" y="260" class="t-svc">WorldMonitor + E2E</text><text x="438" y="260" text-anchor="end" class="t-port">:4000</text>
|
|
93
|
+
<line x1="262" y1="265" x2="438" y2="265" style="stroke:#111;stroke-width:0.5"/>
|
|
94
|
+
<text x="262" y="277" class="t-svc">Portainer Agent</text><text x="438" y="277" text-anchor="end" class="t-port">:9001</text>
|
|
95
|
+
|
|
96
|
+
<!-- Oracle -->
|
|
97
|
+
<rect x="460" y="148" width="200" height="184" class="card"/>
|
|
98
|
+
<rect x="460" y="148" width="200" height="26" class="card-hdr"/>
|
|
99
|
+
<rect x="460" y="148" width="3" height="26" style="fill:#444"/>
|
|
100
|
+
<circle cx="648" cy="161" r="3" class="dot-on"/>
|
|
101
|
+
<text x="472" y="163" class="t-name">Oracle Cloud</text>
|
|
102
|
+
<text x="472" y="172" class="t-role">Docker Infrastructure</text>
|
|
103
|
+
<text x="630" y="172" text-anchor="end" class="t-ip">8 containers</text>
|
|
104
|
+
<text x="472" y="192" class="t-svc">Portainer</text><text x="648" y="192" text-anchor="end" class="t-port">:9000</text>
|
|
105
|
+
<line x1="472" y1="197" x2="648" y2="197" style="stroke:#111;stroke-width:0.5"/>
|
|
106
|
+
<text x="472" y="209" class="t-svc">Cloudflare Tunnel</text><text x="648" y="209" text-anchor="end" class="t-port">origin</text>
|
|
107
|
+
<line x1="472" y1="214" x2="648" y2="214" style="stroke:#111;stroke-width:0.5"/>
|
|
108
|
+
<text x="472" y="226" class="t-svc">Grafana + Prometheus</text><text x="648" y="226" text-anchor="end" class="t-port">:3000 :9090</text>
|
|
109
|
+
<line x1="472" y1="231" x2="648" y2="231" style="stroke:#111;stroke-width:0.5"/>
|
|
110
|
+
<text x="472" y="243" class="t-svc">Uptime Kuma</text><text x="648" y="243" text-anchor="end" class="t-port">:3001</text>
|
|
111
|
+
<line x1="472" y1="248" x2="648" y2="248" style="stroke:#111;stroke-width:0.5"/>
|
|
112
|
+
<text x="472" y="260" class="t-svc">CloudBeaver</text><text x="648" y="260" text-anchor="end" class="t-port">:8978</text>
|
|
113
|
+
<line x1="472" y1="265" x2="648" y2="265" style="stroke:#111;stroke-width:0.5"/>
|
|
114
|
+
<text x="472" y="277" class="t-svc">Nginx Proxy</text><text x="648" y="277" text-anchor="end" class="t-port">:80/443</text>
|
|
115
|
+
|
|
116
|
+
<!-- HP -->
|
|
117
|
+
<rect x="670" y="148" width="190" height="108" class="card"/>
|
|
118
|
+
<rect x="670" y="148" width="190" height="26" class="card-hdr"/>
|
|
119
|
+
<rect x="670" y="148" width="3" height="26" style="fill:#333"/>
|
|
120
|
+
<circle cx="848" cy="161" r="3" class="dot-on"/>
|
|
121
|
+
<text x="682" y="163" class="t-name">HP EliteBook</text>
|
|
122
|
+
<text x="682" y="172" class="t-role">Database Node</text>
|
|
123
|
+
<text x="838" y="172" text-anchor="end" class="t-ip">2 containers</text>
|
|
124
|
+
<text x="682" y="192" class="t-svc">PostgreSQL 17</text><text x="848" y="192" text-anchor="end" class="t-port">:5433</text>
|
|
125
|
+
<line x1="682" y1="197" x2="848" y2="197" style="stroke:#111;stroke-width:0.5"/>
|
|
126
|
+
<text x="682" y="209" class="t-svc">OpenCode</text><text x="848" y="209" text-anchor="end" class="t-port">:3200</text>
|
|
127
|
+
<line x1="682" y1="214" x2="848" y2="214" style="stroke:#111;stroke-width:0.5"/>
|
|
128
|
+
<text x="682" y="226" class="t-svc">Portainer Agent</text><text x="848" y="226" text-anchor="end" class="t-port">:9001</text>
|
|
129
|
+
|
|
130
|
+
<!-- ==================== CLOUD ==================== -->
|
|
131
|
+
<text x="48" y="352" class="t-label">CLOUD SERVICES</text>
|
|
128
132
|
|
|
129
133
|
<!-- Cloudflare -->
|
|
130
|
-
<rect x="
|
|
131
|
-
<rect x="
|
|
132
|
-
<
|
|
133
|
-
<text x="
|
|
134
|
-
<
|
|
135
|
-
<
|
|
136
|
-
<text x="
|
|
137
|
-
<text x="
|
|
138
|
-
<
|
|
139
|
-
<text x="
|
|
140
|
-
<
|
|
141
|
-
<text x="
|
|
142
|
-
<
|
|
143
|
-
<text x="
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
<rect x="40" y="360" width="280" height="120" class="card"/>
|
|
135
|
+
<rect x="40" y="360" width="280" height="24" class="card-hdr"/>
|
|
136
|
+
<text x="52" y="375" class="t-name">Cloudflare</text>
|
|
137
|
+
<text x="160" y="375" class="t-role">CDN + Storage + AI</text>
|
|
138
|
+
<rect x="280" y="364" width="32" height="14" class="badge"/><text x="296" y="374" text-anchor="middle" class="badge-text">EDGE</text>
|
|
139
|
+
<text x="52" y="398" class="t-svc">R2 Object Storage</text>
|
|
140
|
+
<text x="52" y="412" class="t-svc">Flux Image Gen (FREE)</text>
|
|
141
|
+
<text x="52" y="426" class="t-svc">Stream Video CDN</text>
|
|
142
|
+
<text x="52" y="440" class="t-svc">Tunnel (11 subdomains)</text>
|
|
143
|
+
<text x="52" y="454" class="t-svc">DNS + WAF Trace</text>
|
|
144
|
+
<text x="308" y="398" text-anchor="end" class="t-port">navada-assets</text>
|
|
145
|
+
<text x="308" y="412" text-anchor="end" class="t-port">Workers AI</text>
|
|
146
|
+
<text x="308" y="426" text-anchor="end" class="t-port">HLS</text>
|
|
147
|
+
<text x="308" y="440" text-anchor="end" class="t-port">*.navada-edge-server.uk</text>
|
|
148
|
+
|
|
149
|
+
<!-- AI Services -->
|
|
150
|
+
<rect x="330" y="360" width="280" height="120" class="card"/>
|
|
151
|
+
<rect x="330" y="360" width="280" height="24" class="card-hdr"/>
|
|
152
|
+
<text x="342" y="375" class="t-name">AI Services</text>
|
|
153
|
+
<text x="440" y="375" class="t-role">Inference + Generation</text>
|
|
154
|
+
<rect x="570" y="364" width="32" height="14" class="badge"/><text x="586" y="374" text-anchor="middle" class="badge-text">API</text>
|
|
155
|
+
<text x="342" y="398" class="t-svc">YOLO v8 Detection</text><text x="598" y="398" text-anchor="end" class="t-port">ASUS :8765</text>
|
|
156
|
+
<text x="342" y="412" class="t-svc">Qwen Coder 32B</text><text x="598" y="412" text-anchor="end" class="t-port">FREE (HuggingFace)</text>
|
|
157
|
+
<text x="342" y="426" class="t-svc">GPT-4o / DALL-E 3</text><text x="598" y="426" text-anchor="end" class="t-port">OpenAI</text>
|
|
158
|
+
<text x="342" y="440" class="t-svc">Claude Sonnet 4</text><text x="598" y="440" text-anchor="end" class="t-port">Anthropic</text>
|
|
159
|
+
<text x="342" y="454" class="t-svc">Flux (FREE)</text><text x="598" y="454" text-anchor="end" class="t-port">Cloudflare Workers</text>
|
|
146
160
|
|
|
147
161
|
<!-- Azure -->
|
|
148
|
-
<rect x="
|
|
149
|
-
<rect x="
|
|
150
|
-
<
|
|
151
|
-
<text x="
|
|
152
|
-
<
|
|
153
|
-
<
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
<rect x="
|
|
159
|
-
<rect x="
|
|
160
|
-
<
|
|
161
|
-
<text x="
|
|
162
|
-
<text x="
|
|
163
|
-
|
|
164
|
-
<
|
|
165
|
-
<
|
|
166
|
-
<
|
|
167
|
-
<text x="
|
|
168
|
-
<
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
<text x="
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
<rect x="
|
|
175
|
-
<text x="
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
<
|
|
179
|
-
<text x="
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
<
|
|
183
|
-
<text x="
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
<
|
|
187
|
-
<text x="
|
|
188
|
-
|
|
189
|
-
<rect x="730" y="762" width="170" height="30" fill="none" stroke="#222"/>
|
|
190
|
-
<text x="815" y="778" fill="#e0e0e0" font-size="11" text-anchor="middle">REST API</text>
|
|
191
|
-
<text x="815" y="788" fill="#555" font-size="8" text-anchor="middle">GET /api/v1/status</text>
|
|
162
|
+
<rect x="620" y="360" width="240" height="60" class="card"/>
|
|
163
|
+
<rect x="620" y="360" width="240" height="24" class="card-hdr"/>
|
|
164
|
+
<text x="632" y="375" class="t-name">Azure</text>
|
|
165
|
+
<text x="700" y="375" class="t-role">Automation</text>
|
|
166
|
+
<rect x="822" y="364" width="30" height="14" class="badge"/><text x="837" y="374" text-anchor="middle" class="badge-text">UK</text>
|
|
167
|
+
<text x="632" y="398" class="t-svc">n8n Workflows (Container Apps)</text>
|
|
168
|
+
|
|
169
|
+
<!-- ==================== AGENTS ==================== -->
|
|
170
|
+
<text x="48" y="502" class="t-label">AGENTS</text>
|
|
171
|
+
|
|
172
|
+
<rect x="40" y="510" width="410" height="56" class="card"/>
|
|
173
|
+
<rect x="40" y="510" width="410" height="24" class="card-hdr"/>
|
|
174
|
+
<text x="52" y="525" class="t-name">Lucas CTO</text>
|
|
175
|
+
<text x="160" y="525" class="t-role">EC2 :8820 — 8 tools</text>
|
|
176
|
+
<text x="52" y="548" class="t-svc">bash ssh docker_exec deploy read_file write_file list_files network_status</text>
|
|
177
|
+
|
|
178
|
+
<rect x="460" y="510" width="400" height="56" class="card"/>
|
|
179
|
+
<rect x="460" y="510" width="400" height="24" class="card-hdr"/>
|
|
180
|
+
<text x="472" y="525" class="t-name">Claude CoS</text>
|
|
181
|
+
<text x="580" y="525" class="t-role">EC2 :3456 — Chief of Staff</text>
|
|
182
|
+
<text x="472" y="548" class="t-svc">email image_gen SMS voice R2 research automation cost_tracking</text>
|
|
183
|
+
|
|
184
|
+
<!-- ==================== ACCESS ==================== -->
|
|
185
|
+
<text x="48" y="590" class="t-label">ACCESS THE NETWORK</text>
|
|
186
|
+
|
|
187
|
+
<rect x="40" y="598" width="820" height="52" class="card"/>
|
|
188
|
+
<rect x="80" y="610" width="150" height="28" class="pill-box"/>
|
|
189
|
+
<text x="155" y="625" text-anchor="middle" class="t-pill">SDK</text>
|
|
190
|
+
<text x="155" y="634" text-anchor="middle" class="t-pill-sub">npm i navada-edge-sdk</text>
|
|
191
|
+
|
|
192
|
+
<rect x="250" y="610" width="150" height="28" class="pill-box"/>
|
|
193
|
+
<text x="325" y="625" text-anchor="middle" class="t-pill">CLI</text>
|
|
194
|
+
<text x="325" y="634" text-anchor="middle" class="t-pill-sub">npm i -g navada-edge-cli</text>
|
|
195
|
+
|
|
196
|
+
<rect x="420" y="610" width="150" height="28" class="pill-box"/>
|
|
197
|
+
<text x="495" y="625" text-anchor="middle" class="t-pill">MCP</text>
|
|
198
|
+
<text x="495" y="634" text-anchor="middle" class="t-pill-sub">POST /mcp (JSON-RPC)</text>
|
|
199
|
+
|
|
200
|
+
<rect x="590" y="610" width="150" height="28" class="pill-box"/>
|
|
201
|
+
<text x="665" y="625" text-anchor="middle" class="t-pill">Docker</text>
|
|
202
|
+
<text x="665" y="634" text-anchor="middle" class="t-pill-sub">docker pull navada-edge-cli</text>
|
|
192
203
|
|
|
193
204
|
<!-- Footer -->
|
|
194
|
-
<rect x="
|
|
195
|
-
<text x="
|
|
196
|
-
|
|
205
|
+
<rect x="40" y="664" width="820" height="30" class="card"/>
|
|
206
|
+
<text x="450" y="684" text-anchor="middle" class="t-footer">NAVADA EDGE NETWORK — 4 Nodes | 25 Containers | 100% Docker | 2 AI Agents | 5 AI Models | MIT Open Source</text>
|
|
197
207
|
</svg>
|
package/package.json
CHANGED