<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: jtarkington77</title>
    <description>The latest articles on Forem by jtarkington77 (@jtarkington77).</description>
    <link>https://forem.com/jtarkington77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3637938%2F46463ce0-93ef-48cf-bd80-0207c364d8ee.jpeg</url>
      <title>Forem: jtarkington77</title>
      <link>https://forem.com/jtarkington77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jtarkington77"/>
    <language>en</language>
    <item>
      <title>When Malware Starts Prompt-Engineering Itself</title>
      <dc:creator>jtarkington77</dc:creator>
      <pubDate>Fri, 05 Dec 2025 13:30:00 +0000</pubDate>
      <link>https://forem.com/jtarkington77/when-malware-starts-prompt-engineering-itself-db6</link>
      <guid>https://forem.com/jtarkington77/when-malware-starts-prompt-engineering-itself-db6</guid>
      <description>&lt;p&gt;Somewhere right now, there’s a sketchy little script on a compromised Windows box asking an AI model how to be sneakier.&lt;/p&gt;

&lt;p&gt;Not a red-teamer. Not a malware dev in Visual Studio. Just the malware itself, pinging an LLM API and basically saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Rewrite me so I stop getting caught.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s the shift we’re watching in real time.&lt;/p&gt;

&lt;p&gt;A recent report from Google’s Threat Intelligence Group (GTIG) walks through the first real wave of "AI-enabled" malware seen in actual operations, not just on conference slides. We’re talking about names like &lt;strong&gt;PROMPTFLUX&lt;/strong&gt;, &lt;strong&gt;PROMPTSTEAL&lt;/strong&gt;, and &lt;strong&gt;FRUITSHELL&lt;/strong&gt; — all trying, in different ways, to bolt large language models (LLMs) onto old-school tradecraft.&lt;/p&gt;

&lt;p&gt;The punchline is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The malware code is still pretty rudimentary.
&lt;/li&gt;
&lt;li&gt;The architecture, however, is brilliant.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only look at the code quality, you’re going to miss what they’re really doing.&lt;/p&gt;

&lt;p&gt;They aren't building better bombs; they are building smarter delivery systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s Actually New Here?
&lt;/h2&gt;

&lt;p&gt;Threat actors have been using AI as a glorified Stack Overflow for a while:&lt;br&gt;&lt;br&gt;
“Write me a PowerShell script to do X,” or “Fix this compile error.”&lt;/p&gt;

&lt;p&gt;That’s boring. That’s just a developer using tools.&lt;/p&gt;

&lt;p&gt;The interesting part in this report is the &lt;strong&gt;runtime&lt;/strong&gt; angle: malware calling out to LLMs &lt;strong&gt;during execution&lt;/strong&gt; to change how it behaves on the victim machine.&lt;/p&gt;

&lt;p&gt;Instead of shipping a fully baked malware family with a static decision tree, they are shipping a &lt;strong&gt;thin client&lt;/strong&gt; and outsourcing the tactical decision-making to Gemini, Hugging Face models, or whatever else is cheap and accessible.&lt;/p&gt;

&lt;p&gt;It’s basically malware with a plug-in.&lt;/p&gt;

&lt;p&gt;The plug-in just happens to be a Large Language Model.&lt;/p&gt;




&lt;h2&gt;
  
  
  Meet the First Wave (It’s Not Just Skiddies)
&lt;/h2&gt;

&lt;p&gt;The names might sound like someone let an intern name the projects, but the actors behind them are serious.&lt;/p&gt;

&lt;p&gt;In fact, Google’s reporting ties &lt;strong&gt;PROMPTSTEAL&lt;/strong&gt; to &lt;strong&gt;APT28&lt;/strong&gt; (aka Fancy Bear / Forest Blizzard) — the Russian military intelligence group responsible for some of the most significant cyberattacks of the last decade.&lt;/p&gt;

&lt;p&gt;When nation-states enter the chat, it’s no longer a science experiment.&lt;/p&gt;

