Your AI is local.
Is it cooked?
One Bash script checks your model servers, containers, agent configs, and MCP grants for the mistakes that get local AI owned. It reads. It never fixes, phones home, or starts anything.
curl -fsSL https://iscooked.com/iscooked.com | bash
Linux · macOS · Bash 4+ · No account · No telemetry
~ $ bash iscooked.com Am I Cooked? — Local AI Security Scanner v1.3.1 https://iscooked.com Scanning your setup...────────────────────────────────────────────────────────────── [01] Network Exposure ──────────────────────────────────────────────────────── 🔥 COOKED Unidentified service on port 8000 (commonly vLLM) is listening on ALL interfaces ✅ SAFE Unidentified service on port 1234 (commonly LM Studio) is bound to localhost only [02] API Authentication ──────────────────────────────────────────────────────── ⚠ WARMING UP Ollama /api/tags on port 11434 accessible without authentication on localhost; other routes were not tested [03] Model File Permissions ──────────────────────────────────────────────────────── 🔥 COOKED Files in /srv/models are world-writable! [04] Docker / Container Risks ──────────────────────────────────────────────────────── ✅ SAFE Container 'open-webui' is running as user 'app' ⚠ WARMING UP Container 'open-webui' is using host networking [05] GPU Driver Exposure ──────────────────────────────────────────────────────── ⏭ SKIP No GPU devices detected [06] Telemetry / Phoning Home ──────────────────────────────────────────────────────── ⏭ SKIP No supported opt-out evidence found [07] Firewall Status ──────────────────────────────────────────────────────── ✅ SAFE UFW firewall is active [08–17] 10 more areas skipped in this example────────────────────────────────────────────────────────────── YOUR COOKED SCORE 28% cooked [▒▒▒▒▒▒▒▒▒▒▒ ] SLIGHTLY WARM 2 critical 2 warnings 3 passed 0 unknown 12 skipped (19 results) Fix critical findings first.~ $
Seventeen places
things go wrong.
Each check reports what it saw and what it could not see. A skipped check never counts as safe.
Network & access
01.1Network exposureFind listeners on common AI ports.
01.2API authenticationExamine model-list routes on identified services.
01.3Firewall statusSeparate active, inactive, and unknown states.
01.4Plain HTTP exposureFind exposed services that use plain HTTP.
Files & secrets
02.1Model file permissionsFind model files that other users can read or change.
02.2Sensitive filesFind exposed environment files and ownership risks.
02.3History & logsFind possible keys in history and exposed log directories.
Containers & hardware
03.1Docker configurationExamine users, privileges, sockets, and host access.
03.2GPU exposureExamine GPU device access and management listeners.
03.3AI processesFind known AI processes and their users.
Agents & models
04.1Ollama configurationExamine host, origin, and service settings.
OLLAMA_HOST, OLLAMA_ORIGINS,
and supported service-manager configuration.
04.2Browser controlFind browser debugging listeners, including custom ports.
04.3MCP configurationExamine filesystem grants and configuration permissions.
04.4OpenClaw gatewayExamine authentication and tool settings for OpenClaw CLI 2026.9.3 and later.
04.5Remote model codeFind remote-code flags in active vLLM, TGI, and SGLang commands.
04.6Telemetry settingsExamine opt-out variables and known blocked domains.
04.7Runtime versionsFlag Ollama, vLLM, and LiteLLM proxy versions with known advisories, and LiteLLM releases that shipped malware.
Checks can be skipped or incomplete. A low score is not a security guarantee.
Check the
doneness.
Every finding adds heat. Change the counts and watch the verdict move. This uses the same rules as the scanner.
28% cooked [▒▒▒▒▒▒▒▒▒▒▒ ] SLIGHTLY WARM 2 critical 2 warnings 3 passed 0 unknown 12 skipped (19 results) Fix critical findings first.
2 × 10 + 2 × 4 = 28. Any critical finding turns the verdict red, whatever the number.
The total stops at 100. The score is a capped heuristic, not a probability of compromise. Resolve unknown results · Read the scoring guide
Plate your
report.
Save a JSON report and open it in the viewer. Findings get grouped by check, unknowns link to their fix, and you can copy a clean summary for an issue or a teammate.
- 01Run
bash iscooked.com --json > cooked.json - 02Drop
cooked.jsoninto the viewer. - 03The file is read by your browser. The viewer page blocks all network requests.
Your machine.
Your scan.
Read the source. Run the scanner. Examine the findings.
- Get the script
- Run it locally
- Examine the result
Quick run
Downloads and runs the script in your terminal.
curl -fsSL https://iscooked.com/iscooked.com | bash
Download & read
1. Download the script and read it.
curl -fsSL https://iscooked.com/iscooked.com -o iscooked.com &&
less iscooked.com
2. Start it when you are ready.
bash iscooked.com
Save a report
1. Write one JSON report. Requires Python 3.
bash iscooked.com --json > cooked.json
2. Open it in the report viewer. Add --fail-on critical to exit 1 when a critical finding occurs.
Before you run it: run bash --version.
The scanner requires Bash 4 or later. On macOS, the system Bash can
be too old. Use the path to your newer Bash executable if necessary.
Python 3 enables structured checks. Missing optional tools cause skipped checks. Unknown or skipped results? Find the next step.
Use bash iscooked.com --help for options.
Full requirements ↗
Before you run it.
Does it change my settings?
No. The scanner examines local settings. It does not apply fixes, start agents, or load models. You decide which settings to change.
Does anything leave my machine?
The initial command downloads the script. The scanner sends no telemetry or scan report. It probes selected local AI and browser service endpoints.
Does the report viewer upload my report?
No. Your browser reads the file. The viewer page is served with a content security policy that blocks every network request, so the page cannot send the report anywhere.
What does the score mean?
Critical findings add 10 points. Warnings and unknown findings add 4. Passed and skipped checks add none. The maximum is 100. A low score does not establish that your system is safe.
What can it miss?
Unsupported tools, inaccessible files, missing dependencies, and configuration formats can limit coverage. A skipped check does not establish safety. Read the coverage limits ↗
Why is it called iscooked?
Because "am I cooked?" is the question you ask after you notice Ollama listening on 0.0.0.0. The scanner answers it with evidence.