Spaces:
Sleeping
Sleeping
Graham Paasch commited on
Commit ·
326ed6a
1
Parent(s): 46981df
Add judge quickstart and update Blaxel headers
Browse files- README.md +12 -0
- agent/llm_client.py +5 -1
- app.py +18 -6
README.md
CHANGED
|
@@ -17,6 +17,18 @@ pinned: false
|
|
| 17 |
|
| 18 |
Overgrowth is a living, digitally persistent network engineer. It simulates an out-of-band (OOB) mesh with MCP tools, JSON state, and Gradio UI to plan, simulate, triage, and roll back network changes safely.
|
| 19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
What Overgrowth simulates:
|
| 21 |
- Hardware-like OOB mesh via MCP-style tools (backups, drift, bootstrap, alerts)
|
| 22 |
- Persistent state across runs (`infra/*.json`)
|
|
|
|
| 17 |
|
| 18 |
Overgrowth is a living, digitally persistent network engineer. It simulates an out-of-band (OOB) mesh with MCP tools, JSON state, and Gradio UI to plan, simulate, triage, and roll back network changes safely.
|
| 19 |
|
| 20 |
+
## Submission checklist (for judges + us)
|
| 21 |
+
- ✅ Track tag present: `mcp-in-action-track-enterprise`
|
| 22 |
+
- ✅ README links: demo video + social post (replace placeholders below before final submit)
|
| 23 |
+
- ✅ Demo video recorded (1–5 min) hitting the runbook steps below
|
| 24 |
+
- ✅ Team handles listed here: `@your-hf-handles`
|
| 25 |
+
- ✅ Space Secrets: one LLM key (Blaxel preferred) + optional GNS3 creds if you demo brownfield
|
| 26 |
+
|
| 27 |
+
## Sponsor usage & eligibility
|
| 28 |
+
- **Blaxel LLM** (preferred; falls back to Anthropic/OpenAI/etc. if set) for Track 2 + Blaxel award
|
| 29 |
+
- **GNS3 brownfield** import path for enterprise realism
|
| 30 |
+
- **Modal/Anthropic/OpenAI/Nebius/HF** supported via env keys (already wired in llm_client)
|
| 31 |
+
|
| 32 |
What Overgrowth simulates:
|
| 33 |
- Hardware-like OOB mesh via MCP-style tools (backups, drift, bootstrap, alerts)
|
| 34 |
- Persistent state across runs (`infra/*.json`)
|
agent/llm_client.py
CHANGED
|
@@ -366,13 +366,17 @@ class LLMClient:
|
|
| 366 |
endpoint = f"{base_url.rstrip('/')}/chat/completions"
|
| 367 |
if monitor:
|
| 368 |
monitor.start_call(call_id, "llm", "blaxel", model, temperature=temperature)
|
|
|
|
| 369 |
payload = {
|
| 370 |
"model": model,
|
| 371 |
"messages": [{"role": m.role, "content": m.content} for m in messages],
|
| 372 |
"temperature": temperature,
|
| 373 |
"max_tokens": max_tokens,
|
| 374 |
}
|
| 375 |
-
headers = {
|
|
|
|
|
|
|
|
|
|
| 376 |
try:
|
| 377 |
resp = requests.post(endpoint, json=payload, headers=headers, timeout=30)
|
| 378 |
resp.raise_for_status()
|
|
|
|
| 366 |
endpoint = f"{base_url.rstrip('/')}/chat/completions"
|
| 367 |
if monitor:
|
| 368 |
monitor.start_call(call_id, "llm", "blaxel", model, temperature=temperature)
|
| 369 |
+
thread_id = os.getenv("BLAXEL_THREAD_ID", call_id) # keep conversations grouped if provided
|
| 370 |
payload = {
|
| 371 |
"model": model,
|
| 372 |
"messages": [{"role": m.role, "content": m.content} for m in messages],
|
| 373 |
"temperature": temperature,
|
| 374 |
"max_tokens": max_tokens,
|
| 375 |
}
|
| 376 |
+
headers = {
|
| 377 |
+
"X-Blaxel-Authorization": f"Bearer {self.blaxel_key}",
|
| 378 |
+
"X-Blaxel-Thread-Id": thread_id,
|
| 379 |
+
}
|
| 380 |
try:
|
| 381 |
resp = requests.post(endpoint, json=payload, headers=headers, timeout=30)
|
| 382 |
resp.raise_for_status()
|
app.py
CHANGED
|
@@ -262,12 +262,24 @@ def build_ui():
|
|
| 262 |
<div class="og-hero">
|
| 263 |
<div class="og-pill">Living OOB Mesh</div>
|
| 264 |
<div class="og-pill">MCP + Topology</div>
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
)
|
| 272 |
gr.Markdown(dev_info())
|
| 273 |
|
|
|
|
| 262 |
<div class="og-hero">
|
| 263 |
<div class="og-pill">Living OOB Mesh</div>
|
| 264 |
<div class="og-pill">MCP + Topology</div>
|
| 265 |
+
<h2 style="font-family:'Playfair Display',serif; margin:6px 0 4px 0;">🌿 Overgrowth</h2>
|
| 266 |
+
<p style="margin:0; font-size:15px; color:#0f4d3f;">
|
| 267 |
+
A living digital environment
|
| 268 |
+
</p>
|
| 269 |
+
</div>
|
| 270 |
+
<div class="og-panel" style="margin-top:12px;">
|
| 271 |
+
<h3 class="og-tab-title" style="margin:0 0 6px 0;">🏁 Judge Quickstart (90 seconds)</h3>
|
| 272 |
+
<ol style="margin:0 0 6px 18px; padding:0; color:#0f4d3f; line-height:1.4;">
|
| 273 |
+
<li>Paste this or use your own: <code>Design a 3-site retail network with guest WiFi, POS VLANs, cameras, and secure VPN to HQ.</code></li>
|
| 274 |
+
<li>Click <strong>Run Full Pipeline</strong> (keep simulation/read-only on).</li>
|
| 275 |
+
<li>Review <strong>Status</strong> + tabs: Source of Truth YAML → BOM → Setup Guide → Diagram.</li>
|
| 276 |
+
<li>Peek at <strong>Live API Activity Monitor</strong> to see LLM/tool calls and costs.</li>
|
| 277 |
+
</ol>
|
| 278 |
+
<p style="margin:0; font-size:13px; color:#0f4d3f;">
|
| 279 |
+
Secrets: set <code>BLAXEL_MCP_1ST_BDAY</code> (or Anthropic/OpenAI/etc.) and optional GNS3 env vars for brownfield. Build info below shows deploy mode.
|
| 280 |
+
</p>
|
| 281 |
+
</div>
|
| 282 |
+
""",
|
| 283 |
)
|
| 284 |
gr.Markdown(dev_info())
|
| 285 |
|