&lt;p&gt;Here’s the breakdown of what is actually hitting networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  PROMPTFLUX: The Polymorphic Loop
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;PROMPTFLUX&lt;/strong&gt; is a VBScript-based dropper that talks to Google’s Gemini API. Its job isn’t to be clever on its own. Its job is to &lt;strong&gt;ask Gemini to rewrite its own source code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;According to the analysis, PROMPTFLUX attempts to generate new, obfuscated iterations of itself as often as every hour. It then saves these fresh variants into persistence locations like the Startup folder.&lt;/p&gt;

&lt;p&gt;The old way: attackers pack/encrypt the malware once before sending it.&lt;br&gt;&lt;br&gt;
The AI way: the malware repacks itself constantly, asking an LLM to generate unique variations that break signature-based detection.&lt;/p&gt;

&lt;h3&gt;
  
  
  PROMPTSTEAL: The Consultant on Retainer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;PROMPTSTEAL&lt;/strong&gt; is the family linked to APT28. It’s a Python data miner that uses the Hugging Face API to query a Qwen2.5-Coder model for Windows commands.&lt;/p&gt;

&lt;p&gt;Roughly, the loop looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Malware scrapes system info.
&lt;/li&gt;
&lt;li&gt;Malware sends context to the LLM: “Here is the environment. What should I run to find sensitive files?”
&lt;/li&gt;
&lt;li&gt;The LLM replies with specific commands for discovery and exfiltration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The malware isn’t shipping with a hard-coded list of targets.&lt;br&gt;&lt;br&gt;
It’s shipping with a loop that keeps asking an AI for the next best move.&lt;/p&gt;

&lt;h3&gt;
  
  
  FRUITSHELL &amp;amp; PROMPTLOCK
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;FRUITSHELL&lt;/strong&gt; is a reverse shell that uses hard-coded prompts to dynamically adjust how it evades detection and communicates back to the attacker.&lt;/p&gt;

&lt;p&gt;GTIG also calls out &lt;strong&gt;PROMPTLOCK&lt;/strong&gt;, an AI-powered ransomware proof-of-concept. It doesn’t just encrypt files; it feeds hard-coded prompts into a local LLM to generate Lua scripts for scanning, exfiltration, encryption, and even shaping ransom-note content in ways that crank up the psychological pressure on the victim.&lt;/p&gt;

&lt;p&gt;In other words: even the “PoC” stuff is showing where this is going.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI APIs Are the New C2
&lt;/h2&gt;

&lt;p&gt;Here’s the mental shift Blue Teams need to make immediately:&lt;/p&gt;

&lt;p&gt;If your endpoint is quietly calling Gemini, Hugging Face, or a custom model on a VPS, that is not just "weird traffic." &lt;strong&gt;That is Command and Control (C2).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It just doesn’t look like the C2 we grew up on. Traditionally, C2 has meant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP(S) beacons to sketchy, low-reputation domains
&lt;/li&gt;
&lt;li&gt;Encrypted traffic to bulletproof hosts
&lt;/li&gt;
&lt;li&gt;DNS tunneling
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, imagine a world where your malware beacons out to &lt;code&gt;generativelanguage.googleapis.com&lt;/code&gt; or &lt;code&gt;api-inference.huggingface.co&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;From the network firewall’s perspective, it looks like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh, this user is just using an AI productivity tool.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you don’t have a strong baseline on &lt;strong&gt;who&lt;/strong&gt; in your environment is allowed to talk to those APIs — from which hosts and using which identities — you’ve basically given attackers a free, encrypted outbound channel with the label &lt;strong&gt;“Innovation”&lt;/strong&gt; slapped on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prototype Malware, Real Humans
&lt;/h2&gt;

&lt;p&gt;On paper, this is all "experimental" and "nascent." In practice, it tells you a lot about how threat actors are adapting.&lt;/p&gt;

&lt;p&gt;The report calls out a simple, terrifying trick regarding guardrails. When Gemini initially refused to generate offensive code for PROMPTFLUX, the operator didn’t give up. They simply reframed the request as a Capture-The-Flag (CTF) exercise.&lt;/p&gt;

&lt;p&gt;Suddenly, the same model that said “I cannot assist with malware” handed over useful building blocks for obfuscation and persistence.&lt;/p&gt;

&lt;p&gt;We keep talking about "AI-powered threats" like the model is the villain. It’s not.&lt;/p&gt;

