<?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>DEV Community: 0xkoji</title>
    <description>The latest articles on DEV Community by 0xkoji (@0xkoji).</description>
    <link>https://dev.to/0xkoji</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%2F139970%2Fb9f89a49-839c-4632-8cc6-ef75d56ad63c.png</url>
      <title>DEV Community: 0xkoji</title>
      <link>https://dev.to/0xkoji</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/0xkoji"/>
    <language>en</language>
    <item>
      <title>Supply Chain Security measures</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Fri, 03 Apr 2026 23:35:46 +0000</pubDate>
      <link>https://dev.to/0xkoji/supply-chain-security-measures-55o3</link>
      <guid>https://dev.to/0xkoji/supply-chain-security-measures-55o3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwj08ep3v2qpd34mob2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwj08ep3v2qpd34mob2n.png" alt="top-slide" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ttntbi2tgxam5bjj97h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ttntbi2tgxam5bjj97h.png" alt="slide-1" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flaeko3nwszyhlbt467vf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flaeko3nwszyhlbt467vf.png" alt="slide-2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnvm377xm6k3t4wcu064.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnvm377xm6k3t4wcu064.png" alt="slide-3" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm05h2k6j2r83ugoavons.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm05h2k6j2r83ugoavons.png" alt="slide-4" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpvfc4sivg9fp4036gsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpvfc4sivg9fp4036gsl.png" alt="slide-5" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>npm</category>
      <category>uv</category>
      <category>githubactions</category>
    </item>
    <item>
      <title>6 Must-know commands for cleaning up Homebrew packages</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Fri, 20 Mar 2026 10:51:46 +0000</pubDate>
      <link>https://dev.to/0xkoji/must-know-commands-for-cleaning-up-homebrew-packages-gnp</link>
      <guid>https://dev.to/0xkoji/must-know-commands-for-cleaning-up-homebrew-packages-gnp</guid>
      <description>&lt;p&gt;I recently discovered "zerobrew" and decided to switch over from Homebrew. To prepare for the transition, I've been cleaning up my Homebrew packages using these commands.&lt;/p&gt;

&lt;p&gt;Since zerobrew doesn't support every package available on Homebrew yet (for example, "Codex"), I'm currently running both side-by-side.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;zb &lt;span class="nb"&gt;install &lt;/span&gt;codex
&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Installing codex...

Note: This package can&lt;span class="s1"&gt;'t be installed with zerobrew.
      Error: missing formula '&lt;/span&gt;codex&lt;span class="s1"&gt;'

      Try installing with Homebrew instead:
      brew install codex

error: missing formula '&lt;/span&gt;codex&lt;span class="s1"&gt;'
Execution time: 0.94s
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/lucasgelfond" rel="noopener noreferrer"&gt;
        lucasgelfond
      &lt;/a&gt; / &lt;a href="https://github.com/lucasgelfond/zerobrew" rel="noopener noreferrer"&gt;
        zerobrew
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A 5-20x faster experimental Homebrew alternative
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;zerobrew&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/lucasgelfond/zerobrew/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/lucasgelfond/zerobrew/actions/workflows/ci.yml/badge.svg" alt="Lint"&gt;&lt;/a&gt;
&lt;a href="https://github.com/lucasgelfond/zerobrew/actions/workflows/test.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/lucasgelfond/zerobrew/actions/workflows/test.yml/badge.svg" alt="Test"&gt;&lt;/a&gt;
&lt;a href="https://github.com/lucasgelfond/zerobrew/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4514b6e0b1ab877e967ce473d782831bcb3a1744d066e7b0ebe46e9ef7bebab3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6c7563617367656c666f6e642f7a65726f627265773f646973706c61795f6e616d653d746167" alt="Release"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/ZaPYwm9zaw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/397741123d69503a0a224452a3629154669e9a870686f0c21c68527c7d8faa07/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d4a6f696e2d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
&lt;a href="https://github.com/lucasgelfond/zerobrew/./LICENSE-MIT.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/lucasgelfond/zerobrew/./LICENSE-APACHE.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5b60841bea9e11d9d0b0950d690c9bc554e06385634056a7d5d62a15d1a4eabe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e737667" alt="License: Apache 2.0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/lucasgelfond/zerobrew/./assets/zb-demo.gif"&gt;&lt;img alt="zerobrew demo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Flucasgelfond%2Fzerobrew%2F.%2Fassets%2Fzb-demo.gif"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;zerobrew brings uv-style architecture to Homebrew packages on macOS and Linux.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -fsSL https://zerobrew.rs/install &lt;span class="pl-k"&gt;|&lt;/span&gt; bash&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;After install, run the &lt;code&gt;export&lt;/code&gt; command it prints (or restart your terminal).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;zb install jq                   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; install one package&lt;/span&gt;
zb install wget git             &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; install multiple&lt;/span&gt;
zb bundle                       &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; install from Brewfile&lt;/span&gt;
zb bundle install -f myfile     &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; install from custom file&lt;/span&gt;
zb bundle dump                  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; export installed packages to Brewfile&lt;/span&gt;
zb bundle dump -f out --force   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; dump to custom file (overwrite)&lt;/span&gt;
zb uninstall jq                 &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; uninstall one package&lt;/span&gt;
zb reset                        &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; uninstall everything&lt;/span&gt;
zb gc                           &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; garbage collect unused store entries&lt;/span&gt;
zbx jq --version                &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; run without linking&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Performance snapshot&lt;/h2&gt;

&lt;/div&gt;
&lt;div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Package&lt;/th&gt;
&lt;th&gt;Homebrew&lt;/th&gt;
&lt;th&gt;ZB (cold)&lt;/th&gt;
&lt;th&gt;ZB (warm)&lt;/th&gt;
&lt;th&gt;Cold Speedup&lt;/th&gt;
&lt;th&gt;Warm Speedup&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Overall (top 100)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;452s&lt;/td&gt;
&lt;td&gt;226s&lt;/td&gt;
&lt;td&gt;59s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.0x&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7.6x&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ffmpeg&lt;/td&gt;
&lt;td&gt;3034ms&lt;/td&gt;
&lt;td&gt;3481ms&lt;/td&gt;
&lt;td&gt;688ms&lt;/td&gt;
&lt;td&gt;0.9x&lt;/td&gt;
&lt;td&gt;4.4x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;libsodium&lt;/td&gt;
&lt;td&gt;2353ms&lt;/td&gt;
&lt;td&gt;392ms&lt;/td&gt;
&lt;td&gt;130ms&lt;/td&gt;
&lt;td&gt;6.0x&lt;/td&gt;
&lt;td&gt;18.1x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sqlite&lt;/td&gt;
&lt;td&gt;2876ms&lt;/td&gt;
&lt;td&gt;625ms&lt;/td&gt;
&lt;td&gt;159ms&lt;/td&gt;
&lt;td&gt;4.6x&lt;/td&gt;
&lt;td&gt;18.1x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tesseract&lt;/td&gt;
&lt;td&gt;18950ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/lucasgelfond/zerobrew" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  &lt;code&gt;brew leaves&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Show packages that are not dependencies of other packages.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;brew autoremove&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Remove unused dependencies that are no longer needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;brew doctor&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;To diagnose and fix potential issues in my setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;brew cleanup&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Remove stale lock files and outdated downloads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: brew cleanup &lt;span class="o"&gt;[&lt;/span&gt;options] &lt;span class="o"&gt;[&lt;/span&gt;formula|cask ...]

Remove stale lock files and outdated downloads &lt;span class="k"&gt;for &lt;/span&gt;all formulae and casks, and
remove old versions of installed formulae. If arguments are specified, only &lt;span class="k"&gt;do
&lt;/span&gt;this &lt;span class="k"&gt;for &lt;/span&gt;the given formulae and casks. Removes all downloads more than 120 days
old. This can be adjusted with &lt;span class="nv"&gt;$HOMEBREW_CLEANUP_MAX_AGE_DAYS&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;

      &lt;span class="nt"&gt;--prune&lt;/span&gt;                      Remove all cache files older than specified
                                   days. If you want to remove everything, use
                                   &lt;span class="nt"&gt;--prune&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;all.
  &lt;span class="nt"&gt;-n&lt;/span&gt;, &lt;span class="nt"&gt;--dry-run&lt;/span&gt;                    Show what would be removed, but &lt;span class="k"&gt;do &lt;/span&gt;not
                                   actually remove anything.
  &lt;span class="nt"&gt;-s&lt;/span&gt;, &lt;span class="nt"&gt;--scrub&lt;/span&gt;                      Scrub the cache, including downloads &lt;span class="k"&gt;for &lt;/span&gt;even
                                   the latest versions. Note that downloads &lt;span class="k"&gt;for
                                   &lt;/span&gt;any installed formulae or casks will still
                                   not be deleted. If you want to delete those
                                   too: &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;brew &lt;span class="nt"&gt;--cache&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
      &lt;span class="nt"&gt;--prune-prefix&lt;/span&gt;               Only prune the symlinks and directories from
                                   the prefix and remove no other files.
  &lt;span class="nt"&gt;-d&lt;/span&gt;, &lt;span class="nt"&gt;--debug&lt;/span&gt;                      Display any debugging information.
  &lt;span class="nt"&gt;-q&lt;/span&gt;, &lt;span class="nt"&gt;--quiet&lt;/span&gt;                      Make some output more quiet.
  &lt;span class="nt"&gt;-v&lt;/span&gt;, &lt;span class="nt"&gt;--verbose&lt;/span&gt;                    Make some output more verbose.
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--help&lt;/span&gt;                       Show this message.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;code&gt;brew bundle dump&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Create a Brewfile to snapshot your current setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;brew bundle --force cleanup&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Uninstall everything not listed in your Brewfile.&lt;/p&gt;

&lt;p&gt;I have used the alias, &lt;code&gt;brew_all&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;.zshrc&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;brew_all&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"brew outdated &amp;amp;&amp;amp; brew update &amp;amp;&amp;amp; brew upgrade &amp;amp;&amp;amp; brew cleanup -s"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>homebrew</category>
      <category>cli</category>
    </item>
    <item>
      <title>A Quick Look at Claw-Family</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Mon, 16 Mar 2026 05:23:46 +0000</pubDate>
      <link>https://dev.to/0xkoji/a-quick-look-at-claw-family-28e3</link>
      <guid>https://dev.to/0xkoji/a-quick-look-at-claw-family-28e3</guid>
      <description>&lt;h2&gt;
  
  
  OpenClaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/openclaw" rel="noopener noreferrer"&gt;
        openclaw
      &lt;/a&gt; / &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;
        openclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🦞 OpenClaw — Personal AI Assistant&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
    
        
        &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fopenclaw%2Fopenclaw%2Fmain%2Fdocs%2Fassets%2Fopenclaw-logo-text.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fopenclaw%2Fopenclaw%2Fmain%2Fdocs%2Fassets%2Fopenclaw-logo-text.svg" alt="OpenClaw" width="500"&gt;&lt;/a&gt;
    
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;EXFOLIATE! EXFOLIATE!&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/openclaw/openclaw/actions/workflows/ci.yml?branch=main" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1ddb1ef286e297deafb2a4372b7c65516ae65368fd22878a7454dabc2fc4738b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6f70656e636c61772f6f70656e636c61772f63692e796d6c3f6272616e63683d6d61696e267374796c653d666f722d7468652d6261646765" alt="CI status"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/openclaw/openclaw/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9fcbb4c3c5cf1f8657a73e45b9c76a0074008d658c07f5558e474191c7aef8fb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6f70656e636c61772f6f70656e636c61773f696e636c7564655f70726572656c6561736573267374796c653d666f722d7468652d6261646765" alt="GitHub release"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/clawd" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1860c01c5ab9a20c37ea5a09fcf7ea1471eb95ed7095bb99d3c5a7331061ccda/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313435363335303036343036353930343836373f6c6162656c3d446973636f7264266c6f676f3d646973636f7264266c6f676f436f6c6f723d776869746526636f6c6f723d353836354632267374796c653d666f722d7468652d6261646765" alt="Discord"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/openclaw/openclaw/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/608c8dfda488178950ce502d7697514db3a6a712579327ed90b9b594260f6355/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e7376673f7374796c653d666f722d7468652d6261646765" alt="MIT License"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenClaw&lt;/strong&gt; is a &lt;em&gt;personal AI assistant&lt;/em&gt; you run on your own devices
It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, BlueBubbles, IRC, Microsoft Teams, Matrix, Feishu, LINE, Mattermost, Nextcloud Talk, Nostr, Synology Chat, Tlon, Twitch, Zalo, Zalo Personal, WebChat). It can speak and listen on macOS/iOS/Android, and can render a live Canvas you control. The Gateway is just the control plane — the product is the assistant.&lt;/p&gt;
&lt;p&gt;If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://openclaw.ai" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt; · &lt;a href="https://github.com/openclaw/openclaw/VISION.md" rel="noopener noreferrer"&gt;Vision&lt;/a&gt; · &lt;a href="https://deepwiki.com/openclaw/openclaw" rel="nofollow noopener noreferrer"&gt;DeepWiki&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/start/getting-started" rel="nofollow noopener noreferrer"&gt;Getting Started&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/install/updating" rel="nofollow noopener noreferrer"&gt;Updating&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/start/showcase" rel="nofollow noopener noreferrer"&gt;Showcase&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/help/faq" rel="nofollow noopener noreferrer"&gt;FAQ&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/start/wizard" rel="nofollow noopener noreferrer"&gt;Onboarding&lt;/a&gt; · &lt;a href="https://github.com/openclaw/nix-openclaw" rel="noopener noreferrer"&gt;Nix&lt;/a&gt; · &lt;a href="https://docs.openclaw.ai/install/docker" rel="nofollow noopener noreferrer"&gt;Docker&lt;/a&gt; · &lt;a href="https://discord.gg/clawd" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Preferred setup: run &lt;code&gt;openclaw onboard&lt;/code&gt; in your terminal
OpenClaw Onboard guides you step by step through setting up the gateway, workspace, channels, and skills. It is…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;I tried using OpenClaw, but I had some concerns about its security. So I decided to do a bit of research to see if there were any alternative options.&lt;br&gt;
I'm testing &lt;code&gt;zeroclaw&lt;/code&gt; now 💪&lt;/p&gt;
&lt;h2&gt;
  
  
  HiClaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/alibaba" rel="noopener noreferrer"&gt;
        alibaba
      &lt;/a&gt; / &lt;a href="https://github.com/alibaba/hiclaw" rel="noopener noreferrer"&gt;
        hiclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An open-source Collaborative Multi-Agent OS for transparent, human-in-the-loop task coordination via Matrix rooms.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2a35e564f7485b4e9c493b69266fb6f837438e596ff54befffcea81697f6f255/68747470733a2f2f696d672e616c6963646e2e636f6d2f696d6765787472612f69322f4f31434e3031685459514d4f32384233483971503752565f2121363030303030303030373839332d322d7470732d313439302d3339322e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/2a35e564f7485b4e9c493b69266fb6f837438e596ff54befffcea81697f6f255/68747470733a2f2f696d672e616c6963646e2e636f6d2f696d6765787472612f69322f4f31434e3031685459514d4f32384233483971503752565f2121363030303030303030373839332d322d7470732d313439302d3339322e706e67" alt="HiClaw" width="290" height="72.5"&gt;&lt;/a&gt;
  &lt;br&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/alibaba/hiclaw/./README.md" rel="noopener noreferrer"&gt;English&lt;/a&gt; | &lt;a href="https://github.com/alibaba/hiclaw/./README.zh-CN.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://deepwiki.com/higress-group/hiclaw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e618cd24149a35db387fda17e7bf0e455d9800f6357ece38eeb42a587f8201f4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465657057696b692d41736b5f41492d6e6176792e7376673f6c6f676f3d646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e53556845556741414143774141414179434159414141416e57446e714141414141584e535230494172733463365141414130354a52454655614550746d557479457a4551687457545179514c484e616b324142375a6e79585a4d456a584d47654b2f4149692b517548724d6e6243685959374d496838673031664a6f6f70466230756868457171636257547030362f7576317361454476344f336e33645636305266503934374d6d392f5351633049434651677a66633443595a6f545041737767534a4343554a556e41416f52484f41554f63415477626d564c5764476f482f2f5042386d6e4b71536341687344306b5950336a2f5974354c505165324b7663586d4776524863446e7078664c327a4f594a316d467772727957547a306164767631557434434a67663575684475446a3565556341556f61687264592f353665625257657261546a4d742f30305368335544746a674874514e48776352474f433938424a454145796d79636d596357774f70725467634236565a354a4b3554414a2b6658474c426d334644416d6e366f50506a5234724b43416f4a43616c326541695170327830767854504233414c4f3243526b776d447935576f687a4244775345464b527750626b6e4567674350422f696d77727963677858324e7a6f4d434868506b447771594d72397452635035714e724d5a486b566e4f6a524d57774c436372386f68425662314f4d6a784c774743766a54696b7273424f694136664e7943726d38563172503933695650707761452b674f305373576d506958422b6a696b64663653697a725435714b617378356a3841426248704654782b7646587039456e59516d4c7830326831515454726c36654471784c6e476a706f72786c334e4c336167457658645430576d456f737436343873514f5941654a53395137626655566f4d476e6a6f34415a64554d516b7535304d6344634d57634250767230537a625441464466764a71774c7a67787741546e43676e703477446c3641612b41783238336767686d6a2b766a37666545324b4242524d5733467a4f704c4f41446c3049736235353837682f55346747766b74357636305a31564c47384268596a627a527779515a656d77416436634352352f5846574c595a52494d70583339415230746a61474769477a4c5679687365354339524b433661693432707057504b694261674f7661596b386c4f3744616a657261624f5a5034364c627935774b6a77314843527837703973564d4f57477a622f7641316877695763366a6d334d765144546f67516b697149684a56306e42514254552b336f6b4b434644793957776665726b486a74786962377433784955517448786e49777478346d706732362f486677564e564462346f493952486d78355747656c52566c7274697734337a626f434c6178763436415a654233496c546b776f75656254723179324e6a5370487a3638574e466a487675707933713854466e33486f733249416b344a753564436f3842337750375650722f4647614b69472b542b762b54517149724f714d544c31566457563144646d63624f384b58427a3665736d5957594b5077444c35623546413161306877617048696f6d30722f634b616f71722b32372f58637253355577534d625141414141424a52553545726b4a6767673d3d" alt="DeepWiki"&gt;&lt;/a&gt;
  &lt;a href="https://discord.com/invite/NVjNA4BAVw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/93131af12156271b745d0c88ba44d6d167414edc8c0f6d0ee84126341e988de1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d4a6f696e5f55732d626c756576696f6c65742e7376673f6c6f676f3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HiClaw is an open-source Collaborative Multi-Agent OS for transparent, human-in-the-loop task coordination via Matrix rooms.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built with a &lt;strong&gt;Manager-Workers architecture&lt;/strong&gt;, HiClaw lets you coordinate multiple Worker Agents through a Manager Agent to complete complex tasks — all conversations are visible in Matrix rooms, and you can intervene at any time.&lt;/p&gt;

