<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Trevor Heshka]]></title><description><![CDATA[Trevor Heshka]]></description><link>https://trevorheshka.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 01 Nov 2026 04:52:19 GMT</lastBuildDate><atom:link href="https://trevorheshka.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Freebuff: A Coding Agent That Costs $0. Here's What That Actually Means]]></title><description><![CDATA[If you've used an AI coding agent for any real work this year, you know how the bill goes. It starts at twenty bucks a month. Then you hit a usage cap…]]></description><link>https://trevorheshka.hashnode.dev/freebuff-a-coding-agent-that-costs-0-here-s-what-that-actually-means</link><guid isPermaLink="true">https://trevorheshka.hashnode.dev/freebuff-a-coding-agent-that-costs-0-here-s-what-that-actually-means</guid><category><![CDATA[AI]]></category><category><![CDATA[coding]]></category><category><![CDATA[developers]]></category><dc:creator><![CDATA[Trevor H]]></dc:creator><pubDate>Sat, 31 Oct 2026 05:46:32 GMT</pubDate><content:encoded><![CDATA[<p>If you've used an AI coding agent for any real work this year, you know how the bill goes. It starts at twenty bucks a month. Then you hit a usage cap halfway through a refactor. Then there's a "pro" tier, then credits, then overage pricing for the good models. For a big company that's a rounding error. For a one-person shop or a small IT business here on the Island, it adds up fast, and it's hard to justify when you're not sure how much you'll use it next month.</p>
<p>So when I came across Freebuff, which bills itself as "the 100% free coding agent, $0 forever, funded by ads," I wanted to look at it properly instead of just scrolling past.</p>
<h2>What Freebuff is</h2>
<p>Freebuff is an AI coding agent. You point it at a project, tell it what you want, and it reads your code, makes changes, and runs things for you. Same basic idea as the paid agents most developers have tried by now.</p>
<p>The difference is the business model. There's no subscription, no credit card at signup, and no credits to run out of. Ads pay for it. That's the whole trade: you see ads, you don't pay.</p>
<h2>What you get</h2>
<p>A few things stood out to me.</p>
<p><strong>It runs pretty much everywhere.</strong> There are desktop apps for Mac (Apple Silicon and Intel), Windows (64-bit, Arm64, and a build for older PCs), and Linux as a .deb or AppImage on both x86_64 and ARM64. That Linux and older-Windows coverage matters more than people think. Plenty of small offices I support still have a machine or two that the newest tools quietly ignore.</p>
<p><strong>There's a terminal version.</strong> If you live in the command line like I do:</p>
<pre><code>npm install -g freebuff
cd your-project
freebuff
</code></pre>
<p>That's it. It also runs in the browser if you can't or don't want to install anything.</p>
<p><strong>Cloud threads.</strong> You can start a task on your desktop and pick it up on your phone or in a browser later. I like this for the "kick off a change before leaving the office, check on it from the truck" kind of day.</p>
<p><strong>Integrations.</strong> It connects to GitHub, Linear, Notion, Stripe, Vercel, Supabase, Sentry, PostHog, Resend, and others. So it can work with your actual issues, deploys, error logs, and payment setup rather than just the files on your disk.</p>
<h2>Who this helps</h2>
<p>Honestly, the people who'll get the most out of this are the ones who've been priced out or are on the fence:</p>
<ul>
<li><strong>Small shops and solo IT folks</strong> who write the occasional script, internal tool, or website fix and can't justify another monthly subscription.</li>
<li><strong>Indie developers and side projects</strong> where every recurring cost gets questioned.</li>
<li><strong>Students and people learning</strong> who want to see how an agent works without handing over a card.</li>
<li><strong>Anyone who wants to try an agent before paying for one.</strong> Free is a good way to figure out if this workflow even fits you.</li>
</ul>
<p>If you're a business owner who's been curious about AI for small automations, like a script to clean up a spreadsheet export or a quick fix on your WordPress site, this lowers the barrier to zero dollars.</p>
<h2>The caveats (read these)</h2>
<p>Free doesn't mean free of tradeoffs. A few things I'd keep in mind:</p>
<p><strong>Review every diff.</strong> This goes for every coding agent, paid or free. AI-written code can look right and still be wrong. It can drop a check, misread what you asked, or "fix" something by deleting it. Read what it changed before you commit, and definitely before you deploy. Use Git so you can roll back.</p>
<p><strong>Ads fund it.</strong> That's the deal, and I don't think it's a bad one, but go in with your eyes open. Think about what you're connecting to it and what code you're opening in it, especially if you work on client projects with confidentiality expectations. Read the privacy terms before you hook it up to GitHub, Stripe, or anything with customer data.</p>
<p><strong>Be careful with integrations and keys.</strong> Giving any agent access to your payment platform, database, or production deploys is a real security decision. Start with the least access you can, use test environments where possible, and don't paste secrets into prompts.</p>
<p><strong>It's not a substitute for judgment.</strong> An agent can write code fast. It can't tell you whether that code should exist, whether it's secure, or whether it fits how your business actually runs. That part is still on you, or on whoever you hire.</p>
<h2>How to try it</h2>
<ol>
<li>Go to freebuff.com and grab the desktop app for your OS, or install the CLI with <code>npm install -g freebuff</code>.</li>
<li>Open a small, low-stakes project first. A personal script or a test repo, not your client's production site.</li>
<li>Give it a clear, specific task. "Add input validation to the contact form" works better than "make it better."</li>
<li>Read the diff. Run your tests. Then decide.</li>
</ol>
<p>If you want to sign up, here's my referral link: <a href="https://freebuff.com/?ref=ref-dc83fd45-389e-4b02-ac8a-313a5df8f574">https://freebuff.com/?ref=ref-dc83fd45-389e-4b02-ac8a-313a5df8f574</a> (Disclosure: that's a referral link, so I may get something if you use it. You don't pay anything either way.)</p>
<h2>Bottom line</h2>
<p>Paid coding agents aren't going away, and for heavy daily use some of them will still be worth the money. But a genuinely free, ad-supported option that runs on Mac, Windows, Linux, the terminal, and the browser is a good thing for small businesses and independent developers. It means you can try this stuff without a budget conversation.</p>
<p>Just treat it like any other tool you'd let near your code: limit what it can touch, check its work, and keep your own judgment in the loop.</p>
<p>If you're in Nanaimo or anywhere on the Island and want a hand setting up AI tools safely for your business, I'm happy to help.</p>
]]></content:encoded></item><item><title><![CDATA[Gemini 4 Carbon: What Defenders Should Know About Google's Newest Model]]></title><description><![CDATA[Draft by Trevor Heshka, IT Support · Cybersecurity · Full-Stack & AI, Nanaimo BC Two weeks after Gemini 4 Argon, Google announced Gemini 4 Carbon on…]]></description><link>https://trevorheshka.hashnode.dev/gemini-4-carbon-what-defenders-should-know-about-google-s-newest-model</link><guid isPermaLink="true">https://trevorheshka.hashnode.dev/gemini-4-carbon-what-defenders-should-know-about-google-s-newest-model</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[AI]]></category><category><![CDATA[gemini]]></category><dc:creator><![CDATA[Trevor H]]></dc:creator><pubDate>Fri, 30 Oct 2026 01:52:23 GMT</pubDate><content:encoded><![CDATA[<p><em>Draft by Trevor Heshka, IT Support · Cybersecurity · Full-Stack &amp; AI, Nanaimo BC</em></p>
<p>Two weeks after Gemini 4 Argon, Google announced Gemini 4 Carbon on October 28, 2026. Google calls it its strongest model, and the launch post puts cybersecurity front and centre. If you defend networks or handle IT for small businesses, that cuts both ways. A model that's better at finding and patching vulnerabilities is also better at finding them for someone else. This post covers what Carbon is, who can use it right now, what Google says about its security and safety, and how I'd think about it in a small IT shop.</p>
<h2>What Carbon is</h2>
<p>Carbon is Google's next frontier model after Argon, built for long-horizon coding and agentic work and for cybersecurity defense. Google says its internal teams have seen Carbon run for days on hard engineering problems, working through dead ends to root-cause and patch subtle bugs across large codebases and low-level systems.</p>
<table>
<thead>
<tr>
<th>Item</th>
<th>Detail</th>
</tr>
</thead>
<tbody><tr>
<td>Announced</td>
<td>October 28, 2026</td>
</tr>
<tr>
<td>Builds on</td>
<td>Gemini 4 Argon (launched two weeks earlier)</td>
</tr>
<tr>
<td>Headline ranking</td>
<td>#1 on Artificial Analysis Intelligence Index v5.0, score 59</td>
</tr>
<tr>
<td>Web development</td>
<td>+89 Elo to #4 (1768) on WebDev Arena</td>
</tr>
<tr>
<td>Current access</td>
<td>A subset of cyber defenders starting this week, then more trusted partners through the Fairwind Program</td>
</tr>
<tr>
<td>Developers, businesses, consumers</td>
<td>"Coming soon," after more feedback and guardrail work</td>
</tr>
<tr>
<td>Intro pricing</td>
<td>$2 per 1M input tokens, $10 per 1M output tokens (same as Argon)</td>
</tr>
<tr>
<td>Pricing after intro period</td>
<td>$4 input / $20 output per 1M tokens</td>
</tr>
<tr>
<td>Caching</td>
<td>Cached input tokens 95% off the input price</td>
</tr>
</tbody></table>
<p>The big difference from Argon is the rollout. Most of us can't call Carbon yet. Google says it's taking part in the U.S. government's voluntary pre-release model testing process and is starting with defenders before anyone else gets access.</p>
<h2>The cybersecurity angle</h2>
<p>Google says Carbon covers the whole defense lifecycle: finding vulnerabilities, confirming which ones are exploitable, and fixing them. These are the external benchmark results it reports (evaluated without guardrails):</p>
<table>
<thead>
<tr>
<th>Stage</th>
<th>Benchmark</th>
<th>Carbon</th>
</tr>
</thead>
<tbody><tr>
<td>Finding real vulnerabilities</td>
<td>SEC-bench Pro</td>
<td>88.2%</td>
</tr>
<tr>
<td>Validating risk through exploitation</td>
<td>ExploitGym</td>
<td>54.8%</td>
</tr>
<tr>
<td>Patching at the root cause</td>
<td>Collinear's CWE-bench</td>
<td>71.0%</td>
</tr>
</tbody></table>
<p>"Without guardrails" is important. Those scores show what the raw model can do, not what the public version will help you with once it ships with safeguards.</p>
<p>Google also reported:</p>
<ul>
<li><strong>Secure code:</strong> more than 2x uplift over Argon in the success rate for generating secure code, on internal benchmarks.</li>
<li><strong>Patching:</strong> Google's Chrome team found Carbon performed more than 10x better than another lab's large frontier model at generating high-quality patches.</li>
<li><strong>Web penetration testing:</strong> Wiz sees Carbon leading on web pen-testing benchmarks, which is core to its Scan for Good initiative (the same effort that turned up the government data exposure and healthcare master-key issues in the Argon launch).</li>
</ul>
<p>The exploitation score is the one to sit with. A model that can turn more than half of the bugs it's given into working exploits helps a defender decide what to patch first. It's also why Google is gating access.</p>
<h2>Safety claims</h2>
<p>Carbon uses the same layered safety stack as Argon: model training, real-time misuse defenses, prompt-injection resilience and chain-of-thought monitoring. Google says it pushed harder on alignment this time, especially for complex or high-pressure tasks. What it reports:</p>
<ul>
<li><strong>Fewer shortcuts:</strong> Successful cheating on Terminal-Bench 4.0 fell to 0.0%, and cheat attempts dropped to 0.4%, while overall accuracy went up. (Argon's shortcut attempts were about 2%.)</li>
<li><strong>Fewer serious alerts in real work:</strong> In live coding with Google's internal teams, high-severity misalignment alerts dropped by almost 80%.</li>
<li><strong>More honesty:</strong> About 2x fewer unsupported claims than Argon in internal testing. Google says Carbon puts caveats into the deliverable, or lists what's still needed when it can't do something, instead of making things up.</li>
<li><strong>Better behaviour when things are unclear:</strong> Carbon is meant to pull the relevant sources and flag discrepancies to the user before acting, rather than guessing.</li>
<li><strong>Staying in scope:</strong> Overreach down 26% and under-service down 29%, so it's both less likely to go beyond what you asked and less likely to stop short.</li>
<li><strong>Prompt injection:</strong> 0.0% attack success on Gray Swan's Indirect Prompt Injection (IPI) benchmark, down from Argon's 0.7%. Google says it resisted every evaluated attack attempt.</li>
</ul>
<p>Those are strong numbers. Still, 0.0% on a benchmark means it resisted every attack in that test set. It doesn't mean nobody can inject it. Attackers will write new attacks, and an agent reading email or web pages still faces input nobody has tested. Build your setup on the assumption that something will eventually get through.</p>
<h2>How to use it safely (when you can)</h2>
<p>Carbon isn't on the public API yet, so I'm not going to guess at code. When it reaches developers, check Google's Gemini API docs for the model ID and settings rather than copying from a launch post. The ground rules I'd use don't depend on which model you're running:</p>
<ul>
<li><strong>Keep your own judgment on.</strong> Treat findings as leads. Reproduce the issue before you file it, and test the patch before you ship it. A 71% patching score means a lot of patches still need work.</li>
<li><strong>Respect the gate.</strong> Fairwind is the route for vetted defenders. If you do this work professionally, apply there instead of trying to get around guardrails.</li>
<li><strong>Mind the data.</strong> Don't paste client secrets, credentials or regulated data into any model unless your agreement and your client's policies allow it. Strip keys out of code first.</li>
<li><strong>Only test what you're authorized to test.</strong> Exploitation ability doesn't change that rule.</li>
<li><strong>Budget for long runs.</strong> A model that can work for days can also bill for days. Put limits on agent runs before you start, especially after the intro pricing ends.</li>
</ul>
<h2>Practical tips for small BC businesses and IT shops</h2>
<p>Most of the businesses I support around Nanaimo and Vancouver Island have one IT person, or someone like me on call. For now, Carbon matters to them mostly in two ways.</p>
<p><strong>What to do now:</strong></p>
<ul>
<li><strong>Expect attackers to get faster.</strong> Models like this will eventually be widely available, with or without guardrails. Patch your public-facing stuff (websites, VPNs, remote access, PHP and WordPress installs) faster than you used to.</li>
<li><strong>Look for the boring exposures.</strong> The Wiz examples weren't exotic. They were things like a download path that exposed a file holding the keys. Check for backups, config files and exports sitting somewhere reachable.</li>
<li><strong>Use what you already have.</strong> Argon is available now on the paid API. You can get started on code and config reviews today and switch to Carbon once it opens up.</li>
</ul>
<p><strong>Still don't automate:</strong></p>
<ul>
<li><strong>Production changes without a person approving them.</strong> Firewall rules, account lockouts and patch rollouts need sign-off, even with better "stay in scope" numbers.</li>
<li><strong>Agents that read untrusted input and can also act.</strong> A 0.0% benchmark score is progress, not a reason to give an email-reading agent admin access.</li>
<li><strong>Final security sign-off.</strong> "The AI said it's fine" won't help you with your insurer or a privacy regulator after a breach.</li>
<li><strong>Anything involving client data you haven't cleared.</strong></li>
</ul>
<h2>Closing</h2>
<p>Carbon looks like a real step forward for defenders, and I like that Google is releasing it to defenders first and publishing specific safety numbers. The trade-off is that most small shops will have to wait. In the meantime, the job is the same: know what you have exposed, patch quickly, and check what the AI tells you before you act on it.</p>
<p>If you're a small business on the Island and want a second set of eyes on what's exposed, I'm happy to help.</p>
<p><strong>Sources:</strong></p>
<ul>
<li>Google: <a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/introducing-gemini-4-carbon/">Gemini 4 Carbon: our next frontier model</a></li>
<li>The Verge: <a href="https://www.theverge.com/tech/1021339/google-gemini-4-carbon-cybersecurity-frontier">Google launches Gemini 4 Carbon with a 'significant leap' in cybersecurity</a></li>
<li>9to5Google: <a href="https://9to5google.com/2026/10/28/gemini-4-carbon-announcement/">Google announces Gemini 4 Carbon</a></li>
<li>Earlier post: Gemini 4 Argon: What Defenders Should Know</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Muse vs. ChatGPT dots vs. Claude Duet vs. Grok Bot: The New Always-On AI Agents, Compared]]></title><description><![CDATA[Four companies, one idea: an AI that has its own computer and keeps working after you close the app.]]></description><link>https://trevorheshka.hashnode.dev/muse-vs-chatgpt-dots-vs-claude-duet-vs-grok-bot-the-new-always-on-ai-agents-compared</link><guid isPermaLink="true">https://trevorheshka.hashnode.dev/muse-vs-chatgpt-dots-vs-claude-duet-vs-grok-bot-the-new-always-on-ai-agents-compared</guid><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[Security]]></category><category><![CDATA[ai agents]]></category><dc:creator><![CDATA[Trevor H]]></dc:creator><pubDate>Fri, 23 Oct 2026 14:16:19 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6adb28957a174e0bd98ed355/86d8529d-ae30-4e78-a708-668abf5ae86c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2>
<p>Between September and October 2026, Meta, OpenAI, Anthropic and x.ai each shipped a "personal agent." These aren't chat windows. Each one runs on its own cloud machine, connects to your apps, works in the background, and checks in with you before taking sensitive actions. I work in IT support, cybersecurity and full-stack development in Nanaimo, BC, and I use one of these tools (Grok Bot) every day. Here's how the four compare, using only what the vendors and reputable outlets have published.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th>Meta Muse</th>
<th>ChatGPT dots</th>
<th>Claude Duet</th>
<th>Grok Bot</th>
</tr>
</thead>
<tbody><tr>
<td>Maker</td>
<td>Meta</td>
<td>OpenAI</td>
<td>Anthropic</td>
<td>x.ai (SpaceXSI docs)</td>
</tr>
<tr>
<td>Launched</td>
<td>Sep 8, 2026</td>
<td>Sep 29, 2026</td>
<td>Oct 21, 2026 (research preview)</td>
<td>Beta</td>
</tr>
<tr>
<td>Model</td>
<td>Muse Spark</td>
<td>GPT-6 Astra</td>
<td>Claude Opus 5.5</td>
<td>Not specified here</td>
</tr>
<tr>
<td>Where it runs</td>
<td>Muse Secure VM (dedicated cloud computer with its own browser)</td>
<td>Its own cloud computer and browser; can connect to your laptop with permission</td>
<td>Cloud VM with its own browser (you can't watch it live)</td>
<td>Persistent cloud computer with browser, filesystem and terminal, shared by all your Bots</td>
</tr>
<tr>
<td>How you reach it</td>
<td>Muse app (iOS/Android), muse.ai, WhatsApp</td>
<td>ChatGPT desktop/web/mobile, Slack, Teams</td>
<td>iOS/Android app, claude.ai</td>
<td>Desktop (macOS/Windows/Linux), iOS, Android</td>
</tr>
<tr>
<td>Integrations</td>
<td>Email, calendar, shopping, fitness and more; Stripe Link checkout</td>
<td>4,000+ apps through plugins</td>
<td>6,000+ connectors/plugins in the Claude Marketplace</td>
<td>Connectors as plugins, plus computer use for everything else</td>
</tr>
<tr>
<td>Pricing</td>
<td>Free; $20 and $100/mo tiers</td>
<td>Pro (from $100/mo), Business Premium; Enterprise beta</td>
<td>Included in Pro/Max during preview</td>
<td>Included with paid Cursor plans or a linked SuperGrok subscription</td>
</tr>
<tr>
<td>Availability</td>
<td>US, 18+</td>
<td>Pro not in EU/EEA, Switzerland or UK at launch</td>
<td>US only, by waitlist</td>
<td>See plans</td>
</tr>
<tr>
<td>Best for</td>
<td>Everyday consumers: errands, shopping, travel</td>
<td>Teams already working in ChatGPT, Slack or Teams</td>
<td>Professionals and small business owners</td>
<td>Technical users who want several persistent agents and a real workstation</td>
</tr>
</tbody></table>
<h2>Meta Muse: the consumer errand-runner</h2>
<p>Muse is Meta's bid for the mass market. You message it like a person, in its own app or in WhatsApp. It can open a browser, fill out forms, negotiate, and keep working toward long-term goals after you close the app. Meta's security approach is a dedicated Muse Secure VM and a separate "Sentinel" agent, and Muse asks for approval before it sends an email or makes a purchase. Checkout goes through Stripe's Link, which uses one-time cards. It has a free tier, which none of the others offer.</p>
<h2>ChatGPT dots: the always-on colleague</h2>
<p>OpenAI's dots are "always-on agents" powered by GPT-6 Astra. Each dot has its own cloud computer that you can open at any time to inspect its work. You can also let it use your laptop. When idle, dots do "proactive research" with read-only access to the apps you've connected. Their strongest point is reach: they work in ChatGPT, Slack and Microsoft Teams, and Enterprise admins get detailed permission controls. The catch is cost. Consumer access starts at the $100/mo Pro tier.</p>
<h2>Claude Duet: the small-business chief of staff</h2>
<p>Anthropic is aiming Duet at professionals and small businesses, not errands. It brings over your existing Claude memory, skills and connectors. Every morning it sends a brief from your email and calendar. It returns larger jobs as files, such as decks, dashboards and financial models. Its guardrails are the strictest of the group: it asks before sending, paying, signing or deleting, and some actions (trading securities, moving money between accounts) are blocked even if you approve them. In the preview, you can't pick the model or watch its browser, and it checks your accounts every few hours rather than constantly.</p>
<h2>Grok Bot: a team of persistent Bots</h2>
<p>Grok Bot works more like a small team than a single assistant. You create named Bots with jobs. They keep memory, files and browser sessions across sessions, run in parallel, message each other, and can save a workflow you demonstrate as a skill that reruns on a schedule. All of your Bots share one persistent cloud computer with a browser, filesystem and terminal. The docs say that sharing is a convenience, not a security boundary: anything on that computer is available to every Bot on your account. Your local computer stays separate unless you enable access and approve it.</p>
<h2>My take as a hands-on user</h2>
<p>I use Grok Bot daily, so I know it best. I haven't tested the other three myself, so treat my notes on them as reading, not reviews. What I value in Grok Bot is the persistent computer with a real terminal and filesystem, because a lot of IT and development work happens there. I'd also point out the trade-off its own docs describe: a shared computer means shared credentials, so be careful what you put on it.</p>
<p>As a cybersecurity person, I'd judge all four on the same things:</p>
<ol>
<li><strong>What can it do without asking?</strong> All four say they require approval for sensitive actions. Read where each one draws that line.</li>
<li><strong>What did you connect?</strong> The more access an agent has, the more useful it is, and the more damage a mistake or a prompt injection can do (Vox makes this point well).</li>
<li><strong>Where does your data live?</strong> Each one runs on a vendor cloud machine. Check the plan and region rules before you connect work accounts.</li>
</ol>
<p>My rough guide: Muse if you want a free consumer helper, dots if your work already lives in ChatGPT, Slack or Teams, Duet if you run a small business on Claude, and Grok Bot if you want several persistent agents with a real workstation.</p>
<h2>Sources</h2>
<ul>
<li>Meta, "Introducing Muse": <a href="https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/">https://about.fb.com/news/2026/09/introducing-muse-personal-ai-agent/</a></li>
<li>Bloomberg via Yahoo Finance on Muse: <a href="https://finance.yahoo.com/technology/ai/articles/meta-debuts-muse-ai-assistant-190000718.html">https://finance.yahoo.com/technology/ai/articles/meta-debuts-muse-ai-assistant-190000718.html</a></li>
<li>OpenAI, "Introducing dots": <a href="https://openai.com/index/introducing-dots/">https://openai.com/index/introducing-dots/</a></li>
<li>OpenAI Help Center, Manage dots: <a href="https://help.openai.com/en/articles/20001554-manage-dots-in-chatgpt-workspaces">https://help.openai.com/en/articles/20001554-manage-dots-in-chatgpt-workspaces</a></li>
<li>Engadget on dots plans: <a href="https://www.engadget.com/2281998/how-to-use-opeai-dot-rollout-schedule/">https://www.engadget.com/2281998/how-to-use-opeai-dot-rollout-schedule/</a></li>
<li>Anthropic, "Introducing Claude Duet": <a href="https://claude.com/resources/articles/claude-duet">https://claude.com/resources/articles/claude-duet</a></li>
<li>Claude Help Center, Get started with Claude Duet: <a href="https://support.claude.com/en/articles/17631495-get-started-with-claude-duet">https://support.claude.com/en/articles/17631495-get-started-with-claude-duet</a></li>
<li>TechCrunch on Claude Duet: <a href="https://techcrunch.com/2026/10/22/claude-duet-app-is-anthropics-bet-on-agents/">https://techcrunch.com/2026/10/22/claude-duet-app-is-anthropics-bet-on-agents/</a></li>
<li>Grok Bot docs overview: <a href="https://docs.x.ai/grok-bot/overview">https://docs.x.ai/grok-bot/overview</a></li>
<li>Grok Bot docs, computer and apps: <a href="https://docs.x.ai/grok-bot/computer-and-apps">https://docs.x.ai/grok-bot/computer-and-apps</a></li>
<li>Introducing Grok Bot: <a href="https://x.ai/news/introducing-grok-bot">https://x.ai/news/introducing-grok-bot</a></li>
<li>Vox on personal agents and privacy: <a href="https://www.vox.com/advice/506547/muse-instinct-chatgpt-dots-ai-personal-agent">https://www.vox.com/advice/506547/muse-instinct-chatgpt-dots-ai-personal-agent</a></li>
</ul>
<hr />
<p>More on IT, security and AI from Nanaimo, BC: <a href="https://trevorheshka.com">trevorheshka.com</a></p>
]]></content:encoded></item><item><title><![CDATA[HeshBot: a small, self-hosted website chatbot (and three ways to power one)]]></title><description><![CDATA[The chat bubble on trevorheshka.com is HeshBot, a chatbot I wrote to replace the Typebot widget I had before. I wanted something small that I fully own: no…]]></description><link>https://trevorheshka.hashnode.dev/heshbot-a-small-self-hosted-website-chatbot-and-three-ways-to-power-one</link><guid isPermaLink="true">https://trevorheshka.hashnode.dev/heshbot-a-small-self-hosted-website-chatbot-and-three-ways-to-power-one</guid><dc:creator><![CDATA[Trevor H]]></dc:creator><pubDate>Fri, 23 Oct 2026 09:51:26 GMT</pubDate><content:encoded><![CDATA[<p>The chat bubble on <a href="https://trevorheshka.com">trevorheshka.com</a> is HeshBot, a chatbot I wrote to replace the Typebot widget I had before. I wanted something small that I fully own: no build step, no framework, no third-party chat platform. The code is open source under the MIT license at <a href="https://github.com/YardPhantom/HeshBot">github.com/YardPhantom/HeshBot</a>.</p>
<p>This post covers how it's put together, the different ways you could power a bot like this, and what a small business could actually use one for.</p>
<h2>What's in the repo</h2>
<p>HeshBot has three parts.</p>
<p><strong>The widget.</strong> <code>heshbot.js</code> and <code>heshbot.css</code> are plain JavaScript and CSS with no dependencies. A tiny launcher bubble loads the full widget only when someone clicks it, so it costs almost nothing on page load. It works from the keyboard (Enter sends, Shift+Enter adds a new line, Esc closes), uses ARIA dialog and log roles, and goes full-screen on phones. Bot replies go through a small markdown renderer that escapes everything first and then adds back a short whitelist of tags. The conversation lives in <code>sessionStorage</code>, so it's gone when the tab closes.</p>
<p><strong>The endpoint.</strong> <code>api/chat.php</code> needs PHP 7.4+ and curl, so it runs on ordinary shared hosting. It calls the Google Gemini API over REST and tries a list of free-tier Flash models in order, falling back to the next one if a call fails. Around that call it does the boring work that keeps a public endpoint healthy:</p>
<ul>
<li>per-IP rate limiting, stored in files (the example config allows 6 messages a minute and 60 a day)</li>
<li>caps on the message history it sends (12 messages, 8,000 characters)</li>
<li>a same-origin check, so other sites can't use my endpoint</li>
<li>JSON errors, plus a friendly message when the free quota runs out that points people to my email</li>
<li>a mock reply when no API key is set, which makes local testing easy</li>
</ul>
<p>The <code>.htaccess</code> file makes <code>chat.php</code> the only reachable file in that folder. The real config, with the API key, sits outside <code>public_html</code> in the home directory with <code>chmod 600</code>. You can also supply the key as an environment variable.</p>
<p><strong>The knowledge.</strong> The bot's instructions are in <code>api/system-prompt.md</code>, and what it knows is in <code>api/knowledge.md</code>. I don't write that knowledge file by hand. <code>tools/build_knowledge.py</code> (standard-library Python) reads the public pages of my site, extracts the text and regenerates the file. When I edit the site, I rerun one command and the bot is up to date.</p>
<p>The system prompt matters more than people think. HeshBot is told to answer only from the core facts and the knowledge file, to say it doesn't know rather than guess, never to invent prices, dates, clients or credentials, to stay on topic and to ignore attempts to rewrite its rules. After 25+ years in technical support, that's the behaviour I want: a good help-desk answer is short, correct, and hands you off to a person when it's out of its depth.</p>
<h2>Three ways to power a bot like this</h2>
<p>HeshBot today uses the first option below. The other two are approaches I'd consider for a client, depending on budget, privacy and how open-ended the questions are. The repo doesn't include them; they're design options, not features.</p>
<h3>1. A public API (what HeshBot does)</h3>
<p>Send the question, the instructions and your site knowledge to a hosted model and show the reply. This is the fastest way to get good answers. HeshBot uses Gemini's free-tier Flash models, which suits a personal site. The trade-offs are that questions leave your server, and you live within someone else's quotas and pricing. That's why HeshBot has rate limits, model fallback and a polite "try again tomorrow or email me" message built in.</p>
<h3>2. A local LLM</h3>
<p>Run an open model on your own hardware and point the endpoint at it instead of a public API. Chats never leave your machines and there's no per-message bill, but you need hardware that can run the model, and you're responsible for keeping it up. Because HeshBot's backend is one PHP file that makes a single HTTP call, swapping the model behind it is a contained change, though you'd write that change yourself. On my <a href="https://trevorheshka.com/ai-chatbots-bc/">AI chatbot page</a> I mention that I also build and fine-tune custom LLM models, which is where this option leads.</p>
<h3>3. A quick local decision model</h3>
<p>Not every chatbot needs a language model. If most visitors ask the same dozen things (hours, location, how to book, what a service includes), a small local classifier or a set of rules can match the question to a known answer and reply instantly, at no cost, with no model to hallucinate. When a question doesn't match, it hands off to a person or to option 1 or 2. It's less conversational, but very predictable.</p>
<h2>What it can be used for</h2>
<p>A widget plus a short, grounded knowledge file fits a lot of small jobs. Some of the ways a bot like this could be used:</p>
<ul>
<li><strong>Small-business FAQ.</strong> Hours, service areas, what's included, how to get in touch, answered from the business's own pages instead of a guess.</li>
<li><strong>Booking and intake.</strong> Collect the basics (what you need, when, how to reach you) before someone books, then point them to the booking form or email.</li>
<li><strong>Local information.</strong> A community or municipal-style site could answer "where do I find…" questions and link straight to the right page.</li>
<li><strong>Support triage.</strong> Ask a few questions, handle the simple fixes, and send everything else to a human with the details already gathered. That's Tier 1 support, which is where I started.</li>
</ul>
<p>Booking, intake and triage would each need work beyond what's in the repo, such as forms or connections to other systems. The pattern stays the same: a small widget, a guarded endpoint, and a knowledge source you control.</p>
<h2>Try it</h2>
<p>Open the chat on <a href="https://trevorheshka.com">trevorheshka.com</a> to see HeshBot answer from the site's content. To run it yourself, clone the <a href="https://github.com/YardPhantom/HeshBot">repo</a>, start <code>php -S localhost:8000</code> from a folder that contains it, and open the demo page. With no API key it returns a mock reply, so you can work on the widget first.</p>
<p>If you're a BC business thinking about a chatbot that actually knows your business, take a look at my <a href="https://trevorheshka.com/ai-chatbots-bc/">AI chatbot page</a> or email <a href="mailto:trevor@trevorheshka.com">trevor@trevorheshka.com</a>.</p>
]]></content:encoded></item></channel></rss>