👻 PhantomOps: The AI Exorcist That Works With the Internet Off | Ghost in the Machine Submission 🎃🌼 A developer built PhantomOps, an open-source "FinOps & kernel agent" that runs entirely offline to detect zombie and runaway processes on Windows and cloud-cost anomalies, using a local TabPFN classifier plus Gemma 2 2B via Ollama for process autopsies. The tool requires human approval through Auth0 step-up OAuth2 before terminating processes and issues SHA-256 receipts, with the core scan-detect-autopsy-kill loop running with the internet disconnected at zero inference cost. It was submitted to the Hacktoberfest Open-Source AI Challenge's "Ghost in the Machine" week. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine https://dev.to/challenges/hacktoberfest-week4-2026-10-26 Open Task Manager right now. Scroll slowly. Somewhere in that list is a process with no reason to exist — a stale worker from a project you closed in June, a leaky helper quietly eating 400 MB, a script that was supposed to finish an hour ago and never got the memo. Your machine is haunted. PhantomOps is the exorcist. 👻 PhantomOps is a zero-cloud-leakage FinOps & kernel agent that runs entirely on your own hardware. It finds the ghost resources haunting your Windows kernel or your cloud bill, runs a local AI autopsy on them, lets you interrogate them in a live voice séance, requires a human to sign the kill order through Auth0 — and then banishes them for real, with a cryptographic receipt and a synthesized exorcism scream. How I interpreted the theme: literally. Zombie processes are the undead of software — programs that finished their purpose but refused to leave memory. And Día de los Muertos teaches that the dead deserve to be honored properly, not just discarded. So PhantomOps doesn't just kill -9 a ghost. It gives it a funeral: .safetensors on disk, CPU-only scores every process zero-shot for how "haunted" it is And because this is the open-source AI challenge: the core loop — scan → detect → autopsy → kill — runs with the internet unplugged. The model weights sit on your disk. Your process inventory never leaves the chassis. The AI inference bill is $0.00 , forever. A few receipts from my own testing: spawn zombie.py — it allocates an actual explorer.exe , svchost.exe , code.exe , ollama.exe … and a self-preservation rule mean it only kills what it can prove is a ghost. ▶️️ Watch the full exorcism ritual: 🔗 Direct link: Watch on YouTube https://youtu.be/H0Jv7wWqIi4 What the recording shows — the 90-second arc: python spawn zombie.py — a real 700 MB zombie process comes alive on my machine Zero-cloud-leakage FinOps & kernel agent. Find the ghosts haunting your Windows kernel or your cloud bill → run a local AI autopsy → interrogate them in a live voice séance → get human clearance through Auth0 → put them to rest with a signed cryptographic receipt and a synthetic exorcism scream. Built for the Hacktoberfest Open-Source AI Challenge: Ghost in the Machine 🎃🌼 Every machine has ghosts. The staging server that nobody killed in March. The script that leaked memory for 400 hours while everyone went home. The GPU instance cryptojacking at 3 AM. They drain your RAM and your budget — invisible, unaccounted for, undead . PhantomOps is a paranormal investigator for your infrastructure: it sees them, names them, questions them, and with a human's blessing banishes them — entirely on your own hardware . The full architecture is documented in the README. Where to start digging: | File | What's Inside | |---|---| | spawn zombie.py | 🧟 The demo prop — summons a real 700 MB runaway process | | app.py | 🎛️ The Streamlit haunted console — 3 tabs, KPIs, Auth0 callback handler | | src/live scanner.py | 🖥️ Per-PID kernel snapshot tab-level precision + process-tree exorcist | | src/detector.py | 🔮 TabPFN classifier + regressor + counterfactual blame engine | | src/reasoner.py | 🧠 Gemma 2 autopsies & séance roleplay Pydantic-enforced JSON | | src/gatekeeper.py | 🔐 Auth0 step-up OAuth2 + JWT decode + SHA-256 receipts | | src/narrator.py | 🎙️ ElevenLabs STT / dual-voice TTS / exorcism SFX | The stack: Python · Streamlit + Plotly dark telemetry UI · tabpfn Prior Labs · Gemma 2 2B via Ollama · Auth0 OAuth2 · ElevenLabs scribe v1 , multilingual v2 , Text-to-Sound-Effects · psutil · PyTorch on CPU. 🖥️ LIVE KERNEL psutil ☁️ CLOUD ESTATE CSV └────────────┬────────────┘ ▼ 🔮 TABPFN-3.5-FAST local .safetensors, CPU classifier → ghost confidence · regressor → doomsday counterfactuals → feature blame ▼ flagged ghosts only 🧠 GEMMA 2 2B via OLLAMA local JSON autopsy + first-person séance roleplay ▼ 🔐 AUTH0 STEP-UP 🎙️ ELEVENLABS human clearance STT + 2-voice TTS SHA-256 receipts + exorcism SFX ▼ 💀 EXORCISM: tree-kill + taskkill /F /T /PID 📜 signed receipt: operator ∥ resource ∥ command ∥ time Stage 1 — Ingestion, with per-tab precision. psutil.process iter walks the entire Windows process table and builds one evidence file per PID: RAM, CPU, threads, uptime, command line, and an estimated hourly cost mem mb×0.0008 + cpu%×0.015 + threads×0.004 . Because Chromium runs each active tab as its own renderer process, the scanner naturally sees each tab as its own suspect — a runaway tab can't hide behind its browser. A cmdline fingerprint flags any running spawn zombie.py as an unmistakable zombie runaway script ; heuristics catch the rest live memory hog 4% RAM, live cpu runaway 50% CPU, thread bloated daemon 85 threads . Stage 2 — TabPFN does the divining. The classifier fits on baseline telemetry signatures and scores the remaining estate zero-shot — no gradient training, no GPU, no data upload. My favorite seven lines in the repo: Ensure any active spawn zombie.py is always surfaced at the very top zombie mask = df "resource id" .str.contains "spawn zombie", case=False, na=False if zombie mask.any : df.loc zombie mask, "ghost confidence" = 0.9999 When the scanner sees the demo zombie, there is no "maybe". It is 99.99% sure , and the queue agrees. A TabPFNRegressor then simulates 30 days of decay memory +1.35%/day to chart the cumulative financial drain against the flat $0 line after exorcism — and estimates time-to-OOM-crash in hours. Counterfactual sliders let you mutate a ghost's telemetry live and watch TabPFN re-classify it as healthy: the moment the confidence drops is the explanation of what was haunting it. Stage 3 — Gemma 2 performs the autopsy. Flagged telemetry goes to a local Gemma 2 2B through Ollama, which must return JSON matching a Pydantic GhostAutopsy schema — incident title , severity , root cause autopsy , monthly waste usd , and an environment-aware exorcism command taskkill /F /T /PID