&lt;p&gt;Think of it as your AI team in a chat room: tell the Manager what you need, it spins up Workers, and you watch everything happen in real-time.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Key Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🧬 &lt;strong&gt;Manager-Workers Architecture&lt;/strong&gt;: Eliminates the need for human oversight of individual Worker Claws by enabling Agents to manage other Agents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🦞 &lt;strong&gt;Customizable Agents&lt;/strong&gt;: Each Agent supports flexible configurations including OpenClaw, Copaw, NanoClaw, ZeroClaw, and enterprise-built Agents—scaling from individual "shrimp farming" to full-scale "shrimp farm" operations..&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📦 &lt;strong&gt;MinIO Shared File System&lt;/strong&gt;: Introduces a shared file system for inter-Agent information exchange, significantly reducing token consumption…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/alibaba/hiclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;HiClaw is an open-source Collaborative Multi-Agent OS for transparent, human-in-the-loop task coordination via Matrix rooms.&lt;/p&gt;
&lt;h2&gt;
  
  
  NemoClaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NVIDIA" rel="noopener noreferrer"&gt;
        NVIDIA
      &lt;/a&gt; / &lt;a href="https://github.com/NVIDIA/NemoClaw" rel="noopener noreferrer"&gt;
        NemoClaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Run OpenClaw securely inside NVIDIA OpenShell with managed inference
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;NVIDIA NemoClaw: Reference Stack for Running OpenClaw in OpenShell&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/NVIDIA/NemoClaw/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d8e3b9d3b1213595b06824a404d41ad7743f1e880a3f9e47bae54533a9b60c99/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c7565" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/NVIDIA/NemoClaw/blob/main/SECURITY.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d7b3ea7a80c2502d6f91036a7b8d1b56bf3f0c7fda63638c5735c06d64af5644/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53656375726974792d5265706f72742532306125323056756c6e65726162696c6974792d726564" alt="Security Policy"&gt;&lt;/a&gt;
&lt;a href="https://github.com/NVIDIA/NemoClaw/blob/main/docs/about/release-notes.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/71cb9a97360b8841ddfc125fa85687761845a6d44b48b4de9b527a2d2dce2930/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7374617475732d616c7068612d6f72616e6765" alt="Project Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NVIDIA NemoClaw is an open source reference stack that simplifies running &lt;a href="https://openclaw.ai" rel="nofollow noopener noreferrer"&gt;OpenClaw&lt;/a&gt; always-on assistants more safely.
It installs the &lt;a href="https://github.com/NVIDIA/OpenShell" rel="noopener noreferrer"&gt;NVIDIA OpenShell&lt;/a&gt; runtime, part of NVIDIA Agent Toolkit, which provides additional security for running autonomous agents.
It also includes open source models such as &lt;a href="https://build.nvidia.com" rel="nofollow noopener noreferrer"&gt;NVIDIA Nemotron&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Alpha software&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NemoClaw is available in early preview starting March 16, 2026.
This software is not production-ready.
Interfaces, APIs, and behavior may change without notice as we iterate on the design.
The project is shared to gather feedback and enable early experimentation.
We welcome issues and discussion from the community while the project evolves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Follow these steps to get started with NemoClaw and your first sandboxed OpenClaw agent.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ℹ️ Note&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NemoClaw creates a fresh OpenClaw instance inside the sandbox during onboarding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Check the prerequisites before you start to ensure you have the…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NVIDIA/NemoClaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;NVIDIA NemoClaw is an open source stack that simplifies running OpenClaw always-on assistants safely. It installs the NVIDIA OpenShell runtime, part of NVIDIA Agent Toolkit, a secure environment for running autonomous agents, with inference routed through NVIDIA cloud.&lt;/p&gt;
&lt;h2&gt;
  
  
  picoclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sipeed" rel="noopener noreferrer"&gt;
        sipeed
      &lt;/a&gt; / &lt;a href="https://github.com/sipeed/picoclaw" rel="noopener noreferrer"&gt;
        picoclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Tiny, Fast, and Deployable anywhere — automate the mundane, unleash your creativity
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/sipeed/picoclaw/assets/logo.webp"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsipeed%2Fpicoclaw%2Fassets%2Flogo.webp" alt="PicoClaw" width="512"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;PicoClaw: Ultra-Efficient AI Assistant in Go&lt;/h1&gt;
&lt;/div&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;$10 Hardware · &amp;lt;10MB RAM · &amp;lt;1s Boot · 皮皮虾，我们走！&lt;/h3&gt;
&lt;/div&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/44e7e913257baa9ac81342094d1b05abf6055bb0114a2725ea4b250aa433d786/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f2d312e32352b2d3030414444383f7374796c653d666c6174266c6f676f3d676f266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/44e7e913257baa9ac81342094d1b05abf6055bb0114a2725ea4b250aa433d786/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f2d312e32352b2d3030414444383f7374796c653d666c6174266c6f676f3d676f266c6f676f436f6c6f723d7768697465" alt="Go"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/8225f7f3de51dc9c30fa19c0e0029fbc803bdd816efbec6603e29c98169539e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f417263682d7838365f5f363425324325323041524d36342532432532304d495053253243253230524953432d2d562532432532304c6f6f6e67417263682d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/8225f7f3de51dc9c30fa19c0e0029fbc803bdd816efbec6603e29c98169539e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f417263682d7838365f5f363425324325323041524d36342532432532304d495053253243253230524953432d2d562532432532304c6f6f6e67417263682d626c7565" alt="Hardware"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e" alt="License"&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;a href="https://picoclaw.io" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/663bb5d4fdcd2fc5b154e12b2786929796de71ee4e614a57db98cd2684603584/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f576562736974652d7069636f636c61772e696f2d626c75653f7374796c653d666c6174266c6f676f3d676f6f676c652d6368726f6d65266c6f676f436f6c6f723d7768697465" alt="Website"&gt;&lt;/a&gt;
    &lt;a href="https://docs.picoclaw.io/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/82b8176b551fe06424f0e773f834a5c14f8a9f05efa2f2420fd755c5c9ea8e90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f63732d4f6666696369616c2d3030376163633f7374796c653d666c6174266c6f676f3d726561642d7468652d646f6373266c6f676f436f6c6f723d7768697465" alt="Docs"&gt;&lt;/a&gt;
    &lt;a href="https://deepwiki.com/sipeed/picoclaw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/68799fe9fe5c42fa2092e96377f099f0fa459647e7dfa5fbd864160884435610/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f57696b692d4465657057696b692d4646413530303f7374796c653d666c6174266c6f676f3d77696b697065646961266c6f676f436f6c6f723d7768697465" alt="Wiki"&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;a href="https://x.com/SipeedIO" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8bb57a2d9e1d15df3362f3299d5e819647701e7dfb3239847f89baf87d4ccaef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f585f2854776974746572292d536970656564494f2d626c61636b3f7374796c653d666c6174266c6f676f3d78266c6f676f436f6c6f723d7768697465" alt="Twitter"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/sipeed/picoclaw/./assets/wechat.png" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/16e269a653fbbdcb393d0eceb568c7b1aacc1710c2a77bf47e123fe5f96657ae/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5765436861742d47726f75702d3431643536623f7374796c653d666c6174266c6f676f3d776563686174266c6f676f436f6c6f723d7768697465"&gt;&lt;/a&gt;
    &lt;a href="https://discord.gg/V4sAZ9XWpN" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e46d6978b838d83e5d6b3477319a069e7669346d55429d43a1307fae14f0218d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d436f6d6d756e6974792d3463363065623f7374796c653d666c6174266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/sipeed/picoclaw/README.zh.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.pt-br.md" rel="noopener noreferrer"&gt;Português&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.vi.md" rel="noopener noreferrer"&gt;Tiếng Việt&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.fr.md" rel="noopener noreferrer"&gt;Français&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.it.md" rel="noopener noreferrer"&gt;Italiano&lt;/a&gt; | &lt;a href="https://github.com/sipeed/picoclaw/README.id.md" rel="noopener noreferrer"&gt;Bahasa Indonesia&lt;/a&gt; | &lt;strong&gt;English&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;PicoClaw&lt;/strong&gt; is an independent open-source project initiated by &lt;a href="https://sipeed.com" rel="nofollow noopener noreferrer"&gt;Sipeed&lt;/a&gt;. It is written entirely in &lt;strong&gt;Go&lt;/strong&gt; — not a fork of OpenClaw, NanoBot, or any other project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;🦐 PicoClaw is an ultra-lightweight personal AI Assistant inspired by &lt;a href="https://github.com/HKUDS/nanobot" rel="noopener noreferrer"&gt;NanoBot&lt;/a&gt;, refactored from the ground up in Go through a self-bootstrapping process, where the AI agent itself drove the entire architectural migration and code optimization.&lt;/p&gt;
&lt;p&gt;⚡️ Runs on $10 hardware with &amp;lt;10MB RAM: That's 99% less memory than OpenClaw and 98% cheaper than a Mac mini!&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td&gt;
      &lt;p&gt;
        &lt;a rel="noopener noreferrer" href="https://github.com/sipeed/picoclaw/assets/picoclaw_mem.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsipeed%2Fpicoclaw%2Fassets%2Fpicoclaw_mem.gif" width="360" height="240"&gt;&lt;/a&gt;
      &lt;/p&gt;
    &lt;/td&gt;
    &lt;td&gt;
      &lt;p&gt;
        &lt;a rel="noopener noreferrer" href="https://github.com/sipeed/picoclaw/assets/licheervnano.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fsipeed%2Fpicoclaw%2Fassets%2Flicheervnano.png" width="400" height="240"&gt;&lt;/a&gt;
      &lt;/p&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-alert markdown-alert-caution"&gt;
&lt;p class="markdown-alert-title"&gt;Caution&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🚨 SECURITY &amp;amp; OFFICIAL CHANNELS / 安全声明&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NO CRYPTO:&lt;/strong&gt; PicoClaw has &lt;strong&gt;NO&lt;/strong&gt; official token/coin. All claims on &lt;code&gt;pump.fun&lt;/code&gt; or other trading platforms are &lt;strong&gt;SCAMS&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OFFICIAL DOMAIN:&lt;/strong&gt; The &lt;strong&gt;ONLY&lt;/strong&gt; official website is…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sipeed/picoclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;🦐 PicoClaw is an ultra-lightweight personal AI Assistant inspired by nanobot, refactored from the ground up in Go through a self-bootstrapping process, where the AI agent itself drove the entire architectural migration and code optimization.&lt;/p&gt;

&lt;p&gt;nanoclaw&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/qwibitai" rel="noopener noreferrer"&gt;
        qwibitai
      &lt;/a&gt; / &lt;a href="https://github.com/qwibitai/nanoclaw" rel="noopener noreferrer"&gt;
        nanoclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A lightweight alternative to OpenClaw that runs in containers for security. Connects to WhatsApp, Telegram, Slack, Discord, Gmail and other messaging apps,, has memory, scheduled jobs, and runs directly on Anthropic's Agents SDK
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/qwibitai/nanoclaw/assets/nanoclaw-logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fqwibitai%2Fnanoclaw%2Fassets%2Fnanoclaw-logo.png" alt="NanoClaw" width="400"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  An AI assistant that runs agents securely in their own containers. Lightweight, built to be easily understood and completely customized for your needs
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://nanoclaw.dev" rel="nofollow noopener noreferrer"&gt;nanoclaw.dev&lt;/a&gt;  •  
  &lt;a href="https://github.com/qwibitai/nanoclaw/README_zh.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt;  •  
  &lt;a href="https://github.com/qwibitai/nanoclaw/README_ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;  •  
  &lt;a href="https://discord.gg/VDdww8qS42" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5d54ab97b11df53ffd11d91db846c9ef70b03d0120c6226b373dca61d5ee7417/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313437303138383231343731303034363839343f6c6162656c3d446973636f7264266c6f676f3d646973636f726426763d32" alt="Discord"&gt;&lt;/a&gt;  •  
  &lt;a href="https://github.com/qwibitai/nanoclaw/repo-tokens" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/qwibitai/nanoclaw/repo-tokens/badge.svg" alt="34.9k tokens, 17% of context window"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🐳 Now Runs in Docker Sandboxes&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Every agent gets its own isolated container inside a micro VM.&lt;br&gt;Hypervisor-level isolation. Millisecond startup. No complex setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS (Apple Silicon)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -fsSL https://nanoclaw.dev/install-docker-sandboxes.sh &lt;span class="pl-k"&gt;|&lt;/span&gt; bash&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Windows (WSL)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -fsSL https://nanoclaw.dev/install-docker-sandboxes-windows.sh &lt;span class="pl-k"&gt;|&lt;/span&gt; bash&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Currently supported on macOS (Apple Silicon) and Windows (x86). Linux support coming soon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://nanoclaw.dev/blog/nanoclaw-docker-sandboxes" rel="nofollow noopener noreferrer"&gt;Read the announcement →&lt;/a&gt;  ·  &lt;a href="https://github.com/qwibitai/nanoclaw/docs/docker-sandboxes.md" rel="noopener noreferrer"&gt;Manual setup guide →&lt;/a&gt;&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why I Built NanoClaw&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; is an impressive project, but I wouldn't have been able to sleep if I had given complex software I didn't understand full access to my life. OpenClaw has nearly half a million lines of code, 53 config files, and 70+ dependencies. Its security is at the application level (allowlists, pairing codes) rather than true…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/qwibitai/nanoclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;A lightweight alternative to OpenClaw that runs in containers for security. Connects to WhatsApp, Telegram, Slack, Discord, Gmail and other messaging apps, has memory, scheduled jobs, and runs directly on Anthropic's Agents SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  zeroclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/zeroclaw-labs" rel="noopener noreferrer"&gt;
        zeroclaw-labs
      &lt;/a&gt; / &lt;a href="https://github.com/zeroclaw-labs/zeroclaw" rel="noopener noreferrer"&gt;
        zeroclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fast, small, and fully autonomous AI personal assistant infrastructure, ANY OS, ANY PLATFORM — deploy anywhere, swap anything 🦀
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/docs/assets/zeroclaw-banner.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fzeroclaw-labs%2Fzeroclaw%2Fmaster%2Fdocs%2Fassets%2Fzeroclaw-banner.png" alt="ZeroClaw" width="600"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🦀 ZeroClaw — Personal AI Assistant&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;Zero overhead. Zero compromise. 100% Rust. 100% Agnostic.&lt;/strong&gt;&lt;br&gt;
  ⚡️ &lt;strong&gt;Runs on $10 hardware with &amp;lt;5MB RAM: That's 99% less memory than OpenClaw and 98% cheaper than a Mac mini!&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/LICENSE-APACHE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/613ed9d36c84080e94c4e08acaa9d4500246bf9d9880c085ad985e106e433ce9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542532304f52253230417061636865253230322e302d626c75652e737667" alt="License: MIT OR Apache-2.0"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/graphs/contributors" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e9aec6221284ecbefaed9edcbd600ff48eaf6b4c156f2f1a4e81fb3a9c29d77a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7a65726f636c61772d6c6162732f7a65726f636c61773f636f6c6f723d677265656e" alt="Contributors"&gt;&lt;/a&gt;
  &lt;a href="https://buymeacoffee.com/argenistherose" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c738f0ff5ab1d11c5b02b86c48a2678d8d92eeabaa8ae9b737201114a375c58e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4275792532304d6525323061253230436f666665652d446f6e6174652d79656c6c6f772e7376673f7374796c653d666c6174266c6f676f3d6275792d6d652d612d636f66666565" alt="Buy Me a Coffee"&gt;&lt;/a&gt;
  &lt;a href="https://x.com/zeroclawlabs?s=21" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a4ec96aa114da08230cb73be749dc03b40e4b3cb5566c971c9fe947707eb2081/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d2534307a65726f636c61776c6162732d3030303030303f7374796c653d666c6174266c6f676f3d78266c6f676f436f6c6f723d7768697465" alt="X: @zeroclawlabs"&gt;&lt;/a&gt;
  &lt;a href="https://www.facebook.com/groups/zeroclawlabs" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3b83c985620e42d48778f75134bbc7c4a378fddc2db43119413d7508210e31f6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46616365626f6f6b2d47726f75702d3138373746323f7374796c653d666c6174266c6f676f3d66616365626f6f6b266c6f676f436f6c6f723d7768697465" alt="Facebook Group"&gt;&lt;/a&gt;
  &lt;a href="https://discord.com/invite/wDshRVqRjx" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2a5c7319e495fae3242b629c06707228897d26c18b63182a6d02638774b443d3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d4a6f696e2d3538363546323f7374796c653d666c6174266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
  &lt;a href="https://www.instagram.com/therealzeroclaw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a754bd4c93ba4072417fb89e46554cf8873a4e4672a59554032e13edbe4f6784/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f496e7374616772616d2d2534307468657265616c7a65726f636c61772d4534343035463f7374796c653d666c6174266c6f676f3d696e7374616772616d266c6f676f436f6c6f723d7768697465" alt="Instagram: @therealzeroclaw"&gt;&lt;/a&gt;
  &lt;a href="https://www.tiktok.com/@zeroclawlabs" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/177594594ca209ebbf2befd7bbc542c983f833067dafdf1b0c1ab1dbf9931f0a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54696b546f6b2d2534307a65726f636c61776c6162732d3030303030303f7374796c653d666c6174266c6f676f3d74696b746f6b266c6f676f436f6c6f723d7768697465" alt="TikTok: @zeroclawlabs"&gt;&lt;/a&gt;
  &lt;a href="https://www.rednote.com/user/profile/69b735e6000000002603927e" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5870be0aab192ff5a5bfdac18c56267d65f137bc61f058285c5ae38dc1d307c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5265644e6f74652d4f6666696369616c2d4646323434323f7374796c653d666c6174" alt="RedNote"&gt;&lt;/a&gt;
  &lt;a href="https://www.reddit.com/r/zeroclawlabs/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/43cf569c1dd4633b01db805a819d8e89e387a24957489b7b35728d9f3032b20c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5265646469742d722532467a65726f636c61776c6162732d4646343530303f7374796c653d666c6174266c6f676f3d726564646974266c6f676f436f6c6f723d7768697465" alt="Reddit: r/zeroclawlabs"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Built by students and members of the Harvard, MIT, and Sundai.Club communities
&lt;/p&gt;

