Screenshot in. Documentation out. InfraQuill analyzes network screenshots with AI and automatically generates Mermaid diagrams, Markdown documentation, and topology overviews — self-hosted, Docker-based.
Upload a network screenshot, AI detects devices, connections, and topology — and creates clean Markdown documentation from it.
Automatic generation of network topology diagrams as Mermaid code — ready to use directly in Confluence, Notion, or GitLab.
Anthropic Claude, OpenAI GPT-4o, Google Gemini, Mistral Pixtral — or locally via Ollama (free, no cloud subscription required).
Admin and regular users with their own login. The admin sets the AI provider — users use the selected AI without any configuration of their own.
Runs entirely locally via Docker. No data leaves your own network — except for API requests to the selected AI provider.
Export results as Markdown — ready to use directly in Confluence, GitLab Wiki, or Notion.
Automatically detects NVIDIA (CUDA) and AMD (ROCm) and uses the available GPU to accelerate the local Ollama AI. Note: Intel iGPU (e.g. N100) is currently not used by Ollama for LLM inference — there, processing runs optimized on the CPU.
Flexibly selectable Local models via Ollama or cloud providers — switchable at any time without reinstallation.
InfraQuill is an AI-powered network documentation application. It runs entirely via Docker and requires no cloud connection (Ollama local).
---
| Requirement | Details | |---|---| | Docker | ≥ 24.x | | Docker Compose | ≥ v2 (plugin docker compose, not docker-compose) | | Python 3 | For manage.sh (update logic) | | RAM | At least 4 GB (Ollama model: approx. 5–6 GB recommended) | | Storage | At least 10 GB (Ollama model + data) |
manage.shis a POSIXshscript and requires Python 3 as well asdocker compose. On Windows, it only runs within WSL2 (not in PowerShell/cmd) – Docker Desktop must have WSL integration enabled for the distribution used.
---
infraquill/ ← installation folder
├── manage.sh ← management script
├── docker-compose.yml ← created from .example (on first update)
├── docker-compose.yml.example ← template (never edit manually!)
├── .env ← created from .example (on first update)
├── .env.example ← template
├── data/ ← persistent data (never overwritten)
│ └── ollama/ ← Ollama models
└── logs/
└── deploy.log ← update log
---
Recommended path per system:
| System | Recommended Path | |---|---| | Linux server / Proxmox LXC | /opt/infraquill | | UGREEN NAS (UGOS Pro) | /volume1/docker/infraquill | | Synology NAS (DSM) | /volume1/docker/infraquill | | Unraid | /mnt/user/appdata/infraquill | | Raspberry Pi | /opt/infraquill (or /home/pi/infraquill) | | Windows (in WSL2!) | e.g. ~/infraquill inside the WSL distribution | | macOS | ~/infraquill |
The exact path depends on the data volume (for UGREEN/Synology, check via file manager/volume overview which volume is intended for Docker data).
mkdir -p /opt/infraquill
cd /opt/infraquill
UGREEN/Synology NAS: Easiest to run via SSH on the NAS, alternatively create the folder via file manager and then switch to the folder via SSH (SSH is required formanage.sh). Windows: First open a WSL2 terminal (wslin PowerShell), then run the commands inside WSL – not in PowerShell/cmd.
Copy infraquill_release.zip and manage.sh into the installation folder.
/opt/infraquill/
├── infraquill_release.zip
└── manage.sh
chmod +x manage.sh
./manage.sh update
The script:
unzip needed)docker-compose.yml from the .example template.env from the .example templateEdit the .env:
nano .env
Important values:
# AI backend: "ollama" (local, no API key) or "anthropic"/"openai" (cloud)
AI_BACKEND=ollama
# Ollama runs in the same Docker network
OLLAMA_URL=http://ollama:11434
OLLAMA_MODEL=qwen2.5vl:7b
# API keys (only if cloud backend is desired)
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
# Security key – be sure to change this!
SECRET_KEY=changeme-set-random-value
# Storage path for Ollama models
# Default: ./data/ollama
# NAS recommendation: absolute path to the data volume
OLLAMA_MODELS_PATH=./data/ollama
Important:SECRET_KEYmust be a long random value. Generate it with:> python3 -c "import secrets; print(secrets.token_hex(32))" >
./manage.sh restart
---
| Service | URL | |---|---| | InfraQuill Web UI | http://<IP address>:5743 | | Ollama API (internal) | http://localhost:11434 |
---
docker-compose.yml, uncomment the deploy block for the ollama servicedocker-compose.yml: ollama/ollama:rocmdevices block for /dev/kfd and /dev/dri---
infraquill_release.zip in the installation folder./manage.sh update
What happens during the update:
docker-compose.yml and .env remain unchanged (not overwritten)data/ folder is not touched (Ollama models are preserved)---
Watch mode checks every 30 seconds whether a new infraquill_release.zip is present and deploys it automatically.
./manage.sh watch
Useful for automated deployments via SFTP/SCP on NAS systems.
To start as a background service:
nohup ./manage.sh watch > logs/watch.log 2>&1 &
---
./manage.sh update # Update from infraquill_release.zip
./manage.sh update file.zip # Update from specific ZIP
./manage.sh watch # Watch mode: new ZIP → auto deploy
./manage.sh start # Start containers
./manage.sh stop # Stop containers
./manage.sh restart # Restart containers
./manage.sh status # Show container status
./manage.sh logs # All logs (live)
./manage.sh logs infraquill # Logs of a specific service
---
./manage.sh logs
# or specifically:
./manage.sh logs infraquill
./manage.sh logs ollama
./manage.sh logs ollama
# Model is automatically downloaded on first start (~4 GB)
./manage.sh status
# Check whether the container is running, then:
docker compose ps
docker compose not foundCheck whether Docker Compose is installed as a plugin:
docker compose version
# If not available, update Docker or install the Compose plugin
chmod +x manage.sh
# Or run directly:
sh manage.sh update
manage.sh is a shell script and does not run directly in PowerShell/cmd. Always switch to WSL2 first:
wsl
cd ~/infraquill
./manage.sh update
Docker Desktop → Settings → Resources → WSL Integration: the distribution used must be enabled.
Unraid's Docker plugin usually includes docker compose. If not available, install the "Compose Manager" plugin from the Community Applications.
---
./manage.sh stop
docker compose down --volumes --rmi all
Warning:--volumesdeletes all persistent data including the Ollama models. Without--volumes, the data in thedata/folder is preserved.
Price plus 19% VAT. One-time payment, no subscription costs, self-hosted.