<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>zentex · Writing</title>
    <link>https://zent7x.com/blog</link>
    <atom:link href="https://zent7x.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>Short posts about LLM routing, agent loops, terminals, and security work by Adeeb Bashir (zentex).</description>
    <language>en</language>
    <lastBuildDate>Sun, 02 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Real Chromium pixels in your terminal</title>
      <link>https://zent7x.com/blog/chromium-in-the-terminal</link>
      <guid isPermaLink="true">https://zent7x.com/blog/chromium-in-the-terminal</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Terminal browsers usually cheat. They parse HTML, throw away the layout, and print what survives. That works for reading a man page online and falls apart the moment a page depends on its real rendering, which in 2026 is nearly every page.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/zent7x/terminal-fenster&quot;&gt;terminal-fenster&lt;/a&gt; takes the other road. A headless Chromium renders the page for real, and the frames are painted straight into the terminal through the &lt;a href=&quot;https://sw.kovidgoyal.net/kitty/graphics-protocol/&quot;&gt;Kitty graphics protocol&lt;/a&gt;. &lt;a href=&quot;https://ghostty.org/&quot;&gt;Ghostty&lt;/a&gt; treats them like any other cell content. Your scrollback, your splits, and your keybindings keep working, and the page looks like the page.&lt;/p&gt;&lt;p&gt;Input goes the other way. Keys and clicks in the terminal are mapped back into Chromium events, so you can log in, scroll, and fill forms without leaving the shell. The whole thing exists because my work lives in a terminal, and switching to a browser window a hundred times a day was the single most annoying part of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zero prompt logging is the product</title>
      <link>https://zent7x.com/blog/zero-prompt-logging</link>
      <guid isPermaLink="true">https://zent7x.com/blog/zero-prompt-logging</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;An LLM router sits in the most sensitive spot of the whole stack. Every prompt, every system message, and every tool result passes through it. Most providers treat that stream as an asset to mine. I think the mining is the bug.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://routing.run&quot;&gt;routing.run&lt;/a&gt; is OpenAI compatible on the outside and deliberately forgetful on the inside. Requests are routed, billed, and dropped. There is no prompt store to breach, subpoena, or train on, because the store does not exist.&lt;/p&gt;&lt;p&gt;The models themselves are a commodity now. They get cheaper and better every quarter no matter what I do. The thing that is not a commodity is your context, and a router that remembers nothing is the only honest way to hold it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Authorized means written down</title>
      <link>https://zent7x.com/blog/authorized-means-written</link>
      <guid isPermaLink="true">https://zent7x.com/blog/authorized-means-written</guid>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
      <description>&lt;p&gt;Every security engagement I take starts the same way. A written scope that names the systems, the techniques, and the window. Not a verbal ok on a call. A document both sides can point at later.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://thepublive.com&quot;&gt;Publive&lt;/a&gt; work ran like that. Scope first, then recon, then findings written up as they landed, each with reproduction steps and impact stated plainly. Critical bugs got reported the day they were confirmed, not saved for a dramatic final report.&lt;/p&gt;&lt;p&gt;I do not test systems I was not asked to test. Curiosity is not authorization, and a bug found outside scope is not a favor, it is a liability for everyone involved. If you want your systems poked, the invitation has to exist in writing. Then I am happy to break things carefully.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