&lt;p&gt;
  🌐 &lt;strong&gt;Languages:&lt;/strong&gt;
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.md" rel="noopener noreferrer"&gt;🇺🇸 English&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.zh-CN.md" rel="noopener noreferrer"&gt;🇨🇳 简体中文&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ja.md" rel="noopener noreferrer"&gt;🇯🇵 日本語&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ko.md" rel="noopener noreferrer"&gt;🇰🇷 한국어&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.vi.md" rel="noopener noreferrer"&gt;🇻🇳 Tiếng Việt&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.tl.md" rel="noopener noreferrer"&gt;🇵🇭 Tagalog&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.es.md" rel="noopener noreferrer"&gt;🇪🇸 Español&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.pt.md" rel="noopener noreferrer"&gt;🇧🇷 Português&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.it.md" rel="noopener noreferrer"&gt;🇮🇹 Italiano&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.de.md" rel="noopener noreferrer"&gt;🇩🇪 Deutsch&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.fr.md" rel="noopener noreferrer"&gt;🇫🇷 Français&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ar.md" rel="noopener noreferrer"&gt;🇸🇦 العربية&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.hi.md" rel="noopener noreferrer"&gt;🇮🇳 हिन्दी&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ru.md" rel="noopener noreferrer"&gt;🇷🇺 Русский&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.bn.md" rel="noopener noreferrer"&gt;🇧🇩 বাংলা&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.he.md" rel="noopener noreferrer"&gt;🇮🇱 עברית&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.pl.md" rel="noopener noreferrer"&gt;🇵🇱 Polski&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.cs.md" rel="noopener noreferrer"&gt;🇨🇿 Čeština&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.nl.md" rel="noopener noreferrer"&gt;🇳🇱 Nederlands&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.tr.md" rel="noopener noreferrer"&gt;🇹🇷 Türkçe&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.uk.md" rel="noopener noreferrer"&gt;🇺🇦 Українська&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.id.md" rel="noopener noreferrer"&gt;🇮🇩 Bahasa Indonesia&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.th.md" rel="noopener noreferrer"&gt;🇹🇭 ไทย&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ur.md" rel="noopener noreferrer"&gt;🇵🇰 اردو&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.ro.md" rel="noopener noreferrer"&gt;🇷🇴 Română&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.sv.md" rel="noopener noreferrer"&gt;🇸🇪 Svenska&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.el.md" rel="noopener noreferrer"&gt;🇬🇷 Ελληνικά&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.hu.md" rel="noopener noreferrer"&gt;🇭🇺 Magyar&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.fi.md" rel="noopener noreferrer"&gt;🇫🇮 Suomi&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.da.md" rel="noopener noreferrer"&gt;🇩🇰 Dansk&lt;/a&gt; ·
  &lt;a href="https://github.com/zeroclaw-labs/zeroclaw/README.nb.md" rel="noopener noreferrer"&gt;🇳🇴 Norsk&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;ZeroClaw is a personal AI assistant you…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/zeroclaw-labs/zeroclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Fast, small, and fully autonomous AI assistant infrastructure — deploy anywhere, swap anything 🦀&lt;/p&gt;

&lt;h2&gt;
  
  
  nanobot
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/HKUDS" rel="noopener noreferrer"&gt;
        HKUDS
      &lt;/a&gt; / &lt;a href="https://github.com/HKUDS/nanobot" rel="noopener noreferrer"&gt;
        nanobot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      "🐈 nanobot: The Ultra-Lightweight OpenClaw"
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/HKUDS/nanobot/nanobot_logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FHKUDS%2Fnanobot%2Fnanobot_logo.png" alt="nanobot" width="500"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;nanobot: Ultra-Lightweight Personal AI Assistant&lt;/h1&gt;
&lt;/div&gt;
  &lt;p&gt;
    &lt;a href="https://pypi.org/project/nanobot-ai/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8d7cb3bc6267c918f88c925ed93a0b3e0563cf1adb5165d46f2119319bc2fedd/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6e616e6f626f742d6169" alt="PyPI"&gt;&lt;/a&gt;
    &lt;a href="https://pepy.tech/project/nanobot-ai" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f90db631070cf35d72c5b044d400c4d581b24152213f3017d59148a3f9c7ab0e/68747470733a2f2f7374617469632e706570792e746563682f62616467652f6e616e6f626f742d6169" alt="Downloads"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a287273aa1ac227834bcdc3d81628946cecaba08d9b08fba6b39f1d843e547c6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2de289a5332e31312d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/a287273aa1ac227834bcdc3d81628946cecaba08d9b08fba6b39f1d843e547c6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2de289a5332e31312d626c7565" alt="Python"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e" alt="License"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/HKUDS/nanobot/./COMMUNICATION.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bd35c9ed9293c731eb7291729ccf72034a9f1fe9f840d4d8668e84cd4333010e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4665697368752d47726f75702d4539444246433f7374796c653d666c6174266c6f676f3d666569736875266c6f676f436f6c6f723d7768697465" alt="Feishu"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/HKUDS/nanobot/./COMMUNICATION.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08ab611a06d7426a0b4d1c949dfe5acc00edc85da0e5ecb242c7ce2a9652d1a8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5765436861742d47726f75702d4335454142343f7374796c653d666c6174266c6f676f3d776563686174266c6f676f436f6c6f723d7768697465" alt="WeChat"&gt;&lt;/a&gt;
    &lt;a href="https://discord.gg/MnCvHqpUGB" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3f875f78d845a0000cdacd3e9360fac9b5820346a45014de8f0e6abf169bc20d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d436f6d6d756e6974792d3538363546323f7374796c653d666c6174266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;🐈 &lt;strong&gt;nanobot&lt;/strong&gt; is an &lt;strong&gt;ultra-lightweight&lt;/strong&gt; personal AI assistant inspired by &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;⚡️ Delivers core agent functionality with &lt;strong&gt;99% fewer lines of code&lt;/strong&gt; than OpenClaw.&lt;/p&gt;
&lt;p&gt;📏 Real-time line count: run &lt;code&gt;bash core_agent_lines.sh&lt;/code&gt; to verify anytime.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📢 News&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-16&lt;/strong&gt; 🚀 Released &lt;strong&gt;v0.1.4.post5&lt;/strong&gt; — a refinement-focused release with stronger reliability and channel support, and a more dependable day-to-day experience. Please see &lt;a href="https://github.com/HKUDS/nanobot/releases/tag/v0.1.4.post5" rel="noopener noreferrer"&gt;release notes&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-15&lt;/strong&gt; 🧩 DingTalk rich media, smarter built-in skills, and cleaner model compatibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-14&lt;/strong&gt; 💬 Channel plugins, Feishu replies, and steadier MCP, QQ, and media handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-13&lt;/strong&gt; 🌐 Multi-provider web search, LangSmith, and broader reliability improvements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-12&lt;/strong&gt; 🚀 VolcEngine support, Telegram reply context, &lt;code&gt;/restart&lt;/code&gt;, and sturdier memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-11&lt;/strong&gt; 🔌 WeCom, Ollama, cleaner discovery, and safer tool behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-10&lt;/strong&gt; 🧠 Token-based memory, shared retries, and cleaner gateway and Telegram behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-09&lt;/strong&gt; 💬 Slack thread polish and better Feishu audio compatibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2026-03-08&lt;/strong&gt; 🚀 Released…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/HKUDS/nanobot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;🐈 nanobot is an ultra-lightweight personal AI assistant inspired by OpenClaw.&lt;/p&gt;

&lt;h2&gt;
  
  
  ironclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nearai" rel="noopener noreferrer"&gt;
        nearai
      &lt;/a&gt; / &lt;a href="https://github.com/nearai/ironclaw" rel="noopener noreferrer"&gt;
        ironclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      IronClaw is OpenClaw inspired implementation in Rust focused on privacy and security
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/nearai/ironclaw/ironclaw.png?v=2"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fnearai%2Fironclaw%2Fironclaw.png%3Fv%3D2" alt="IronClaw" width="200"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;IronClaw&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;Your secure personal AI assistant, always on your side&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/nearai/ironclaw#license" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/613ed9d36c84080e94c4e08acaa9d4500246bf9d9880c085ad985e106e433ce9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542532304f52253230417061636865253230322e302d626c75652e737667" alt="License: MIT OR Apache-2.0"&gt;&lt;/a&gt;
  &lt;a href="https://t.me/ironclawAI" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/72fd9d04ce3bf72a9fc87ef546f2fd9a9c381e9fc9a2c54cf7baf9c3506c3e10/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54656c656772616d2d25343069726f6e636c617741492d3236413545343f7374796c653d666c6174266c6f676f3d74656c656772616d266c6f676f436f6c6f723d7768697465" alt="Telegram: @ironclawAI"&gt;&lt;/a&gt;
  &lt;a href="https://www.reddit.com/r/ironclawAI/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6281a01b5238915cb37e1dc9ccd546a1637136d546e7d47b01081ea00f11b64d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5265646469742d7225324669726f6e636c617741492d4646343530303f7374796c653d666c6174266c6f676f3d726564646974266c6f676f436f6c6f723d7768697465" alt="Reddit: r/ironclawAI"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/nearai/ironclaw/README.md" rel="noopener noreferrer"&gt;English&lt;/a&gt; |
  &lt;a href="https://github.com/nearai/ironclaw/README.zh-CN.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt; |
  &lt;a href="https://github.com/nearai/ironclaw/README.ru.md" rel="noopener noreferrer"&gt;Русский&lt;/a&gt; |
  &lt;a href="https://github.com/nearai/ironclaw/README.ja.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/nearai/ironclaw#philosophy" rel="noopener noreferrer"&gt;Philosophy&lt;/a&gt; •
  &lt;a href="https://github.com/nearai/ironclaw#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; •
  &lt;a href="https://github.com/nearai/ironclaw#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt; •
  &lt;a href="https://github.com/nearai/ironclaw#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt; •
  &lt;a href="https://github.com/nearai/ironclaw#security" rel="noopener noreferrer"&gt;Security&lt;/a&gt; •
  &lt;a href="https://github.com/nearai/ironclaw#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Philosophy&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;IronClaw is built on a simple principle: &lt;strong&gt;your AI assistant should work for you, not against you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a world where AI systems are increasingly opaque about data handling and aligned with corporate interests, IronClaw takes a different approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your data stays yours&lt;/strong&gt; - All information is stored locally, encrypted, and never leaves your control&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency by design&lt;/strong&gt; - Open source, auditable, no hidden telemetry or data harvesting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-expanding capabilities&lt;/strong&gt; - Build new tools on the fly without waiting for vendor updates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defense in depth&lt;/strong&gt; - Multiple security layers protect against prompt injection and data exfiltration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IronClaw is the AI assistant you can actually trust with your personal and professional life.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Security First&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WASM Sandbox&lt;/strong&gt; - Untrusted tools run…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nearai/ironclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;IronClaw is OpenClaw inspired implementation in Rust focused on privacy and security.&lt;/p&gt;
&lt;h2&gt;
  
  
  nullclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nullclaw" rel="noopener noreferrer"&gt;
        nullclaw
      &lt;/a&gt; / &lt;a href="https://github.com/nullclaw/nullclaw" rel="noopener noreferrer"&gt;
        nullclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fastest, smallest, and fully autonomous AI assistant infrastructure written in Zig
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;strong&gt;Official website:&lt;/strong&gt; &lt;a href="https://nullclaw.io" rel="nofollow noopener noreferrer"&gt;nullclaw.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/nullclaw/nullclaw/nullclaw.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fnullclaw%2Fnullclaw%2Fnullclaw.png" alt="nullclaw" width="200"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;NullClaw&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;strong&gt;Null overhead. Null compromise. 100% Zig. 100% Agnostic.&lt;/strong&gt;&lt;br&gt;
  &lt;strong&gt;678 KB binary. ~1 MB RAM. Boots in &amp;lt;2 ms. Runs on anything with a CPU.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/nullclaw/nullclaw/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/nullclaw/nullclaw/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
  &lt;a href="https://nullclaw.github.io" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f6832e8695458d93bbf0f66febf111280effe2360a444fdc3427d187fb02432b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d6e756c6c636c61772e6769746875622e696f2d696e666f726d6174696f6e616c" alt="Documentation"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/Bfmdua22Ud" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4514aff09ec21d0816fed58175d5505c84ee249249a3b5c669a42fa5ed43654d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646973636f72642d6a6f696e253230636f6d6d756e6974792d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/nullclaw/nullclaw/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The smallest fully autonomous AI assistant infrastructure — a static Zig binary that fits on any $5 board, boots in milliseconds, and requires nothing but libc.&lt;/p&gt;
&lt;p&gt;Docs: &lt;a href="https://github.com/nullclaw/nullclaw/docs/en/README.md" rel="noopener noreferrer"&gt;English&lt;/a&gt; · &lt;a href="https://github.com/nullclaw/nullclaw/docs/zh/README.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt; · &lt;a href="https://github.com/nullclaw/nullclaw/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt; · &lt;a href="https://discord.gg/Bfmdua22Ud" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;678 KB binary · &amp;lt;2 ms startup · 5,300+ tests · 50+ providers · 19 channels · Pluggable everything
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Features&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Impossibly Small:&lt;/strong&gt; 678 KB static binary — no runtime, no VM, no framework overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Near-Zero Memory:&lt;/strong&gt; ~1 MB peak RSS. Runs comfortably on the cheapest ARM SBCs and microcontrollers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Startup:&lt;/strong&gt; &amp;lt;2 ms on Apple Silicon, &amp;lt;8 ms on a 0.8 GHz edge core.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True Portability:&lt;/strong&gt; Single self-contained binary across ARM, x86, and RISC-V. Drop it anywhere, it just runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature-Complete:&lt;/strong&gt; 50+ providers, 19 channels, 35+ tools, 10…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nullclaw/nullclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Fastest, smallest, and fully autonomous AI assistant infrastructure written in Zig.&lt;/p&gt;
&lt;h2&gt;
  
  
  moltis
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/moltis-org" rel="noopener noreferrer"&gt;
        moltis-org
      &lt;/a&gt; / &lt;a href="https://github.com/moltis-org/moltis" rel="noopener noreferrer"&gt;
        moltis
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A Rust-native claw you can trust. One binary — sandboxed, secure, auditable. Voice, memory, MCP tools, and multi-channel access built-in.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://moltis.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fmoltis-org%2Fmoltis%2Fmain%2Fwebsite%2Ffavicon.svg" alt="Moltis" width="64"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Moltis — A Rust-native claw you can trust&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;One binary — sandboxed, secure, yours.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/moltis-org/moltis/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/moltis-org/moltis/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/moltis-org/moltis" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1adb917de03f21c9cd6f6b68f26ad3369e266ec6cc4d03c5750c65edcd198240/68747470733a2f2f636f6465636f762e696f2f67682f6d6f6c7469732d6f72672f6d6f6c7469732f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://codspeed.io/moltis-org/moltis" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fb206db2f839046b795f17fac89ceab43ad2ba1a887f864753f602af7a3c04cc/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f636f6473706565642e696f2f62616467652e6a736f6e267374796c653d666c6174266c6162656c3d436f645370656564" alt="CodSpeed"&gt;&lt;/a&gt;
&lt;a href="https://github.com/moltis-org/moltis/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://www.rust-lang.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/127663642cc34a8160c111b409aba902f79e0427385f7ab2ed9f3d1e0701d27a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f527573742d312e39312532422d6f72616e67652e737667" alt="Rust"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/XnmrepsXp5" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f329fc38dcd4806169b061811d982720d8f8bf4a2a66881fc2de3e064c80b75b/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313436393530353337303136393933333833373f636f6c6f723d353836354632266c6162656c3d446973636f7264266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="Discord"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/moltis-org/moltis#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis#comparison" rel="noopener noreferrer"&gt;Comparison&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis#architecture--crate-map" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis#security" rel="noopener noreferrer"&gt;Security&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis#how-it-works" rel="noopener noreferrer"&gt;How It Works&lt;/a&gt; • &lt;a href="https://github.com/moltis-org/moltis/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;Moltis recently hit &lt;a href="https://news.ycombinator.com/item?id=46993587" rel="nofollow noopener noreferrer"&gt;the front page of Hacker News&lt;/a&gt;. Please &lt;a href="https://github.com/moltis-org/moltis/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt; for any friction at all. I'm focused on making Moltis excellent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secure by design&lt;/strong&gt; — Your keys never leave your machine. Every command runs in a sandboxed container, never on your host.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your hardware&lt;/strong&gt; — Runs on a Mac Mini, a Raspberry Pi, or any server you own. One Rust binary, no Node.js, no npm, no runtime.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full-featured&lt;/strong&gt; — Voice, memory, scheduling, Telegram, Discord, browser automation, MCP servers — all built-in. No plugin marketplace to get supply-chain attacked through.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auditable&lt;/strong&gt; — The agent loop + provider model fits in ~5K lines. The core (excluding the optional web UI) is ~196K lines across 46 modular crates you can…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/moltis-org/moltis" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;A Rust-native personal AI assistant with voice, memory, sandboxing, MCP tools, and multi-channel access.&lt;/p&gt;
&lt;h2&gt;
  
  
  zclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tnm" rel="noopener noreferrer"&gt;
        tnm
      &lt;/a&gt; / &lt;a href="https://github.com/tnm/zclaw" rel="noopener noreferrer"&gt;
        zclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Your personal AI assistant at all-in 888KiB (~35KB in app code). Running on an ESP32. GPIO, cron, custom tools, memory, and more.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;zclaw&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/tnm/zclaw/docs/images/lobster_xiao_cropped_left.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ftnm%2Fzclaw%2Fdocs%2Fimages%2Flobster_xiao_cropped_left.png" alt="Lobster soldering a Seeed Studio XIAO ESP32-C3" height="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The smallest possible AI personal assistant for ESP32.&lt;/p&gt;
&lt;p&gt;zclaw is written in C and runs on ESP32 boards with a strict all-in firmware budget target of &lt;strong&gt;&amp;lt;= 888 KiB&lt;/strong&gt; on the default build. It supports scheduled tasks, GPIO control, persistent memory, and custom tool composition through natural language.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;888 KiB&lt;/strong&gt; cap is all-in firmware size, not just app code
It includes &lt;code&gt;zclaw&lt;/code&gt; logic plus ESP-IDF/FreeRTOS runtime, Wi-Fi/networking, TLS/crypto, and cert bundle overhead.&lt;/p&gt;
&lt;p&gt;Fun to use, fun to hack on
&lt;br&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Full Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Use the docs site for complete guides and reference.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zclaw.dev" rel="nofollow noopener noreferrer"&gt;Full documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zclaw.dev/local-admin.html" rel="nofollow noopener noreferrer"&gt;Local Admin Console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zclaw.dev/use-cases.html" rel="nofollow noopener noreferrer"&gt;Use cases: useful + fun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zclaw.dev/changelog.html" rel="nofollow noopener noreferrer"&gt;Changelog (web)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://zclaw.dev/reference/README_COMPLETE.md" rel="nofollow noopener noreferrer"&gt;Complete README (verbatim)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;One-line bootstrap (macOS/Linux):&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;bash &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;&amp;lt;(&lt;/span&gt;curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh&lt;span class="pl-pds"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Already cloned?&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;./install.sh&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Non-interactive install:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;./install.sh -y&lt;/pre&gt;

