Four AI-powered utilities, all running in your browser. Describe a network in plain English and get a plan. Paste a CIDR and get an explanation. Translate Cisco ACLs to JunOS. Or paste a confusing error and get diagnostic help. Your data never leaves your device.
The assistant uses a 100+ pattern rule engine that runs entirely client-side. It extracts host counts and group names from your description, applies VLSM allocation, accounts for your cloud's reserved IPs, and explains each decision. No data is sent to any server — your network design stays in your browser. For more complex needs, copy the output to IaC Export for Terraform / CloudFormation / Cisco code.
The AI assistant's rule-based parser extracts host counts and group names from natural-language descriptions. The simplified core of that parser is shown below in six languages. It pulls (name, host-count) tuples out of strings like "engineering needs 200 users, sales 50".
import re
text = ("engineering needs 200 users, "
"sales 50, ops with 25 people")
# Pattern: <name> (any-words) <number> (users|hosts|people)?
pattern = re.compile(
r'(\w+)[^,]*?(\d+)\s*(?:users?|hosts?|people)?',
re.IGNORECASE)
for m in pattern.finditer(text):
name, n = m.group(1).lower(), int(m.group(2))
print(f"{name} -> {n} hosts")package main
import (
"fmt"
"regexp"
"strconv"
"strings"
)
func main() {
text := "engineering needs 200 users, " +
"sales 50, ops with 25 people"
re := regexp.MustCompile(`(?i)(\w+)[^,]*?(\d+)\s*(?:users?|hosts?|people)?`)
for _, m := range re.FindAllStringSubmatch(text, -1) {
n, _ := strconv.Atoi(m[2])
fmt.Printf("%s -> %d hosts\n", strings.ToLower(m[1]), n)
}
}const text = "engineering needs 200 users, " +
"sales 50, ops with 25 people";
const re = /(\w+)[^,]*?(\d+)\s*(?:users?|hosts?|people)?/gi;
let m;
while ((m = re.exec(text)) !== null) {
console.log(`${m[1].toLowerCase()} -> ${parseInt(m[2])} hosts`);
}#!/usr/bin/env bash
# Parse host requirements from plain English.
TEXT="engineering needs 200 users, sales 50, ops with 25 people"
# grep -oE matches each "<name>...<number>(suffix)" run in turn
echo "$TEXT" | grep -oE '\w+[^,]*?[0-9]+\s*(users?|hosts?|people)?' \
| while IFS= read -r m; do
name=$(echo "$m" | grep -oE '^\w+' | tr 'A-Z' 'a-z')
num=$(echo "$m" | grep -oE '[0-9]+' | head -1)
printf "%s -> %d hosts\n" "$name" "$num"
doneimport java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NlParse {
public static void main(String[] args) {
String text = "engineering needs 200 users, " +
"sales 50, ops with 25 people";
Pattern p = Pattern.compile(
"(\\w+)[^,]*?(\\d+)\\s*(?:users?|hosts?|people)?",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.printf("%s -> %d hosts%n",
m.group(1).toLowerCase(),
Integer.parseInt(m.group(2)));
}
}
}#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <regex.h>
int main(void) {
char text[] =
"engineering needs 200 users, "
"sales 50, ops with 25 people";
regex_t re_word, re_num;
regcomp(&re_word, "[a-zA-Z]+", REG_EXTENDED);
regcomp(&re_num, "[0-9]+", REG_EXTENDED);
/* Tokenize on commas, then extract first word + first number per segment */
char *seg = strtok(text, ",");
while (seg != NULL) {
regmatch_t mw, mn;
if (regexec(&re_word, seg, 1, &mw, 0) == 0 &&
regexec(&re_num, seg, 1, &mn, 0) == 0)
{
char name[64], num[16];
int nl = mw.rm_eo - mw.rm_so;
int dl = mn.rm_eo - mn.rm_so;
memcpy(name, seg + mw.rm_so, nl); name[nl] = '\0';
memcpy(num, seg + mn.rm_so, dl); num[dl] = '\0';
for (char *c = name; *c; c++) *c = (char)tolower((unsigned char)*c);
printf("%s -> %s hosts\n", name, num);
}
seg = strtok(NULL, ",");
}
regfree(&re_word);
regfree(&re_num);
return 0;
}engineering -> 200 hosts sales -> 50 hosts ops -> 25 hosts
Describe your network in plain English — for example, "3 offices with 50, 200, and 30 users each" — and the assistant returns a complete VLSM plan with cloud-aware reservations, suggested CIDRs, and an explanation of each allocation. It uses a rule-based NL parser that runs entirely in your browser; nothing is sent to a server.
No, it's a deterministic rule-based parser tuned for networking language — host counts, group names, cloud providers. That trade-off gives full privacy (your network design never leaves your browser), zero latency, and consistent results for the same input.
Yes. Mention "AWS" or "VPC" in your description and it applies AWS's 5-reserved-IP math, suggests /16 or /20 parent sizes by default, and outputs subnets sized for real AWS capacity. The same works for Azure, GCP, and OCI.