Commit
·
d8deee5
1
Parent(s):
14f7865
Update: Comprehensive README with demo guide for judges and community
Browse files
README.md
CHANGED
|
@@ -7,7 +7,7 @@ sdk: gradio
|
|
| 7 |
app_file: app.py
|
| 8 |
pinned: false
|
| 9 |
license: mit
|
| 10 |
-
short_description:
|
| 11 |
|
| 12 |
tags:
|
| 13 |
- mcp-in-action-track-enterprise
|
|
@@ -18,590 +18,129 @@ tags:
|
|
| 18 |
- building-mcp-track-creative
|
| 19 |
---
|
| 20 |
|
| 21 |
-
# 🚀 NACC
|
| 22 |
|
| 23 |
-
> **
|
| 24 |
|
| 25 |
-
NACC
|
| 26 |
|
| 27 |
---
|
| 28 |
|
| 29 |
-
|
| 30 |
-
### 🐦 [See it on X / LinkedIn](LINK_TO_YOUR_SOCIAL_POST_HERE)
|
| 31 |
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
## 🏆 Hackathon Tracks
|
| 35 |
-
|
| 36 |
-
### 🎯 Primary: Track 2 - MCP in Action
|
| 37 |
-
|
| 38 |
-
NACC is a **complete AI agent application** that demonstrates autonomous reasoning, planning, and execution:
|
| 39 |
-
|
| 40 |
-
* **🏢 Enterprise Applications** (`mcp-in-action-track-enterprise`): Multi-node orchestration for distributed infrastructure management, automated deployments, and coordinated system administration
|
| 41 |
-
* **👤 Consumer Applications** (`mcp-in-action-track-consumer`): User-friendly natural language interface for home labs, personal workflows, and everyday task automation
|
| 42 |
-
* **🎨 Creative Applications** (`mcp-in-action-track-creative`): Innovative hub-and-spoke architecture enabling unprecedented cross-machine AI coordination and distributed creative workflows
|
| 43 |
-
|
| 44 |
-
**What makes NACC an AI Agent Application:**
|
| 45 |
-
- **Autonomous Reasoning**: AI interprets complex multi-step requests and plans execution across nodes
|
| 46 |
-
- **Dynamic Planning**: Intelligently routes commands based on node capabilities and current context
|
| 47 |
-
- **Autonomous Execution**: Executes coordinated actions across multiple machines without manual intervention
|
| 48 |
-
|
| 49 |
-
### 🔧 Secondary: Track 1 - Building MCP
|
| 50 |
-
|
| 51 |
-
NACC also functions as an **MCP Server** extending LLM capabilities:
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
| 56 |
|
| 57 |
-
|
| 58 |
|
| 59 |
-
|
| 60 |
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
-
|
| 64 |
-
-
|
| 65 |
-
-
|
| 66 |
-
- [Why Blaxel](#-why-blaxel-powers-nacc)
|
| 67 |
-
- [How It Works](#-how-it-works)
|
| 68 |
-
- [Installation & Setup](#%EF%B8%8F-installation--setup)
|
| 69 |
-
- [Configuration](#%EF%B8%8F-configuration)
|
| 70 |
-
- [Usage Guide](#-usage-guide)
|
| 71 |
-
- [Example Workflows](#-example-workflows)
|
| 72 |
-
- [Tech Stack](#%EF%B8%8F-tech-stack)
|
| 73 |
-
- [Platform Compatibility](#-platform-compatibility)
|
| 74 |
-
- [Troubleshooting](#-troubleshooting)
|
| 75 |
-
- [FAQ](#-faq)
|
| 76 |
-
- [Team Members](#-team-members)
|
| 77 |
|
| 78 |
---
|
| 79 |
|
| 80 |
-
##
|
| 81 |
-
|
| 82 |
-
NACC uses a **Hub-and-Spoke** architecture where a central Orchestrator manages multiple distributed Nodes.
|
| 83 |
-
|
| 84 |
-
```mermaid
|
| 85 |
-
graph TD
|
| 86 |
-
User["👤 User"] -->|Natural Language| UI["💻 NACC Web UI / Claude Desktop"]
|
| 87 |
-
UI -->|JSON-RPC| Orch["🧠 Orchestrator - The Brain"]
|
| 88 |
-
|
| 89 |
-
subgraph Local Network
|
| 90 |
-
Orch -->|HTTP/MCP| Node1["🖥️ Node 1 - MacBook"]
|
| 91 |
-
Orch -->|HTTP/MCP| Node2["🐧 Node 2 - Kali VM"]
|
| 92 |
-
Orch -->|HTTP/MCP| Node3["☁️ Node 3 - Ubuntu Server"]
|
| 93 |
-
end
|
| 94 |
-
|
| 95 |
-
Node1 -->|Execute| FS1["📂 Filesystem / Shell"]
|
| 96 |
-
Node2 -->|Execute| FS2["📂 Filesystem / Shell"]
|
| 97 |
-
Node3 -->|Execute| FS3["📂 Filesystem / Shell"]
|
| 98 |
-
```
|
| 99 |
-
|
| 100 |
-
## 🌟 Key Features
|
| 101 |
-
|
| 102 |
-
* **🗣️ Natural Language Control**: "Switch to Kali and scan the network" -> Executed instantly.
|
| 103 |
-
* **🔌 MCP Native**: Built from scratch on the Model Context Protocol for standardized communication.
|
| 104 |
-
* **📂 Dynamic File Operations**: Create, read, edit, and delete files across any connected node using natural language.
|
| 105 |
-
* **🔄 Context-Aware Navigation**: The system remembers which node you're on and your current directory.
|
| 106 |
-
* **🛡️ Secure & Private**: Designed for **local networks**. Your data stays within your LAN.
|
| 107 |
-
* **🎨 Professional UI**: Modern, dark-themed interface built with Gradio 6.0.
|
| 108 |
-
* **⚡ Powered by Blaxel**: Lightning-fast serverless AI inference with zero configuration.
|
| 109 |
-
* **🤖 Multi-Backend Support**: Works with OpenAI, Anthropic, Gemini, Mistral, Llama, or local LLMs via Ollama.
|
| 110 |
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
## ⚡ Why Blaxel Powers NACC
|
| 114 |
|
| 115 |
-
|
| 116 |
|
| 117 |
-
|
| 118 |
-
* **Zero Configuration**: Works out of the box - no API keys needed for testing
|
| 119 |
-
* **Lightning Fast**: Sub-second response times for command execution
|
| 120 |
-
* **Always Available**: 99.9% uptime serverless infrastructure
|
| 121 |
-
* **Cost Effective**: Pay only for what you use, perfect for demos and development
|
| 122 |
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
* Automatically scales with your network growth
|
| 128 |
|
| 129 |
-
|
| 130 |
-
A huge thank you to the **Blaxel team** for building such a robust platform! Their commitment to making AI accessible and performant has been instrumental in bringing NACC to life. *We'd love to collaborate further - internship opportunities welcome!* 😊
|
| 131 |
|
| 132 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
|
| 134 |
---
|
| 135 |
|
| 136 |
-
##
|
| 137 |
-
|
| 138 |
-
NACC operates through a sophisticated request flow that bridges natural language and system commands:
|
| 139 |
-
|
| 140 |
-
```mermaid
|
| 141 |
-
sequenceDiagram
|
| 142 |
-
participant User
|
| 143 |
-
participant UI as NACC UI
|
| 144 |
-
participant LLM as AI Backend
|
| 145 |
-
participant Orch as Orchestrator
|
| 146 |
-
participant Node as Target Node
|
| 147 |
-
|
| 148 |
-
User->>UI: "Create file test.txt on kali-vm"
|
| 149 |
-
UI->>Orch: Send query with context
|
| 150 |
-
Orch->>LLM: Parse intent + context
|
| 151 |
-
LLM->>Orch: {tool: "write_file", node: "kali-vm", path: "test.txt"}
|
| 152 |
-
Orch->>Node: HTTP POST /tools/write-file
|
| 153 |
-
Node->>Node: Execute on filesystem
|
| 154 |
-
Node->>Orch: {success: true, path: "/home/user/test.txt"}
|
| 155 |
-
Orch->>UI: Format response
|
| 156 |
-
UI->>User: "✅ File created on kali-vm"
|
| 157 |
-
```
|
| 158 |
-
|
| 159 |
-
### Core Components
|
| 160 |
-
|
| 161 |
-
1. **UI Layer** (`nacc_ui/`): Gradio-based chat interface with context management
|
| 162 |
-
2. **Orchestrator** (`nacc_orchestrator/`): Central brain that routes requests and manages node registry
|
| 163 |
-
3. **Node Agents** (`nacc_node/`): Lightweight servers exposing MCP tools for file/shell operations
|
| 164 |
-
4. **LLM Backend**: Interprets natural language and selects appropriate tools
|
| 165 |
-
|
| 166 |
-
---
|
| 167 |
-
|
| 168 |
-
## 🛠️ Installation & Setup
|
| 169 |
-
|
| 170 |
-
### Prerequisites
|
| 171 |
-
* **Python 3.10+** installed on all machines.
|
| 172 |
-
* **Network**: All machines (Orchestrator and Nodes) must be on the **same local network** (LAN).
|
| 173 |
-
* **Git**: For cloning the repository.
|
| 174 |
-
|
| 175 |
-
### 🎮 Demo Guide
|
| 176 |
-
|
| 177 |
-
NACC can be demonstrated in two powerful ways. Choose the one that fits your environment:
|
| 178 |
-
|
| 179 |
-
### ☁️ Option 1: Cloud Demo (Hugging Face Spaces)
|
| 180 |
-
**Perfect for:** Judges, quick testing, zero setup.
|
| 181 |
-
|
| 182 |
-
1. **Open the Space**: Go to the NACC Space.
|
| 183 |
-
2. **Auto-Connect**: You will see **`✅ Online: Local Node (Demo)`** immediately. This is a real node running *inside* the Space container.
|
| 184 |
-
3. **Try Commands**:
|
| 185 |
-
* "List files in current directory"
|
| 186 |
-
* "Create a file named hello.txt with content 'Hello from HF Space!'"
|
| 187 |
-
4. **Multi-Node Magic** (Optional):
|
| 188 |
-
* If you deployed the **VM Node Space**, connect to it:
|
| 189 |
-
* *"Connect to node at https://mcp-1st-birthday-virtual-machine.hf.space and name it Remote-VM"*
|
| 190 |
-
* Now you can switch between nodes: *"Switch to Remote-VM and list files"*
|
| 191 |
-
|
| 192 |
-
### 🏠 Option 2: Real-World Demo (Local Network)
|
| 193 |
-
**Perfect for:** Full power, controlling physical devices, home labs.
|
| 194 |
-
|
| 195 |
-
1. **Run Orchestrator**: `python -m src.nacc_orchestrator.cli serve` on your main computer.
|
| 196 |
-
2. **Run Nodes**: `python -m src.nacc_node.cli serve` on your other laptops, Raspberry Pis, or VMs.
|
| 197 |
-
3. **Connect**:
|
| 198 |
-
* *"Connect to node at 192.168.1.15 and name it MacBook-Pro"*
|
| 199 |
-
* *"Connect to node at 192.168.1.20 and name it Kali-Linux"*
|
| 200 |
-
4. **Orchestrate**:
|
| 201 |
-
* *"Check CPU usage on all nodes"*
|
| 202 |
-
* *"Sync the 'project' folder from MacBook-Pro to Kali-Linux"*
|
| 203 |
-
|
| 204 |
-
---
|
| 205 |
-
|
| 206 |
-
## 🚀 Quick Start (Local) (For Judges)
|
| 207 |
-
|
| 208 |
-
```bash
|
| 209 |
-
# Clone the repository
|
| 210 |
-
git clone https://github.com/Vasanthadithya-mundrathi/NACC.git
|
| 211 |
-
cd NACC
|
| 212 |
|
| 213 |
-
|
| 214 |
-
python3 -m venv .venv
|
| 215 |
-
source .venv/bin/activate
|
| 216 |
-
pip install -r requirements.txt
|
| 217 |
|
| 218 |
-
|
| 219 |
-
./start_nacc.sh
|
| 220 |
-
```
|
| 221 |
-
|
| 222 |
-
Open your browser to `http://localhost:7860` - You're ready!
|
| 223 |
-
|
| 224 |
-
### Detailed Setup
|
| 225 |
-
|
| 226 |
-
#### 1. Setting up the Orchestrator (The Brain)
|
| 227 |
-
Run this on your main computer (e.g., MacBook, PC).
|
| 228 |
-
|
| 229 |
-
1. **Clone the Repository**
|
| 230 |
-
```bash
|
| 231 |
-
git clone https://github.com/Vasanthadithya-mundrathi/NACC.git
|
| 232 |
-
cd NACC
|
| 233 |
-
```
|
| 234 |
-
|
| 235 |
-
2. **Install Dependencies**
|
| 236 |
-
```bash
|
| 237 |
-
python3 -m venv .venv
|
| 238 |
-
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
| 239 |
-
pip install -r requirements.txt
|
| 240 |
-
```
|
| 241 |
-
|
| 242 |
-
3. **Make Scripts Executable** (Mac/Linux only)
|
| 243 |
-
```bash
|
| 244 |
-
chmod +x start_nacc.sh
|
| 245 |
-
```
|
| 246 |
-
|
| 247 |
-
4. **Start the Orchestrator**
|
| 248 |
-
```bash
|
| 249 |
-
./start_nacc.sh
|
| 250 |
-
```
|
| 251 |
-
|
| 252 |
-
The UI will be available at `http://localhost:7860`.
|
| 253 |
|
| 254 |
-
|
| 255 |
-
Run this on any other machine you want to control.
|
| 256 |
|
| 257 |
-
|
| 258 |
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
2. **Start the Node**
|
| 262 |
-
Run the node agent, specifying a unique name and port:
|
| 263 |
-
```bash
|
| 264 |
-
# On the Node machine (e.g., Kali VM)
|
| 265 |
-
python3 -m nacc_node.main --name "kali-vm" --host 0.0.0.0 --port 8001
|
| 266 |
-
```
|
| 267 |
-
|
| 268 |
-
*Note: `0.0.0.0` allows the node to accept connections from any IP on your local network. Note the IP address of this machine (e.g., `192.168.1.15`).*
|
| 269 |
-
|
| 270 |
-
---
|
| 271 |
-
|
| 272 |
-
## ⚙️ Configuration
|
| 273 |
-
|
| 274 |
-
### API Keys & Backend Selection
|
| 275 |
-
|
| 276 |
-
NACC supports multiple AI backends. You can configure them via:
|
| 277 |
-
|
| 278 |
-
1. **Environment Variables** (Recommended for production):
|
| 279 |
-
```bash
|
| 280 |
-
export OPENAI_API_KEY="sk-..."
|
| 281 |
-
export ANTHROPIC_API_KEY="sk-ant-..."
|
| 282 |
-
export GEMINI_API_KEY="..."
|
| 283 |
-
export BLAXEL_API_KEY="..."
|
| 284 |
-
```
|
| 285 |
-
|
| 286 |
-
2. **UI Settings**: Use the Settings tab in the NACC Web UI to enter keys and select your backend.
|
| 287 |
-
|
| 288 |
-
3. **Config Files**: Edit `configs/orchestrator-config.yml` for advanced configuration.
|
| 289 |
-
|
| 290 |
-
### Supported Backends
|
| 291 |
-
|
| 292 |
-
| Backend | Model | Notes |
|
| 293 |
-
|---------|-------|-------|
|
| 294 |
-
| **OpenAI** | GPT-4, GPT-4 Turbo | Best overall performance |
|
| 295 |
-
| **Anthropic** | Claude 3.5 Sonnet | Excellent for complex reasoning |
|
| 296 |
-
| **Google** | Gemini 1.5 Pro | Fast and cost-effective |
|
| 297 |
-
| **Blaxel** | (Serverless) | Pre-configured for quick start |
|
| 298 |
-
| **Ollama** | Llama 3, Mistral | Run locally (requires Docker) |
|
| 299 |
-
|
| 300 |
-
### Custom Configuration
|
| 301 |
-
|
| 302 |
-
Edit `configs/orchestrator-config.yml` to:
|
| 303 |
-
* Add static nodes (nodes that auto-connect on startup)
|
| 304 |
-
* Configure default timeouts
|
| 305 |
-
* Set audit log paths
|
| 306 |
-
* Customize allowed commands per node
|
| 307 |
-
|
| 308 |
-
Example:
|
| 309 |
-
```yaml
|
| 310 |
-
nodes:
|
| 311 |
-
- node_id: "macbook-local"
|
| 312 |
-
transport: "local"
|
| 313 |
-
root_dir: "/Users/yourname"
|
| 314 |
-
tags: ["mac", "local"]
|
| 315 |
-
|
| 316 |
-
agent_backend:
|
| 317 |
-
provider: "openai"
|
| 318 |
-
model: "gpt-4-turbo"
|
| 319 |
-
```
|
| 320 |
|
| 321 |
---
|
| 322 |
|
| 323 |
-
##
|
| 324 |
-
|
| 325 |
-
### Connecting a Node
|
| 326 |
-
Once your Orchestrator and Node are running:
|
| 327 |
|
| 328 |
-
|
| 329 |
-
2. In the Chat interface, type:
|
| 330 |
-
> "Connect to node at 192.168.1.15 on port 8001 and name it kali-vm"
|
| 331 |
-
3. The system will register the node. You can verify by asking:
|
| 332 |
-
> "List all connected nodes"
|
| 333 |
|
| 334 |
-
### Controlling Nodes
|
| 335 |
-
You can now switch contexts and control any node naturally.
|
| 336 |
-
|
| 337 |
-
**Navigation & Exploration:**
|
| 338 |
```
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 343 |
```
|
| 344 |
|
| 345 |
-
|
| 346 |
-
```
|
| 347 |
-
"Create a file named 'notes.txt' with content 'Meeting at 5 PM'"
|
| 348 |
-
"Read the content of 'notes.txt'"
|
| 349 |
-
"Delete 'notes.txt'"
|
| 350 |
-
"Write 'Updated content' to existing.txt"
|
| 351 |
-
```
|
| 352 |
-
|
| 353 |
-
**Cross-Node Actions:**
|
| 354 |
-
```
|
| 355 |
-
"Switch to macbook-local"
|
| 356 |
-
"Share test.txt from kali-vm to macbook-local"
|
| 357 |
-
"Check system stats on all nodes"
|
| 358 |
-
```
|
| 359 |
-
|
| 360 |
-
### Using with MCP Clients (Claude Desktop)
|
| 361 |
-
|
| 362 |
-
NACC acts as an MCP Server, meaning you can connect it to Claude Desktop or any MCP-compatible client!
|
| 363 |
-
|
| 364 |
-
1. **Configure Claude Desktop**:
|
| 365 |
-
Add this to your `claude_desktop_config.json` (usually in `~/AppData/Roaming/Claude/` on Windows or `~/Library/Application Support/Claude/` on Mac):
|
| 366 |
-
```json
|
| 367 |
-
{
|
| 368 |
-
"mcpServers": {
|
| 369 |
-
"nacc": {
|
| 370 |
-
"command": "uv",
|
| 371 |
-
"args": [
|
| 372 |
-
"--directory",
|
| 373 |
-
"/absolute/path/to/NACC",
|
| 374 |
-
"run",
|
| 375 |
-
"nacc-orchestrator"
|
| 376 |
-
]
|
| 377 |
-
}
|
| 378 |
-
}
|
| 379 |
-
}
|
| 380 |
-
```
|
| 381 |
-
|
| 382 |
-
2. **Alternative (Python Direct)**:
|
| 383 |
-
```json
|
| 384 |
-
{
|
| 385 |
-
"mcpServers": {
|
| 386 |
-
"nacc": {
|
| 387 |
-
"command": "python3",
|
| 388 |
-
"args": [
|
| 389 |
-
"-m",
|
| 390 |
-
"nacc_orchestrator.mcp_server"
|
| 391 |
-
],
|
| 392 |
-
"env": {
|
| 393 |
-
"PYTHONPATH": "/absolute/path/to/NACC"
|
| 394 |
-
}
|
| 395 |
-
}
|
| 396 |
-
}
|
| 397 |
-
}
|
| 398 |
-
```
|
| 399 |
-
|
| 400 |
-
3. **Restart Claude Desktop**. You can now ask Claude:
|
| 401 |
-
> "List files on my Kali VM"
|
| 402 |
-
> "Create a backup directory on my Ubuntu server"
|
| 403 |
-
|
| 404 |
-
---
|
| 405 |
-
|
| 406 |
-
## 💡 Example Workflows
|
| 407 |
-
|
| 408 |
-
### Scenario 1: Basic File Operations (Local Node)
|
| 409 |
-
|
| 410 |
-
**Goal**: Organize your files using AI.
|
| 411 |
-
|
| 412 |
-
**Prompt**:
|
| 413 |
-
> "Create a directory called 'test_data', write a file named 'notes.txt' inside it with the text 'Hello World', and then read it back to me."
|
| 414 |
-
|
| 415 |
-
**What Happens**:
|
| 416 |
-
1. Intent Parser identifies 3 steps (Create Dir, Write File, Read File).
|
| 417 |
-
2. Orchestrator executes them sequentially on the local node.
|
| 418 |
-
3. Result: You see the file content "Hello World" in the chat.
|
| 419 |
-
|
| 420 |
-
### Scenario 2: Network Security Scan (Kali Node)
|
| 421 |
-
|
| 422 |
-
*Requires a connected Kali Linux node.*
|
| 423 |
-
|
| 424 |
-
**Goal**: Scan a target IP for vulnerabilities.
|
| 425 |
|
| 426 |
-
**Prompt**:
|
| 427 |
-
> "Switch to the Kali node. Run an nmap scan on 192.168.1.50 to find open ports. If you find port 80, try to curl the homepage."
|
| 428 |
-
|
| 429 |
-
**What Happens**:
|
| 430 |
-
1. Router routes the request to the `kali-vm` node.
|
| 431 |
-
2. Agent executes `nmap -F 192.168.1.50`.
|
| 432 |
-
3. Logic: If output contains "80/tcp open", the Agent executes `curl http://192.168.1.50`.
|
| 433 |
-
4. Result: The AI summarizes the open ports and the web page content.
|
| 434 |
-
|
| 435 |
-
### Scenario 3: Multi-Node Workflow
|
| 436 |
-
|
| 437 |
-
*Requires multiple connected nodes.*
|
| 438 |
-
|
| 439 |
-
**Goal**: Distributed task execution.
|
| 440 |
-
|
| 441 |
-
**Prompt**:
|
| 442 |
-
> "Check the CPU usage on the MacBook node, and if it's below 50%, tell the Cloud node to start the backup process."
|
| 443 |
-
|
| 444 |
-
**What Happens**:
|
| 445 |
-
1. Orchestrator queries MacBook node for system stats.
|
| 446 |
-
2. Orchestrator analyzes the CPU usage.
|
| 447 |
-
3. If condition is met, sends command `python backup_script.py` to Cloud node.
|
| 448 |
-
4. Result: A coordinated action across two different physical machines.
|
| 449 |
-
|
| 450 |
-
---
|
| 451 |
-
|
| 452 |
-
## 🛠️ Tech Stack
|
| 453 |
-
|
| 454 |
-
### Core Technologies
|
| 455 |
-
* **Frontend**: Gradio 6.0 (Python)
|
| 456 |
-
* **Backend**: FastAPI, Uvicorn
|
| 457 |
-
* **Protocol**: JSON-RPC 2.0 (MCP Standard)
|
| 458 |
-
* **AI Models**: OpenAI, Anthropic, Gemini, Mistral, Llama (via Ollama)
|
| 459 |
-
|
| 460 |
-
### Key Libraries
|
| 461 |
-
* `pydantic` - Data validation and settings management
|
| 462 |
-
* `httpx` - Async HTTP client for node communication
|
| 463 |
-
* `pyyaml` - Configuration file parsing
|
| 464 |
-
* `rich` - Terminal UI for debugging
|
| 465 |
-
|
| 466 |
-
### Compatibility
|
| 467 |
-
* **Primary Support**: macOS, Linux (Debian/Ubuntu/Kali)
|
| 468 |
-
* **Windows Support**: Recommended via **WSL2**. Native Windows support is experimental.
|
| 469 |
-
|
| 470 |
-
---
|
| 471 |
-
|
| 472 |
-
## 🔧 Troubleshooting
|
| 473 |
-
|
| 474 |
-
### Port Already in Use
|
| 475 |
-
**Error**: `Address already in use: 7860`
|
| 476 |
-
|
| 477 |
-
**Solution**: The system automatically finds the next open port. Check the terminal output for the correct URL (e.g., `http://127.0.0.1:7861`).
|
| 478 |
-
|
| 479 |
-
### Node Not Connecting
|
| 480 |
-
**Error**: "Could not connect to node"
|
| 481 |
-
|
| 482 |
-
**Solutions**:
|
| 483 |
-
1. Verify the node is running: `ps aux | grep nacc-node`
|
| 484 |
-
2. Check firewall settings allow port 8001
|
| 485 |
-
3. Confirm both machines are on the same local network
|
| 486 |
-
4. Try connecting to the node's IP directly in a browser: `http://192.168.1.15:8001/healthz`
|
| 487 |
-
|
| 488 |
-
### Permission Denied
|
| 489 |
-
**Error**: `Permission denied: './start_nacc.sh'`
|
| 490 |
-
|
| 491 |
-
**Solution** (Mac/Linux):
|
| 492 |
-
```bash
|
| 493 |
-
chmod +x start_nacc.sh
|
| 494 |
```
|
| 495 |
-
|
| 496 |
-
|
| 497 |
-
|
| 498 |
-
|
| 499 |
-
|
| 500 |
-
|
| 501 |
-
|
| 502 |
-
|
|
|
|
|
|
|
|
|
|
| 503 |
```
|
| 504 |
|
| 505 |
-
### API Key Issues
|
| 506 |
-
**Error**: "Invalid API key"
|
| 507 |
-
|
| 508 |
-
**Solutions**:
|
| 509 |
-
1. Verify your API key is correctly set in environment variables or UI settings
|
| 510 |
-
2. Try using the Blaxel backend (pre-configured)
|
| 511 |
-
3. Switch to local Ollama if you have it running
|
| 512 |
-
|
| 513 |
-
---
|
| 514 |
-
|
| 515 |
-
## 💻 Platform Compatibility
|
| 516 |
-
|
| 517 |
-
### ✅ Fully Supported Platforms
|
| 518 |
-
|
| 519 |
-
NACC was **built and extensively tested** on the following platforms:
|
| 520 |
-
|
| 521 |
-
* **macOS** (Primary development platform)
|
| 522 |
-
* **Linux** - Debian/Ubuntu/Kali (Tested on Kali Linux VM)
|
| 523 |
-
|
| 524 |
-
These platforms provide the best experience with full feature support and stability.
|
| 525 |
-
|
| 526 |
-
### ⚠️ Windows Compatibility Warning
|
| 527 |
-
|
| 528 |
-
**NACC is NOT recommended for Windows** and may not work properly:
|
| 529 |
-
|
| 530 |
-
* **Built on macOS**: The entire system was developed and optimized for Unix-like environments
|
| 531 |
-
* **Tested on Linux**: All testing and verification was done on macOS and Kali Linux
|
| 532 |
-
* **Shell Dependencies**: Many core features rely on bash/sh commands that don't translate well to Windows
|
| 533 |
-
* **Path Handling**: File system operations use Unix path conventions
|
| 534 |
-
|
| 535 |
-
**If you must use Windows**:
|
| 536 |
-
1. Use **WSL2 (Windows Subsystem for Linux)** - This is the ONLY supported way
|
| 537 |
-
2. Native Windows PowerShell/CMD is experimental and will likely fail
|
| 538 |
-
3. Expect compatibility issues with file operations and shell commands
|
| 539 |
-
|
| 540 |
-
We strongly recommend using macOS or a Linux VM for the best experience.
|
| 541 |
-
|
| 542 |
---
|
| 543 |
|
| 544 |
-
##
|
| 545 |
-
|
| 546 |
-
**Q: Do I need an API Key to use NACC?**
|
| 547 |
-
|
| 548 |
-
A: NACC comes configured to use **Blaxel (Serverless)** by default for quick demos. For production, we recommend using your own OpenAI/Anthropic/Gemini key. You can also run **Ollama locally** (Docker required) for completely free, offline operation.
|
| 549 |
-
|
| 550 |
-
**Q: Is NACC secure?**
|
| 551 |
-
|
| 552 |
-
A: Yes, NACC is designed for **local network use only**. All communication between the Orchestrator and Nodes happens over your LAN. However, **do not expose Node ports to the public internet** without additional security layers (VPN/SSH Tunnel).
|
| 553 |
-
|
| 554 |
-
**Q: Can I use NACC in production?**
|
| 555 |
-
|
| 556 |
-
A: NACC is currently a hackathon project and proof-of-concept. While it's functional, we recommend additional hardening (authentication, encryption, rate limiting) before production use.
|
| 557 |
-
|
| 558 |
-
**Q: I'm on Windows. Will this work?**
|
| 559 |
-
|
| 560 |
-
A: Yes! We recommend using **WSL2** for the best experience. If running natively on Windows, some shell commands might need PowerShell equivalents.
|
| 561 |
-
|
| 562 |
-
**Q: Can I control Windows machines?**
|
| 563 |
-
|
| 564 |
-
A: Theoretically yes, but NACC is optimized for Unix-like systems (Mac/Linux). Windows support is experimental and may require custom tool configurations.
|
| 565 |
|
| 566 |
-
**
|
| 567 |
-
|
| 568 |
-
|
| 569 |
-
|
| 570 |
-
**
|
| 571 |
-
|
| 572 |
-
A: Absolutely! NACC Nodes can execute any script or command available on the target machine. Just use natural language to invoke them.
|
| 573 |
|
| 574 |
---
|
| 575 |
|
| 576 |
-
##
|
| 577 |
-
|
| 578 |
-
**Local Network Only**: NACC is designed for local network environments. Nodes are discovered and controlled via direct IP connections. Ensure all your devices are connected to the same Wi-Fi or LAN.
|
| 579 |
|
| 580 |
-
**
|
| 581 |
-
|
| 582 |
-
**
|
| 583 |
|
| 584 |
---
|
| 585 |
|
| 586 |
-
|
| 587 |
-
|
| 588 |
-
* [Vasanthadithya-mundrathi](https://huggingface.co/Vasanthfeb13) - Creator & Lead Developer
|
| 589 |
-
|
| 590 |
-
---
|
| 591 |
-
|
| 592 |
-
## 🎯 Project Goals
|
| 593 |
-
|
| 594 |
-
NACC was created for the **Hugging Face MCP Birthday Hackathon 2025** to demonstrate:
|
| 595 |
-
|
| 596 |
-
1. **MCP as a Universal Interface**: How the Model Context Protocol can unify disparate systems
|
| 597 |
-
2. **Natural Language Operations**: Making system administration accessible through conversation
|
| 598 |
-
3. **Distributed AI Orchestration**: Coordinating multiple agents across network boundaries
|
| 599 |
-
4. **Practical AI Applications**: Real-world use cases beyond chatbots
|
| 600 |
-
|
| 601 |
-
---
|
| 602 |
-
|
| 603 |
-
**Happy Hacking!** 🚀
|
| 604 |
-
|
| 605 |
-
*Created for the Hugging Face MCP Birthday Hackathon 2025*
|
| 606 |
-
*Built with ❤️ by Vasanthadithya Mundrathi*
|
| 607 |
-
|
|
|
|
| 7 |
app_file: app.py
|
| 8 |
pinned: false
|
| 9 |
license: mit
|
| 10 |
+
short_description: AI-Powered Network Orchestration via MCP
|
| 11 |
|
| 12 |
tags:
|
| 13 |
- mcp-in-action-track-enterprise
|
|
|
|
| 18 |
- building-mcp-track-creative
|
| 19 |
---
|
| 20 |
|
| 21 |
+
# 🚀 NACC: Network Agentic Command Control
|
| 22 |
|
| 23 |
+
> **AI-powered orchestration for distributed systems using Model Context Protocol (MCP)**
|
| 24 |
|
| 25 |
+
NACC transforms multiple computers into a unified intelligent network, controllable through natural language. Built from scratch for the HF MCP Birthday Hackathon 2025.
|
| 26 |
|
| 27 |
---
|
| 28 |
|
| 29 |
+
## 🎯 HuggingFace Space Demo
|
|
|
|
| 30 |
|
| 31 |
+
### Quick Start
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
+
1. **List nodes**: `list nodes`
|
| 34 |
+
2. **Switch to VM**: `switch to vm-node-01`
|
| 35 |
+
3. **Explore files**: `list files` → `navigate to /app/src`
|
| 36 |
+
4. **Try file ops**: `navigate to /tmp` → `create a file named demo.txt with content Hello!`
|
| 37 |
|
| 38 |
+
### Demo Instructions
|
| 39 |
|
| 40 |
+
📚 **Full demo guide available in the UI** - Open "Help & Instructions" accordion at the bottom
|
| 41 |
|
| 42 |
+
**Key Points**:
|
| 43 |
+
- VM Space (`vm-node-01`) - Remote node simulation
|
| 44 |
+
- File operations work in `/tmp/` directory
|
| 45 |
+
- Use absolute paths for navigation: `/app/src`, `/tmp`
|
| 46 |
+
- AI-powered natural language commands
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
---
|
| 49 |
|
| 50 |
+
## 🏆 For Judges
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
+
### What Makes NACC Special
|
|
|
|
|
|
|
| 53 |
|
| 54 |
+
**Built from Zero**: Every line of code written from scratch. No pre-made MCPs, no templates - pure original implementation.
|
| 55 |
|
| 56 |
+
**Original Vision**: NACC was designed for **real network environments** - controlling multiple PCs, servers, and VMs on the same network with full system access.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
|
| 58 |
+
**Space Adaptation**: To showcase on HuggingFace Spaces, I created a unique two-space architecture:
|
| 59 |
+
- **Main Space**: Orchestrator + UI (this space)
|
| 60 |
+
- **VM Space**: Simulated remote node
|
| 61 |
+
- **HTTP Bridge**: Connects both spaces to simulate network communication
|
|
|
|
| 62 |
|
| 63 |
+
**Trade-offs**: Limited operations to protect running code. Real NACC (see demo videos) has full filesystem access, file sharing, and multi-node orchestration.
|
|
|
|
| 64 |
|
| 65 |
+
**Features**:
|
| 66 |
+
- ✅ Natural language command interpretation
|
| 67 |
+
- ✅ AI-powered tool selection and routing
|
| 68 |
+
- ✅ Cross-space file operations
|
| 69 |
+
- ✅ System monitoring and node management
|
| 70 |
+
- ✅ MCP protocol implementation
|
| 71 |
|
| 72 |
---
|
| 73 |
|
| 74 |
+
## 💬 To The Community
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
|
| 76 |
+
Thank you for checking out NACC! This project represents months of learning and experimentation with AI agents and distributed systems.
|
|
|
|
|
|
|
|
|
|
| 77 |
|
| 78 |
+
**About Me**: Vasantha Dithya - 3rd year B.E. CSE student at CBIT, Hyderabad
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
+
**Looking For**: Internship opportunities, learning experiences, and chances to work on real-world AI/security projects.
|
|
|
|
| 81 |
|
| 82 |
+
If you like this approach to network orchestration, let's connect! I'm passionate about building secure, autonomous systems from the ground up.
|
| 83 |
|
| 84 |
+
📧 **Reach out**: [LinkedIn](https://www.linkedin.com/in/vasanthadithya-mundrathi-84a54031a/) | [GitHub](https://github.com/Vasanthadithya-mundrathi)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
---
|
| 87 |
|
| 88 |
+
## 🛠️ Architecture
|
|
|
|
|
|
|
|
|
|
| 89 |
|
| 90 |
+
### Two-Space Setup
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
```
|
| 93 |
+
┌──────────────────────────┐
|
| 94 |
+
│ Main Space (This) │
|
| 95 |
+
│ - UI + Orchestrator │
|
| 96 |
+
│ - AI Backend (Blaxel) │
|
| 97 |
+
│ - hf-space-local node │
|
| 98 |
+
└────────┬─────────────────┘
|
| 99 |
+
│ HTTP
|
| 100 |
+
↓
|
| 101 |
+
┌──────────────────────────┐
|
| 102 |
+
│ VM Space │
|
| 103 |
+
│ - NACC Node Server │
|
| 104 |
+
│ - vm-node-01 │
|
| 105 |
+
│ - Isolated filesystem │
|
| 106 |
+
└──────────────────────────┘
|
| 107 |
```
|
| 108 |
|
| 109 |
+
### Real NACC (Local Network)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
```
|
| 112 |
+
┌────────────┐ ┌────────────┐
|
| 113 |
+
│ MacBook │ │ Kali Linux │
|
| 114 |
+
│ (Node) │ │ (Node) │
|
| 115 |
+
└─────┬──────┘ └──────┬─────┘
|
| 116 |
+
│ │
|
| 117 |
+
└─────────┬──────────┘
|
| 118 |
+
│
|
| 119 |
+
┌──────┴──────┐
|
| 120 |
+
│ Orchestrator│
|
| 121 |
+
│ (AI Brain) │
|
| 122 |
+
└─────────────┘
|
| 123 |
```
|
| 124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
---
|
| 126 |
|
| 127 |
+
## 🤖 Tech Stack
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
|
| 129 |
+
- **Frontend**: Gradio
|
| 130 |
+
- **Backend**: FastAPI
|
| 131 |
+
- **AI**: Blaxel (GPT-4o-mini) + fallback regex
|
| 132 |
+
- **Protocol**: MCP (Model Context Protocol)
|
| 133 |
+
- **Communication**: HTTP/REST
|
| 134 |
+
- **Language**: Python 3.10+
|
|
|
|
| 135 |
|
| 136 |
---
|
| 137 |
|
| 138 |
+
## 📺 Links
|
|
|
|
|
|
|
| 139 |
|
| 140 |
+
- **GitHub**: [Vasanthadithya-mundrathi/NACC](https://github.com/Vasanthadithya-mundrathi/NACC)
|
| 141 |
+
- **VM Space**: [NACC-VM](https://huggingface.co/spaces/MCP-1st-Birthday/NACC-VM)
|
| 142 |
+
- **Creator**: [@Vasanthfeb13](https://huggingface.co/Vasanthfeb13)
|
| 143 |
|
| 144 |
---
|
| 145 |
|
| 146 |
+
Built with ❤️ for **HF MCP Birthday Hackathon 2025** 🎂
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|