&lt;p&gt;The dangerous part is the &lt;strong&gt;human feedback loop&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They learn which prompts bypass safety filters.
&lt;/li&gt;
&lt;li&gt;They learn which open-source models (like Qwen) have zero or minimal safety filters.
&lt;/li&gt;
&lt;li&gt;They learn how far they can push "legitimate" APIs before they get rate-limited or blocked.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  “This Isn’t Skynet” Is Not Comforting
&lt;/h2&gt;

&lt;p&gt;Right now, almost every write-up is careful to say some version of:&lt;br&gt;&lt;br&gt;
“AI-enabled malware is still immature and often detectable.”&lt;/p&gt;

&lt;p&gt;And that’s true.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lot of the samples have sloppy execution.
&lt;/li&gt;
&lt;li&gt;They depend on external network access to work at all.
&lt;/li&gt;
&lt;li&gt;They leave very obvious artifacts for EDR (like massive Python libraries dropped on disk).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But "immature" doesn’t mean "safe." It means &lt;strong&gt;we’re early in the learning curve&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We’ve seen this movie before with polymorphic engines in the 90s and Malware-as-a-Service in the 2010s. LLMs are just the latest mutator.&lt;/p&gt;

&lt;p&gt;The difference this time is &lt;strong&gt;velocity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of a niche assembly coder painstakingly building a mutation engine, you now have copy-paste access to obfuscation strategies and cheap AI APIs doing the heavy lifting.&lt;/p&gt;




&lt;h2&gt;
  
  
  So What Do We Actually Do About It?
&lt;/h2&gt;

&lt;p&gt;The good news: you don’t need a massive "AI for XDR" budget to start taking this seriously. You need to treat AI interactions with the same suspicion you treat PowerShell.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Treat AI endpoints like high-risk C2
&lt;/h3&gt;

&lt;p&gt;Start small and practical. Decide which systems are allowed to talk to AI services at all.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer boxes? Maybe.
&lt;/li&gt;
&lt;li&gt;Domain controllers and file servers? Absolutely not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put egress controls around common AI endpoints. Alert on new processes reaching out to those domains — especially things that shouldn’t be running Python or VBScript in the first place.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stop sprinkling long-lived API keys
&lt;/h3&gt;

&lt;p&gt;If your organization is experimenting with AI, you are likely leaving API keys hardcoded in scripts or environment variables.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralize API calls through a gateway.
&lt;/li&gt;
&lt;li&gt;Scope tokens tightly (rate limits, IP ranges, least privilege).
&lt;/li&gt;
&lt;li&gt;Rotate keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The more AI access you casually hand to random machines, the more surface area an attacker has to hijack your paid quota to generate their malware.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Hunt for the “thinking” latency
&lt;/h3&gt;

&lt;p&gt;There is a specific behavioral quirk to this malware: &lt;strong&gt;latency&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Unlike a hard-coded script that executes instantly, AI-enabled malware has to pause:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Process starts.
&lt;/li&gt;
&lt;li&gt;Pause (network call to API).
&lt;/li&gt;
&lt;li&gt;Wait (LLM token generation).
&lt;/li&gt;
&lt;li&gt;Execute new command.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That pause — the "thinking time" — is a huntable anomaly. Look for processes that hang with an open network connection to an AI provider before spawning a child process or writing new script content to disk.&lt;/p&gt;




&lt;h2&gt;
  
  
  Don’t Sleep on the Prototypes
&lt;/h2&gt;

&lt;p&gt;Right now, PROMPTFLUX and its cousins look like what they are: first attempts. They’re weird. They’re noisy. And in a lot of environments, they’re catchable.&lt;/p&gt;

&lt;p&gt;That’s exactly why they matter.&lt;/p&gt;

&lt;p&gt;They show us what attackers are trying to learn: how to turn AI APIs into on-demand C2, and how to mutate code fast enough to outpace signatures.&lt;/p&gt;

&lt;p&gt;If you’re on the Blue Team, this isn’t the moment to panic.&lt;/p&gt;

&lt;p&gt;It’s the moment to quietly adjust your mental model.&lt;/p&gt;