&lt;/div&gt;

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

Setup notes

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;bootstrap.sh&lt;/code&gt; clones/updates the repo and then runs &lt;code&gt;./install.sh&lt;/code&gt;. You can inspect/verify the bootstrap flow first (including &lt;code&gt;ZCLAW_BOOTSTRAP_SHA256&lt;/code&gt; integrity checks); see the &lt;a href="https://zclaw.dev/getting-started.html" rel="nofollow noopener noreferrer"&gt;Getting&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tnm/zclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Your personal AI assistant at all-in 888KiB (~35KB in app code). Running on an ESP32. GPIO, cron, custom tools, memory, and more.&lt;/p&gt;
&lt;h2&gt;
  
  
  clawlet
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mosaxiv" rel="noopener noreferrer"&gt;
        mosaxiv
      &lt;/a&gt; / &lt;a href="https://github.com/mosaxiv/clawlet" rel="noopener noreferrer"&gt;
        clawlet
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Ultra-lightweight and efficient personal AI assistant
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/mosaxiv/clawlet/clawlet.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fmosaxiv%2Fclawlet%2Fclawlet.png" alt="clawlet" width="500"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Clawlet&lt;/h1&gt;
&lt;/div&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Ultra-lightweight and efficient personal AI assistant&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Clawlet&lt;/strong&gt; is a lightweight personal AI agent with hybrid semantic memory search — a single static binary with no runtime and no CGO.&lt;br&gt;
Bundled SQLite + sqlite-vec. Drop it on any machine and memory search just works.&lt;/p&gt;
&lt;p&gt;This project is inspired by &lt;strong&gt;OpenClaw&lt;/strong&gt; and &lt;strong&gt;nanobot&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Download from &lt;a href="https://github.com/mosaxiv/clawlet/releases/latest" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;macOS (Apple Silicon):&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl -L https://github.com/mosaxiv/clawlet/releases/latest/download/clawlet_Darwin_arm64.tar.gz &lt;span class="pl-k"&gt;|&lt;/span&gt; tar xz
mv clawlet &lt;span class="pl-k"&gt;~&lt;/span&gt;/.local/bin/&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Initialize&lt;/span&gt;
clawlet onboard \
  --openrouter-api-key &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;sk-or-...&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt; \
  --model &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;openrouter/anthropic/claude-sonnet-4.5&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Check effective configuration&lt;/span&gt;
