<?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: Master_Shivnath</title>
    <description>The latest articles on DEV Community by Master_Shivnath (@master_shivnath_007).</description>
    <link>https://dev.to/master_shivnath_007</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%2F4221631%2Fdc74a079-053b-4b5c-b71a-d62c6d776b1b.png</url>
      <title>DEV Community: Master_Shivnath</title>
      <link>https://dev.to/master_shivnath_007</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/master_shivnath_007"/>
    <language>en</language>
    <item>
      <title>I built a CLI package manager for macOS because brew list hid 145 dependencies</title>
      <dc:creator>Master_Shivnath</dc:creator>
      <pubDate>Mon, 02 Nov 2026 06:32:38 +0000</pubDate>
      <link>https://dev.to/master_shivnath_007/i-built-a-cli-package-manager-for-macos-because-brew-list-hid-145-dependencies-19e5</link>
      <guid>https://dev.to/master_shivnath_007/i-built-a-cli-package-manager-for-macos-because-brew-list-hid-145-dependencies-19e5</guid>
      <description>&lt;p&gt;I ran &lt;code&gt;brew list&lt;/code&gt; on my Mac and got 188 names.&lt;/p&gt;

&lt;p&gt;I knew maybe 40 of them. The other 145 were libraries that arrived because&lt;br&gt;
something else needed them — &lt;code&gt;abseil&lt;/code&gt;, &lt;code&gt;icu4c&lt;/code&gt;, &lt;code&gt;isl&lt;/code&gt;, &lt;code&gt;highway&lt;/code&gt;. Nothing told&lt;br&gt;
me which was which, what anything did, how much space it took, or which command&lt;br&gt;
would remove it safely.&lt;/p&gt;

&lt;p&gt;That is the problem Cydia and Sileo solved on a jailbroken iPhone: one list,&lt;br&gt;
searchable, with a Remove button. macOS never got that view. So I built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Dronagiri does
&lt;/h2&gt;

&lt;p&gt;Dronagiri is a terminal app that reads the package databases of Homebrew, npm,&lt;br&gt;
pipx, Cargo, RubyGems and &lt;code&gt;go install&lt;/code&gt;, then puts everything in one sortable&lt;br&gt;
table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;real on-disk size, measured with one batched &lt;code&gt;du&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;install date&lt;/li&gt;
&lt;li&gt;one-line description and homepage&lt;/li&gt;
&lt;li&gt;last-used evidence from Spotlight and timestamped shell history&lt;/li&gt;
&lt;li&gt;popularity from Homebrew's public analytics&lt;/li&gt;
&lt;li&gt;dependencies in their own tab, each labelled with the packages that need it&lt;/li&gt;
&lt;li&gt;broken entries: packages a manager still lists whose files are gone&lt;/li&gt;
&lt;/ul&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%2Ffbb91m9uws6l0dcc7zs4.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%2Ffbb91m9uws6l0dcc7zs4.png" alt="Dronagiri running in Terminal" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The part I use most is the &lt;strong&gt;Mine / Dependencies&lt;/strong&gt; split. &lt;code&gt;brew list&lt;/code&gt; treats the&lt;br&gt;
40 tools I chose and the 145 libraries they dragged in as one flat list.&lt;br&gt;
Dronagiri separates them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hard parts
&lt;/h2&gt;

&lt;p&gt;Two things were harder than the UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependencies lie.&lt;/strong&gt; Homebrew's JSON lists declared dependencies, which is wrong&lt;br&gt;
surprisingly often. Dronagiri asks &lt;code&gt;brew deps &amp;lt;formula&amp;gt;&lt;/code&gt; for the actual runtime&lt;br&gt;
linkage, then inverts the graph. That is why it can say "needed by ffmpeg, mpv"&lt;br&gt;
instead of guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Last used" is mostly unknowable.&lt;/strong&gt; APFS mounts with &lt;code&gt;noatime&lt;/code&gt;, so access&lt;br&gt;
times never change. Most shells do not timestamp their history. Dronagiri uses&lt;br&gt;
Spotlight's &lt;code&gt;kMDItemLastUsedDate&lt;/code&gt; for &lt;code&gt;.app&lt;/code&gt; bundles and timestamped shell&lt;br&gt;
history for commands. When neither exists, it says &lt;code&gt;never&lt;/code&gt; — meaning no trace,&lt;br&gt;
not proof you never ran it. The detail panel spells that out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety
&lt;/h2&gt;

&lt;p&gt;Deletion is deliberately inconvenient. Select rows with &lt;code&gt;space&lt;/code&gt;, press &lt;code&gt;d&lt;/code&gt;, and&lt;br&gt;
confirm twice in bordered dialogs. The first window lists every package and the&lt;br&gt;
space freed; the second is a last-chance warning. Removal is delegated to the&lt;br&gt;
manager that installed the package. No &lt;code&gt;--force&lt;/code&gt;, no &lt;code&gt;--ignore-dependencies&lt;/code&gt;, no&lt;br&gt;
private APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/MasterShivnath007/dronagiri@latest
dronagiri
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or download a binary for Apple Silicon or Intel from the releases page. It is&lt;br&gt;
MIT-licensed, macOS 13+, and there is no telemetry or account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website and install guide: &lt;a href="https://mastershivnath007.github.io/dronagiri/" rel="noopener noreferrer"&gt;https://mastershivnath007.github.io/dronagiri/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/MasterShivnath007/dronagiri" rel="noopener noreferrer"&gt;https://github.com/MasterShivnath007/dronagiri&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;brew list&lt;/code&gt; comparison: &lt;a href="https://mastershivnath007.github.io/dronagiri/#compare" rel="noopener noreferrer"&gt;https://mastershivnath007.github.io/dronagiri/#compare&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it, I would like to know what your Mine/Dependencies split looks&lt;br&gt;
like — and which package you were surprised to find.&lt;/p&gt;

</description>
      <category>macos</category>
      <category>opensource</category>
      <category>go</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