&lt;p&gt;AI isn’t just a thing your security vendor bolts onto their product slide. It’s now a resource your adversaries can rent by the hour.&lt;/p&gt;

&lt;p&gt;The malware is still dumb.&lt;/p&gt;

&lt;p&gt;The operators aren't.&lt;/p&gt;

&lt;p&gt;Your job is to make sure your defenses aren’t either.&lt;/p&gt;




&lt;h2&gt;
  
  
  See more of my work and tools
&lt;/h2&gt;

&lt;p&gt;Portfolio: &lt;a href="https://jtarkington-portfolio.netlify.app" rel="noopener noreferrer"&gt;https://jtarkington-portfolio.netlify.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/jtarkington77" rel="noopener noreferrer"&gt;https://github.com/jtarkington77&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>malware</category>
      <category>ai</category>
      <category>blueteam</category>
    </item>
    <item>
      <title>Sealed Box AI: A Runbook for Owning Your Own Local-Only AI Stack</title>
      <dc:creator>jtarkington77</dc:creator>
      <pubDate>Sun, 30 Nov 2025 21:13:34 +0000</pubDate>
      <link>https://forem.com/jtarkington77/sealed-box-ai-a-runbook-for-owning-your-own-local-only-ai-stack-4p4i</link>
      <guid>https://forem.com/jtarkington77/sealed-box-ai-a-runbook-for-owning-your-own-local-only-ai-stack-4p4i</guid>
      <description>&lt;p&gt;I don’t really trust “private AI” that still runs on someone else’s hardware.&lt;/p&gt;

&lt;p&gt;Every vendor has some version of: &lt;em&gt;“Your data is safe, we don’t train on it, trust us.”&lt;/em&gt; But at the end of the day, you’re still piping sensitive work into a black box you don’t control, on infrastructure you can’t see, under policies that can change whenever it’s convenient.&lt;/p&gt;

&lt;p&gt;So I started designing what I actually wanted:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A sealed box, on my own hardware, where AI works &lt;strong&gt;for&lt;/strong&gt; me instead of &lt;strong&gt;on&lt;/strong&gt; me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That turned into the &lt;strong&gt;Sealed Box AI Runbook&lt;/strong&gt; – a full write-up on how I run a local-only AI stack with a worker model, a watchdog model, local RAG, and agents, all behind my own guardrails.&lt;/p&gt;

&lt;p&gt;GitHub repo: &lt;a href="https://github.com/jtarkington77/sealed-box-ai-runbook" rel="noopener noreferrer"&gt;https://github.com/jtarkington77/sealed-box-ai-runbook&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What “Sealed Box AI” means here
&lt;/h2&gt;

&lt;p&gt;This isn’t “install one app and call it a day.” It’s an architecture and a set of habits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Worker model&lt;/strong&gt; – the main model that answers questions, writes code, drafts reports, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watchdog model&lt;/strong&gt; – a second model that reads &lt;em&gt;summaries&lt;/em&gt; of what the worker is doing and scores it for risky behavior, policy violations, or weird patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local RAG&lt;/strong&gt; – a retrieval layer (Qdrant in my case) that only indexes content I explicitly feed it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents&lt;/strong&gt; – tightly scoped tools (internet research, intel sync, lab actions) that the worker can call, but only in specific ways.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict boundaries&lt;/strong&gt; – clear lanes between “things the model can see,” “things the model can touch,” and “things that never leave this box.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn’t “maximum complexity.” It’s:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use powerful models, but &lt;strong&gt;own the stack and the blast radius.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;If you’re:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running a homelab or small environment and want AI without handing everything to a cloud vendor
&lt;/li&gt;
&lt;li&gt;Doing blue-team / security work and don’t want incident data living in random SaaS logs
&lt;/li&gt;
&lt;li&gt;Building tools where privacy, provenance, and control actually matter
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…this runbook is written for you.&lt;/p&gt;

&lt;p&gt;It’s not a sales deck. It’s “here’s how I actually wire this up at home.”&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture at a glance
&lt;/h2&gt;

&lt;p&gt;The stack is meant to be understandable even if you’re not an ML engineer.&lt;/p&gt;

