Graham Paasch commited on
Commit
326ed6a
·
1 Parent(s): 46981df

Add judge quickstart and update Blaxel headers

Browse files
Files changed (3) hide show
  1. README.md +12 -0
  2. agent/llm_client.py +5 -1
  3. 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 = {"Authorization": f"Bearer {self.blaxel_key}"}
 
 
 
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
- <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
- """,
 
 
 
 
 
 
 
 
 
 
 
 
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