Skip to content

Latest commit

Β 

History

59 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Network Desk

License: MIT Node.js >= 18

Your cloud networking AI team for GitHub Copilot CLI. 20 specialist agents covering VNet design, firewalls (14 vendors), load balancing, DNS, private connectivity, IaC generation, container networking, CDN/edge, SASE/SSE, and more β€” routed automatically.


πŸ“Œ Table of Contents

Section Description
πŸš€ Quick Start One-command install
πŸ’‘ What is Network Desk? Overview and key concepts
πŸ‘₯ The Team All 20 specialists at a glance
πŸ“¦ Installation 6 ways to install (npx user-level, npx project-level, npm, Copilot prompt, manual, native plugin)
πŸ–₯️ CLI Reference init, plugin build, update, status, uninstall, --version
βš™οΈ How It Works Architecture, routing, and workflow
πŸ“š Validation-first: per-cloud documentation MCP Authoritative validation of Azure/AWS/GCP facts
πŸ“ Usage Examples Example prompts for every specialist
πŸ“ Output files Where generated diagrams, reports, and configs are saved
πŸ“‚ Repository Structure Full folder tree and conventions
πŸ”§ Troubleshooting Common issues and fixes
πŸ”’ Privacy How the extension handles your data
πŸ“œ Changelog Release notes and version history
πŸ“„ License MIT

Quick Start

npx github:dmauser/network-desk init

That's it. Launch Copilot CLI with experimental mode (copilot --experimental) in any repo and trigger the extension with @network-desk followed by what you need:

@network-desk design a hub-spoke VNet topology for a 3-tier app across dev/staging/prod
@network-desk generate Palo Alto rules to allow HTTPS from my app subnet to a backend on port 8443

The coordinator picks the right specialist automatically and responds in plain language β€” no tool names to remember.

What is Network Desk?

Network Desk gives you a coordinated team of network specialist agents through GitHub Copilot CLI. Describe what you need β€” VNet design, firewall rules, DNS troubleshooting, hybrid connectivity, IaC generation, container networking, SASE architecture β€” and the coordinator routes your request to the right specialist automatically.

Each specialist operates within a defined area of domain expertise, supported by tailored guardrails and structured workflows. The coordinator is responsible for routing requests and orchestrating cross-domain interactions, eliminating the need for users to manage or select individual tools.

Analysis only β€” Network Desk produces designs, configurations, IaC templates, and analysis for human review. It generates deployment code but does not execute deployments, modify live firewalls, or make changes to production networks.

The Team

Specialist specialist What They Do
πŸ—οΈ VNet/Subnet Architect cn_vnet VNet/VPC design, hub-spoke, peering, address planning, ASCII/Mermaid/Excalidraw/draw.io diagrams
πŸ”₯ Firewall Engineer cn_fw Multi-vendor firewall rules, policies, migration, config gen (14 vendors)
βš–οΈ Load Balancer cn_lb LB selection, health probes, SSL offload, WAF, traffic routing
🌐 DNS Specialist cn_dns DNS zones, resolvers, record audits, migration, troubleshooting
πŸ”’ Private Link Engineer cn_pl Private endpoints, DNS integration, service exposure, security
πŸ”— Hybrid Connectivity cn_hyb VPN, ExpressRoute, Direct Connect, BGP, failover design
πŸ›‘οΈ Network Security cn_nsec NSG audits, segmentation, DDoS, flow analysis, compliance
πŸ”§ Network Troubleshooter cn_ntsh Connectivity tests, packet capture, latency, routing, NAT, MTU
🌍 Virtual WAN / SD-WAN cn_vwan vWAN design, routing intent, NVA integration, branch connectivity
πŸ“Š Network Monitor cn_nmon Flow logs, traffic analytics, connection monitors, dashboards, alerts
☁️ Multi-Cloud Networking cn_mcn Cross-cloud transit, addressing, service mapping, cost comparison
πŸ’° Pricing Analyst cn_price Network cost estimation, egress calculation, pricing comparison, cost optimization
πŸ“ IaC Generator cn_iac Bicep, Terraform, Ansible, ARM templates for networking infrastructure
🐳 Container Networking cn_cnet CNI plugins, network policies, service mesh, ingress, multi-cluster (AKS/EKS/GKE)
🌐 CDN & Edge Networking cn_cdn Azure Front Door, CloudFront, Cloud CDN, edge routing, caching, WAF at edge
πŸ”„ Network Automation & GitOps cn_nauto CI/CD pipelines, drift detection, policy-as-code, testing, rollback
πŸ›‘οΈ SASE / SSE cn_sase ZTNA, SWG, CASB, FWaaS, SD-WAN integration, vendor comparison
πŸ“ Network Capacity Planning cn_ncap Bandwidth forecasting, gateway sizing, throughput calculations, growth modeling
πŸ”’ IPv6 Migration cn_ipv6 Dual-stack design, transition planning, addressing, NAT64/DNS64, troubleshooting
πŸ“„ Report Builder cn_doc Packages findings into polished Markdown/HTML/PDF/DOCX reports and XLSX models with formulas