clawlet status

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Chat&lt;/span&gt;
clawlet agent -m &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;What is 2+2?&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Configuration (&lt;code&gt;~/.clawlet/config.json&lt;/code&gt;)&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Config file: &lt;code&gt;~/.clawlet/config.json&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Supported providers&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;clawlet currently supports these LLM providers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; (&lt;code&gt;openai/&amp;lt;model&amp;gt;&lt;/code&gt;, API key: &lt;code&gt;env.OPENAI_API_KEY&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI Codex (OAuth)&lt;/strong&gt; (&lt;code&gt;openai-codex/&amp;lt;model&amp;gt;&lt;/code&gt;, no API key; login: &lt;code&gt;clawlet provider login openai-codex&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenRouter&lt;/strong&gt; (&lt;code&gt;openrouter/&amp;lt;provider&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;, API key: &lt;code&gt;env.OPENROUTER_API_KEY&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mosaxiv/clawlet" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Ultra-lightweight and efficient personal AI assistant.&lt;/p&gt;
&lt;h2&gt;
  
  
  rosclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/PlaiPin" rel="noopener noreferrer"&gt;
        PlaiPin
      &lt;/a&gt; / &lt;a href="https://github.com/PlaiPin/rosclaw" rel="noopener noreferrer"&gt;
        rosclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ROS2 meets OpenClaw 💗
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;RosClaw&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-alert markdown-alert-important"&gt;
&lt;p class="markdown-alert-title"&gt;Important&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This project is undergoing a major re-architecture and migration to separate repos.&lt;/strong&gt; Check back soon for updates, or reach out on X &lt;a href="https://x.com/irvinxyz" rel="nofollow noopener noreferrer"&gt;@irvinxyz&lt;/a&gt; to follow along.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Natural language control of ROS2 robots through messaging apps, powered by AI agents.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RosClaw connects &lt;a href="https://github.com/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; to &lt;a href="https://docs.ros.org/" rel="nofollow noopener noreferrer"&gt;ROS2&lt;/a&gt; (the Robot Operating System) through an intelligent plugin layer. Send a message on Telegram, WhatsApp, Discord, or Slack — the robot moves. Connect to your own robot or "lease" any robot registered into our portal globally. Each robot registers their own profile with capabilitie.&lt;/p&gt;
&lt;p&gt;Whethere it's a cute desk robot or a humanoid robot, all you have to do is install our OpenClaw extension and run our ROS2 packakge.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://x.com/livinoffwater/status/2017172436119331133" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FPlaiPin%2Frosclaw%2Fassets%2Fthumbnail-1.jpg" alt="RosClaw Demo Video" width="380"&gt;
  &lt;/a&gt;
    
  &lt;a href="https://github.com/PlaiPin/rosclaw/" rel="noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FPlaiPin%2Frosclaw%2Fassets%2Fthumbnail-2.jpg" alt="RosClaw Demo" width="380"&gt;
  &lt;/a&gt;
  &lt;br&gt;
  &lt;em&gt;Click to watch the demos&lt;/em&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How It Works&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;User (WhatsApp/Telegram/Discord/Slack)
        |
        v
OpenClaw Gateway (AI Agent + Tools + Memory)
        |
        v  RosClaw Plugin
rosbridge_server (WebSocket)
        |
        v  ROS2 DDS
Robots: Nav2, MoveIt2, cameras, sensors
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;&lt;li&gt;…&lt;/li&gt;&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PlaiPin/rosclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;ROS2 meets OpenClaw.&lt;/p&gt;
&lt;h2&gt;
  
  
  geminiclaw
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/e-mon" rel="noopener noreferrer"&gt;
        e-mon
      &lt;/a&gt; / &lt;a href="https://github.com/e-mon/geminiclaw" rel="noopener noreferrer"&gt;
        geminiclaw
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Personal autonomous agent powered by Gemini CLI. Orchestrates scheduling, persistent memory, MCP tools, and multi-channel messaging.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/e-mon/geminiclaw/docs/images/geminiclaw_logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fe-mon%2Fgeminiclaw%2Fdocs%2Fimages%2Fgeminiclaw_logo.png" alt="GeminiClaw" width="600"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="https://github.com/e-mon/geminiclaw/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/e-mon/geminiclaw/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/e-mon/geminiclaw/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://nodejs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/508b1391e0fd9b2a0a355208d8cde75e3168f3cef23d6d6fc0b0ca38e0232174/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25334525334432302d627269676874677265656e" alt="Node.js"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;An extension for &lt;a href="https://github.com/google-gemini/gemini-cli" rel="noopener noreferrer"&gt;Gemini CLI&lt;/a&gt; that adds autonomous agent orchestration.&lt;br&gt;
Scheduling · Memory · MCP Tools · Multi-channel Messaging&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Why GeminiClaw?&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;GeminiClaw extends Gemini CLI — it doesn't replace it. All LLM reasoning, tool use, and sandbox execution happen inside Gemini CLI via &lt;a href="https://github.com/google-gemini/gemini-cli/blob/main/docs/acp.md" rel="noopener noreferrer"&gt;ACP&lt;/a&gt;. GeminiClaw never touches OAuth tokens or calls backend services directly — it spawns Gemini CLI processes and communicates over stdio.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ACP process pool&lt;/strong&gt; — Keeps warm Gemini CLI processes with session affinity. Stateful multi-turn conversations without replay overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Thin orchestration layer&lt;/strong&gt; — Scheduling is Inngest. Search is QMD. Messaging is Chat SDK. GeminiClaw is the glue, not another agent framework.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandboxed by default&lt;/strong&gt; — Every agent run executes inside Gemini CLI's Docker sandbox. Tool use is isolated from day one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bring your own auth&lt;/strong&gt; — Authentication is handled entirely by Gemini CLI. GeminiClaw supports whatever auth method you configure (Google OAuth, API key, Vertex AI).&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/e-mon/geminiclaw" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Personal autonomous agent powered by Gemini CLI. Orchestrates scheduling, persistent memory, MCP tools, and multi-channel messaging.&lt;/p&gt;

&lt;h2&gt;
  
  
  ClawX
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ValueCell-ai" rel="noopener noreferrer"&gt;
        ValueCell-ai
      &lt;/a&gt; / &lt;a href="https://github.com/ValueCell-ai/ClawX" rel="noopener noreferrer"&gt;
        ClawX
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal. China website is https://clawx.com.cn.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/src/assets/logo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fsrc%2Fassets%2Flogo.svg" width="128" height="128" alt="ClawX Logo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ClawX&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;The Desktop Interface for OpenClaw AI Agents&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/ValueCell-ai/ClawX#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; •
  &lt;a href="https://github.com/ValueCell-ai/ClawX#why-clawx" rel="noopener noreferrer"&gt;Why ClawX&lt;/a&gt; •
  &lt;a href="https://github.com/ValueCell-ai/ClawX#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt; •
  &lt;a href="https://github.com/ValueCell-ai/ClawX#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt; •
  &lt;a href="https://github.com/ValueCell-ai/ClawX#development" rel="noopener noreferrer"&gt;Development&lt;/a&gt; •
  &lt;a href="https://github.com/ValueCell-ai/ClawX#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/fecccc9f67d1ee287b75597e7f90ef5ae2deaff1be506042ad2b351b17dc4aaf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d4d61634f5325323025374325323057696e646f77732532302537432532304c696e75782d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/fecccc9f67d1ee287b75597e7f90ef5ae2deaff1be506042ad2b351b17dc4aaf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d4d61634f5325323025374325323057696e646f77732532302537432532304c696e75782d626c7565" alt="Platform"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e4b4560fbe710a6e3bb04731f2be57fa198701b8bae4008df133ef1155f18523/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f656c656374726f6e2d34302b2d3437383438463f6c6f676f3d656c656374726f6e"&gt;&lt;img src="https://camo.githubusercontent.com/e4b4560fbe710a6e3bb04731f2be57fa198701b8bae4008df133ef1155f18523/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f656c656374726f6e2d34302b2d3437383438463f6c6f676f3d656c656374726f6e" alt="Electron"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a52db53aaaf0dd5ed1e61c24a09ab27b68cacfaf06eae9af9162af273e01010a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d31392d3631444146423f6c6f676f3d7265616374"&gt;&lt;img src="https://camo.githubusercontent.com/a52db53aaaf0dd5ed1e61c24a09ab27b68cacfaf06eae9af9162af273e01010a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d31392d3631444146423f6c6f676f3d7265616374" alt="React"&gt;&lt;/a&gt;
  &lt;a href="https://discord.com/invite/84Kex3GGAh" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/3375d6d66e2673a13f31b98422e90f5b0f81e450823f4de6916faccc577996ca/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313339393630333539313437313433353930373f6c6f676f3d646973636f7264266c6162656c436f6c6f723d253230253233353436326562266c6f676f436f6c6f723d25323025323366356635663526636f6c6f723d253230253233353436326562" alt="chat on Discord"&gt;
  &lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/6efd8086ed4a8e99b00f731b25ccc81acd760fb4671d109f1aaa6a7248be92ad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f56616c756543656c6c2d61692f436c6177582f746f74616c3f636f6c6f723d253233303237444542"&gt;&lt;img src="https://camo.githubusercontent.com/6efd8086ed4a8e99b00f731b25ccc81acd760fb4671d109f1aaa6a7248be92ad/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f56616c756543656c6c2d61692f436c6177582f746f74616c3f636f6c6f723d253233303237444542" alt="Downloads"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e" alt="License"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  English | &lt;a href="https://github.com/ValueCell-ai/ClawX/README.zh-CN.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt; | &lt;a href="https://github.com/ValueCell-ai/ClawX/README.ja-JP.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;ClawX&lt;/strong&gt; bridges the gap between powerful AI agents and everyday users. Built on top of &lt;a href="https://github.com/OpenClaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt;, it transforms command-line AI orchestration into an accessible, beautiful desktop experience—no terminal required.&lt;/p&gt;

&lt;p&gt;Whether you're automating workflows, managing AI-powered channels, or scheduling intelligent tasks, ClawX provides the interface you need to harness AI agents effectively.&lt;/p&gt;

&lt;p&gt;ClawX comes pre-configured with best-practice model providers and natively supports Windows as well as multi-language settings. Of course, you can also fine-tune advanced configurations via &lt;strong&gt;Settings → Advanced → Developer Mode&lt;/strong&gt;.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshot&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/chat.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fchat.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/cron.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fcron.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/skills.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fskills.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/channels.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fchannels.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/models.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fmodels.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ValueCell-ai/ClawX/resources/screenshot/en/settings.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FValueCell-ai%2FClawX%2Fresources%2Fscreenshot%2Fen%2Fsettings.png"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why ClawX&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Building AI agents shouldn't require mastering the command line. ClawX was designed with a simple philosophy: &lt;strong&gt;powerful technology deserves an interface that respects your time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;ClawX Solution&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Complex CLI setup&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;One-click installation with guided setup&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ValueCell-ai/ClawX" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;ClawX is a desktop app that provides a graphical interface for OpenClaw AI agents. It turns CLI-based AI orchestration into a desktop experience without using the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  claw-empire
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/GreenSheep01201" rel="noopener noreferrer"&gt;
        GreenSheep01201
      &lt;/a&gt; / &lt;a href="https://github.com/GreenSheep01201/claw-empire" rel="noopener noreferrer"&gt;
        claw-empire
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Command Your AI Agent Empire from the CEO Desk — A local-first AI agent office simulator that orchestrates CLI, OAuth, and API-connected agents (Claude Code, Codex CLI, Gemini CLI, OpenCode, and more) as a virtual autonomous company.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/GreenSheep01201/claw-empire/public/claw-empire.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FGreenSheep01201%2Fclaw-empire%2Fpublic%2Fclaw-empire.svg" width="80" alt="Claw-Empire"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Claw-Empire&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;Command Your AI Agent Empire from the CEO Desk&lt;/strong&gt;&lt;br&gt;
  A local-first AI agent office simulator that orchestrates &lt;b&gt;CLI&lt;/b&gt;, &lt;b&gt;OAuth&lt;/b&gt;, and &lt;b&gt;API-connected&lt;/b&gt; providers (including &lt;b&gt;Claude Code&lt;/b&gt;, &lt;b&gt;Codex CLI&lt;/b&gt;, &lt;b&gt;Gemini CLI&lt;/b&gt;, &lt;b&gt;OpenCode&lt;/b&gt;, &lt;b&gt;Kimi Code&lt;/b&gt;, &lt;b&gt;GitHub Copilot&lt;/b&gt;, and &lt;b&gt;Antigravity&lt;/b&gt;) as a virtual company of autonomous agents
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/00a273f43d7921815128c12bab1d9fd95ccae15cd2fef8503c3a5843dd05f131/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d322e302e342d626c7565"&gt;&lt;img src="https://camo.githubusercontent.com/00a273f43d7921815128c12bab1d9fd95ccae15cd2fef8503c3a5843dd05f131/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d322e302e342d626c7565" alt="Releases"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GreenSheep01201/claw-empire/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/GreenSheep01201/claw-empire/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/21df03c5ec135a4f3c1cc7b0c236c82f962fb52b8ce79012d54f10dc441c47a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25334525334432322d627269676874677265656e"&gt;&lt;img src="https://camo.githubusercontent.com/21df03c5ec135a4f3c1cc7b0c236c82f962fb52b8ce79012d54f10dc441c47a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e6f64652d25334525334432322d627269676874677265656e" alt="Node.js 22+"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b0008b83c322804237655d14f05f5f0e02b8879ff1ceb1c00b2a5acf634ab7a8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865253230322e302d6f72616e6765"&gt;&lt;img src="https://camo.githubusercontent.com/b0008b83c322804237655d14f05f5f0e02b8879ff1ceb1c00b2a5acf634ab7a8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865253230322e302d6f72616e6765" alt="License"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/6ba9e6985c7f7a2f272eb6a22caf25ae0f4e6a268240c65f83433e0f3b2e40c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61634f532532302537432532304c696e757825323025374325323057696e646f77732d6c6967687467726579"&gt;&lt;img src="https://camo.githubusercontent.com/6ba9e6985c7f7a2f272eb6a22caf25ae0f4e6a268240c65f83433e0f3b2e40c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61634f532532302537432532304c696e757825323025374325323057696e646f77732d6c6967687467726579" alt="Platform"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/87a24e66d5b45f5169723473dfe4fc3dac5759a416f3d8f3f6a6990f28cce1fe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d436c61756465253230253743253230436f64657825323025374325323047656d696e692532302537432532304f70656e436f64652532302537432532304b696d69253230253743253230436f70696c6f74253230253743253230416e7469677261766974792d707572706c65"&gt;&lt;img src="https://camo.githubusercontent.com/87a24e66d5b45f5169723473dfe4fc3dac5759a416f3d8f3f6a6990f28cce1fe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d436c61756465253230253743253230436f64657825323025374325323047656d696e692532302537432532304f70656e436f64652532302537432532304b696d69253230253743253230436f70696c6f74253230253743253230416e7469677261766974792d707572706c65" alt="AI Agents"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#ai-installation-guide" rel="noopener noreferrer"&gt;AI Install Guide&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire/docs/releases/v2.0.4.md" rel="noopener noreferrer"&gt;Release Notes&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#openclaw-integration" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#direct-messenger-without-openclaw" rel="noopener noreferrer"&gt;Direct Messenger&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#dollar-command-logic" rel="noopener noreferrer"&gt;$ Command&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#screenshots" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#tech-stack" rel="noopener noreferrer"&gt;Tech Stack&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#cli-provider-setup" rel="noopener noreferrer"&gt;Providers&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#docker-deployment-quick-start" rel="noopener noreferrer"&gt;Docker Deploy&lt;/a&gt; ·
  &lt;a href="https://github.com/GreenSheep01201/claw-empire#security" rel="noopener noreferrer"&gt;Security&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt;English&lt;/b&gt; | &lt;a href="https://github.com/GreenSheep01201/claw-empire/README_ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | &lt;a href="https://github.com/GreenSheep01201/claw-empire/README_jp.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt; | &lt;a href="https://github.com/GreenSheep01201/claw-empire/README_zh.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/GreenSheep01201/claw-empire/Sample_Img/Office.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FGreenSheep01201%2Fclaw-empire%2FSample_Img%2FOffice.png" alt="Office View" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Claw-Empire?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Claw-Empire transforms your AI coding assistants — connected via &lt;strong&gt;CLI&lt;/strong&gt;, &lt;strong&gt;OAuth&lt;/strong&gt;, or &lt;strong&gt;direct API keys&lt;/strong&gt; — into a fully simulated &lt;strong&gt;virtual software company&lt;/strong&gt;. You are the CEO. Your AI agents are the employees. Watch them collaborate across departments, hold meetings, deliver tasks, and level up — all visualized through a charming pixel-art office…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/GreenSheep01201/claw-empire" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  overview
&lt;/h3&gt;

&lt;p&gt;Command Your AI Agent Empire from the CEO Desk — A local-first AI agent office simulator that orchestrates CLI, OAuth, and API-connected agents (Claude Code, Codex CLI, Gemini CLI, OpenCode, and more) as a virtual autonomous company.&lt;/p&gt;

</description>
      <category>llm</category>
      <category>openclaw</category>
    </item>
    <item>
      <title>Ghostty - Use Fragment Shader as Terminal Background</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Wed, 04 Mar 2026 06:06:55 +0000</pubDate>
      <link>https://dev.to/0xkoji/ghostty-use-fragment-shader-as-terminal-background-11g3</link>
      <guid>https://dev.to/0xkoji/ghostty-use-fragment-shader-as-terminal-background-11g3</guid>
      <description>&lt;h2&gt;
  
  
  What is Ghostty?
&lt;/h2&gt;

&lt;p&gt;👻Ghostty is a GPU-based terminal emulator developed by Mitchell Hashimoto, co-founder of HashiCorp. It utilizes Metal on macOS and OpenGL on Linux for GPU rendering and takes advantage of this architecture to support custom shader functionality.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ghostty-org" rel="noopener noreferrer"&gt;
        ghostty-org
      &lt;/a&gt; / &lt;a href="https://github.com/ghostty-org/ghostty" rel="noopener noreferrer"&gt;
        ghostty
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
&lt;/h1&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/1299/393947124-fe853809-ba8b-400b-83ab-a9a0da25be8a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDMzMTIsIm5iZiI6MTc3NDY0MzAxMiwicGF0aCI6Ii8xMjk5LzM5Mzk0NzEyNC1mZTg1MzgwOS1iYThiLTQwMGItODNhYi1hOWEwZGEyNWJlOGEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDMyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAzMjdUMjAyMzMyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MzZjY2RmNjNlNTkyZjIwYjEyNGRmNmRkZTI2MzM0MzJiZDA3MDA4YzczNTA5ODhlYjQ1ZGU0Y2E5ZDllMzNjNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.Ed68SQC5n1R0eEnMyweznGaudXSmCpOJK555o_dHG2w"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F1299%2F393947124-fe853809-ba8b-400b-83ab-a9a0da25be8a.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDMzMTIsIm5iZiI6MTc3NDY0MzAxMiwicGF0aCI6Ii8xMjk5LzM5Mzk0NzEyNC1mZTg1MzgwOS1iYThiLTQwMGItODNhYi1hOWEwZGEyNWJlOGEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDMyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAzMjdUMjAyMzMyWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MzZjY2RmNjNlNTkyZjIwYjEyNGRmNmRkZTI2MzM0MzJiZDA3MDA4YzczNTA5ODhlYjQ1ZGU0Y2E5ZDllMzNjNSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.Ed68SQC5n1R0eEnMyweznGaudXSmCpOJK555o_dHG2w" alt="Logo" width="128"&gt;&lt;/a&gt;
  &lt;br&gt;Ghostty
&lt;/p&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;p&gt;&lt;br&gt;
    Fast, native, feature-rich terminal emulator pushing modern features&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    A native GUI or embeddable library via &lt;code&gt;libghostty&lt;/code&gt;&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;a href="https://github.com/ghostty-org/ghostty#about" rel="noopener noreferrer"&gt;About&lt;/a&gt;&lt;br&gt;
    ·&lt;br&gt;
    &lt;a href="https://ghostty.org/download" rel="nofollow noopener noreferrer"&gt;Download&lt;/a&gt;&lt;br&gt;
    ·&lt;br&gt;
    &lt;a href="https://ghostty.org/docs" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;br&gt;
    ·&lt;br&gt;
    &lt;a href="https://github.com/ghostty-org/ghostty/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;br&gt;
    ·&lt;br&gt;
    &lt;a href="https://github.com/ghostty-org/ghostty/HACKING.md" rel="noopener noreferrer"&gt;Developing&lt;/a&gt;&lt;br&gt;
  &lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Ghostty is a terminal emulator that differentiates itself by being
fast, feature-rich, and native. While there are many excellent terminal
emulators available, they all force you to choose between speed,
features, or native UIs. Ghostty provides all three.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;libghostty&lt;/code&gt;&lt;/strong&gt; is a cross-platform, zero-dependency C and Zig library
for building terminal emulators or utilizing terminal functionality
(such as style parsing). Anyone can use &lt;code&gt;libghostty&lt;/code&gt; to build a terminal
emulator or embed a terminal into their own applications. See
&lt;a href="https://github.com/ghostty-org/ghostling" rel="noopener noreferrer"&gt;Ghostling&lt;/a&gt; for a minimal complete project
example or the &lt;a href="https://github.com/ghostty-org/ghostty/tree/main/example" rel="noopener noreferrer"&gt;&lt;code&gt;examples&lt;/code&gt; directory&lt;/a&gt;
for smaller examples of using &lt;code&gt;libghostty&lt;/code&gt; in C and Zig.&lt;/p&gt;
&lt;p&gt;For more details, see &lt;a href="https://ghostty.org/docs/about" rel="nofollow noopener noreferrer"&gt;About Ghostty&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Download&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;See the &lt;a href="https://ghostty.org/download" rel="nofollow noopener noreferrer"&gt;download page&lt;/a&gt; on the Ghostty website.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;See the &lt;a href="https://ghostty.org/docs" rel="nofollow noopener noreferrer"&gt;documentation&lt;/a&gt; on the Ghostty website.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ghostty-org/ghostty" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  How to run a Shader as the terminal background?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step1 Create Ghostty config
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/.config/ghostty
&lt;span class="nb"&gt;touch&lt;/span&gt; ~/.config/ghostty/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://ghostty.org/docs/config" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fghostty.org%2Fsocial-share-card.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://ghostty.org/docs/config" rel="noopener noreferrer" class="c-link"&gt;
            Configuration
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Ghostty supports hundreds of configuration options to make
it look and behave exactly how you want.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fghostty.org%2Ffavicon.ico"&gt;
          ghostty.org
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Step2 Create or download a Shader
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;shaders
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;noise.glsl&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight glsl"&gt;&lt;code&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;fract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;9898&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;233&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;43758&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5453123&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="nf"&gt;random_gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1415926535&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;perlin_noise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;g00&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random_gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;g10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random_gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;g01&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random_gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;g11&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random_gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;p00&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;p10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;p01&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;p11&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;n00&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p00&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;n10&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;n01&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p01&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;n11&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p11&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;nx0&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;nx1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n01&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;nxy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nx0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nx1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nxy&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;mainImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="kt"&gt;vec4&lt;/span&gt; &lt;span class="n"&gt;fragColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;fragCoord&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;uv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fragCoord&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;iResolution&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;vec2&lt;/span&gt; &lt;span class="n"&gt;noiseUV&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uv&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;noiseUV&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;iTime&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kt"&gt;vec3&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;cos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iTime&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;noiseUV&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xyx&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="kt"&gt;vec3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;noise_val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;perlin_noise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;noiseUV&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="n"&gt;noise_val&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kt"&gt;vec4&lt;/span&gt; &lt;span class="n"&gt;terminalColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iChannel0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uv&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kt"&gt;vec3&lt;/span&gt; &lt;span class="n"&gt;blendedColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;terminalColor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rgb&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rgb&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;fragColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;vec4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;blendedColor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  custom-shader
&lt;/h4&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://ghostty.org/docs/config/reference#custom-shader" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fghostty.org%2Fsocial-share-card.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://ghostty.org/docs/config/reference#custom-shader" rel="noopener noreferrer" class="c-link"&gt;
            Option Reference - Configuration
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Reference of all Ghostty configuration options.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fghostty.org%2Ffavicon.ico"&gt;
          ghostty.org
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;If you don't have any Shader you want to use as the background, you can find out something cool in the following repo.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/0xhckr" rel="noopener noreferrer"&gt;
        0xhckr
      &lt;/a&gt; / &lt;a href="https://github.com/0xhckr/ghostty-shaders" rel="noopener noreferrer"&gt;
        ghostty-shaders
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A repository containing many free shaders to use with ghostty (the terminal)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Clone the repository:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone --depth 1 https://github.com/hackr-sh/ghostty-shaders
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; ghostty-shaders&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Copy your preferred shader file to the Ghostty config directory:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cp &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;your-choice&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;.glsl &lt;span class="pl-k"&gt;~&lt;/span&gt;/.config/ghostty/shaders/shader.glsl&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Add the following line to your &lt;code&gt;~/.config/ghostty/config&lt;/code&gt; file to enable the custom shader:&lt;/p&gt;
&lt;div class="highlight highlight-source-ini notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;custom-shader&lt;/span&gt; = ~/.config/ghostty/shaders/shader.glsl&lt;/pre&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/0xhckr/ghostty-shaders" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Step3 Add the Shader to the config
&lt;/h3&gt;

&lt;p&gt;I downloaded water.glsl from the above repo. The nice thing is that Ghostty allows us to use multiple shaders.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;custom-shader &lt;span class="o"&gt;=&lt;/span&gt; ~/.config/ghostty/shaders/noise.glsl
custom-shader &lt;span class="o"&gt;=&lt;/span&gt; ~/.config/ghostty/shaders/water.glsl
custom-shader-animation &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After saving config, hit &lt;code&gt;Cmd&lt;/code&gt; + &lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;,&lt;/code&gt; to apply the change to Ghostty.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faq1itkcip9ce8uoalfca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faq1itkcip9ce8uoalfca.png" alt="Ghostty+Shader"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;p&gt;If the background doesn’t change, check ‎&lt;code&gt;custom-shader&lt;/code&gt; path exists and the Shader itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy hacking with Ghostty and shaders!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Ghostty config
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#==================================
# appearance
#==================================
# color theme
theme = Calamity
# shaders
#custom-shader = ~/.config/ghostty/shaders/gears-and-belts.glsl
custom-shader = ~/.config/ghostty/shaders/noise.glsl
custom-shader = ~/.config/ghostty/shaders/water.glsl
#custom-shader = ~/.config/ghostty/shaders/fern.glsl
#custom-shader = ~/.config/ghostty/shaders/cell.glsl
custom-shader-animation = true

#-----------------------------------
# Resize panes with arrow keys
#-----------------------------------
keybind = ctrl+shift+arrow_left=resize_split:left,10
keybind = ctrl+shift+arrow_right=resize_split:right,10
keybind = ctrl+shift+arrow_down=resize_split:down,10
keybind = ctrl+shift+arrow_up=resize_split:up,10

#-----------------------------------
# Split panes
#-----------------------------------
keybind = ctrl+shift+v=new_split:right
keybind = ctrl+shift+h=new_split:down

#-----------------------------------
# Move panes
#-----------------------------------
keybind = shift+arrow_left=goto_split:left
keybind = shift+arrow_right=goto_split:right
keybind = shift+arrow_up=goto_split:up
keybind = shift+arrow_down=goto_split:down


#-----------------------------------
# Control panes
#-----------------------------------
keybind = ctrl+x=close_surface
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>shader</category>
      <category>cli</category>
      <category>tooling</category>
    </item>
    <item>
      <title>A Step-by-Step Guide: SSH into Your Parallels Ubuntu VM from a Mac</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Thu, 26 Feb 2026 14:26:03 +0000</pubDate>
      <link>https://dev.to/0xkoji/a-step-by-step-guide-ssh-into-your-parallels-ubuntu-vm-from-a-mac-1gd7</link>
      <guid>https://dev.to/0xkoji/a-step-by-step-guide-ssh-into-your-parallels-ubuntu-vm-from-a-mac-1gd7</guid>
      <description>&lt;p&gt;Running Ubuntu on Parallels Desktop is a fantastic way to develop on a Mac. However, working inside the virtual machine's window isn't always the most comfortable experience. Sometimes, you just want to stay in your native macOS Terminal, where all your familiar settings and shortcuts live.&lt;/p&gt;

&lt;p&gt;Setting up SSH access from your Mac host to your Ubuntu guest OS is the perfect solution. Here is a quick, step-by-step guide on how to get it done.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Check Network Configuration
&lt;/h2&gt;

&lt;p&gt;First, make sure that your guest OS network setting is configured correctly. Your virtual machine needs to use the Shared Network option.&lt;/p&gt;

&lt;p&gt;If you haven't modified any advanced configurations in Parallels Desktop, your guest OS uses Shared Network by default, so you probably don't need to change anything here.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Setup OpenSSH Server (Ubuntu Side)
&lt;/h2&gt;

&lt;p&gt;By default, Ubuntu desktop environments usually don't come with the SSH server installed and running. Open the terminal inside your Ubuntu virtual machine and run the following commands to set it up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# update package list&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update

&lt;span class="c"&gt;# install SSHserver&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;openssh-server &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# start SSH service&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start ssh

&lt;span class="c"&gt;# check ssh server service&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see &lt;code&gt;active (running)&lt;/code&gt; in green text, you are good to go!&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Find Your IP Address and Username (Ubuntu Side)
&lt;/h2&gt;

&lt;p&gt;o connect from your Mac, you need to know exactly where to connect and who you are connecting as.&lt;/p&gt;

&lt;p&gt;Check the IP address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;hostname&lt;/span&gt; &lt;span class="nt"&gt;-I&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see an IP address output. For Parallels Desktop using a Shared Network, it typically looks something like &lt;code&gt;10.211.55.xxx&lt;/code&gt;. Note this down.&lt;/p&gt;

&lt;p&gt;Check your exact username:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;whoami&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depending on how you set up the VM, you will probably see &lt;code&gt;parallels&lt;/code&gt;, or perhaps your own name. Make sure to use the exact output from this command.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Connect via SSH from Mac
&lt;/h2&gt;

&lt;p&gt;Now, switch back to your Mac and open your native Terminal app. Use the ssh command using the username and IP address you just confirmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# your_username: whoami&lt;/span&gt;
&lt;span class="c"&gt;# your_ip_address: hostname -I&lt;/span&gt;
ssh &amp;lt;your_username&amp;gt;@&amp;lt;your_ip_address&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Things to keep in mind during your first connection:&lt;/p&gt;

&lt;p&gt;You might see a message asking: &lt;code&gt;Are you sure you want to continue connecting?&lt;/code&gt;. Type &lt;code&gt;yes&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;When prompted for a password, use your Ubuntu user password, not your Mac login password or Parallels account password.&lt;/p&gt;

&lt;p&gt;When typing your password, nothing will show up on the screen. This is normal security behavior—just type it and press Enter.&lt;/p&gt;

&lt;p&gt;That’s it! You now have full terminal access to your Ubuntu VM directly from your Mac. Happy coding!&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting Common Issues
&lt;/h2&gt;

&lt;p&gt;Even with the right steps, you might run into a couple of common hiccups. Here is how to fix them.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Connection Timeout (No Response)
&lt;/h3&gt;

&lt;p&gt;If you type the &lt;code&gt;ssh&lt;/code&gt; command and nothing happens until it eventually times out, your Mac cannot reach the Ubuntu VM.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Double-check the IP Address:&lt;/strong&gt; Did you make a typo? Parallels Shared Network IPs usually start with &lt;code&gt;10.211.55.&lt;/code&gt;. Make sure you didn't accidentally type &lt;code&gt;10.221...&lt;/code&gt; or another variation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the Firewall (Ubuntu side):&lt;/strong&gt; Sometimes, the Ubuntu firewall blocks SSH connections by default. Run this in your Ubuntu terminal to allow SSH traffic:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow ssh
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw reload

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verify Network Settings:&lt;/strong&gt; Go to your Parallels VM Configuration &amp;gt; Hardware &amp;gt; Network, and ensure the Source is set to &lt;strong&gt;Shared Network&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Password Authentication Fails (Permission Denied)
&lt;/h3&gt;

&lt;p&gt;You connect successfully, but it keeps rejecting your password.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use the right password:&lt;/strong&gt; The terminal is asking for the &lt;strong&gt;Ubuntu virtual machine's login password&lt;/strong&gt; (the one you use to unlock the Ubuntu desktop). Do not use your Mac host password or your Parallels Desktop account password.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify your username:&lt;/strong&gt; Are you sure your username is &lt;code&gt;parallels&lt;/code&gt;? Run &lt;code&gt;whoami&lt;/code&gt; inside Ubuntu again to be 100% sure. If your username is &lt;code&gt;john&lt;/code&gt;, your command must be &lt;code&gt;ssh john@10.211.55.x&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard layout mismatch:&lt;/strong&gt; Since passwords are hidden while typing, a different keyboard layout (like US vs. JIS) might cause you to type the wrong special characters. Try typing your password in a visible text editor on your Mac, copy it, and paste it into the terminal when prompted.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mac</category>
      <category>ubuntu</category>
      <category>cli</category>
    </item>
    <item>
      <title>Clean up repo with knip and two-line prompt</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Sat, 21 Feb 2026 23:45:35 +0000</pubDate>
      <link>https://dev.to/0xkoji/clean-up-repo-with-knip-and-two-line-prompt-2ol1</link>
      <guid>https://dev.to/0xkoji/clean-up-repo-with-knip-and-two-line-prompt-2ol1</guid>
      <description>&lt;p&gt;This will work with AI code editor and AI CLI. &lt;/p&gt;

&lt;h2&gt;
  
  
  install kip
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://knip.dev/" rel="noopener noreferrer"&gt;https://knip.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/webpro-nl" rel="noopener noreferrer"&gt;
        webpro-nl
      &lt;/a&gt; / &lt;a href="https://github.com/webpro-nl/knip" rel="noopener noreferrer"&gt;
        knip
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ✂️  Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it!
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  &lt;br&gt;
  &lt;a href="https://knip.dev" rel="nofollow noopener noreferrer"&gt;
    &lt;img height="200" width="200" src="https://camo.githubusercontent.com/d97ae73782c380c206f4f7eae74e6af25bc6e0e287f40950f6feb5b155b918aa/68747470733a2f2f6b6e69702e6465762f66617669636f6e2e737667" alt="Knip"&gt;
  &lt;/a&gt;
  &lt;br&gt;
  &lt;br&gt;
&lt;/h1&gt;

&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/knip" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0aaf6ab4d13721cd758239f84dcbb375f4b111a51f6beca5d7fd26157ccea8ed/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f6b6e69703f636f6c6f723d663536653066" alt="NPM Version"&gt;&lt;/a&gt; &lt;a href="https://www.npmjs.com/package/knip" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/be025b8a0d97b4ad8092e85e43327096375c91522fc61a81bc18a7a7ee163a3d/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f6b6e69703f636f6c6f723d663536653066" alt="NPM Downloads"&gt;&lt;/a&gt; &lt;a href="https://github.com/webpro-nl/knip" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/325eb5a7ac0dd01cd4fdb1a62fefabf0bf1770fcfc3f400bf67d38feb1f12764/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f77656270726f2d6e6c2f6b6e69703f7374796c653d666c61742d73717561726526636f6c6f723d663536653066" alt="GitHub Repo stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Knip finds and fixes &lt;strong&gt;unused dependencies, exports and files&lt;/strong&gt; in your
JavaScript and TypeScript projects. Less code and dependencies lead to improved
performance, less maintenance and easier refactorings.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://knip.dev" rel="nofollow noopener noreferrer"&gt;knip.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a href="https://github.com/webpro-nl/knip" rel="noopener noreferrer"&gt;webpro-nl/knip&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official npm packages: &lt;a href="https://www.npmjs.com/package/knip" rel="nofollow noopener noreferrer"&gt;knip&lt;/a&gt;, &lt;a href="https://www.npmjs.com/package/@knip/create-config" rel="nofollow noopener noreferrer"&gt;@knip/create-config&lt;/a&gt;,
&lt;a href="https://www.npmjs.com/package/@knip/language-server" rel="nofollow noopener noreferrer"&gt;@knip/language-server&lt;/a&gt;, &lt;a href="https://www.npmjs.com/package/@knip/mcp" rel="nofollow noopener noreferrer"&gt;@knip/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=webpro.vscode-knip" rel="nofollow noopener noreferrer"&gt;Knip on the VS Code Marketplace&lt;/a&gt;, &lt;a href="https://open-vsx.org/extension/webpro/vscode-knip" rel="nofollow noopener noreferrer"&gt;Knip on the Open VSX Registry&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/webpro-nl/knip/blob/main/.github/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Follow &lt;a href="https://bsky.app/profile/webpro.nl" rel="nofollow noopener noreferrer"&gt;@webpro.nl on Bluesky&lt;/a&gt; for updates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://knip.dev/sponsors" rel="nofollow noopener noreferrer"&gt;Sponsor Knip!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributors&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Special thanks to &lt;a href="https://knip.dev/#created-by-awesome-contributors" rel="nofollow noopener noreferrer"&gt;the wonderful people who have contributed to Knip&lt;/a&gt;!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Knip&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;/'knɪp/ means "(to) cut" and is &lt;a href="https://www.youtube.com/watch?v=PE7h7KvQoUI&amp;amp;t=9s" rel="nofollow noopener noreferrer"&gt;pronounced with a hard "K"&lt;/a&gt; 🇳🇱&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;License&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Knip is free and open-source software licensed under the &lt;a href="https://github.com/webpro-nl/knip/./license" rel="noopener noreferrer"&gt;ISC License&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Parts of Knip have been inspired by and/or partially copy code from the
following projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/package-json" rel="noopener noreferrer"&gt;@npmcli/package-json&lt;/a&gt; (&lt;a href="https://github.com/npm/package-json/blob/main/LICENSE" rel="noopener noreferrer"&gt;ISC&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/pnpm/pnpm/tree/main/deps/graph-sequencer" rel="noopener noreferrer"&gt;@pnpm/deps.graph-sequencer&lt;/a&gt; (&lt;a href="https://github.com/pnpm/pnpm/blob/main/LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jaredwray/cacheable/tree/main/packages/file-entry-cache" rel="noopener noreferrer"&gt;file-entry-cache&lt;/a&gt; (&lt;a href="https://github.com/jaredwray/cacheable/blob/main/packages/file-entry-cache/LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/npm/json-parse-even-better-errors" rel="noopener noreferrer"&gt;json-parse-even-better-errors&lt;/a&gt; (&lt;a href="https://github.com/npm/json-parse-even-better-errors/blob/main/LICENSE.md" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/webpro-nl/knip" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bun add -D knip
pnpm add -D knip
npm install -D knip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  send the prompt
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;prompt&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clean up the unused code using knip. Please also verify that the build, test and lint processes still pass as expected.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>code</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Prevent Hugging Face Spaces from Sleeping with GitHub Actions + agent-browser</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Sun, 15 Feb 2026 21:18:05 +0000</pubDate>
      <link>https://dev.to/0xkoji/prevent-hugging-face-spaces-from-sleeping-with-github-actions-agent-browser-2p4f</link>
      <guid>https://dev.to/0xkoji/prevent-hugging-face-spaces-from-sleeping-with-github-actions-agent-browser-2p4f</guid>
      <description>&lt;p&gt;Hugging Face Spaces are incredibly convenient for hosting demos, tools, and lightweight apps.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/" rel="noopener noreferrer"&gt;https://huggingface.co/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, there is one limitation:&lt;/p&gt;

&lt;p&gt;If a Space is not accessed for 48 hours, it goes to sleep.&lt;/p&gt;

&lt;p&gt;This can be problematic when:&lt;br&gt;
    • You share a demo URL and it’s slow on first access (cold start)&lt;br&gt;
    • You host automation tools like n8n&lt;br&gt;
    • You want your app to always feel “ready”&lt;br&gt;
    • You want simple uptime monitoring&lt;/p&gt;

&lt;p&gt;To solve this, I built a small automation:&lt;/p&gt;

&lt;p&gt;GitHub Actions accesses my Space daily&lt;br&gt;
agent-browser opens the page and takes a screenshot&lt;br&gt;
The screenshot is posted to Discord&lt;/p&gt;

&lt;p&gt;This achieves both:&lt;br&gt;
    • ✅ Preventing sleep&lt;br&gt;
    • ✅ Visual uptime monitoring&lt;/p&gt;

&lt;p&gt;In this article, I’ll show you exactly how to set it up.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why use agent-browser?&lt;/p&gt;

&lt;p&gt;You could simply curl the Space URL.&lt;/p&gt;

&lt;p&gt;But I wanted:&lt;br&gt;
    • A real browser access (not just HTTP ping)&lt;br&gt;
    • To confirm the page fully renders&lt;br&gt;
    • To capture a screenshot as proof&lt;br&gt;
    • To visually verify that nothing is broken&lt;/p&gt;

&lt;p&gt;For that, I used agent-browser, a CLI browser automation tool built on Playwright.&lt;/p&gt;

&lt;p&gt;It works perfectly inside GitHub Actions.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vercel-labs" rel="noopener noreferrer"&gt;
        vercel-labs
      &lt;/a&gt; / &lt;a href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;
        agent-browser
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Browser automation CLI for AI agents
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;agent-browser&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Headless browser automation CLI for AI agents. Fast native Rust CLI.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Global Installation (recommended)&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Installs the native Rust binary:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g agent-browser
agent-browser install  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Download Chrome from Chrome for Testing (first time only)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Project Installation (local dependency)&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;For projects that want to pin the version in &lt;code&gt;package.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install agent-browser
agent-browser install&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Then use via &lt;code&gt;package.json&lt;/code&gt; scripts or by invoking &lt;code&gt;agent-browser&lt;/code&gt; directly.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Homebrew (macOS)&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;brew install agent-browser
agent-browser install  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Download Chrome from Chrome for Testing (first time only)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Cargo (Rust)&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;cargo install agent-browser
agent-browser install  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Download Chrome from Chrome for Testing (first time only)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From Source&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/vercel-labs/agent-browser
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; agent-browser
pnpm install
pnpm build
pnpm build:native   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Requires Rust (https://rustup.rs)&lt;/span&gt;
pnpm link --global  &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Makes agent-browser available globally&lt;/span&gt;
agent-browser install&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Linux Dependencies&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;On Linux, install system dependencies:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;agent-browser install --with-deps&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Updating&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Upgrade to the latest version:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;agent-browser upgrade&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Detects your installation method…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vercel-labs/agent-browser" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The GitHub Actions Workflow&lt;/p&gt;

&lt;p&gt;Here is the exact YAML file I use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;access-hugging-face-n8n&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v6&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install agent-browser&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install -g agent-browser&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Install Playwright browsers&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;agent-browser install --with-deps&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Go to the hugging face space&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;agent-browser open ${{ secrets.HUGGING_FACE_SPACE_URL }}&lt;/span&gt;
          &lt;span class="s"&gt;agent-browser wait --text "Sign in"&lt;/span&gt;
          &lt;span class="s"&gt;agent-browser screenshot page.png&lt;/span&gt;
          &lt;span class="s"&gt;agent-browser close&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Notify Discord on done access&lt;/span&gt;
        &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;success()&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;curl --fail-with-body -sS -X POST \&lt;/span&gt;
            &lt;span class="s"&gt;-F 'payload_json={"content":"Hugging Face access job done."}' \&lt;/span&gt;
            &lt;span class="s"&gt;-F "file1=@page.png;type=image/png" \&lt;/span&gt;
            &lt;span class="s"&gt;"${{ secrets.DISCORD_WEBHOOK_URL }}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;How It Works&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scheduled Daily Run&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;cron: "0 0 * * *"&lt;/p&gt;

&lt;p&gt;This runs once per day at 00:00 UTC.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install agent-browser&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;npm install -g agent-browser&lt;br&gt;
agent-browser install --with-deps&lt;/p&gt;

&lt;p&gt;This installs Playwright and required browser dependencies inside the GitHub Actions runner.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Hugging Face Space&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;agent-browser open ${{ secrets.HUGGING_FACE_SPACE_URL }}&lt;br&gt;
agent-browser wait --text "Sign in"&lt;br&gt;
agent-browser screenshot page.png&lt;br&gt;
agent-browser close&lt;/p&gt;

&lt;p&gt;What this does:&lt;br&gt;
    1.  Opens the Space in a real browser&lt;br&gt;
    2.  Waits until "Sign in" text appears (ensures full render)&lt;br&gt;
    3.  Takes a screenshot&lt;br&gt;
    4.  Closes the browser&lt;/p&gt;

&lt;p&gt;The wait --text step prevents taking screenshots before the page is fully loaded.&lt;/p&gt;

&lt;p&gt;You can change the text to something more specific to your app.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Post Screenshot to Discord&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;curl -X POST \&lt;br&gt;
  -F 'payload_json={"content":"Hugging Face access job done."}' \&lt;br&gt;
  -F "file1=&lt;a class="mentioned-user" href="https://dev.to/page"&gt;@page&lt;/a&gt;.png;type=image/png" \&lt;br&gt;
  "${{ secrets.DISCORD_WEBHOOK_URL }}"&lt;/p&gt;

&lt;p&gt;This sends:&lt;br&gt;
    • A success message&lt;br&gt;
    • The screenshot image&lt;/p&gt;

&lt;p&gt;to your Discord channel via webhook.&lt;/p&gt;

&lt;p&gt;Now you have both:&lt;br&gt;
    • Sleep prevention&lt;br&gt;
    • Daily visual health check&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Setting Up Secrets&lt;/p&gt;

&lt;p&gt;In your GitHub repository:&lt;/p&gt;

&lt;p&gt;Settings → Secrets and variables → Actions&lt;/p&gt;

&lt;p&gt;Add:&lt;br&gt;
    • HUGGING_FACE_SPACE_URL&lt;br&gt;
    • DISCORD_WEBHOOK_URL&lt;/p&gt;

&lt;p&gt;These are securely injected into the workflow using:&lt;/p&gt;

&lt;p&gt;${{ secrets.SECRET_NAME }}&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why This Approach Is Nice&lt;/p&gt;

&lt;p&gt;✅ Free to run&lt;/p&gt;

&lt;p&gt;GitHub Actions free tier is sufficient.&lt;/p&gt;

&lt;p&gt;✅ No server required&lt;/p&gt;

&lt;p&gt;No EC2, no cron server, no maintenance.&lt;/p&gt;

&lt;p&gt;✅ Real browser check&lt;/p&gt;

&lt;p&gt;Not just ping — full rendering validation.&lt;/p&gt;

&lt;p&gt;✅ Visual confirmation&lt;/p&gt;

&lt;p&gt;You instantly see if something broke.&lt;/p&gt;

&lt;p&gt;✅ Easy to extend&lt;/p&gt;

&lt;p&gt;Add monitoring, metrics, multi-Space support.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Optional Improvements&lt;/p&gt;

&lt;p&gt;You could extend this further:&lt;br&gt;
    • Fail the job if specific text is missing&lt;br&gt;
    • Measure page load time&lt;br&gt;
    • Upload screenshots to S3 / R2&lt;br&gt;
    • Monitor multiple Spaces in parallel&lt;br&gt;
    • Add Slack notifications&lt;br&gt;
    • Store screenshots as GitHub Action artifacts&lt;/p&gt;

&lt;p&gt;You can even turn this into a lightweight uptime monitoring system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4atpq7wecundwdeuzf3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4atpq7wecundwdeuzf3q.png" alt="huggingface_space"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Hugging Face Spaces going to sleep can be inconvenient.&lt;/p&gt;

&lt;p&gt;But with:&lt;/p&gt;

&lt;p&gt;GitHub Actions + agent-browser&lt;/p&gt;

&lt;p&gt;you can:&lt;br&gt;
    • Automatically keep your Space awake&lt;br&gt;
    • Capture daily screenshots&lt;br&gt;
    • Get notified via Discord&lt;br&gt;
    • Monitor visual health&lt;/p&gt;

&lt;p&gt;All without running your own server.&lt;/p&gt;

&lt;p&gt;Simple, effective, and fully automated.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>huggingface</category>
      <category>githubactions</category>
    </item>
    <item>
      <title>One‑Line Magic: Using Claude Code Through Ollama</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Sun, 01 Feb 2026 22:52:16 +0000</pubDate>
      <link>https://dev.to/0xkoji/one-line-magic-using-claude-code-through-ollama-1g48</link>
      <guid>https://dev.to/0xkoji/one-line-magic-using-claude-code-through-ollama-1g48</guid>
      <description>&lt;h2&gt;
  
  
  requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ollama v0.15+&lt;/li&gt;
&lt;li&gt;You have pulled a model via &lt;code&gt;ollama pull&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://ollama.com/blog/launch" rel="noopener noreferrer"&gt;https://ollama.com/blog/launch&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Run &lt;code&gt;ollama launch&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;launch commands allow us to use a few AI coding agents.&lt;br&gt;
&lt;code&gt;Claude Code&lt;/code&gt;, &lt;code&gt;Clawdbot(Openclaw)&lt;/code&gt;, &lt;code&gt;Codex&lt;/code&gt;, &lt;code&gt;Droid&lt;/code&gt;, and &lt;code&gt;OpenCode&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama launch
Select integration: 
  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; claude - Claude Code &lt;span class="o"&gt;(&lt;/span&gt;gpt-oss:20b&lt;span class="o"&gt;)&lt;/span&gt;
    clawdbot - Clawdbot
    codex - Codex
    droid - Droid
    opencode - OpenCode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then you will need to select a model you want use for &lt;code&gt;Claude Code&lt;/code&gt;. (In this article, I used gpt-oss:20b model)&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama launch

Launching Claude Code with gpt-oss:20b...

╭─── Claude Code v2.1.29 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                    │ Tips &lt;span class="k"&gt;for &lt;/span&gt;getting started                                                                           │
│                 Welcome back baxin!                │ Run /init to create a CLAUDE.md file with instructions &lt;span class="k"&gt;for &lt;/span&gt;Claude                                  │
│                                                    │ ─────────────────────────────────────────────────────────────────                                  │
│                                                    │ Recent activity                                                                                    │
│                       ▐▛███▜▌                      │ No recent activity                                                                                 │
│                      ▝▜█████▛▘                     │                                                                                                    │
│                        ▘▘ ▝▝                       │                                                                                                    │
│     gpt-oss:20b · API Usage Billing · baxin’s      │                                                                                                    │
│     Individual Org                                 │                                                                                                    │
│               ~&lt;span class="se"&gt;\D&lt;/span&gt;esktop&lt;span class="se"&gt;\d&lt;/span&gt;ev&lt;span class="se"&gt;\z&lt;/span&gt;enn-dev               │                                                                                                    │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯


 ‼Auth conflict: Both a token &lt;span class="o"&gt;(&lt;/span&gt;ANTHROPIC_AUTH_TOKEN&lt;span class="o"&gt;)&lt;/span&gt; and an API key &lt;span class="o"&gt;(&lt;/span&gt;/login managed key&lt;span class="o"&gt;)&lt;/span&gt; are set. This may lead to unexpected behavior.                    
    • Trying to use ANTHROPIC_AUTH_TOKEN? claude /logout                                                                                                   
    • Trying to use /login managed key? Unset the ANTHROPIC_AUTH_TOKEN environment variable.                                                               
  /model to try Opus 4.5                                                                                                                                   

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; Try &lt;span class="s2"&gt;"how does &amp;lt;filepath&amp;gt; work?"&lt;/span&gt;                                                                                                                          
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  ? &lt;span class="k"&gt;for &lt;/span&gt;shortcuts                                                                                                                                          

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  OpenCode
&lt;/h3&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2" class="crayons-story__hidden-navigation-link"&gt;How to Use Claude Opus 4.5 &amp;amp; Gemini 3 for Free with OpenCode&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/0xkoji" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F139970%2Fb9f89a49-839c-4632-8cc6-ef75d56ad63c.png" alt="0xkoji profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/0xkoji" class="crayons-story__secondary fw-medium m:hidden"&gt;
              0xkoji
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                0xkoji
                
              
              &lt;div id="story-author-preview-content-3168203" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/0xkoji" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F139970%2Fb9f89a49-839c-4632-8cc6-ef75d56ad63c.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;0xkoji&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jan 13&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2" id="article-link-3168203"&gt;
          How to Use Claude Opus 4.5 &amp;amp; Gemini 3 for Free with OpenCode
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opencode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opencode&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/llm"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;llm&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;62&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              5&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;


</description>
      <category>cli</category>
      <category>ollama</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>How to Run Clawdbot Locally and Control It from Discord</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Sun, 25 Jan 2026 06:39:31 +0000</pubDate>
      <link>https://dev.to/0xkoji/setup-clawdbot-discord-for-mac-2llh</link>
      <guid>https://dev.to/0xkoji/setup-clawdbot-discord-for-mac-2llh</guid>
      <description>&lt;h2&gt;
  
  
  Clawdbot
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Clears your inbox, sends emails, manages your calendar, checks you in for flights.&lt;br&gt;
All from WhatsApp, Telegram, or any chat app you already use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://clawd.bot/" rel="noopener noreferrer"&gt;https://clawd.bot/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs&lt;br&gt;
&lt;a href="https://docs.clawd.bot/start/getting-started" rel="noopener noreferrer"&gt;https://docs.clawd.bot/start/getting-started&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Supported platforms
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Signal&lt;/li&gt;
&lt;li&gt;iMessage&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;GPT&lt;/li&gt;
&lt;li&gt;Spotify&lt;/li&gt;
&lt;li&gt;Hue&lt;/li&gt;
&lt;li&gt;Obsidian&lt;/li&gt;
&lt;li&gt;Twitter&lt;/li&gt;
&lt;li&gt;Browser&lt;/li&gt;
&lt;li&gt;Gmail&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Install Clawdbot
&lt;/h2&gt;
&lt;h3&gt;
  
  
  requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Nodejs v22+&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pnpm&lt;/code&gt; (recommended) 
Unfortunately, &lt;code&gt;bun&lt;/code&gt; is not recommended&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Step 1: Install Nodejs
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download and install nvm:&lt;/span&gt;
curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

&lt;span class="c"&gt;# in lieu of restarting the shell&lt;/span&gt;
&lt;span class="se"&gt;\.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.nvm/nvm.sh"&lt;/span&gt;

&lt;span class="c"&gt;# Download and install Node.js:&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;25

&lt;span class="c"&gt;# Verify the Node.js version:&lt;/span&gt;
node &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# Should print "v25.4.0".&lt;/span&gt;

&lt;span class="c"&gt;# Install Corepack:&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; corepack

&lt;span class="c"&gt;# Download and install pnpm:&lt;/span&gt;
corepack &lt;span class="nb"&gt;enable &lt;/span&gt;pnpm

&lt;span class="c"&gt;# Verify pnpm version:&lt;/span&gt;
pnpm &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://nodejs.org/en/download/current" rel="noopener noreferrer"&gt;https://nodejs.org/en/download/current&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mise &lt;span class="nb"&gt;install &lt;/span&gt;nodejs 22.22.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Install Clawdbod
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawd.bot/install.sh | bash

&lt;span class="c"&gt;# version check&lt;/span&gt;
clawdbot &lt;span class="nt"&gt;-v&lt;/span&gt;
2026.1.23-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Generate a Discord bot token
&lt;/h3&gt;

&lt;p&gt;Go to &lt;a href="https://discord.com/developers/applications" rel="noopener noreferrer"&gt;https://discord.com/developers/applications&lt;/a&gt; and create a new application. In this post, I name &lt;code&gt;Clawdbot&lt;/code&gt;.&lt;br&gt;
Go to &lt;code&gt;Bot&lt;/code&gt; section in the sidebar and turn on the following&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpl49poao7gh1swc3d29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpl49poao7gh1swc3d29.png" alt="Discord_Bot" width="800" height="216"&gt;&lt;/a&gt;.&lt;br&gt;
Then click &lt;code&gt;Reset Token&lt;/code&gt;, and you can get a bot token. You will need to copy the token for onboarding.&lt;/p&gt;

&lt;p&gt;Then go to &lt;code&gt;OAuth2&lt;/code&gt;, &lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Clawdbot onboarding
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clawdbot onboard &lt;span class="nt"&gt;--install-daemon&lt;/span&gt;

🦞 Clawdbot 2026.1.23-1 &lt;span class="o"&gt;(&lt;/span&gt;c8afa82&lt;span class="o"&gt;)&lt;/span&gt;
   It&lt;span class="s1"&gt;'s not "failing," it'&lt;/span&gt;s &lt;span class="s2"&gt;"discovering new ways to configure the same thing wrong."&lt;/span&gt;

░████░█░░░░░█████░█░░░█░███░░████░░████░░▀█▀
█░░░░░█░░░░░█░░░█░█░█░█░█░░█░█░░░█░█░░░█░░█░
█░░░░░█░░░░░█████░█░█░█░█░░█░████░░█░░░█░░█░
█░░░░░█░░░░░█░░░█░█░█░█░█░░█░█░░█░░█░░░█░░█░
░████░█████░█░░░█░░█░█░░███░░████░░░███░░░█░
              🦞 FRESH DAILY 🦞
┌  Clawdbot onboarding
│
◇  Security ──────────────────────────────────────────────╮
│                                                         │
│  Please &lt;span class="nb"&gt;read&lt;/span&gt;: https://docs.clawd.bot/security           │
│                                                         │
│  Clawdbot agents can run commands, &lt;span class="nb"&gt;read&lt;/span&gt;/write files,    │
│  and act through any tools you enable. They can only    │
│  send messages on channels you configure &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;example,  │
│  an account you log &lt;span class="k"&gt;in &lt;/span&gt;on this machine, or a bot        │
│  account like Slack/Discord&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                           │
│                                                         │
│  If you’re new to this, start with the sandbox and      │
│  least privilege. It helps limit what an agent can &lt;span class="k"&gt;do&lt;/span&gt;   │
│  &lt;span class="k"&gt;if &lt;/span&gt;it’s tricked or makes a mistake.                    │
│  Learn more: https://docs.clawd.bot/sandboxing          │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  I understand this is powerful and inherently risky.
Continue?
│  Yes
│
◇  Onboarding mode
│  QuickStart
│
◇  QuickStart ─────────────────────────╮
│                                      │
│  Gateway port: 18789                 │
│  Gateway &lt;span class="nb"&gt;bind&lt;/span&gt;: Loopback &lt;span class="o"&gt;(&lt;/span&gt;127.0.0.1&lt;span class="o"&gt;)&lt;/span&gt;  │
│  Gateway auth: Token &lt;span class="o"&gt;(&lt;/span&gt;default&lt;span class="o"&gt;)&lt;/span&gt;       │
│  Tailscale exposure: Off             │
│  Direct to chat channels.            │
│                                      │
├──────────────────────────────────────╯
│
◇  Model/auth provider
│  OpenAI
│
◇  OpenAI auth method
│  OpenAI Codex OAuth &lt;span class="o"&gt;(&lt;/span&gt;Codex CLI&lt;span class="o"&gt;)&lt;/span&gt;
│
◇  Model configured ──────────────────────────╮
│                                             │
│  Default model &lt;span class="nb"&gt;set &lt;/span&gt;to openai-codex/gpt-5.2  │
│                                             │
├─────────────────────────────────────────────╯
│
◇  Default model
│  Keep current &lt;span class="o"&gt;(&lt;/span&gt;openai-codex/gpt-5.2&lt;span class="o"&gt;)&lt;/span&gt;
│
◇  Channel status ────────────────────────────╮
│                                             │
│  Telegram: not configured                   │
│  WhatsApp: not configured                   │
│  Discord: not configured                    │
│  Slack: not configured                      │
│  Signal: not configured                     │
│  iMessage: not configured                   │
│  Nostr: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;            │
│  Microsoft Teams: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;  │
│  Mattermost: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;       │
│  Nextcloud Talk: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;   │
│  Matrix: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;           │
│  BlueBubbles: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;      │
│  Zalo: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;             │
│  Zalo Personal: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;    │
│  Tlon: &lt;span class="nb"&gt;install &lt;/span&gt;plugin to &lt;span class="nb"&gt;enable&lt;/span&gt;             │
│                                             │
├─────────────────────────────────────────────╯
│
◇  How channels work ─────────────────────────────────────╮
│                                                         │
│  DM security: default is pairing&lt;span class="p"&gt;;&lt;/span&gt; unknown DMs get a     │
│  pairing code.                                          │
│  Approve with: clawdbot pairing approve &amp;lt;channel&amp;gt;       │
│  &amp;lt;code&amp;gt;                                                 │
│  Public DMs require &lt;span class="nv"&gt;dmPolicy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"open"&lt;/span&gt; + &lt;span class="nv"&gt;allowFrom&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;  │
│  Multi-user DMs: &lt;span class="nb"&gt;set&lt;/span&gt;                                    │
│  session.dmScope&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"per-channel-peer"&lt;/span&gt; to isolate          │
│  sessions.                                              │
│  Docs:                                                  │
│  start/pairi                                            │
│  ng                                                     │
│                                                         │
│  Telegram: simplest way to get started — register a     │
│  bot with @BotFather and get going.                     │
│  WhatsApp: works with your own number&lt;span class="p"&gt;;&lt;/span&gt; recommend a      │
│  separate phone + eSIM.                                 │
│  Discord: very well supported right now.                │
│  Slack: supported &lt;span class="o"&gt;(&lt;/span&gt;Socket Mode&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                        │
│  Signal: signal-cli linked device&lt;span class="p"&gt;;&lt;/span&gt; more setup &lt;span class="o"&gt;(&lt;/span&gt;David    │
│  Reagans: &lt;span class="s2"&gt;"Hop on Discord."&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                           │
│  iMessage: this is still a work &lt;span class="k"&gt;in &lt;/span&gt;progress.            │
│  Nostr: Decentralized protocol&lt;span class="p"&gt;;&lt;/span&gt; encrypted DMs via       │
│  NIP-04.                                                │
│  Microsoft Teams: Bot Framework&lt;span class="p"&gt;;&lt;/span&gt; enterprise support.    │
│  Mattermost: self-hosted Slack-style chat&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;the  │
│  plugin to enable.                                      │
│  Nextcloud Talk: Self-hosted chat via Nextcloud Talk    │
│  webhook bots.                                          │
│  Matrix: open protocol&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;the plugin to enable.   │
│  BlueBubbles: iMessage via the BlueBubbles mac app +    │
│  REST API.                                              │
│  Zalo: Vietnam-focused messaging platform with Bot      │
│  API.                                                   │
│  Zalo Personal: Zalo personal account via QR code       │
│  login.                                                 │
│  Tlon: decentralized messaging on Urbit&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;the    │
│  plugin to enable.                                      │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  Select channel &lt;span class="o"&gt;(&lt;/span&gt;QuickStart&lt;span class="o"&gt;)&lt;/span&gt;
│  Discord &lt;span class="o"&gt;(&lt;/span&gt;Bot API&lt;span class="o"&gt;)&lt;/span&gt;
│
◇  Discord bot token ───────────────────────────────────╮
│                                                       │
│  1&lt;span class="o"&gt;)&lt;/span&gt; Discord Developer Portal → Applications → New     │
│  Application                                          │
│  2&lt;span class="o"&gt;)&lt;/span&gt; Bot → Add Bot → Reset Token → copy token          │
│  3&lt;span class="o"&gt;)&lt;/span&gt; OAuth2 → URL Generator → scope &lt;span class="s1"&gt;'bot'&lt;/span&gt; → invite to  │
│  your server                                          │
│  Tip: &lt;span class="nb"&gt;enable &lt;/span&gt;Message Content Intent &lt;span class="k"&gt;if &lt;/span&gt;you need       │
│  message text. &lt;span class="o"&gt;(&lt;/span&gt;Bot → Privileged Gateway Intents →    │
│  Message Content Intent&lt;span class="o"&gt;)&lt;/span&gt;                              │
│  Docs:                                                │
│  discord                                              │
│                                                       │
├───────────────────────────────────────────────────────╯
03:41:11 &lt;span class="o"&gt;[&lt;/span&gt;agents/auth-profiles] synced openai-codex credentials from codex cli
│
◇  Enter Discord bot token
│  &amp;lt;Discord bot token&amp;gt;
│
◇  Configure Discord channels access?
│  Yes
│
◇  Discord channels access
│  Open &lt;span class="o"&gt;(&lt;/span&gt;allow all channels&lt;span class="o"&gt;)&lt;/span&gt;
│
◇  Selected channels ──────────────────────────────╮
│                                                  │
│  Discord — very well supported right now. Docs:  │
│  discord                                        │
│  &lt;span class="o"&gt;]&lt;/span&gt;8&lt;span class="p"&gt;;;&lt;/span&gt;                                           │
│                                                  │
├──────────────────────────────────────────────────╯
Updated ~/.clawdbot/clawdbot.json
Workspace OK: ~/clawd
Sessions OK: ~/.clawdbot/agents/main/sessions
│
◇  Skills status ────────────╮
│                            │
│  Eligible: 10              │
│  Missing requirements: 39  │
│  Blocked by allowlist: 0   │
│                            │
├────────────────────────────╯
│
◇  Configure skills now? &lt;span class="o"&gt;(&lt;/span&gt;recommended&lt;span class="o"&gt;)&lt;/span&gt;
│  Yes
│
◇  Preferred node manager &lt;span class="k"&gt;for &lt;/span&gt;skill installs
│  npm
│
◇  Install missing skill dependencies
│  Skip &lt;span class="k"&gt;for &lt;/span&gt;now
│
◇  Set GOOGLE_PLACES_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;goplaces?
│  No
│
◇  Set GOOGLE_PLACES_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;local-places?
│  No
│
◇  Set GEMINI_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;nano-banana-pro?
│  No
│
◇  Set OPENAI_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;openai-image-gen?
│  No
│
◇  Set OPENAI_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;openai-whisper-api?
│  No
│
◇  Set ELEVENLABS_API_KEY &lt;span class="k"&gt;for &lt;/span&gt;sag?
│  No
│
◇  Hooks ──────────────────────────────────────────────╮
│                                                      │
│  Hooks &lt;span class="nb"&gt;let &lt;/span&gt;you automate actions when agent commands  │
│  are issued.                                         │
│  Example: Save session context to memory when you    │
│  issue /new.                                         │
│                                                      │
│  Learn more: https://docs.clawd.bot/hooks            │
│                                                      │
├──────────────────────────────────────────────────────╯
│
◇  Enable hooks?
│  Skip &lt;span class="k"&gt;for &lt;/span&gt;now
│
◇  Gateway service runtime ──────────────────────────────╮
│                                                        │
│  QuickStart uses Node &lt;span class="k"&gt;for &lt;/span&gt;the Gateway service &lt;span class="o"&gt;(&lt;/span&gt;stable  │
│  + supported&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                                         │
│                                                        │
├────────────────────────────────────────────────────────╯
│
◑  Installing Gateway service…
Installed LaunchAgent: /Users/koji/Library/LaunchAgents/com.clawdbot.gateway.plist
Logs: /Users/koji/.clawdbot/logs/gateway.log
◇  Gateway service installed
│
◇  
Health check failed: gateway closed &lt;span class="o"&gt;(&lt;/span&gt;1006 abnormal closure &lt;span class="o"&gt;(&lt;/span&gt;no close frame&lt;span class="o"&gt;))&lt;/span&gt;: no close reason
  Gateway target: ws://127.0.0.1:18789
  Source: &lt;span class="nb"&gt;local &lt;/span&gt;loopback
  Config: /Users/koji/.clawdbot/clawdbot.json
  Bind: loopback
│
◇  Health check &lt;span class="nb"&gt;help&lt;/span&gt; ──────────────────────────────╮
│                                                  │
│  Docs:                                           │
│  https://docs.clawd.bot/gateway/health           │
│  https://docs.clawd.bot/gateway/troubleshooting  │
│                                                  │
├──────────────────────────────────────────────────╯
Missing Control UI assets. Build them with &lt;span class="sb"&gt;`&lt;/span&gt;pnpm ui:build&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;auto-installs UI deps&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
│
◇  Optional apps ────────────────────────╮
│                                        │
│  Add nodes &lt;span class="k"&gt;for &lt;/span&gt;extra features:         │
│  - macOS app &lt;span class="o"&gt;(&lt;/span&gt;system + notifications&lt;span class="o"&gt;)&lt;/span&gt;  │
│  - iOS app &lt;span class="o"&gt;(&lt;/span&gt;camera/canvas&lt;span class="o"&gt;)&lt;/span&gt;             │
│  - Android app &lt;span class="o"&gt;(&lt;/span&gt;camera/canvas&lt;span class="o"&gt;)&lt;/span&gt;         │
│                                        │
├────────────────────────────────────────╯
│
◇  Control UI ────────────────────────────────────────────╮
│                                                         │
│  Web UI: http://127.0.0.1:18789/                        │
│  Web UI &lt;span class="o"&gt;(&lt;/span&gt;with token&lt;span class="o"&gt;)&lt;/span&gt;:                                   │
│  http://127.0.0.1:18789/?token&lt;span class="o"&gt;=&lt;/span&gt;2da11cb64b3563eeac74c45  │
│  f555882108610c614ce69d2db                              │
│  Gateway WS: ws://127.0.0.1:18789                       │
│  Gateway: not detected &lt;span class="o"&gt;(&lt;/span&gt;gateway closed &lt;span class="o"&gt;(&lt;/span&gt;1006 abnormal   │
│  closure &lt;span class="o"&gt;(&lt;/span&gt;no close frame&lt;span class="o"&gt;))&lt;/span&gt;: no close reason&lt;span class="o"&gt;)&lt;/span&gt;            │
│  Docs: https://docs.clawd.bot/web/control-ui            │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  Workspace backup ──────────────────────────────────────╮
│                                                         │
│  Back up your agent workspace.                          │
│  Docs: https://docs.clawd.bot/concepts/agent-workspace  │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  Security ──────────────────────────────────────────╮
│                                                     │
│  Running agents on your computer is risky — harden  │
│  your setup: https://docs.clawd.bot/security        │
│                                                     │
├─────────────────────────────────────────────────────╯
│
◇  Dashboard ready ───────────────────────────────────────╮
│                                                         │
│  Dashboard &lt;span class="nb"&gt;link&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;with token&lt;span class="o"&gt;)&lt;/span&gt;:                           │
│  http://127.0.0.1:18789/?token&lt;span class="o"&gt;=&lt;/span&gt;2da11cb64b3563eeac74c45  │
│  f555882108610c614ce69d2db                              │
│  Opened &lt;span class="k"&gt;in &lt;/span&gt;your browser. Keep that tab to control       │
│  Clawdbot.                                              │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  Web search &lt;span class="o"&gt;(&lt;/span&gt;optional&lt;span class="o"&gt;)&lt;/span&gt; ─────────────────────────────────╮
│                                                         │
│  If you want your agent to be able to search the web,   │
│  you’ll need an API key.                                │
│                                                         │
│  Clawdbot uses Brave Search &lt;span class="k"&gt;for &lt;/span&gt;the &lt;span class="sb"&gt;`&lt;/span&gt;web_search&lt;span class="sb"&gt;`&lt;/span&gt; tool.  │
│  Without a Brave Search API key, web search won’t       │
│  work.                                                  │
│                                                         │
│  Set it up interactively:                               │
│  - Run: clawdbot configure &lt;span class="nt"&gt;--section&lt;/span&gt; web                │
│  - Enable web_search and &lt;span class="nb"&gt;paste &lt;/span&gt;your Brave Search API    │
│    key                                                  │
│                                                         │
│  Alternative: &lt;span class="nb"&gt;set &lt;/span&gt;BRAVE_API_KEY &lt;span class="k"&gt;in &lt;/span&gt;the Gateway          │
│  environment &lt;span class="o"&gt;(&lt;/span&gt;no config changes&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                       │
│  Docs: https://docs.clawd.bot/tools/web                 │
│                                                         │
├─────────────────────────────────────────────────────────╯
│
◇  What now ───────────────────────────────────────────╮
│                                                      │
│  What now: https://clawd.bot/showcase &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"What People  │
│  Are Building"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;                                     │
│                                                      │
├──────────────────────────────────────────────────────╯
│
└  Onboarding complete. Dashboard opened with your token&lt;span class="p"&gt;;&lt;/span&gt; keep that tab to control Clawdbot.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 5: Check Clawdbot gateway status
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clawdbot gateway status

🦞 Clawdbot 2026.1.23-1 &lt;span class="o"&gt;(&lt;/span&gt;c8afa82&lt;span class="o"&gt;)&lt;/span&gt;
   If it works, it&lt;span class="s1"&gt;'s automation; if it breaks, it'&lt;/span&gt;s a &lt;span class="s2"&gt;"learning opportunity."&lt;/span&gt;

│
◇  
Service: LaunchAgent &lt;span class="o"&gt;(&lt;/span&gt;loaded&lt;span class="o"&gt;)&lt;/span&gt;
File logs: /tmp/clawdbot/clawdbot-2026-01-25.log
Command: /usr/local/bin/node /Users/koji/.npm-global/lib/node_modules/clawdbot/dist/entry.js gateway &lt;span class="nt"&gt;--port&lt;/span&gt; 18789
Service file: ~/Library/LaunchAgents/com.clawdbot.gateway.plist
Service &lt;span class="nb"&gt;env&lt;/span&gt;: &lt;span class="nv"&gt;CLAWDBOT_GATEWAY_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;18789

Config &lt;span class="o"&gt;(&lt;/span&gt;cli&lt;span class="o"&gt;)&lt;/span&gt;: ~/.clawdbot/clawdbot.json
Config &lt;span class="o"&gt;(&lt;/span&gt;service&lt;span class="o"&gt;)&lt;/span&gt;: ~/.clawdbot/clawdbot.json

Gateway: &lt;span class="nb"&gt;bind&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;loopback &lt;span class="o"&gt;(&lt;/span&gt;127.0.0.1&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;18789 &lt;span class="o"&gt;(&lt;/span&gt;service args&lt;span class="o"&gt;)&lt;/span&gt;
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway&lt;span class="p"&gt;;&lt;/span&gt; only &lt;span class="nb"&gt;local &lt;/span&gt;clients can connect.

Runtime: running &lt;span class="o"&gt;(&lt;/span&gt;pid 54025, state active&lt;span class="o"&gt;)&lt;/span&gt;
RPC probe: ok

Listening: 127.0.0.1:18789
Troubles: run clawdbot status
Troubleshooting: https://docs.clawd.bot/troubleshooting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If everything works and you have access to &lt;a href="http://127.0.0.1:18789/" rel="noopener noreferrer"&gt;http://127.0.0.1:18789/&lt;/a&gt;, you will see the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qylp1ho0c847pwwvdx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qylp1ho0c847pwwvdx2.png" alt="chat" width="800" height="762"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 6: Send a message to Clawdbot
&lt;/h3&gt;

&lt;p&gt;Now, it's time to send a message to the bot on Discord.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxeg8ehceo3b3huccqib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxeg8ehceo3b3huccqib.png" alt="discord" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefgyv7bozr2bacfm60vg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefgyv7bozr2bacfm60vg.png" alt="simple research on discord" width="800" height="913"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 7: Use TUI (Terminal UI)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.clawd.bot/tui" rel="noopener noreferrer"&gt;https://docs.clawd.bot/tui&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
clawdbot tui


 hello                                                         

 Hello.                                                        

 If you tell me one thing you want &lt;span class="nb"&gt;help &lt;/span&gt;with today, I’ll take  
 it from there.                                                
 Also: what should I call you?                                 
 connected | idle                                              
 agent main | session main &lt;span class="o"&gt;(&lt;/span&gt;clawdbot-tui&lt;span class="o"&gt;)&lt;/span&gt; |                    
 openai-codex/gpt-5.2 | tokens 9.4k/400k &lt;span class="o"&gt;(&lt;/span&gt;2%&lt;span class="o"&gt;)&lt;/span&gt;                          
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>mac</category>
      <category>llm</category>
      <category>ai</category>
      <category>bot</category>
    </item>
    <item>
      <title>Install Claude Code on Windows with scoop</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Thu, 22 Jan 2026 04:01:41 +0000</pubDate>
      <link>https://dev.to/0xkoji/install-claude-code-on-windows-with-scoop-2452</link>
      <guid>https://dev.to/0xkoji/install-claude-code-on-windows-with-scoop-2452</guid>
      <description>&lt;h2&gt;
  
  
  install git via scoop
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;scoop &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  set path
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;setx CLAUDE_CODE_GIT_BASH_PATH &lt;span class="s2"&gt;"%USERPROFILE%&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="s2"&gt;coop&lt;/span&gt;&lt;span class="se"&gt;\a&lt;/span&gt;&lt;span class="s2"&gt;pps&lt;/span&gt;&lt;span class="se"&gt;\g&lt;/span&gt;&lt;span class="s2"&gt;it&lt;/span&gt;&lt;span class="se"&gt;\c&lt;/span&gt;&lt;span class="s2"&gt;urrent&lt;/span&gt;&lt;span class="se"&gt;\u&lt;/span&gt;&lt;span class="s2"&gt;sr&lt;/span&gt;&lt;span class="se"&gt;\b&lt;/span&gt;&lt;span class="s2"&gt;in&lt;/span&gt;&lt;span class="se"&gt;\b&lt;/span&gt;&lt;span class="s2"&gt;ash.exe"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  install &lt;code&gt;Claude Code&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;irm https://claude.ai/install.ps1 | iex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://code.claude.com/docs/en/setup#windows-powershell" rel="noopener noreferrer"&gt;https://code.claude.com/docs/en/setup#windows-powershell&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then restart Terminal app and run the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--version&lt;/span&gt;
2.1.15 &lt;span class="o"&gt;(&lt;/span&gt;Claude Code&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cli</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>Use Cursor with Local LLM and LM Studio</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Sun, 18 Jan 2026 02:07:56 +0000</pubDate>
      <link>https://dev.to/0xkoji/use-cursor-with-local-llm-and-lm-studio-i54</link>
      <guid>https://dev.to/0xkoji/use-cursor-with-local-llm-and-lm-studio-i54</guid>
      <description>&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;• Cursor installed
• LM Studio installed
• ngrok installed
• A local machine capable of running an LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;For this guide, we’ll use the model: &lt;code&gt;zai-org/glm-4.6v-flash&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install LM Studio
&lt;/h3&gt;

&lt;p&gt;Download and install LM Studio from the official website.&lt;br&gt;
Once installed, launch the application.&lt;br&gt;
&lt;a href="https://lmstudio.ai/" rel="noopener noreferrer"&gt;https://lmstudio.ai/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Download a Model
&lt;/h3&gt;

&lt;p&gt;Inside LM Studio, download the model you want to use.&lt;br&gt;
For this article, we use: &lt;code&gt;zai-org/glm-4.6v-flash&lt;/code&gt;&lt;br&gt;
Make sure the download completes successfully before moving on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyk613lgihtyt0zmcsq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyk613lgihtyt0zmcsq6.png" alt="lm_studio" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 3: Install ngrok
&lt;/h3&gt;

&lt;p&gt;Install ngrok on your system.&lt;br&gt;
ngrok allows you to expose your local server to the internet with a public URL.&lt;br&gt;
&lt;a href="https://ngrok.com/" rel="noopener noreferrer"&gt;https://ngrok.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have &lt;code&gt;Homebrew&lt;/code&gt;, you can install ngrok easily&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ngrok
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Set Up ngrok
&lt;/h3&gt;

&lt;p&gt;Complete the ngrok setup by following the instructions on the official ngrok Setup page.&lt;br&gt;
This typically includes:&lt;br&gt;
    • Creating an ngrok account&lt;br&gt;
    • Authenticating your local installation with an auth token&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ngrok config add-authtoken &lt;span class="o"&gt;{&lt;/span&gt;your_token&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3 Step 5: Start the Local Server in LM Studio
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.Open LM Studio
2.Enable Developer Mode
3.Start the local server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;LM Studio will now serve your local LLM using an OpenAI-compatible API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte20nscvwvk7ademkfzk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte20nscvwvk7ademkfzk.png" alt="developer_mode" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5o5jmb8bhyehz5i1xg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5o5jmb8bhyehz5i1xg3.png" alt="load_model" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78mxp5ixau8tqzhzqyma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F78mxp5ixau8tqzhzqyma.png" alt="loading_model" width="800" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faggy2mhe72xbzmazx4vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faggy2mhe72xbzmazx4vd.png" alt="loaded_model" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Expose the Local Server with ngrok
&lt;/h3&gt;

&lt;p&gt;Open a terminal and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ngrok http 1234
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: 1234 should match the port used by LM Studio’s local server.&lt;br&gt;
After running the command, ngrok will display a public URL like:&lt;br&gt;
&lt;a href="https://yours.ngrok-free.app" rel="noopener noreferrer"&gt;https://yours.ngrok-free.app&lt;/a&gt;&lt;br&gt;
Copy this URL — you’ll need it for Cursor.&lt;/p&gt;

&lt;p&gt;You'll see something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;🚪 One gateway &lt;span class="k"&gt;for &lt;/span&gt;every AI model. Available &lt;span class="k"&gt;in &lt;/span&gt;early access &lt;span class="k"&gt;*&lt;/span&gt;now&lt;span class="k"&gt;*&lt;/span&gt;: https://ngrok.com/r/ai                                                                                                  

Session Status                online                                                                                                                                                        
Account                       your_account &lt;span class="o"&gt;(&lt;/span&gt;Plan: Free&lt;span class="o"&gt;)&lt;/span&gt;                                                                                                                         
Version                       3.35.0                                                                                                                                                        
Region                        United States &lt;span class="o"&gt;(&lt;/span&gt;us&lt;span class="o"&gt;)&lt;/span&gt;                                                                                                                                            
Latency                       19ms                                                                                                                                                          
Web Interface                 http://127.0.0.1:4040                                                                                                                                         
Forwarding                    https://something.ngrok-free.app -&amp;gt; http://localhost:1234                                                                                                  

Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                   
                              7       0       0.00    0.00    6.26    263.91                                                                                                                

HTTP Requests                                                                                                                                                                               
&lt;span class="nt"&gt;-------------&lt;/span&gt;                                                                                                                                                                               

20:10:37.113 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:06:13.115 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:04:59.112 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:04:42.221 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:03:11.002 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:03:05.636 EST POST /v1/chat/completions      200 OK                                                                                                                                      
20:02:22.796 EST POST /v1/chat/completions      200 OK   
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 7: Open Cursor Settings
&lt;/h3&gt;

&lt;p&gt;Launch Cursor and navigate to:&lt;/p&gt;

&lt;p&gt;Settings → Models / OpenAI Configuration&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fribbkgzhum44jjoaa7zu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fribbkgzhum44jjoaa7zu.png" alt="Cursor_settings" width="440" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 8: Configure the OpenAI Base URL
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.Enable OpenAI API Key
2.Enter any placeholder value for the API key
•In this example, we simply use: 1234
3.Paste the ngrok URL into Override OpenAI Base URL
4.Append /v1 to the end of the URL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Your final URL should look like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://yours.ngrok-free.app/v1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 9: Add a Custom Model&lt;br&gt;
    1.  Click Add Custom Model&lt;br&gt;
    2.  Enter a name for your local LLM &lt;code&gt;Example: GLM4.6-local&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;⚠️ Windows users:&lt;br&gt;
You must enter the exact model name that LM Studio reports internally.&lt;br&gt;
For this case, &lt;code&gt;zai-org/glm-4.6v-flash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h5n1y3f5099u47za53h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1h5n1y3f5099u47za53h.png" alt="add_custom_model" width="409" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Done! 🎉&lt;/p&gt;

&lt;p&gt;That’s it — the setup is complete.&lt;/p&gt;

&lt;p&gt;You can now open Cursor Chat, enter a prompt, and send it. Cursor will route the request through ngrok to your local LLM running in LM Studio.&lt;/p&gt;

&lt;p&gt;This setup allows you to enjoy Cursor’s powerful coding experience while keeping inference fully local.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eqr10gdapobx0i6rykn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7eqr10gdapobx0i6rykn.png" alt="result" width="486" height="1262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Using Cursor with a local LLM is a great way to:&lt;br&gt;
    • Reduce API costs&lt;br&gt;
    • Improve privacy&lt;br&gt;
    • Experiment with custom or open-source models&lt;/p&gt;

&lt;p&gt;LM Studio and ngrok make the process surprisingly straightforward. Once configured, it feels almost identical to using a hosted OpenAI model — except everything runs on your own machine.&lt;/p&gt;

&lt;p&gt;Happy hacking! 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buymeacoffee.com/koji" rel="noopener noreferrer"&gt;https://buymeacoffee.com/koji&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>llm</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Use Claude Opus 4.5 &amp; Gemini 3 for Free with OpenCode</title>
      <dc:creator>0xkoji</dc:creator>
      <pubDate>Tue, 13 Jan 2026 07:14:05 +0000</pubDate>
      <link>https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2</link>
      <guid>https://dev.to/0xkoji/how-to-use-claude-opus-45-gemini-3-for-free-with-opencode-33o2</guid>
      <description>&lt;p&gt;🧵 TL;DR (Too Long; Didn’t Read)&lt;br&gt;
Want to use powerful AI models like Claude Opus 4.5 and Gemini 3 for free? This guide walks you through setting up OpenCode with the Antigravity plugin and Google OAuth. You’ll be up and running with top-tier models in minutes—no paid API keys required.&lt;/p&gt;


&lt;h2&gt;
  
  
  🚀 Getting Started with OpenCode + Antigravity Auth
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://opencode.ai/" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt; is an open-source AI coding agent that lets you connect to models like Claude, GPT, Gemini, and more. It comes with free models out of the box, or you can bring your own from any provider.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you through setting up OpenCode with Antigravity Auth using Google OAuth.&lt;/p&gt;


&lt;h3&gt;
  
  
  🛠 Step 1: Install OpenCode
&lt;/h3&gt;

&lt;p&gt;You can install OpenCode using various package managers like Homebrew, npm, pnpm, yarn, scoop, choco, etc.&lt;/p&gt;

&lt;p&gt;For this guide, I’ll use &lt;strong&gt;bun&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bun &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; opencode-ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More install options: &lt;a href="https://opencode.ai/docs/#install" rel="noopener noreferrer"&gt;Installation Docs&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  ⚙️ Step 2: Configure the Plugin
&lt;/h3&gt;

&lt;p&gt;We’ll use &lt;a href="https://github.com/NoeFabris/opencode-antigravity-auth" rel="noopener noreferrer"&gt;opencode-antigravity-auth&lt;/a&gt; plugin. Follow the installation instructions in the repo. I’ll go with &lt;strong&gt;Option B&lt;/strong&gt; here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vim ~/.config/opencode/opencode.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"plugin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"opencode-antigravity-auth@beta"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔐 Step 3: Authenticate with Google (Antigravity)
&lt;/h3&gt;

&lt;p&gt;Make sure you have a Google account that supports Antigravity.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll see a provider list like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Google
  OpenAI
  Anthropic
  GitHub Copilot
  ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select &lt;strong&gt;Google&lt;/strong&gt;, then choose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; OAuth with Google (Antigravity)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your browser will open—sign in with your Google account. Once complete, you should see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;•  Multi-account setup complete (1 account(s)).
o  Login successful
—  Done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧩 Step 4: Update Your Config
&lt;/h3&gt;

&lt;p&gt;Now let’s update the full config file to include model definitions. Open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vim ~/.config/opencode/opencode.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And paste the full configuration block from the plugin’s documentation. (You can keep the version you shared above—no changes needed unless you want to customize models.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$schema&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;: &lt;span class="s2"&gt;"https://opencode.ai/config.json"&lt;/span&gt;,
  &lt;span class="s2"&gt;"plugin"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"opencode-antigravity-auth@latest"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
  &lt;span class="s2"&gt;"provider"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"google"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="s2"&gt;"models"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="s2"&gt;"antigravity-gemini-3-pro"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 3 Pro (Antigravity)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65535 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"variants"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"low"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"low"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"high"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"high"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
          &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"antigravity-gemini-3-flash"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 3 Flash (Antigravity)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65536 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"variants"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"minimal"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"minimal"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"low"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"low"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"medium"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"medium"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"high"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingLevel"&lt;/span&gt;: &lt;span class="s2"&gt;"high"&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
          &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"antigravity-claude-sonnet-4-5"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Claude Sonnet 4.5 (Antigravity)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 200000, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 64000 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"antigravity-claude-sonnet-4-5-thinking"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Claude Sonnet 4.5 Thinking (Antigravity)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 200000, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 64000 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"variants"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"low"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingConfig"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingBudget"&lt;/span&gt;: 8192 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"max"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingConfig"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingBudget"&lt;/span&gt;: 32768 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
          &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"antigravity-claude-opus-4-5-thinking"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Claude Opus 4.5 Thinking (Antigravity)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 200000, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 64000 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"variants"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"low"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingConfig"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingBudget"&lt;/span&gt;: 8192 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;,
            &lt;span class="s2"&gt;"max"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingConfig"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"thinkingBudget"&lt;/span&gt;: 32768 &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
          &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"gemini-2.5-flash"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 2.5 Flash (Gemini CLI)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65536 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"gemini-2.5-pro"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 2.5 Pro (Gemini CLI)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65536 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"gemini-3-flash-preview"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 3 Flash Preview (Gemini CLI)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65536 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;,
        &lt;span class="s2"&gt;"gemini-3-pro-preview"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
          &lt;span class="s2"&gt;"name"&lt;/span&gt;: &lt;span class="s2"&gt;"Gemini 3 Pro Preview (Gemini CLI)"&lt;/span&gt;,
          &lt;span class="s2"&gt;"limit"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"context"&lt;/span&gt;: 1048576, &lt;span class="s2"&gt;"output"&lt;/span&gt;: 65535 &lt;span class="o"&gt;}&lt;/span&gt;,
          &lt;span class="s2"&gt;"modalities"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"input"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;, &lt;span class="s2"&gt;"image"&lt;/span&gt;, &lt;span class="s2"&gt;"pdf"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;, &lt;span class="s2"&gt;"output"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
      &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧠 Step 5: Select Claude Opus 4.5
&lt;/h3&gt;

&lt;p&gt;Launch OpenCode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then press &lt;code&gt;Ctrl + P&lt;/code&gt; and choose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Switch model → Claude Opus 4.5 (Antigravity)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jwq6offgaddszsf9dqz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jwq6offgaddszsf9dqz.png" alt="SELECT MODEL" width="479" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xlu4vknjqvnut0lr7sg.png" alt="opus4.5" width="800" height="514"&gt;
&lt;/h2&gt;

&lt;p&gt;That’s it! You’re now ready to use OpenCode with Antigravity-authenticated models. Happy coding! 🌱&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opencode</category>
      <category>llm</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
