<?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: Ramu Narasinga</title>
    <description>The latest articles on DEV Community by Ramu Narasinga (@ramunarasinga-11).</description>
    <link>https://dev.to/ramunarasinga-11</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F392818%2Fcc9dbd66-5cc2-4591-8c1c-6c650a374161.jpeg</url>
      <title>DEV Community: Ramu Narasinga</title>
      <link>https://dev.to/ramunarasinga-11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ramunarasinga-11"/>
    <language>en</language>
    <item>
      <title>Fallow, a codebase intelligence for TypeScript and JavaScript.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Tue, 13 Oct 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/fallow-a-codebase-intelligence-for-typescript-and-javascript-3hb7</link>
      <guid>https://dev.to/ramunarasinga-11/fallow-a-codebase-intelligence-for-typescript-and-javascript-3hb7</guid>
      <description>&lt;p&gt;In this article, we review Fallow. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Fallow?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;.fallowrc.jsonc in hyperframes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftnej1hgjbz3u7z7rcmkp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftnej1hgjbz3u7z7rcmkp.png" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Fallow?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://fallow.tools/docs/" rel="noopener noreferrer"&gt;Fallow&lt;/a&gt; is codebase intelligence for TypeScript and JavaScript. One command reads your whole repository as one graph and shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;where the code is hard to change (complexity hotspots and a health score)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;where the architecture drifts (boundary rules and circular dependencies)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what is copied (duplication)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;where the UI drifts from your design system (styling drift)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what nothing uses (unused files, exports, and dependencies)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;where the feature flags are&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quickstart
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Run fallow without installing
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// first run needs no config&lt;/span&gt;
&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;fallow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Read the results&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go deeper:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;fallow&lt;/span&gt; &lt;span class="nx"&gt;dead&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;
&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;fallow&lt;/span&gt; &lt;span class="nx"&gt;dupes&lt;/span&gt;
&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;fallow&lt;/span&gt; &lt;span class="nx"&gt;health&lt;/span&gt;
&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;fallow&lt;/span&gt; &lt;span class="nx"&gt;fix&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;dry&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://fallow.tools/docs/" rel="noopener noreferrer"&gt;Fallow&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  .fallowrc.jsonc in hyperframes.
&lt;/h2&gt;

&lt;p&gt;So I came across the file, &lt;a href="https://github.com/heygen-com/hyperframes/blob/main/.fallowrc.jsonc" rel="noopener noreferrer"&gt;.fallowrc.jsonc in the Hyperframes codebase&lt;/a&gt;. You might be wondering what a Hyperframes is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hyperframes
&lt;/h3&gt;

&lt;p&gt;HyperFrames is an open-source framework for turning HTML, CSS, media, and seekable animations into deterministic MP4 videos. Use it locally with the CLI, from AI coding agents with skills, or as the rendering core behind hosted authoring workflows.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://github.com/heygen-com/hyperframes/tree/main" rel="noopener noreferrer"&gt;Hyperframes&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now that you understand what Hyperframes is, let’s find out &lt;a href="https://fallow.tools/docs/configuration/overview/" rel="noopener noreferrer"&gt;Fallow’s configuration&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fallow runs with no config. Add .fallowrc.json, .fallowrc.jsonc, or fallow.toml when you need to change entry points, ignore patterns, rules, or plugin settings for your project.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about the &lt;a href="https://fallow.tools/docs/configuration/overview#config-fields" rel="noopener noreferrer"&gt;config fields&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://fallow.tools/docs/" rel="noopener noreferrer"&gt;fallow.tools/docs/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/fallow-rs/fallow" rel="noopener noreferrer"&gt;github.com/fallow-rs/fallow&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/heygen-com/hyperframes/tree/main" rel="noopener noreferrer"&gt;github.com/heygen-com/hyperframes/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//fallow.tools/docs/configuration/overview"&gt;fallow.tools/docs/configuration/overview&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>hyperframe</category>
      <category>ai</category>
      <category>fallow</category>
    </item>
    <item>
      <title>Hindsight, an Agent memory that learns.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Thu, 08 Oct 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/hindsight-an-agent-memory-that-learns-1ljc</link>
      <guid>https://dev.to/ramunarasinga-11/hindsight-an-agent-memory-that-learns-1ljc</guid>
      <description>&lt;p&gt;In this article, we review Hindsight. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Hindsight?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quickstart guide&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding Hindsight to your agent.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fllair0s27pi60t95w1oz.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fllair0s27pi60t95w1oz.png" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Hindsight?
&lt;/h2&gt;

&lt;p&gt;Hindsight™ is an agent memory system built to create smarter agents that learn over time. Most agent memory systems focus on recalling conversation history. Hindsight is focused on making agents that learn, not just remember.&lt;/p&gt;

&lt;p&gt;It eliminates the shortcomings of alternative techniques such as RAG and knowledge graph and delivers state-of-the-art performance on long term memory tasks.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;demo video in README&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quickstart guide
&lt;/h2&gt;

&lt;p&gt;In the Hindsight README, I found four steps to get started quickly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start a server
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;sk&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;xxx&lt;/span&gt;

&lt;span class="nx"&gt;docker&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;it&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt; &lt;span class="nx"&gt;always&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="nx"&gt;hindsight&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;restart&lt;/span&gt; &lt;span class="nx"&gt;unless&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;stopped&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;8888&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;8888&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;9999&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;9999&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="nx"&gt;HINDSIGHT_API_LLM_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;$OPENAI_API_KEY&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
  &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;v&lt;/span&gt; &lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pg0&lt;/span&gt; &lt;span class="o"&gt;\&lt;/span&gt;
  &lt;span class="nx"&gt;ghcr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;vectorize&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Connect a client
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;U&lt;/span&gt;                                  &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Python&lt;/span&gt;
&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;vectorize&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;                        &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;js&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;TypeScript&lt;/span&gt;
&lt;span class="nx"&gt;go&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nx"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;vectorize&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;io&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;clients&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;go&lt;/span&gt;     &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Go&lt;/span&gt;
&lt;span class="nx"&gt;curl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;fsSL&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//hindsight.vectorize.io/get-cli | bash          # CLI&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is an example showing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;hindsight_client&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Hindsight&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Hindsight&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:8888&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Retain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Store&lt;/span&gt; &lt;span class="nx"&gt;information&lt;/span&gt;
&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bank_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-bank&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice works at Google as a software engineer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Recall&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Search&lt;/span&gt; &lt;span class="nx"&gt;memories&lt;/span&gt;
&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bank_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-bank&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What does Alice do?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nb"&gt;Reflect&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Generate&lt;/span&gt; &lt;span class="nx"&gt;disposition&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;aware&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;
&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reflect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bank_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-bank&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tell me about Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adding Hindsight to your agent
&lt;/h2&gt;