The specialist column is the value the coordinator passes internally (e.g. cn_role({ specialist: "cn_vnet" })). The bare forms (vnet, fw, …) are still accepted as aliases. You never type these β€” just describe what you need after @network-desk.

Firewall Vendors (14)

Azure Firewall Β· AWS Network Firewall Β· GCP Cloud Firewall / Cloud Armor Β· Palo Alto (PAN-OS / Panorama / VM-Series / Prisma) Β· Fortinet FortiGate (FortiOS / FortiManager) Β· Check Point (R81+ / SmartConsole / CloudGuard) Β· Cisco ASA / FTD Β· Juniper SRX / vSRX Β· Zscaler (ZIA / ZPA) Β· Sophos XG / XGS Β· OPNsense Β· pfSense Β· VyOS Β· iptables / nftables

Installation

Prerequisites

  • GitHub Copilot CLI installed and authenticated
  • Node.js 18+
  • Experimental mode (user-level install only) β€” enable with copilot --experimental or /experimental inside Copilot CLI. Not needed for project-level install (init --project)

Option A β€” User-level install (recommended)

The fastest way to install globally. Extensions load in every repo but require experimental mode:

npx github:dmauser/network-desk init

Then launch Copilot with experimental mode:

copilot --experimental

This will:

  1. Create ~/.copilot/extensions/network-desk/ if it doesn't exist
  2. Copy the extension router and all 20 specialists
  3. Remove any conflicting individual specialist extensions
  4. Display a summary of what was installed

Option B β€” Project-level install (no experimental mode needed)

Installs the extension into the current repo's .github/extensions/ directory. Works without experimental mode, but only for this repo.

Important: You must run this from inside a git repository. If you don't have one yet, run git init first.

# cd into your repo first
cd my-repo
npx github:dmauser/network-desk init --project

Then launch Copilot normally from the repo:

copilot

This will:

  1. Create .github/extensions/network-desk/ in the current repo
  2. Copy the extension router and all 20 specialists
  3. Add the extension directory to .gitignore (each developer runs init themselves)

Option C β€” Global install via npm

If you prefer a persistent CLI command instead of npx:

npm install -g github:dmauser/network-desk

# User-level install (requires experimental mode)
network-desk init

# Or project-level install (no experimental mode needed)
network-desk init --project

# Now available as a command:
network-desk status
network-desk --version

Option D β€” Install from inside Copilot CLI

Already have Copilot CLI open? You can install directly from the prompt β€” just ask Copilot to clone the repo and run the installer for you:

Clone https://github.com/dmauser/network-desk.git and run `node bin/cli.mjs init` from the cloned directory.

Or if you already cloned the repo and are inside it:

Run `node bin/cli.mjs init` to install the network-desk extensions.

Copilot will execute the commands, copy the extensions into ~/.copilot/extensions/network-desk/, and confirm the result. After installation, restart Copilot CLI to load the new extensions, then verify with:

show me the network-desk capabilities

Option E β€” Manual install (offline / corporate environments)

Click to expand manual steps

Use this if you're behind a corporate proxy or don't have access to npm/npx.

Step 1 β€” Clone the repo:

git clone https://github.com/dmauser/network-desk.git
cd network-desk

Step 2 β€” Copy to your Copilot extensions directory:

macOS / Linux:

