Amir Al-Rabadi

Cybersecurity student & AI research assistant · LLM code-security, self-hosted infrastructure, Zero Trust, detection engineering

LLM & AI Security Local LLM Engineering Detection Engineering Zero Trust Self-Hosted Infrastructure

Live infrastructure

A self-hosted LLM stack running on my own hardware, published through Cloudflare Tunnel and gated by Zero Trust access policies. Status below is checked server-side against the real origin, not guessed from the browser.

Visitor's browser llm. / files.amirslm.com This page (Cloudflare Pages) Function: /api/status HTTPS every 30s, with service token Cloudflare edge — Zero Trust Access identity is checked here, before anything reaches my house email one-time PIN service-token policy Cloudflare Tunnel outbound-only · no open ports AmirREALPC · at home cloudflared Open WebUI chat · Docker :3000 AnythingLLM document RAG · Docker :3001 Ollama · :11434 Qwen 27B · RX 7900 XTX, 24 GB VRAM
Nothing on the home network accepts inbound connections. The status check below has to pass the same Access gate as a person does, using its own service-token policy, so it can tell “the PC is off” apart from “Access turned the request away”.
Checking status…

Security projects

AI/LLM code-security research and tools built against infrastructure I run and defend — from evaluating how models behave to the pentest workflow of recon, then scanning. Each one documents its design tradeoffs and limitations honestly.

The scanning layer built on top of ReconScope: it takes an authorized target — or ReconScope’s own output — and assesses open ports, TLS configuration, and HTTP security posture, without ever crossing into exploitation. The interesting engineering is the governance: fail-closed scope re-checked against every resolved IP to defeat DNS rebinding, a permanent-deny list no scope file can override (loopback, link-local, the cloud-metadata endpoint), and severities reported as a named scale rather than a fabricated CVSS number, because a non-intrusive scanner cannot honestly observe the inputs to a real score.

PythonVulnerability assessmentTLSFail-closed scope

A governed web application for penetration-testing reconnaissance. Passive collection is the default and never touches the target; Active Mode sends real traffic only after a signed Rules of Engagement is approved, an activation gate is passed, and every target survives a fail-closed scope check — once when the job is scheduled, and again immediately before each packet. Real certificate-transparency and RDAP queries, deterministic correlation, an append-only audit log, and an Emergency Stop measured at 1.1s. Built from a full PRD.

FastAPIReconnaissanceRBAC & auditRules of Engagement
PAWTRON — Segmented Enterprise Network team · IST 4910

A three-person build of a nine-VM enterprise network on Proxmox for a fictional pet-retail business: pfSense perimeter, VyOS routing, a screened zone holding an IIS web tier and a PostgreSQL database that nothing outside the web tier can reach, and Active Directory DNS on the LAN. I built the application tier and its security decisions: argon2id passwords, session tokens stored hashed so a dump of the sessions table is not a set of live logins, parameterised queries throughout, prices recomputed server-side at checkout, and no column for a card number at all. Nightly backups are verified at write time and restored into a scratch database to prove they work. I also wrote the service record, where every address was confirmed from the machine itself rather than copied from the design diagram, which turned out to be wrong in places.

Network segmentationpfSense / VyOSPostgreSQLargon2idBackup & restore testingRHEL / Windows Server

Verifies that hostnames are actually behind Zero Trust access controls, not merely online. Written after I found two of my own subdomains serving unauthenticated traffic while the dashboard showed a correctly-configured policy — the application was bound to the apex domain instead of the service subdomains, and every uptime monitor would have called both hosts healthy.

Cloudflare WorkersCron TriggersWorkers KVZero Trust

A hostname that sounds worth attacking, hosts nothing, and fingerprints every scanner that finds it. Deliberately does not harvest submitted credentials — storing credential-stuffing attempts means operating a secrets database with no lawful use, and those passwords often belong to real victims whose machines are part of a botnet. It logged its first uninvited traffic within minutes of deployment, from addresses that found it via certificate-transparency logs.

Cloudflare WorkersThreat intelligenceWorkers KV

Detection engineering over Cloudflare Access authentication events — six rules including success-after-denial, the shape of a successful intrusion following a failed one. The README documents a correction I had to make to my own design: I assumed the audit log carried no geolocation and built around that, then checked the live API and found a country field on every event. The rule is named country-change rather than impossible-travel, because coordinates still aren’t available and it should be called what it measures.

Detection rulesLog pipelineR2Cloudflare API

A locally-hosted model writes operator briefings over my telemetry, with output verified against the source data before it is trusted. The finding I care about is where it still fails: token-level verification catches fabricated values but not fabricated relationships between values that are individually real. A run that passed verification still miscounted seven paths as nine.

PythonOllamaQwenLLM evaluation

Network inventory and drift detection in dependency-free PowerShell. ARP-first discovery rather than a port scan, and diffed by MAC rather than IP so DHCP churn doesn't masquerade as new devices. Documents its own edge cases, including a MoCA bridge presenting two addresses behind one MAC.

PowerShellAsset managementNetwork discovery

Aggregates all three monitors into one daily Telegram message, and answers /status on demand. Sends unconditionally, including when nothing happened — an alerts-only setup is indistinguishable from a broken alerts-only setup, because silence means either “all clear” or “the pipeline died three weeks ago.” Sibling Workers are wired together with service bindings rather than public URLs.

Cloudflare WorkersService BindingsTelegram Bot API