&lt;p&gt;Below is a code snippet demonstrating how to add Hindsight to your existing LLM layer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// install the hindsight-llm&lt;/span&gt;
&lt;span class="nx"&gt;pip&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;hindsight&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;litellm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nx"&gt;hindsight_litellm&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;wrap_openai&lt;/span&gt;

&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Wrap&lt;/span&gt; &lt;span class="nx"&gt;your&lt;/span&gt; &lt;span class="nx"&gt;existing&lt;/span&gt; &lt;span class="nx"&gt;LLM&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;you&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;re done.
# Defaults to Hindsight Cloud; pass hindsight_api_url for a self-hosted server.
client = wrap_openai(
    OpenAI(),
    bank_id="user-123",
    hindsight_api_url="http://localhost:8888",
)

# Hindsight recalls relevant memories before the call
# and retains the conversation after it.
response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "What do you know about me?"}],
)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You just have to wrap your LLM client as shown above and then memories are stored, retrived automatically on every call, with no other changes to code.&lt;/p&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;github.com/vectorize-io/hindsight&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;hindsight.vectorize.io/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://vectorize.io/" rel="noopener noreferrer"&gt;vectorize.io/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>memory</category>
      <category>llm</category>
      <category>handsight</category>
    </item>
    <item>
      <title>What is SQLite FTS5?</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Tue, 06 Oct 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/what-is-sqlite-fts5-432c</link>
      <guid>https://dev.to/ramunarasinga-11/what-is-sqlite-fts5-432c</guid>
      <description>&lt;p&gt;In this article, we review SQLite FTS5. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SQLite FTS5 extension&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;context-mode reference&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F76rmrmdz73it02as1wrb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F76rmrmdz73it02as1wrb.png" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  SQLite FTS5 extension
&lt;/h2&gt;

&lt;p&gt;FTS5 is an SQLite &lt;a href="https://sqlite.org/c3ref/module.html" rel="noopener noreferrer"&gt;virtual table&lt;/a&gt; module that provides &lt;a href="https://en.wikipedia.org/wiki/Full-text_search" rel="noopener noreferrer"&gt;full-text search&lt;/a&gt; functionality to database applications. In their most elementary form, full-text search engines allow the user to efficiently search a large collection of documents for the subset that contain one or more instances of a search term. The search functionality provided to world wide web users by Google is, among other things, a full-text search engine, as it allows users to search for all documents on the web that contain, for example, the term “fts5”.&lt;/p&gt;

&lt;p&gt;To use FTS5, the user creates an FTS5 virtual table with one or more columns. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;CREATE&lt;/span&gt; &lt;span class="nx"&gt;VIRTUAL&lt;/span&gt; &lt;span class="nx"&gt;TABLE&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="nx"&gt;USING&lt;/span&gt; &lt;span class="nf"&gt;fts5&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;I copied this above information from &lt;a href="https://sqlite.org/fts5.html" rel="noopener noreferrer"&gt;Overview of FTS5 section&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There’s a term that’s worth understanding here, Virtual table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Virtual Table
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;I got the below content from Virtual &lt;a href="https://sqlite.org/vtab.html" rel="noopener noreferrer"&gt;Table Mechanism&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A virtual table is an object that is registered with an open SQLite &lt;a href="https://sqlite.org/c3ref/sqlite3.html" rel="noopener noreferrer"&gt;database connection&lt;/a&gt;. From the perspective of an SQL statement, the virtual table object looks like any other table or view. But behind the scenes, queries and updates on a virtual table invoke callback methods of the virtual table object instead of reading and writing on the database file.&lt;/p&gt;