&lt;p&gt;High-level flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You → Open WebUI&lt;/strong&gt; (or your UI of choice)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open WebUI → Worker model&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Worker can:

&lt;ul&gt;
&lt;li&gt;Call &lt;strong&gt;local tools/agents&lt;/strong&gt; (research, scripts, retrieval)&lt;/li&gt;
&lt;li&gt;Read from &lt;strong&gt;local RAG&lt;/strong&gt; (Qdrant) for your own notes, docs, logs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Each run generates a &lt;strong&gt;summary + metadata&lt;/strong&gt; (what tools were used, what it tried to do, etc.)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;watchdog model&lt;/strong&gt; reads those summaries and:

&lt;ul&gt;
&lt;li&gt;Flags risky behavior or policy violations&lt;/li&gt;
&lt;li&gt;Scores runs, so you can spot “spiky” or odd sessions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Everything lives behind your own network controls:

&lt;ul&gt;
&lt;li&gt;Reverse proxy / zero-trust edge if you expose anything
&lt;/li&gt;
&lt;li&gt;No direct inbound to the models
&lt;/li&gt;
&lt;li&gt;Clear separation between “inside the box” and “outside traffic”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Think of it as combining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Self-hosted LLM stack
&lt;/li&gt;
&lt;li&gt;Minimal SIEM-style visibility
&lt;/li&gt;
&lt;li&gt;Old-school “story of the system” runbook&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Hardware tiers: reality, not fantasy
&lt;/h2&gt;

&lt;p&gt;The runbook doesn’t assume you own a data center. I break things down by &lt;strong&gt;VRAM tiers&lt;/strong&gt; and what you trade off at each level:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;12–16 GB VRAM&lt;/strong&gt; – &lt;em&gt;Bare minimum&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;Smaller models, fewer concurrent agents, more careful prompt design.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;16–24 GB VRAM&lt;/strong&gt; – &lt;em&gt;Comfortable for a primary box&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;Better 7B/8B models, more tools, more headroom.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;24+ GB VRAM&lt;/strong&gt; – &lt;em&gt;Where it gets fun&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;Multiple agents, stronger models, more experimentation without everything falling over.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The idea is: you can start on what you have now, and grow into the bigger build as you go.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the runbook actually gives you
&lt;/h2&gt;

&lt;p&gt;The repo isn’t just “here’s an idea.” It’s a practical guide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conceptual design&lt;/strong&gt; – how worker + watchdog + RAG + agents fit together
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model selection notes&lt;/strong&gt; – what I’m using and why, and what you can swap
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network and host layout&lt;/strong&gt; – how I separate concerns and keep the blast radius small
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational habits&lt;/strong&gt; – how to think about logging, summaries, and watching your own AI stack
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build-sheet style notes&lt;/strong&gt; – so you can adapt it to your own hardware instead of copying blindly
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve ever wanted to move from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I hope my vendor’s ‘private AI’ story holds up”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I know exactly where this data lives and what these models can touch”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…that’s the gap this runbook is trying to close.&lt;/p&gt;




&lt;h2&gt;
  
  
  Grab the full runbook
&lt;/h2&gt;

&lt;p&gt;If any of this resonates, the full write-up lives here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sealed Box AI Runbook&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/jtarkington77/sealed-box-ai-runbook" rel="noopener noreferrer"&gt;https://github.com/jtarkington77/sealed-box-ai-runbook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ll keep iterating on it as I test new models, refine the watchdog, and tighten the guardrails. Feedback, arguments, and “you’re missing a huge threat” comments are all welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;More of my work &amp;amp; tools:&lt;/em&gt;&lt;br&gt;&lt;br&gt;
Portfolio: &lt;a href="https://jtarkington-portfolio.netlify.app" rel="noopener noreferrer"&gt;https://jtarkington-portfolio.netlify.app&lt;/a&gt; &lt;br&gt;
GitHub: &lt;a href="https://github.com/jtarkington77" rel="noopener noreferrer"&gt;https://github.com/jtarkington77&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>selfhosted</category>
      <category>cybersecurity</category>
      <category>homelab</category>
    </item>
  </channel>
</rss>