Diagnoses Windows instability from evidence Windows already records and nobody reads. Its core insight: a shutdown is not a shutdown — Kernel-Power event 41 fires for instant power loss, for a held power button after a freeze, and for a real bugcheck, and every tool I found treats all three as one thing. They need completely different fixes, which is why this class of problem gets misdiagnosed for months. Run against my own machine it separated 23 abnormal shutdowns into three distinct causes. Includes a -Watch mode measured at 0.16% CPU, because a stutter-diagnosis tool that causes stutters is worse than useless.

PowerShellWindows internalsEvent log analysisPerformance counters

Chat with my self-hosted model from Telegram. Runs beside the GPU rather than in the cloud — hosting it on a Worker would add an access traversal and a token to rotate in front of a machine that has to be awake anyway, buying zero availability. Long-polls instead of using a webhook, so it needs no inbound port and no tunnel. Refuses to start without a chat allowlist rather than defaulting to open.

PythonTelegram Bot APIOllama

Windows desktop application that visualizes what is consuming disk space — treemap rendering, threaded scanner, and guarded deletion that tags anything Windows depends on.

WindowsDesktop

AI engineering

Running and building on local models: finding where the time and memory actually go, and giving a model tools it can use safely.

Local LLM Load-Time Investigation in production

My self-hosted 27B model took over two minutes to load and left Windows with zero available RAM, even though it ran entirely on the GPU. Reading the inference server’s own logs found two separate causes. First, every model shipped a vision projector that ran two full-resolution image warmup passes on every load, even for text-only chats. The tell was that raising the batch size made loads slower, since a bigger batch means a bigger warmup graph. Second, memory-mapping kept a full copy of the weights resident in system RAM while the same weights also sat in VRAM. The fix was text-only builds of each model, with vision kept under separate names (no extra disk, because identical weights dedupe by digest), and disabling mmap.

Cold model load · seconds, lower is better
before 137.1 s
after ~20 s
System RAM held by the server · GB
before 15.2 GB
after 1.1 GB

Just as useful was what I ruled out. Disk, PCIe link width and batch size were all measured and cleared. Generation speed (~40 tok/s) was already at the card’s memory-bandwidth ceiling, so it was left alone. I also tried speculative decoding with a small draft model and documented why it cannot work for this architecture: Qwen3.8 speculates through a built-in multi-token-prediction head whose hidden width the draft would have to match, and the current runtime ignores that head.

Ollama / llama.cppROCmPerformance analysisMemory profilingModel packaging
Roblox AI Harness

Lets an LLM build a game inside Roblox Studio: create the world, write scripts, playtest, read the errors and fix them. An MCP server and a Luau Studio plugin share one conversation across a web GUI, the terminal and a Studio panel. Studio cannot accept inbound connections, so the plugin long-polls a localhost bridge for commands, and every edit lands as a single undo step. Live testing showed that driving playtests directly left the running game’s changes behind in the place, so playtests now run as a separate Studio session that cannot touch the saved place. Runs free on the local Qwen model by default, can switch to Claude, and passes 17 live integration tests.

Model Context ProtocolNode.jsLuauAgent toolingOllama

Experience

Researcher — ARRC 2026 – Present
AI & VR Research and Retraining Center, Center for Cyber and AI · CSUSB · ~20 hrs/week
  • Research AI model trust, bias, and code-security risk in applied cybersecurity contexts.
  • Design prompt-based experiments evaluating whether LLMs emit insecure code under specific identity or geopolitical conditions.
  • Build repeatable baseline-vs-trigger test plans and evaluate AI-generated code with static analysis, manual review, and security-control checklists.
  • Produce technical briefs and research documentation for academic and government stakeholders.
WITH Pre-Apprentice 2026 – Present
Center for Cyber and AI · California State University, San Bernardino
  • Weekly cybersecurity training focused on technical skill development and career readiness.
  • Collaborate with peers to deliver group objectives on schedule.
  • Strengthened communication, teamwork, and problem-solving through collaborative projects.
  • Workshopped employment scenarios and common workplace dynamics.
Instructional Technology Support Clerk Summer 2025
Etiwanda School District, IT Department · intern, ~20 hrs/week
  • Managed and maintained IT systems, ensuring reliable access for staff and students.
  • Delivered room-by-room software upgrades across 10+ schools serving 13,000 students.
  • Troubleshot hardware and software issues across a range of vendors in a professional IT environment.
  • Collaborated on system monitoring and support, building knowledge applicable to security operations.
Project Leader Present
Cyber Intelligence and Security Organization (CISO) · CSUSB
  • Lead and participate in weekly workshops covering networking, system administration, penetration testing, and defensive security.
  • Applied Wireshark, PowerShell, and Nmap in simulated environments and labs.

Education

B.S. Computer Information Systems — Cybersecurity Concentration Expected Dec 2026
California State University, San Bernardino
  • 3.7 GPA · Dean's List, Spring 2026 · early graduation
  • Project Leader, Cyber Intelligence and Security Organization

Certifications

Azure Fundamentals (AZ-900)Jul 2026
CompTIA Network+Jun 2026
CompTIA Security+Jul 2025
Google Foundations of CybersecurityJan 2025

Technical skills

LLM & AI security LLM code-security evaluation SAST (Semgrep, Bandit) Self-hosted LLMs (Ollama, Qwen) Retrieval-augmented generation (RAG) Sandbox isolation Zero Trust access control Detection engineering Threat identification & incident response Wireshark Nmap PowerShell Python Cloudflare Workers Docker Windows system administration Networking & firewall configuration Hardware assembly & troubleshooting