&lt;p&gt;The virtual table mechanism allows an application to publish interfaces that are accessible from SQL statements as if they were tables. SQL statements can do almost anything to a virtual table that they can do to a real table, with the following exceptions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;One cannot create a trigger on a virtual table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One cannot create additional indices on a virtual table. (Virtual tables can have indices but that must be built into the virtual table implementation. Indices cannot be added separately using &lt;a href="https://sqlite.org/lang_createindex.html" rel="noopener noreferrer"&gt;CREATE INDEX&lt;/a&gt; statements.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One cannot run &lt;a href="https://sqlite.org/lang_altertable.html" rel="noopener noreferrer"&gt;ALTER TABLE … ADD COLUMN&lt;/a&gt; commands against a virtual table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  context-mode reference
&lt;/h2&gt;

&lt;p&gt;Well, where I found this term? I wrote an article about &lt;a href="https://medium.com/@ramunarasinga/how-does-context-mode-save-the-context-13e98e87a421" rel="noopener noreferrer"&gt;How does context-mode save the context?&lt;/a&gt; Context mode is an MCP plugin that sandboxes tool output and indexes it into a local FTS5 store.&lt;/p&gt;

&lt;p&gt;Context-mode achieves the “315 KB → 5.4 KB” saving by never letting raw tool output reach the model’s context window — it executes code in an isolated sandbox subprocess and only returns what the code explicitly prints (console.log, print, etc.), while the full payload either stays inside the sandbox or is persisted to an on-disk FTS5 index for on-demand retrieval.&lt;/p&gt;

&lt;p&gt;Now you understand the context-mode reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sqlite.org/vtab.html" rel="noopener noreferrer"&gt;sqlite.org/vtab.html&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sqlite.org/c3ref/module.html" rel="noopener noreferrer"&gt;sqlite.org/c3ref/module.html&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://sqlite.org/fts5.html" rel="noopener noreferrer"&gt;sqlite.org/fts5.html&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Full-text_search" rel="noopener noreferrer"&gt;en.wikipedia.org/wiki/Full-text_search&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://medium.com/@ramunarasinga/how-does-context-mode-save-the-context-13e98e87a421" rel="noopener noreferrer"&gt;medium.com/@ramunarasinga/how-does-context-mode-save-the-context-13e98e87a421&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>contextmode</category>
      <category>fts5</category>
      <category>fulltextsearch</category>
    </item>
    <item>
      <title>Turn your workflow into a step-by-step guide with Mimik.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Fri, 25 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/turn-your-workflow-into-a-step-by-step-guide-with-mimik-4inp</link>
      <guid>https://dev.to/ramunarasinga-11/turn-your-workflow-into-a-step-by-step-guide-with-mimik-4inp</guid>
      <description>&lt;p&gt;In this article, we review Mimik tool. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Mimik?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;WXT, Next-gen web extension framework.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8aaewnvychb0bsn3nbx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw8aaewnvychb0bsn3nbx.png" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Mimik?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mimik.westpoint.io/" rel="noopener noreferrer"&gt;Mimik&lt;/a&gt; watches your tabs and writes the guide — annotated screenshots, numbered steps, ready to export. It never phones home.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pin it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install from the Chrome Web Store and pin &lt;a href="https://mimik.westpoint.io/" rel="noopener noreferrer"&gt;Mimik&lt;/a&gt; to your toolbar. Click once to start recording.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work normally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do the thing you’d do anyway. &lt;a href="https://mimik.westpoint.io/" rel="noopener noreferrer"&gt;Mimik&lt;/a&gt; captures every click and keystroke and builds a step-by-step guide in the side panel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Export anywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ship a polished guide as Markdown, PDF, HTML, or a shareable link — all rendered locally. Your machine, your call.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Install the &lt;a href="https://chromewebstore.google.com/detail/mimik-step-by-step-guides/jmfohdaflahliammccpiadmkcibohgha?pli=1" rel="noopener noreferrer"&gt;Mimik chrome extension&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  WXT, Next-gen web extension framework.
&lt;/h2&gt;

&lt;p&gt;Well, I found the file named, &lt;a href="https://github.com/westpoint-io/mimik/blob/dev/wxt.config.ts" rel="noopener noreferrer"&gt;wxt.config.ts&lt;/a&gt; and also checked the &lt;a href="https://github.com/westpoint-io/mimik/blob/dev/package.json" rel="noopener noreferrer"&gt;package.json&lt;/a&gt; and found these below scripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dev:firefox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt -b firefox --mv3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;build&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt build&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;build:firefox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt build -b firefox --mv3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zip&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt zip&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zip:firefox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;wxt zip -b firefox --mv3&lt;/span&gt;&lt;span class="dl"&gt;"&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;p&gt;This led to search for wxt and that’s how I found this WXT web extenstion framework.&lt;/p&gt;

&lt;p&gt;WXT is an open source tool that makes web extension development faster than ever before.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://wxt.dev/" rel="noopener noreferrer"&gt;WXT&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/westpoint-io/mimik" rel="noopener noreferrer"&gt;github.com/westpoint-io/mimik&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://wxt.dev/" rel="noopener noreferrer"&gt;wxt.dev/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/mimik-step-by-step-guides/jmfohdaflahliammccpiadmkcibohgha?pli=1" rel="noopener noreferrer"&gt;chromewebstore.google.com/detail/mimik-step-by-step-guides/jmfohdaflahliammccpiadmkcibohgha?pli=1&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/wxt-dev/wxt" rel="noopener noreferrer"&gt;github.com/wxt-dev/wxt&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>mimik</category>
      <category>documentation</category>
      <category>wxt</category>
    </item>
    <item>
      <title>How does context-mode save the context?</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Tue, 22 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/how-does-context-mode-save-the-context-afi</link>
      <guid>https://dev.to/ramunarasinga-11/how-does-context-mode-save-the-context-afi</guid>
      <description>&lt;p&gt;In this article, we review how the context is saved in context-mode. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is context-mode?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How is context saved?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1gd3d02z6ukwe6c0sr0o.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1gd3d02z6ukwe6c0sr0o.png" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is context-mode?
&lt;/h2&gt;

&lt;p&gt;Context mode is an MCP plugin that sandboxes tool output and indexes it into a local FTS5 store. Your AI coding agent searches that store instead of re-sending raw bytes every turn. 17 adapters. 586,000+ developers. Runs entirely on your machine.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I wrote a detailed article about what is &lt;a href="https://medium.com/@ramunarasinga/optimize-context-window-for-ai-agents-using-context-mode-db20d7a10bf3" rel="noopener noreferrer"&gt;Context mode&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How is context saved?
&lt;/h2&gt;

&lt;p&gt;I use &lt;a href="https://deepwiki.com/" rel="noopener noreferrer"&gt;deepwiki.com&lt;/a&gt; to understand open source codebase. So I opened the &lt;a href="https://deepwiki.com/mksglu/context-mode" rel="noopener noreferrer"&gt;to understand open source codebase. So I opened the&lt;/a&gt; and asked this question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How does context-mode save the context?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It gave an answer with references to the actual code snippets and files.&lt;/p&gt;

&lt;p&gt;Context-mode achieves the “315 KB → 5.4 KB” saving by never letting raw tool output reach the model’s context window — it executes code in an isolated sandbox subprocess and only returns what the code explicitly prints (console.log, print, etc.), while the full payload either stays inside the sandbox or is persisted to an on-disk FTS5 index for on-demand retrieval.&lt;/p&gt;

&lt;p&gt;Well, what’s a FTS5 index? FTS5 (Full-Text Search 5) is a SQLite virtual table module for full-text search. In context-mode, it’s the underlying engine that powers the knowledge base used by ctx_index/ctx_search to store and query indexed content without keeping raw bytes in the model's context. I will write about this in one of upcoming articles.&lt;/p&gt;

&lt;p&gt;The concepts provided by Deepwiki are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sandboxed execution&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Intent-driven filtering for large outputs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Persistent storage instead of raw dump&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Response tracking/savings accounting&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Concrete numeric evidence&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enforcement layer&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://deepwiki.com/search/how-does-contextmode-save-the_52541458-d3c8-4be5-a332-7ec312778c15?mode=fast" rel="noopener noreferrer"&gt;how context is saved&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/mksglu/context-mode" rel="noopener noreferrer"&gt;github.com/mksglu/context-mode&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://context-mode.com/" rel="noopener noreferrer"&gt;context-mode.com/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://deepwiki.com/search/how-does-contextmode-save-the_52541458-d3c8-4be5-a332-7ec312778c15?mode=fast" rel="noopener noreferrer"&gt;deepwiki.com/search/how-does-contextmode-save-the_52541458-d3c8-4be5-a332-7ec312778c15?mode=fast&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>contextmode</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Build durable agents with eve.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Fri, 18 Sep 2026 16:00:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/build-durable-agents-with-eve-2j2j</link>
      <guid>https://dev.to/ramunarasinga-11/build-durable-agents-with-eve-2j2j</guid>
      <description>&lt;p&gt;In this article, we review &lt;a href="https://eve.dev/" rel="noopener noreferrer"&gt;eve.dev&lt;/a&gt;. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Eve?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Architecture&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usage Example&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpp7f1sr5mro95taivqwv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpp7f1sr5mro95taivqwv.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is&amp;nbsp;Eve?
&lt;/h2&gt;

&lt;p&gt;eve is a filesystem-first framework for durable backend agents on Vercel.&lt;/p&gt;

&lt;p&gt;You author an agent as a directory on disk. The directory is the contract - markdown for the parts a human should read like a spec, TypeScript for the parts that benefit from real types and runtime behavior.&lt;/p&gt;

&lt;p&gt;The framework is called eve. The published npm package is eve. The CLI binary is eve.&lt;/p&gt;

&lt;p&gt;Directory structure can be as shown below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;my&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="kr"&gt;package&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;
&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;tsconfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;
&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;           &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;additive&lt;/span&gt; &lt;span class="nx"&gt;runtime&lt;/span&gt; &lt;span class="nf"&gt;config &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;compaction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;md&lt;/span&gt;    &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;always&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;instructions&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;             &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;typed&lt;/span&gt; &lt;span class="nx"&gt;executable&lt;/span&gt; &lt;span class="nx"&gt;integrations&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;skills&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;            &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;optional&lt;/span&gt; &lt;span class="nx"&gt;named&lt;/span&gt; &lt;span class="nx"&gt;procedures&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="nx"&gt;can&lt;/span&gt; &lt;span class="nx"&gt;load&lt;/span&gt; &lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;demand&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;hooks&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;             &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;lifecycle&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="nx"&gt;subscribers&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;channels&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;          &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="nx"&gt;ingress&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nf"&gt;delivery &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;HTTP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Slack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;connections&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;       &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="nx"&gt;MCP&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="nx"&gt;connections&lt;/span&gt;
    &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="nx"&gt;sandbox&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;           &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;s single sandbox (optional override)
    ├── workspace/         # files seeded into the sandbox on each session
    ├── subagents/         # specialist child agents (reuse `defineAgent`)
    ├── schedules/         # recurring jobs
    └── lib/               # shared authored code imported by other files
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://eve.dev/" rel="noopener noreferrer"&gt;Eve&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;You do not need this section to author an eve agent - it documents the public HTTP protocol contracts so eve composes predictably with other systems.&lt;/p&gt;

&lt;p&gt;eve's internal split is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;the channel normalizes inbound transport, applies auth and delivery policy, and owns channel-local addresses&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the harness does one unit of AI work and returns { session, next }&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the runtime persists state, follows next, streams events, and owns workflow primitives (start(), resumeHook(), createHook(), getWritable())&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The public HTTP protocol exposes one immutable identifier: sessionId. Create a session explicitly, then use that ID for follow-up messages, controls, streaming, and inspection. Channel-local addresses remain behind authored channel APIs.&lt;/p&gt;

&lt;p&gt;This is from Architecture section in &lt;a href="https://github.com/vercel/eve/tree/main/packages/eve" rel="noopener noreferrer"&gt;packages/eve&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage Example
&lt;/h2&gt;

&lt;p&gt;I picked this example from &lt;a href="https://github.com/vercel/eve/tree/main/packages/eve" rel="noopener noreferrer"&gt;packages/eve README&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  agent/instructions.md
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a weather-focused assistant. Be concise, accurate, and explicit when you use a tool.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  agent/tools/get_weather.ts
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineTool&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eve/tools&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zod&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineTool&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Get the current weather for a city.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;inputSchema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;input&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="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sunny&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;temperatureF&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;};&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;h3&gt;
  
  
  agent/agent.ts
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineAgent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;eve&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;defineAgent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai/gpt-5.4-mini&lt;/span&gt;&lt;span class="dl"&gt;"&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;p&gt;and then you would do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;eve&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;latest&lt;/span&gt; &lt;span class="nx"&gt;init&lt;/span&gt; &lt;span class="nx"&gt;my&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;agent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;eve init writes a new agent with eve's default model. Pass --model openai/gpt-5.5 to choose another AI Gateway model, --reasoning high to set a reasoning effort, or --channel-web-nextjs to add the Web Chat application. It installs dependencies, initializes Git, and starts the development server. When it finds a supported coding-agent REPL, the handoff menu can open that REPL instead or exit. Targeting an existing project directory (eve init&amp;nbsp;.) adds the agent files and missing dependencies instead. It does not create a Vercel project or deploy the agent.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://eve.dev/docs/guides/deployment/overview" rel="noopener noreferrer"&gt;deploying agents created using Eve&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://eve.dev/" rel="noopener noreferrer"&gt;eve.dev/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/vercel/eve/tree/main/packages/eve" rel="noopener noreferrer"&gt;github.com/vercel/eve/tree/main/packages/eve&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>eve</category>
      <category>ai</category>
      <category>agents</category>
      <category>vercel</category>
    </item>
    <item>
      <title>Optimize context window for AI agents using Context-Mode.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Fri, 18 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/optimize-context-window-for-ai-agents-using-context-mode-foo</link>
      <guid>https://dev.to/ramunarasinga-11/optimize-context-window-for-ai-agents-using-context-mode-foo</guid>
      <description>&lt;p&gt;In this article, we review Context-Mode. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Context-Mode?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The problem&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How Context Mode solves it&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funeyuvaqe10mpbrx86kh.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Funeyuvaqe10mpbrx86kh.png" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Context-Mode?
&lt;/h2&gt;

&lt;p&gt;Context-Mode is the other half of the context problem — for developers and for engineering orgs. An MCP plugin that keeps raw data out of the LLM context window. A Platform that surfaces what your team is doing with the saved tokens. Same engine, two surfaces, your choice.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fueb5vczj1vjwnu8okr1s.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fueb5vczj1vjwnu8okr1s.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I read thru the &lt;a href="https://github.com/mksglu/context-mode" rel="noopener noreferrer"&gt;context-mode README&lt;/a&gt; and found this problem statement which is accurate description of what goes into context window:&lt;/p&gt;

&lt;p&gt;Every MCP tool call dumps raw data into your context window. A Playwright snapshot costs 56 KB. Twenty GitHub issues cost 59 KB. One access log — 45 KB. After 30 minutes, 40% of your context is gone. And when the agent compacts the conversation to free space, it forgets which files it was editing, what tasks are in progress, and what you last asked for. On top of that, the agent wastes output tokens on filler, pleasantries, and verbose explanations — burning context from both sides.&lt;/p&gt;

&lt;p&gt;I mean tool call raw data can be heavy. I do use the &lt;a href="https://caveman.so/" rel="noopener noreferrer"&gt;Caveman&lt;/a&gt;, an open-source tool and skill designed for &lt;a href="https://caveman.so/" rel="noopener noreferrer"&gt;Caveman&lt;/a&gt; that strips filler words, pleasantries, and unnecessary phrasing from AI coding assistants like Claude Code to cut token usage by 65% to 75%. I configured it in my VS Code + Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Context Mode solves it
&lt;/h2&gt;

&lt;p&gt;Context-Mode describes 4 sides of the problem:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Context Saving&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Session Continuity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Think in Code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No prose-style enforcement&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I did not quite understand what “Think in Code” meant here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before: 47 × Read() = 700 KB.  After: 1 × ctx_execute() = 3.6 KB.&lt;/span&gt;
&lt;span class="nf"&gt;ctx_execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;javascript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;`
  const files = fs.readdirSync('src').filter(f =&amp;gt; f.endsWith('.ts'));
  files.forEach(f =&amp;gt; console.log(f + ': ' + fs.readFileSync('src/'+f,'utf8').split('&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;n').length + ' lines'));
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I mean you would want the contents of the file considered in the context window, not just the file names because file name alone does not tell you the entire story right?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://github.com/mksglu/context-mode" rel="noopener noreferrer"&gt;Context Mode&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/mksglu/context-mode" rel="noopener noreferrer"&gt;github.com/mksglu/context-mode&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://context-mode.com/" rel="noopener noreferrer"&gt;context-mode.com/&lt;/a&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://caveman.so/" rel="noopener noreferrer"&gt;caveman.so/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>contextwindow</category>
      <category>ai</category>
      <category>contextmode</category>
    </item>
    <item>
      <title>Effect, a TypeScript library for building production-grade software.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Mon, 14 Sep 2026 16:00:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/effect-a-typescript-library-for-building-production-grade-software-2mde</link>
      <guid>https://dev.to/ramunarasinga-11/effect-a-typescript-library-for-building-production-grade-software-2mde</guid>
      <description>&lt;p&gt;In this article, we review Effect. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Effect?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usage examples.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwjep2zqilh3sb5gy5rr7.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwjep2zqilh3sb5gy5rr7.png" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Effect?
&lt;/h2&gt;

&lt;p&gt;Effect is a TypeScript library for building production-grade software: typed error handling, structured concurrency, resource safety, and observability, all from one composable core.&lt;/p&gt;

&lt;p&gt;Why Effect? I read thru this &lt;a href="https://effect.website/docs/v4/onboarding" rel="noopener noreferrer"&gt;Welcome section in the Effect docs&lt;/a&gt; and it describes that TypeScript is excellent at describing your data, but it says almost nothing about your programs: a function’s signature doesn’t tell you what can fail, what dependencies it needs, or whether it can be safely retried, timed out, or interrupted. Effect closes that gap with a single building block: the Effect type, a value that fully describes a program, including its success value, its possible errors, and its requirements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://effect.website/docs/v4/onboarding" rel="noopener noreferrer"&gt;how Effect is useful&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Usage examples
&lt;/h2&gt;

&lt;p&gt;Follow the &lt;a href="https://effect.website/docs/v4/getting-started/installation#vite--react" rel="noopener noreferrer"&gt; installation steps provided&lt;/a&gt;. In the &lt;a href="https://effect.website/docs/v4/onboarding#your-learning-path" rel="noopener noreferrer"&gt;learning path section&lt;/a&gt;, &lt;a href="https://effect.website/docs/v4/getting-started/creating-effects" rel="noopener noreferrer"&gt; Creating effects&lt;/a&gt; explains how you can define the success and failure cases in a function.&lt;/p&gt;

&lt;p&gt;Traditionally, we would do the following to handle errors in a TS function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Type signature doesn't show possible exceptions&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;divide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&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="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cannot divide by zero&lt;/span&gt;&lt;span class="dl"&gt;"&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="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;divide&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;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but this function’s type signature do not indicate that they can throw exceptions. Now with Effect, you could rewrite this division function as shown below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;divide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;b&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="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cannot divide by zero&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;succeed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;runSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;divide&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;2&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the divide function indicates in its return type Effect that the operation can either succeed with a number or fail with an Error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;      &lt;span class="err"&gt;┌───&lt;/span&gt; &lt;span class="nx"&gt;Produces&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;
         &lt;span class="err"&gt;│&lt;/span&gt;       &lt;span class="err"&gt;┌───&lt;/span&gt; &lt;span class="nx"&gt;Fails&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;an&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;
         &lt;span class="err"&gt;▼&lt;/span&gt;       &lt;span class="err"&gt;▼&lt;/span&gt;
&lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is another example, simulating a user retrieval operation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;// Define a User type&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;readonly&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;
  &lt;span class="nx"&gt;readonly&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// A mocked function to simulate fetching a user from a database&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getUser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Error&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Normally, you would access a database or API here, but we'll mock it&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="na"&gt;userDatabase&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Record&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&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="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&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="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;"&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="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;id&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="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Jane Smith&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Check if the user exists in our "database" and return appropriately&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;userDatabase&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&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="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;succeed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// When executed, this will successfully return the user with id 1&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;exampleUserEffect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getUser&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="nx"&gt;Effect&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;runSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;exampleUserEffect&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="c1"&gt;// =&amp;gt; "John Doe"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://effect.website/" rel="noopener noreferrer"&gt;effect.website&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://effect.website/docs/v4/onboarding" rel="noopener noreferrer"&gt;effect.website/docs/v4/onboarding&lt;br&gt;
&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://effect.website/docs/v4/onboarding#your-learning-path" rel="noopener noreferrer"&gt;effect.website/docs/v4/onboarding#your-learning-path&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>value</category>
      <category>program</category>
      <category>effect</category>
    </item>
    <item>
      <title>.nix files in Openscreen codebase.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Sat, 12 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/nix-files-in-openscreen-codebase-44bh</link>
      <guid>https://dev.to/ramunarasinga-11/nix-files-in-openscreen-codebase-44bh</guid>
      <description>&lt;p&gt;In this article, we review .nix files in the openscreen codebase. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Openscreen?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is .nix file?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How is this used in Openscreen?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbmrqv782i8lfi6tn0eov.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbmrqv782i8lfi6tn0eov.png" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Openscreen?
&lt;/h2&gt;

&lt;p&gt;Using Openscreen, record your screen, ship a demo. Free and open-source, GPU-accelerated, no watermarks, no subscriptions. Windows, macOS, Linux. Actively maintained.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Record a specific window, or your whole screen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Record microphone and system audio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Webcam overlay with picture-in-picture, drag-to-position, mirroring, and shape options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auto or manual zooms with adjustable depth, duration,   easing, and pixel-precise position; auto-zoom follows your cursor as you work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Custom cursor size, smoothing, and click effects, with cursor themes and post-recording path smoothing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and much more, check out &lt;a href="https://github.com/getopenscreen/openscreen/tree/main" rel="noopener noreferrer"&gt;Core Features on Openscreen README&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is .nix file?
&lt;/h2&gt;

&lt;p&gt;I found a &lt;a href="https://github.com/getopenscreen/openscreen/tree/main/nix" rel="noopener noreferrer"&gt; nix folder in the Openscreen codebase&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi24cuu1bhge2hwe3cjap.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi24cuu1bhge2hwe3cjap.png" width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.nix file is a plain text file that contains a declarative code expression written in the &lt;a href="https://nix.dev/tutorials/nix-language.html" rel="noopener noreferrer"&gt;Nix language&lt;/a&gt; to build software packages, manage system settings, or create reproducible development environments. At this point, you would find out what a Nix language is right? So I visited &lt;a href="https://nix.dev/" rel="noopener noreferrer"&gt;nix.dev&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nix.dev
&lt;/h3&gt;

&lt;p&gt;Nix is a tool for people who both need computers to do exactly as intended, repeatably, far into the future, and who are familiar with command line interfaces and plain text editors.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can you do with Nix?
&lt;/h3&gt;

&lt;p&gt;With the Nix ecosystem, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/tutorials/first-steps/ad-hoc-shell-environments#ad-hoc-envs" rel="noopener noreferrer"&gt;Reproducible development environments&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy installation of software over URLs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy transfer of software environments between computers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/tutorials/nixos/deploying-nixos-using-terraform#deploy-nixos-using-terraform" rel="noopener noreferrer"&gt;Declarative specification of Linux machines&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/tutorials/nixos/integration-testing-using-virtual-machines#integration-testing-vms" rel="noopener noreferrer"&gt;Reproducible integration testing using virtual machines&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoidance of version conflicts with already installed software.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing software from source code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/guides/recipes/continuous-integration-github-actions#github-actions" rel="noopener noreferrer"&gt;Transparent build caching using binary caches&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strong support for software auditability&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/tutorials/cross-compilation#cross-compilation" rel="noopener noreferrer"&gt;First-class cross compilation support&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remote builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remote deployments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Atomic upgrades and rollbacks.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How is this used in Openscreen?
&lt;/h3&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3l0hnpr2d0dxcrjusdb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3l0hnpr2d0dxcrjusdb.png" width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we want to find out what nix folder is for. I went &lt;a href="https://deepwiki.com/getopenscreen/openscreen" rel="noopener noreferrer"&gt;deepwiki.com&lt;/a&gt; and searched for Openscreen and pasted the prompt shown in the above image. Deepwiki indexes public, open source repository so you can chat with any codebase and try to understand the concepts and architecture of open source repos.&lt;/p&gt;

&lt;p&gt;This was the response — &lt;a href="https://deepwiki.com/search/how-is-the-nix-folder-used-in_76b443b2-8f39-4129-a6d7-e738c9d0ec18?mode=fast" rel="noopener noreferrer"&gt;https://deepwiki.com/search/how-is-the-nix-folder-used-in_76b443b2-8f39-4129-a6d7-e738c9d0ec18?mode=fast&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The nix/ folder provides a declarative, reproducible Linux packaging path for OpenScreen using Nix Flakes, as an alternative to the electron-builder-based build system build-and-packaging.md:1-3 .&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How nix is wired together in Openscreen?
&lt;/h3&gt;

&lt;p&gt;flake.nix calls each derivation via pkgs.callPackage, injecting ffmpeg-lgpl into compositor-view and pipewire-helper, then feeds all three native outputs into nix/package.nix flake.nix:39-48 . The final openscreen binary is a makeWrapper-generated script around system electron, with env vars (OPENSCREEN_FFMPEG_PATH, OPENSCREEN_COMPOSITOR_VIEW_NODE, OPENSCREEN_LINUX_CURSOR_HELPER_EXE, OPENSCREEN_WHISPER_SERVER_EXE) that let the app's runtime resolution logic (e.g. audioPeaks.ts, pipeWireCursorRecordingSession.ts) find these native binaries without relying on the electron-builder resource layout package.nix:94-123 .&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://deepwiki.com/search/how-is-the-nix-folder-used-in_76b443b2-8f39-4129-a6d7-e738c9d0ec18?mode=fast" rel="noopener noreferrer"&gt;Nix usage in Openscreen&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/getopenscreen/openscreen/blob/main/nix/ffmpeg-lgpl.nix" rel="noopener noreferrer"&gt;github.com/getopenscreen/openscreen/nix/ffmpeg-lgpl.nix&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://getopenscreen.com/" rel="noopener noreferrer"&gt;getopenscreen.com/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nix.dev/" rel="noopener noreferrer"&gt;nix.dev/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://deepwiki.com/search/how-is-the-nix-folder-used-in_76b443b2-8f39-4129-a6d7-e738c9d0ec18?mode=fast" rel="noopener noreferrer"&gt;deepwiki.com/search/how-is-the-nix-folder-used-in_76b443b2-8f39-4129-a6d7-e738c9d0ec18?mode=fast&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>nix</category>
      <category>opensource</category>
      <category>openscreen</category>
      <category>electron</category>
    </item>
    <item>
      <title>Gitleaks, an open-source secret scanner.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Mon, 07 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/gitleaks-an-open-source-secret-scanner-4ohh</link>
      <guid>https://dev.to/ramunarasinga-11/gitleaks-an-open-source-secret-scanner-4ohh</guid>
      <description>&lt;p&gt;In this article, we review Gitleak. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Gitleaks?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gitleaks configuration in &lt;a href="https://github.com/awslabs/aidlc-workflows/tree/main" rel="noopener noreferrer"&gt;awslabs/aidlc-workflows repo&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45354bymq0howk3kciab.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F45354bymq0howk3kciab.png" width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Gitleaks?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/gitleaks/gitleaks" rel="noopener noreferrer"&gt;Gitleaks&lt;/a&gt; an open-source secret scanner for git repositories, files, and directories. With over 16 million docker downloads, 17k GitHub stars, 9 million GitHub Downloads, thousands of weekly clones, and over 700k homebrew installs, gitleaks is the most trusted open-source secret scanner among security professionals, enterprises, and developers. Gitleaks is maintained by &lt;a href="https://www.linkedin.com/in/zricethezav" rel="noopener noreferrer"&gt;Zach Rice&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gitleaks/gitleaks-action" rel="noopener noreferrer"&gt;Gitleaks-Action&lt;/a&gt; is the official Gitleaks GitHub Action. You can use it to automatically run a gitleaks scan on all your team's pull requests and commits, or run on-demand scans. For a short demonstration of Gitleaks-Action, you can check out &lt;a href="https://gitleaks.io/gitleaks-demo-fast-cropped.gif" rel="noopener noreferrer"&gt;this GIF&lt;/a&gt; or read about the &lt;a href="https://github.com/gitleaks/gitleaks-action#v2-benefits" rel="noopener noreferrer"&gt;features in the redme&lt;/a&gt;. If you are scanning repos that belong to a GitHub &lt;a href="https://docs.github.com/en/get-started/learning-about-github/types-of-github-accounts#personal-accounts" rel="noopener noreferrer"&gt;personal account&lt;/a&gt;, then no license key is required. If you are scanning repos that belong to a GitHub &lt;a href="https://docs.github.com/en/organizations/collaborating-with-groups-in-organizations/about-organizations" rel="noopener noreferrer"&gt;organization account&lt;/a&gt;, then you'll have to obtain a free license below.&lt;/p&gt;

&lt;p&gt;Below is a usage example I found on &lt;a href="https://github.com/gitleaks/gitleaks-action#v2-benefits" rel="noopener noreferrer"&gt;gitleaks-actions&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;gitleaks&lt;/span&gt;
&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nx"&gt;pull_request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nx"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nx"&gt;schedule&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;cron&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0 4 * * *&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="nx"&gt;once&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;day&lt;/span&gt; &lt;span class="nx"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nx"&gt;AM&lt;/span&gt;
&lt;span class="nx"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nx"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;gitleaks&lt;/span&gt;
    &lt;span class="nx"&gt;runs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ubuntu&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;latest&lt;/span&gt;
    &lt;span class="nx"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;actions&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;checkout&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;v6&lt;/span&gt;
        &lt;span class="kd"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
          &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;depth&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="nx"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;gitleaks&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;gitleaks&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;v3&lt;/span&gt;
        &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
          &lt;span class="nx"&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GITHUB_TOKEN&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
          &lt;span class="nl"&gt;GITLEAKS_LICENSE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;GITLEAKS_LICENSE&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Only&lt;/span&gt; &lt;span class="nx"&gt;required&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;Organizations&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="nx"&gt;personal&lt;/span&gt; &lt;span class="nx"&gt;accounts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Gitleaks configuration in awslabs/aidlc-workflows repo.
&lt;/h2&gt;

&lt;p&gt;I found this file - &lt;a href="https://github.com/awslabs/aidlc-workflows/blob/main/.gitleaks.toml" rel="noopener noreferrer"&gt;.gitleaks.toml&lt;/a&gt; in &lt;a href="https://github.com/awslabs/aidlc-workflows/tree/main" rel="noopener noreferrer"&gt;awslabs/aidlc-workflows repo&lt;/a&gt; and is defined as shown below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Gitleaks&lt;/span&gt; &lt;span class="nx"&gt;configuration&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="c1"&gt;//github.com/gitleaks/gitleaks#configuration&lt;/span&gt;

&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aidlc-workflows gitleaks config&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="nx"&gt;Extend&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;ruleset &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;don&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;t replace it)
useDefault = true

[allowlist]
description = "Global allowlist"
paths = [
    &lt;/span&gt;&lt;span class="dl"&gt;'''&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;gitleaks&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;baseline&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json$&lt;/span&gt;&lt;span class="dl"&gt;'''&lt;/span&gt;&lt;span class="s1"&gt;,
    &lt;/span&gt;&lt;span class="dl"&gt;'''&lt;/span&gt;&lt;span class="nx"&gt;uv&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lock$&lt;/span&gt;&lt;span class="dl"&gt;'''&lt;/span&gt;&lt;span class="s1"&gt;,
]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The comment mentions &lt;a href="https://github.com/gitleaks/gitleaks#configuration" rel="noopener noreferrer"&gt;https://github.com/gitleaks/gitleaks#configuration&lt;/a&gt; where you can learn about the available configuration options in this toml file.&lt;/p&gt;

&lt;p&gt;There is also another file named — &lt;a href="https://github.com/awslabs/aidlc-workflows/blob/main/.gitleaks-baseline.json" rel="noopener noreferrer"&gt;.gitleaks-baseline.json&lt;/a&gt; this was mentioned in the paths and has 212 LOC at the time of writing this code.&lt;/p&gt;

&lt;p&gt;I took a closer look at json content in this baseline file and it looks like below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;
 &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;RuleID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;aws-access-token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Identified a pattern that may indicate AWS credentials, risking unauthorized cloud resource access and data breaches on AWS platforms.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;StartLine&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;340&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;EndLine&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;340&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;StartColumn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;EndColumn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;41&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Match&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AKIAABCDEFGHIJKLMNOP&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Secret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AKIAABCDEFGHIJKLMNOP&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;File&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tests/unit/t313-plugin-doctor-checks.test.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SymlinkFile&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Commit&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;8e365e4e13b356c8057bc265beefb95d8dc3f15b&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Link&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/awslabs/aidlc-workflows/blob/8e365e4e13b356c8057bc265beefb95d8dc3f15b/tests/unit/t313-plugin-doctor-checks.test.ts#L340&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Entropy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;3.8841836&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Arden Packeer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2102737+apackeer@users.noreply.github.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Date&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-08-23T10:24:01Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;feat: plugin-extensible /aidlc --doctor checks via tools/&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u003cplugin&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u003e-doctor.ts (2.6.61) (#797)&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;An enabled plugin may ship an optional tools/&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u003cplugin&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u003e-doctor.ts check script; doctor discovers it selection-aware, spawns it via bun (no shell) with AIDLC_PROJECT_DIR/AIDLC_HARNESS_DIR/AIDLC_PLUGIN_NAME, and folds its JSON {checks:[{pass,label,fix?,severity?}]} into the report. Error-severity failures fail doctor (exit 1); advisory failures stay visible without changing the exit code; timeouts, spawn errors, bad JSON, and malformed entries become bounded fail-loud rows (50-row/256KiB/300-char caps).&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;Disabled plugins stay inert. Findings flow into --doctor --export via the existing adaptLegacyResult merge. test-pro ships the reference script.&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;Closes #796&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Tags&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fingerprint&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;8e365e4e13b356c8057bc265beefb95d8dc3f15b:tests/unit/t313-plugin-doctor-checks.test.ts:aws-access-token:340&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;well, I needed to understand what baseline meant here, so I took a closer look at README and found this section — &lt;a href="https://github.com/gitleaks/gitleaks#creating-a-baseline" rel="noopener noreferrer"&gt;Creating a baseline&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When scanning large repositories or repositories with a long history, it can be convenient to use a baseline. When using a baseline, gitleaks will ignore any old findings that are present in the baseline. A baseline can be any gitleaks report. To create a gitleaks report, run gitleaks with the --report-path parameter. — &lt;a href="https://github.com/gitleaks/gitleaks#creating-a-baseline" rel="noopener noreferrer"&gt;Source&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://gitleaks.io/" rel="noopener noreferrer"&gt;gitleaks.io/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/awslabs/aidlc-workflows/blob/main/.gitleaks.toml" rel="noopener noreferrer"&gt;github.com/awslabs/aidlc-workflows/.gitleaks.toml&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/gitleaks/gitleaks-action#v2-benefits" rel="noopener noreferrer"&gt;github.com/gitleaks/gitleaks-action#v2-benefits&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/gitleaks/gitleaks#configuration" rel="noopener noreferrer"&gt;github.com/gitleaks/gitleaks#configuration&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/gitleaks/gitleaks#creating-a-baseline" rel="noopener noreferrer"&gt;github.com/gitleaks/gitleaks#creating-a-baseline&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>gitleaks</category>
      <category>opensource</category>
      <category>secrets</category>
      <category>environment</category>
    </item>
    <item>
      <title>Openship, a self-hosted deployment platform.</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Wed, 02 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/openship-a-self-hosted-deployment-platform-4ecl</link>
      <guid>https://dev.to/ramunarasinga-11/openship-a-self-hosted-deployment-platform-4ecl</guid>
      <description>&lt;p&gt;In this article, we review Openship. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Openship?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Features&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvswm97i0w919095ozqxf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvswm97i0w919095ozqxf.png" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Openship?
&lt;/h2&gt;

&lt;p&gt;Openship is an Open-source, self-hostable deployment platform with built-in CI/CD. Point it at a repo - it builds, ships, routes, and TLS-terminates your app. Drive it from a desktop app, web dashboard, or CLI.&lt;/p&gt;

&lt;p&gt;I checked their docs and there are few important things worth mentioning about how you run Openship itself. There's three ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You are solo and run one machine, no ops:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is recommended to run the Openship as a Desktop app. You can download &lt;a href="https://openship.io/download" rel="noopener noreferrer"&gt;Openship Desktop app&lt;/a&gt; Your apps run on a server that ssh over&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You are a team/part of team&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It is recommended to self host a server and spinup Openship.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don't want to self-host?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Openship provides cloud alternative, starts from $10 per month at the time of writing this article, check their &lt;a href="https://openship.io/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Learn more about &lt;a href="https://github.com/oblien/openship" rel="noopener noreferrer"&gt;Openship&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;Openship handles everything between your code and production.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Deploy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxnz633sqmfdxaixf6tbw.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxnz633sqmfdxaixf6tbw.png" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/oblien/openship" rel="noopener noreferrer"&gt;github.com/oblien/openship&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://openship.io/" rel="noopener noreferrer"&gt;openship.io/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://openship.io/features" rel="noopener noreferrer"&gt;openship.io/features&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://openship.io/pricing" rel="noopener noreferrer"&gt;openship.io/pricing&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>openship</category>
      <category>deployment</category>
      <category>selfhost</category>
    </item>
    <item>
      <title>What is Tauri?</title>
      <dc:creator>Ramu Narasinga</dc:creator>
      <pubDate>Tue, 01 Sep 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/ramunarasinga-11/what-is-tauri-cc0</link>
      <guid>https://dev.to/ramunarasinga-11/what-is-tauri-cc0</guid>
      <description>&lt;p&gt;In this article, we review Tauri. You will learn:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What is Tauri?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tauri usage in worldmonitor repo&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29avjoz4a3nadr9xqbcj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29avjoz4a3nadr9xqbcj.png" width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tauri?
&lt;/h2&gt;

&lt;p&gt;Tauri is a framework for building tiny, fast binaries for all major desktop and mobile platforms. Developers can integrate any frontend framework that compiles to HTML, JavaScript, and CSS for building their user experience while leveraging languages such as Rust, Swift, and Kotlin for backend logic when needed.&lt;/p&gt;

&lt;p&gt;You can create a tauri app using the below command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pnpm&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt; &lt;span class="nx"&gt;tauri&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after you create your project, you can check the &lt;a href="https://v2.tauri.app/start/project-structure/" rel="noopener noreferrer"&gt;project structure&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Tauri?
&lt;/h3&gt;

&lt;p&gt;Tauri has 3 main advantages for developers to build upon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Secure foundation for building apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smaller bundle size by using the system’s native webview&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flexibility for developers to use any frontend and bindings for multiple languages&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tauri usage in worldmonitor repo
&lt;/h2&gt;

&lt;p&gt;I noticed the folder &lt;code&gt;src-tauri&lt;/code&gt;, if you remember project structure generated using create-tauri-app, it looks like below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;javascript
.
├── package.json
├── index.html
├── src/
│   ├── main.js
├── src-tauri/
│   ├── Cargo.toml
│   ├── Cargo.lock
│   ├── build.rs
│   ├── tauri.conf.json
│   ├── src/
│   │   ├── main.rs
│   │   └── lib.rs
│   ├── icons/
│   │   ├── icon.png
│   │   ├── icon.icns
│   │   └── icon.ico
│   └── capabilities/
│       └── default.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tauri provides flexible architecture, any frontend framework is compatible with Tauri. That said, you might be wondering what Worldmonitor is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Worldmonitor
&lt;/h3&gt;

&lt;p&gt;I copied this info from Worldmonitor github.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Curated news feeds across global and regional categories, AI-synthesized into briefs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dual map engine — 3D globe (globe.gl) and WebGL flat map (deck.gl) with a shared map-layer catalog&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Panel inventory — concrete panel implementations across specialized variants&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross-stream correlation — military, economic, disaster, and escalation signal convergence&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Country Instability Index (CII) — server-authoritative CII v8 stress scoring for the Tier-1 registry&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finance radar — stock exchanges, commodities, crypto, and a market composite&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Local AI — run everything with Ollama, no API keys required&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Site variants from a single codebase (world, tech, finance, commodity, happy, energy)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Native desktop app (Tauri 2) for macOS, Windows, and Linux&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multilingual UI with native-language feeds and RTL support&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  About me:
&lt;/h2&gt;

&lt;p&gt;Hey, my name is Ramu Narasinga. Email: &lt;a href="mailto:ramu.narasinga@gmail.com"&gt;ramu.narasinga@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent 3+ years studying OSS codebases and wrote 400+ articles on what makes the production-grade. Now I'm putting that into practice differently - instead of writing every fix myself, I run coding agents that do it.&lt;/p&gt;

&lt;p&gt;How it works? Register your machine as a Runtime, point it at your repo. Agents pick up issues. write the fix, open the PR. You just review, they execute.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://thinkthroo.com/" rel="noopener noreferrer"&gt;Build your coding agents and get more work done in less time at thinkthroo.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://v2.tauri.app/start/" rel="noopener noreferrer"&gt;v2.tauri.app/start/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/koala73/worldmonitor/tree/main/src-tauri" rel="noopener noreferrer"&gt;github.com/koala73/worldmonitor/tree/main/src-tauri&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/tauri-apps/create-tauri-app" rel="noopener noreferrer"&gt;github.com/tauri-apps/create-tauri-app&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://v2.tauri.app/start/project-structure/" rel="noopener noreferrer"&gt;v2.tauri.app/start/project-structure/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.worldmonitor.app/" rel="noopener noreferrer"&gt;worldmonitor.app/&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>tauri</category>
      <category>opensource</category>
      <category>ai</category>
      <category>worldmonitor</category>
    </item>
  </channel>
</rss>