mkdir -p ~/.copilot/extensions/network-desk
cp -r extensions/network-desk/* ~/.copilot/extensions/network-desk/

Windows (PowerShell):

$dest = "$env:USERPROFILE\.copilot\extensions\network-desk"
New-Item -ItemType Directory -Force -Path $dest | Out-Null
Copy-Item -Path "extensions\network-desk\*" -Destination $dest -Recurse -Force

Step 3 β€” Verify the files are in place:

ls ~/.copilot/extensions/network-desk/
# Should show: extension.mjs  specialists/

Option F β€” Install as a native Copilot CLI plugin

Network Desk can also be installed as a native Copilot CLI plugin (the copilot plugin system) instead of an SDK extension. The plugin ships one coordinator agent (Network Desk) that routes to 20 specialist skills β€” generated from the same single source of truth as the extension, so you get the same specialist depth.

Easiest β€” via the CLI helper (registers a local marketplace, then installs):

npx github:dmauser/network-desk init --plugin
# or, if installed globally:
network-desk init --plugin

Manually with the copilot CLI:

# Register the repo as a marketplace, then install by name (recommended)
copilot plugin marketplace add dmauser/network-desk
copilot plugin install network-desk@network-desk

# Verify
copilot plugin list

Remove it with network-desk uninstall --plugin (or copilot plugin uninstall network-desk).

Extension vs. plugin β€” which should I use?

Extension (init) Plugin (init --plugin)
Install target ~/.copilot/extensions/ or .github/extensions/ copilot plugin store
Routing Deterministic regex hooks + cn_* tools LLM-driven via the coordinator agent
Experimental mode Required for user-level Not required
Specialist depth Full Full (deep docs bundled as skill reference/)

Both are generated from the same registry. The plugin bundle lives in plugins/network-desk/; regenerate it after registry changes with network-desk plugin build.

Verify installation

After any install method, check that everything is in place:

# If you used Option A or B:
npx github:dmauser/network-desk status

# Or launch Copilot CLI and ask:
copilot
> show me the network-desk capabilities

You should see all 20 specialists listed with their tools.

Updating

The extension automatically checks GitHub for a newer version on each session start (throttled to once every 24h, fully non-blocking, never blocks load). When an update is available, you'll see a one-line network-desk: update available β€” installed X.Y.Z, latest A.B.C notice in the session log.

To update, run the update command β€” it auto-detects whether you have a user-level install, a project-level install (in the current repo), or both, and re-installs each in place:

npx github:dmauser/network-desk update

Equivalent shortcuts (any of these re-pulls the latest):

# Re-run init explicitly (replaces the existing install)
npx github:dmauser/network-desk init             # user-level
npx github:dmauser/network-desk init --project   # project-level

# If installed globally
npm install -g github:dmauser/network-desk
network-desk update

Opt out of auto-check. Set the environment variable NETWORK_DESK_NO_UPDATE_CHECK=1 to disable the periodic GitHub poll entirely.

Each install records its version in <install-dir>/.install-meta.json, and network-desk status will display it alongside the install date.

See CHANGELOG.md for what's new in each release.

Uninstall

# Using the CLI:
npx github:dmauser/network-desk uninstall

# Or manually:
# macOS / Linux
rm -rf ~/.copilot/extensions/network-desk
# Windows (PowerShell)
Remove-Item -Recurse -Force "$env:USERPROFILE\.copilot\extensions\network-desk"

CLI Reference

The network-desk CLI manages installation of the Copilot extensions. You can run it via npx or install it globally.

Command Description
network-desk init Install/reinstall extensions to ~/.copilot/extensions/
network-desk init --project Install extensions to .github/extensions/ in current repo
network-desk init --plugin Install as a native Copilot CLI plugin (registers a local marketplace, then installs)
network-desk plugin build (Re)generate the plugin bundle in plugins/network-desk/ from the registry source
network-desk update Re-install over any existing user-level and/or project-level install (pulls latest from GitHub)
network-desk status Check installation status, version, and list available specialists
network-desk uninstall Remove installed extensions
network-desk uninstall --plugin Remove the installed Copilot CLI plugin
network-desk --version Print the installed CLI version
network-desk help Show CLI help

The extension also performs an automatic update check against GitHub once every 24 hours when a Copilot session starts, and prints a one-line notice if a newer version is available. Set NETWORK_DESK_NO_UPDATE_CHECK=1 to disable. This is the extension's only outbound network request β€” see Privacy / PRIVACY.md.

How It Works

Trigger the extension with @network-desk anywhere in your prompt β€” or just ask a networking question. The coordinator announces itself at session start, auto-detects networking intent (even without the @ mention), picks the right specialist(s), loads their role and skills behind the scenes via the registered tools, and replies in natural language. Each routing hint is shown once per specialist per session to keep the conversation clean.

You: @network-desk design a hub-spoke VNet with Azure Firewall and
     monitor east-west traffic with flow logs

         β”‚
         β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚ Network Desk coordinator                                    β”‚
   β”‚ β€’ Detects @network-desk mention                             β”‚
   β”‚ β€’ Identifies multi-domain intent:                           β”‚
   β”‚     VNet design Β· Firewall Β· Network monitoring             β”‚
   β”‚ β€’ Engages the matching specialists in sequence              β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         β–Ό
   Specialists run their domain workflows and the coordinator
   stitches the answer together in plain language.

You never need to call individual tools β€” just describe what you need after @network-desk and the coordinator handles the rest.

Validation-first: per-cloud documentation MCP

Network Desk treats an official documentation MCP server as its primary source of truth for each cloud. When the relevant server is configured, specialists validate every networking fact β€” service SKUs/tiers, limits & quotas, regional availability, feature support, pricing dimensions, and API/CLI/IaC syntax & versions β€” against current docs before stating it, treat the docs MCP as authoritative (if it contradicts built-in knowledge, the docs MCP wins), and cite the exact doc URL(s).

Cloud Server Tools Transport
Azure Microsoft Learn MCP microsoft_docs_search, microsoft_docs_fetch, microsoft_code_sample_search hosted HTTP (no account/API key)
AWS AWS Documentation MCP search_documentation, read_documentation, recommend local stdio (uvx)
GCP Developer Knowledge MCP search_documents, get_documents, answer_query hosted HTTP (API key or ADC)

Add the servers with copilot mcp add (or run /mcp inside a Copilot CLI session and follow the wizard):

# Azure β€” Microsoft Learn (hosted HTTP)
copilot mcp add --transport http microsoft-learn https://learn.microsoft.com/api/mcp

# AWS β€” AWS Documentation MCP (local stdio; requires uv/uvx + Python β‰₯3.10 β€” https://docs.astral.sh/uv/)
copilot mcp add aws-docs --env FASTMCP_LOG_LEVEL=ERROR --env AWS_DOCUMENTATION_PARTITION=aws -- uvx awslabs.aws-documentation-mcp-server@latest

# GCP β€” Google Developer Knowledge MCP (hosted HTTP; needs an API key or ADC).
#   Pass the key in the X-goog-api-key header (NOT Authorization: Bearer, NOT ?key=).
copilot mcp add --transport http gcp-docs https://developerknowledge.googleapis.com/mcp --header "X-goog-api-key: YOUR_API_KEY"
#   Prefer the /mcp wizard or JSON config? See "Configuring the GCP documentation MCP" below.

If a cloud's docs MCP is not configured, Network Desk still works, but that cloud's answers run in a clearly-labelled unverified mode: the response is prepended with a ⚠️ warning banner, numeric specs and limits are marked indicative, unverified, and the matching setup command above is included. This guarantees you can always tell whether an answer was docs-MCP-validated (with URLs) or produced from built-in knowledge alone.

Scope: Each docs MCP covers its own cloud only. For the 14 firewall vendors, there is no docs MCP β€” Network Desk validates against the official vendor documentation and keeps its standard "Analysis only β€” verify against vendor documentation before applying." guardrail.

This is a per-user Copilot CLI setting β€” it is configured at the CLI level, not by this extension. It is shared across all your sessions and repos, and uninstalling Network Desk does not change it. Network Desk never edits your MCP configuration; you add or remove the server yourself.

Configuring the GCP documentation MCP (Developer Knowledge MCP)

GCP's docs MCP (Google's Developer Knowledge MCP, developerknowledge.googleapis.com) requires an auth header, so it is registered via the /mcp wizard or a JSON config block rather than a one-line copilot mcp add. Register it under the exact name gcp-docs (the identifier Network Desk looks for); until it is present, GCP answers run in ⚠️ unverified mode.

⚠️ Auth gotcha: the API key goes in the X-goog-api-key request header β€” not Authorization: Bearer and not a ?key= query param. A 401 "missing OAuth2 credential" means the wrong scheme.

See the full guide: Configuring the GCP documentation MCP β†’ β€” API enablement, API-key vs. OAuth/ADC auth, JSON config, and verification steps.

Usage Examples

Trigger the extension with @network-desk and describe what you need in plain language β€” the coordinator picks the right specialist automatically.

πŸ—οΈ VNet/Subnet Architect

@network-desk Design a hub-spoke VNet topology for a 3-tier app with separate dev/staging/prod environments.
@network-desk Plan an IP address scheme for 12 VNets across 3 Azure regions with no overlapping CIDRs.
@network-desk Generate a Mermaid diagram of my current hub-spoke peering architecture.

πŸ”₯ Firewall Engineer

@network-desk Generate Palo Alto PAN-OS rules to allow HTTPS from my app subnet to a backend API on port 8443.
@network-desk Migrate these Cisco ASA ACLs to Azure Firewall policy rules.
@network-desk Audit my FortiGate ruleset for shadowed, redundant, or overly permissive rules.

βš–οΈ Load Balancer

@network-desk Which Azure load balancer should I use β€” Standard LB, App Gateway, or Front Door?
@network-desk Design health probes for a multi-region API behind Azure Front Door.
@network-desk Configure SSL offload on an Application Gateway with end-to-end TLS.

🌐 DNS Specialist

@network-desk Design a private DNS zone architecture for 5 VNets with hub-spoke peering.
@network-desk Audit my DNS records for stale entries, mismatched TTLs, and missing PTR records.
@network-desk Troubleshoot β€” internal VMs can't resolve privatelink.blob.core.windows.net.

πŸ”’ Private Link Engineer

@network-desk Set up private endpoints for Azure SQL and Storage with proper DNS integration.
@network-desk Review the security posture of my private endpoint configuration β€” any gaps?
@network-desk Expose my internal API to a partner tenant using Private Link Service.

πŸ”— Hybrid Connectivity

@network-desk Design a site-to-site VPN between Azure and our on-prem data center with BGP.
@network-desk Plan an ExpressRoute circuit with Global Reach for US-East and West Europe.
@network-desk Design a failover strategy: ExpressRoute primary, VPN backup with automatic failover.

πŸ›‘οΈ Network Security

@network-desk Audit all NSGs in my subscription β€” flag any-any rules, unused NSGs, and overly broad ranges.
@network-desk Design a micro-segmentation strategy for a PCI-DSS compliant environment.
@network-desk Analyze NSG flow logs to identify top talkers and unexpected traffic patterns.

πŸ”§ Network Troubleshooter

@network-desk My VM in spoke-vnet-02 can't reach the database in hub-vnet β€” diagnose the connectivity path.
@network-desk Run a packet capture on my NVA to debug why return traffic is being dropped.
@network-desk Investigate high latency between my Azure VMs and on-prem servers β€” is it routing or MTU?

🌍 Virtual WAN / SD-WAN

@network-desk Design a Virtual WAN topology for 20 branch offices across 3 regions.
@network-desk Configure routing intent for internet breakout through Azure Firewall in my vWAN hub.
@network-desk Integrate a Palo Alto NVA into my Virtual WAN hub for traffic inspection.

πŸ“Š Network Monitor

@network-desk Set up NSG flow logs with Traffic Analytics for all my production VNets.
@network-desk Build a monitoring dashboard for VPN gateway throughput, latency, and tunnel status.
@network-desk Create alert rules for when ExpressRoute circuit utilization exceeds 80%.

☁️ Multi-Cloud Networking

@network-desk Design a transit architecture connecting Azure, AWS, and GCP with consistent addressing.
@network-desk Map equivalent networking services across Azure, AWS, and GCP for our migration plan.
@network-desk Compare the cost of cross-cloud connectivity options: VPN vs dedicated interconnect vs SD-WAN.

πŸ’° Pricing Analyst

@network-desk How much will 5TB of monthly egress from Azure East US cost?
@network-desk Compare VPN gateway costs across Azure, AWS, and GCP for 500 Mbps.
@network-desk Should I use ExpressRoute or S2S VPN for 2 Gbps sustained? Show me the break-even.

πŸ“ IaC Generator

@network-desk Generate a Bicep template for a hub-spoke VNet with Azure Firewall and VPN Gateway.
@network-desk Create Terraform modules for a multi-region AWS VPC with Transit Gateway.
@network-desk Write an Ansible playbook to deploy NSGs and route tables for my Azure network.

🐳 Container Networking

@network-desk Which CNI plugin should I use for my AKS cluster β€” Azure CNI Overlay or Cilium?
@network-desk Design Kubernetes network policies to isolate namespaces while allowing shared services.
@network-desk Compare Istio vs Linkerd for my service mesh β€” we need mTLS and traffic splitting.

🌐 CDN & Edge Networking

@network-desk Design an Azure Front Door configuration with multi-origin failover and caching.
@network-desk Optimize cache hit ratio for my API responses β€” what cache key strategy should I use?
@network-desk Configure WAF rules at the edge to block bot traffic while allowing legitimate API calls.

πŸ”„ Network Automation & GitOps

@network-desk Design a GitHub Actions pipeline for deploying Terraform network changes with approval gates.
@network-desk Set up drift detection to alert when someone makes out-of-band changes to my NSGs.
@network-desk What policy-as-code rules should I enforce to prevent public IP creation in production?

πŸ›‘οΈ SASE / SSE

@network-desk Design a SASE architecture to replace our legacy VPN for 5,000 remote users.
@network-desk Compare Zscaler ZPA vs Microsoft Entra Private Access for our ZTNA implementation.
@network-desk How should I integrate SD-WAN with our SASE platform for branch office connectivity?

πŸ“ Network Capacity Planning

@network-desk What VPN Gateway SKU do I need for 800 Mbps sustained throughput with 15 tunnels?
@network-desk Forecast our ExpressRoute bandwidth needs β€” we're growing 30% per quarter.
@network-desk Calculate maximum single-flow TCP throughput for a 50ms RTT link with 64KB window.

πŸ”’ IPv6 Migration

@network-desk Design a dual-stack VNet configuration for my Azure workloads.
@network-desk Plan an IPv6 migration for our Azure environment β€” which services support IPv6 today?
@network-desk Set up NAT64/DNS64 so my IPv6-only VMs can reach IPv4-only external services.

πŸ“„ Report Builder

@network-desk Package the firewall rule-audit findings into a polished PDF report.
@network-desk Export this hub-spoke design review as a Word document with an executive summary.
@network-desk Build an XLSX capacity model with formulas for subnet sizing and growth.

Report Builder is a packaging specialist β€” it turns another specialist's analysis into a deliverable. It does not perform networking analysis itself. Generated files land under network-desk/<specialist>/reports/ (see Output files). Rendering to PDF/DOCX/XLSX uses the bundled Python renderers (renderers/make_*.py); when a dependency is missing the skill falls back to Markdown/HTML.

πŸ”€ Multi-Domain (cross-specialist workflows)

@network-desk Design a hub-spoke VNet, add firewall rules for east-west traffic, and set up monitoring.
@network-desk Plan a hybrid connectivity setup with ExpressRoute, configure private endpoints for PaaS services, and audit the NSGs.
@network-desk Troubleshoot connectivity from on-prem through VPN to a private endpoint, and check DNS resolution along the path.

πŸ”Ž Discovery

@network-desk what can you help me with?
@network-desk which specialists cover firewalls and what do they do?
@network-desk I need to set up private endpoints for my storage accounts β€” who should handle this?

Output files

Specialists are analysis-first and return their findings inline in the chat. When you ask for a saved artifact β€” a diagram, a rendered report, or a spreadsheet model β€” files are written into a predictable tree rooted at network-desk/ in your current working directory:

network-desk/
└── <specialist>/            # kebab dir name, e.g. firewall-engineer, capacity-planner
    β”œβ”€β”€ diagrams/            # ASCII (.txt) / Mermaid / Excalidraw / draw.io sources
    β”œβ”€β”€ reports/             # Markdown / HTML / PDF / DOCX deliverables
    └── configs/             # generated configs / IaC / specs

Files are named <kebab-topic>-<YYYYMMDD>.<ext> by default (e.g. rule-audit-20260115.pdf). Example:

network-desk/
β”œβ”€β”€ firewall-engineer/
β”‚   β”œβ”€β”€ reports/rule-audit-20260115.pdf
β”‚   └── configs/east-west-policy-20260115.json
└── capacity-planner/
    └── reports/ip-plan-20260115.xlsx

The bundled Python renderers (extensions/network-desk/renderers/make_{html,pdf,docx,xlsx}.py) honor this layout: pass --specialist <kebab-dir> and they resolve the output path automatically (override with --output/--outdir). The Report Builder specialist orchestrates these renderers for high-quality reports.

Repository Structure

network-desk/
β”œβ”€β”€ README.md                              # This file
β”œβ”€β”€ LICENSE                                # MIT license
β”œβ”€β”€ package.json                           # npm package config (name, bin, engines)
β”œβ”€β”€ bin/
β”‚   └── cli.mjs                            # CLI installer (init, uninstall, status)
└── extensions/
    └── network-desk/
        β”œβ”€β”€ extension.mjs                  # Router: @network-desk mention trigger + auto-routing hook
        └── specialists/
            β”œβ”€β”€ vnet-architect/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── vnet-architect.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ address-planner/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ hub-spoke-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ migration-planner/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ network-diagram/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ peering-advisor/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── subnet-calculator/
            β”‚           └── SKILL.md
            β”œβ”€β”€ firewall-engineer/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── firewall-engineer.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ config-gen/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ha-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ hardening-check/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ log-analysis/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ policy-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ rule-audit/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ troubleshoot/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── vendor-migrate/
            β”‚           └── SKILL.md
            β”œβ”€β”€ load-balancer/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── load-balancer.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ health-probe-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ lb-selector/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ssl-offload/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ traffic-routing/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ troubleshoot/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── waf-rules/
            β”‚           └── SKILL.md
            β”œβ”€β”€ dns-specialist/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── dns-specialist.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ migration-plan/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ record-audit/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ resolver-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ troubleshoot/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── zone-design/
            β”‚           └── SKILL.md
            β”œβ”€β”€ private-link/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── private-link.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ dns-integration/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ endpoint-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ security-review/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ service-exposure/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── troubleshoot/
            β”‚           └── SKILL.md
            β”œβ”€β”€ hybrid-connectivity/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── hybrid-connectivity.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ bandwidth-calc/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ expressroute-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ failover-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ routing-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ troubleshoot/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── vpn-design/
            β”‚           └── SKILL.md
            β”œβ”€β”€ network-security/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── network-security.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ compliance-check/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ddos-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ flow-analysis/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ nsg-audit/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ segmentation-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── troubleshoot/
            β”‚           └── SKILL.md
            β”œβ”€β”€ network-troubleshooter/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── network-troubleshooter.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ connectivity-test/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ latency-analysis/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ mtu-path-discovery/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ nat-debug/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ packet-capture/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── routing-debug/
            β”‚           └── SKILL.md
            β”œβ”€β”€ vwan-sdwan/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── vwan-sdwan.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ branch-connectivity/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ nva-integration/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ routing-intent/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ troubleshoot/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── vwan-design/
            β”‚           └── SKILL.md
            β”œβ”€β”€ network-monitor/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── network-monitor.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ alert-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ baseline-analysis/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ connection-monitor/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ dashboard-build/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ flow-log-setup/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── traffic-analytics/
            β”‚           └── SKILL.md
            └── multi-cloud-net/
                β”œβ”€β”€ agents/
                β”‚   └── multi-cloud-net.md
                └── skills/
                    β”œβ”€β”€ addressing-plan/
                    β”‚   └── SKILL.md
                    β”œβ”€β”€ cost-comparison/
                    β”‚   └── SKILL.md
                    β”œβ”€β”€ latency-optimization/
                    β”‚   └── SKILL.md
                    β”œβ”€β”€ service-mapping/
                    β”‚   └── SKILL.md
                    └── transit-design/
                        └── SKILL.md
            β”œβ”€β”€ pricing-analyst/         # (structure follows same pattern)
            β”œβ”€β”€ iac-generator/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── iac-generator.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ bicep-gen/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ terraform-gen/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ansible-gen/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── arm-gen/
            β”‚           └── SKILL.md
            β”œβ”€β”€ container-networking/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── container-networking.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ cni-selection/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ network-policy/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ service-mesh/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ingress-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ cross-cluster/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── troubleshoot/
            β”‚           └── SKILL.md
            β”œβ”€β”€ cdn-edge/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── cdn-edge.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ cdn-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ edge-routing/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ cache-optimization/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ waf-edge/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── troubleshoot/
            β”‚           └── SKILL.md
            β”œβ”€β”€ network-automation/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── network-automation.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ pipeline-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ drift-detection/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ policy-as-code/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ testing/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── rollback/
            β”‚           └── SKILL.md
            β”œβ”€β”€ sase-sse/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── sase-sse.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ architecture/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ ztna-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ swg-casb/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ sdwan-integration/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── vendor-compare/
            β”‚           └── SKILL.md
            β”œβ”€β”€ capacity-planner/
            β”‚   β”œβ”€β”€ agents/
            β”‚   β”‚   └── capacity-planner.md
            β”‚   └── skills/
            β”‚       β”œβ”€β”€ bandwidth-forecast/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ gateway-sizing/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ throughput-calc/
            β”‚       β”‚   └── SKILL.md
            β”‚       β”œβ”€β”€ scalability-design/
            β”‚       β”‚   └── SKILL.md
            β”‚       └── growth-model/
            β”‚           └── SKILL.md
            β”œβ”€β”€ ipv6-migration/
                β”‚   β”œβ”€β”€ agents/
                β”‚   β”‚   └── ipv6-migration.md
                β”‚   └── skills/
                β”‚       β”œβ”€β”€ dual-stack/
                β”‚       β”‚   └── SKILL.md
                β”‚       β”œβ”€β”€ transition-plan/
                β”‚       β”‚   └── SKILL.md
                β”‚       β”œβ”€β”€ addressing/
                β”‚       β”‚   └── SKILL.md
                β”‚       β”œβ”€β”€ compatibility/
                β”‚       β”‚   └── SKILL.md
                β”‚       └── troubleshoot/
                β”‚           └── SKILL.md
                └── report-builder/
                    β”œβ”€β”€ agents/
                    β”‚   └── report-builder.md
                    └── skills/
                        β”œβ”€β”€ report-structure/
                        β”‚   └── SKILL.md
                        β”œβ”€β”€ html-report/
                        β”‚   └── SKILL.md
                        β”œβ”€β”€ pdf-report/
                        β”‚   └── SKILL.md
                        β”œβ”€β”€ docx-report/
                        β”‚   └── SKILL.md
                        └── xlsx-workbook/
                            └── SKILL.md

Installed extension structure

After running network-desk init, the installed layout mirrors the extensions/network-desk/ tree above:

~/.copilot/extensions/network-desk/
β”œβ”€β”€ extension.mjs                          # Router + auto-routing hook
└── specialists/                           # All 20 specialist directories
    └── (same structure as above)

Specialist directory conventions

All specialists follow a standard layout:

specialist-name/
β”œβ”€β”€ agents/
β”‚   └── specialist-name.md    # Agent persona, workflow, guardrails
└── skills/
    β”œβ”€β”€ skill-name/
    β”‚   └── SKILL.md          # Detailed skill instructions
    └── another-skill/
        └── SKILL.md

Troubleshooting

Symptom Fix
Extensions not loading (/env shows "Extensions: none") Enable experimental mode: copilot --experimental β€” or use project-level install: network-desk init --project
Tools not appearing after install Restart Copilot CLI to reload extensions
@network-desk doesn't engage Verify ~/.copilot/extensions/network-desk/extension.mjs exists; run network-desk status
Specialist tools missing Run network-desk status to check β€” should list all 20 specialists
Conflicting individual extensions Run network-desk init β€” it removes old standalone specialist installs
npx hangs or fails Use Option E (manual install) β€” clone the repo and copy files directly
Firewall config for unsupported vendor Check the 14 supported vendors list
Version mismatch after update Run network-desk status β€” compare CLI version vs installed version

Privacy

Network Desk is a local, read-only extension. It collects no telemetry and never transmits your prompts, code, or generated files. Its only outbound request is an optional once-per-24-hours version check against GitHub, which you can disable with NETWORK_DESK_NO_UPDATE_CHECK=1.

See PRIVACY.md for full details on what data is accessed, what leaves your machine, the local files written, and your controls.

License

MIT β€” see LICENSE.

Changelog

See CHANGELOG.md for a full list of releases, new specialists, skill additions, and behavior changes.

About

Network Desk - GitHub Copilot CLI extension pack: 20 specialist AI agents for cloud networking (Azure/AWS/GCP), firewalls (14 vendors), and report generation

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages