explaingit

nicholas-kloster/aimap

3GoAudience · ops devopsComplexity · 3/5ActiveLicenseSetup · easy

TLDR

Go network scanner that fingerprints AI and ML services like vector databases, model servers, and notebooks, with named port profiles and deep enumerators.

Mindmap

mindmap
  root((aimap))
    Inputs
      Target hosts or ranges
      Port profile choice
      Authorized scan scope
    Outputs
      Service fingerprints
      Deep enumeration findings
      Structured JSON reports
    Use Cases
      Find shadow AI deployments
      Audit exposed vector databases
      Map MLflow and Jupyter exposure
      Classify a target host
    Tech Stack
      Go
      HTTP probes
      Python

Things people build with this

USE CASE 1

Audit your own network for unprotected Ollama, MLflow, or ChromaDB instances

USE CASE 2

Scan for exposed vendor API keys in Flowise and similar tools

USE CASE 3

Run a fast targeted scan with the llm-gateway or vector-db port profile

USE CASE 4

Classify scanned hosts as personal, institutional, commercial, research, or honeypot

Tech stack

GoPythonHTTP

Getting it running

Difficulty · easy Time to first run · 5min

Single Go binary with no external dependencies; only run it against networks you are authorized to scan.

MIT license lets anyone use, modify, and distribute the code, including commercially, as long as the copyright notice is kept.

In plain English

aimap is a network scanner written in Go that is purpose built for finding AI and machine learning services running on a network. It is described in the README as an nmap for AI infrastructure, where nmap is the classic general purpose port scanner. The point is that an ordinary scanner can see that something is listening on a port, but it will not tell you whether that something is a vector database, a private language model, or a Jupyter notebook left without a password. aimap tries to identify the specific AI service and, where possible, dig deeper to surface what is exposed. The intended users are two groups. The first is defenders inside an organisation, who run it against their own networks to find shadow AI deployments before attackers do. The README gives realistic examples: a data scientist running Ollama on a dev machine and forgetting to take it down, an MLflow instance accidentally bound to all network interfaces, a ChromaDB shipped to production without authentication, a Flowise install with OpenAI API keys in a world readable credentials panel. The second user group is the author's research project at nuclide-research.com, which runs the tool against authorised populations to map this kind of exposure at scale. The current release ships 121 service fingerprints across a wide list of categories: vector databases like Weaviate, ChromaDB, Qdrant, and Milvus, model servers like vLLM and Triton, agent platforms, observability tools, AI safety and evaluation tools, voice and audio models, medical imaging servers like Orthanc and dcm4chee, and even cross cutting checks for exposed vendor API keys for services like Anthropic, OpenRouter, and Stripe. About 50 of these services also have a deep enumerator that goes further and surfaces things like personal data fields, remote code execution paths, exposed credentials, and admin accounts that can be claimed. To keep scans fast, the tool offers named port profiles such as llm-gateway, vector-db, observability, healthcare, finance, and mcp, each of which narrows the scan to a hand picked list of ports relevant to that category. The author claims this gives a 5 to 10 times speedup compared to the default 51 port wide scan. There is also a companion Python tool called aimap-profile that does the opposite job: instead of identifying services on a target, it tries to classify the target itself as a personal device, institutional system, commercial host, research compute, or honeypot, and emits structured JSON. aimap is distributed as a single Go binary with no external dependencies, uses read only HTTP probes that the author says are safe to run against production, and is released under the MIT license. The repo currently sits at 3 stars.

Copy-paste prompts

Prompt 1
Walk me through running aimap with the vector-db port profile against my own subnet
Prompt 2
Explain how the 121 service fingerprints are structured and how I would add one for a new tool
Prompt 3
Show me what the deep enumerator does for an exposed MLflow or ChromaDB instance
Prompt 4
Help me wire aimap output into the aimap-profile Python classifier and emit JSON
Prompt 5
Compare aimap's read-only HTTP probes to a generic nmap scan for AI infrastructure
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.