<?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: Christopher Studva</title>
    <description>The latest articles on DEV Community by Christopher Studva (@christopher_studva_7a1f8e).</description>
    <link>https://dev.to/christopher_studva_7a1f8e</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%2F4073934%2Fbc67fad2-2017-498e-a235-8740e53b5b52.png</url>
      <title>DEV Community: Christopher Studva</title>
      <link>https://dev.to/christopher_studva_7a1f8e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christopher_studva_7a1f8e"/>
    <language>en</language>
    <item>
      <title>I built JARVIS — a local-first AI assistant you actually own (macOS + Linux, MIT)</title>
      <dc:creator>Christopher Studva</dc:creator>
      <pubDate>Wed, 12 Aug 2026 04:41:26 +0000</pubDate>
      <link>https://dev.to/christopher_studva_7a1f8e/i-built-jarvis-a-local-first-ai-assistant-you-actually-own-macos-linux-mit-2171</link>
      <guid>https://dev.to/christopher_studva_7a1f8e/i-built-jarvis-a-local-first-ai-assistant-you-actually-own-macos-linux-mit-2171</guid>
      <description>&lt;p&gt;Siri, Alexa, and Google Assistant are thin clients. The intelligence lives on&lt;br&gt;
someone else's servers, every word you say leaves your house, and the moment&lt;br&gt;
the vendor has an outage — or you're on a plane — they mostly stop working.&lt;/p&gt;

&lt;p&gt;I wanted the JARVIS I was &lt;em&gt;promised&lt;/em&gt;: always on, genuinely helpful, and &lt;strong&gt;mine&lt;/strong&gt;.&lt;br&gt;
So I built one — &lt;strong&gt;Jarvis CLS&lt;/strong&gt; — and open-sourced it (MIT).&lt;/p&gt;
&lt;h2&gt;
  
  
  The idea: you own the whole stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;Your brain.&lt;/strong&gt; Run a private local model (Ollama / llama.cpp), your own
server, or a frontier cloud API — with health-aware failover between them.&lt;/li&gt;
&lt;li&gt;🗣️ &lt;strong&gt;Your voice.&lt;/strong&gt; Swappable TTS profiles you can change mid-sentence.&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;Your data.&lt;/strong&gt; Every note, embedding, and audit line lives on your disk
under &lt;code&gt;~/.jarvis&lt;/code&gt; — exportable and clearable.&lt;/li&gt;
&lt;li&gt;✈️ &lt;strong&gt;Works offline.&lt;/strong&gt; Local speech-to-text (&lt;code&gt;faster-whisper&lt;/code&gt;), local voices
(&lt;code&gt;piper&lt;/code&gt;/&lt;code&gt;pyttsx3&lt;/code&gt;), and a model chain that always ends in an on-device
fallback. Unplug the internet and it keeps talking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No account. No forced cloud. No fixed voice. No &lt;em&gt;"sorry, I can't reach the&lt;br&gt;
server right now."&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What it actually does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;43 permission-tiered skills&lt;/strong&gt; — every elevated tier is &lt;strong&gt;off&lt;/strong&gt; until you turn
it on, with a local audit log.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proactive, not just reactive&lt;/strong&gt; — an ambient agent that speaks first on real
triggers ("Battery is at 18%… I'd recommend saving your open work").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decomposes messy requests&lt;/strong&gt; — say one sentence, it plans and executes the
steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible via MCP&lt;/strong&gt; — add any Model Context Protocol tool server; still
permission-gated and audited.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs natively on macOS &lt;em&gt;and&lt;/em&gt; Linux&lt;/strong&gt; (X11 or Wayland).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Picks how it addresses you&lt;/strong&gt; on first run — a preset or your own name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's ~16,000 lines, &lt;strong&gt;646 passing tests&lt;/strong&gt;, ruff- + mypy-clean (enforced in CI),&lt;br&gt;
and hardened across five rounds of adversarial security review.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;macOS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;jarvis-unstoppable &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;portaudio &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; make setup &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; make run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;jarvis-unstoppable &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash scripts/install_linux.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; make setup &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; scripts/dev_run.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Leave the API keys blank to run fully local/offline, or add them for a cloud brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open-source it?
&lt;/h2&gt;

&lt;p&gt;Because an assistant that listens to everything you say should be one you can&lt;br&gt;
read the source of. It's MIT, source-available, and self-hostable. If that's the&lt;br&gt;
kind of assistant you've wanted, a ⭐ helps others find it — and I'd love to hear&lt;br&gt;
what you'd build on top of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/reapersapprentice/Jarvis-CLS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/Jarvis-CLS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— C.Studva&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>privacy</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Running Popular OSINT &amp; Recon Tools Natively on macOS (No VM, No Kali)</title>
      <dc:creator>Christopher Studva</dc:creator>
      <pubDate>Wed, 12 Aug 2026 02:42:12 +0000</pubDate>
      <link>https://dev.to/christopher_studva_7a1f8e/running-popular-osint-recon-tools-natively-on-macos-no-vm-no-kali-1520</link>
      <guid>https://dev.to/christopher_studva_7a1f8e/running-popular-osint-recon-tools-natively-on-macos-no-vm-no-kali-1520</guid>
      <description>&lt;p&gt;If you do security research or OSINT on a Mac, you've hit this wall: half the&lt;br&gt;
best tools are written for Linux, so the "solution" is spinning up a Kali VM or&lt;br&gt;
fighting a pile of dependencies just to run one script.&lt;/p&gt;

&lt;p&gt;I got tired of that, so I packaged several popular open-source tools to run&lt;br&gt;
&lt;strong&gt;natively on macOS&lt;/strong&gt; — Intel &lt;em&gt;and&lt;/em&gt; Apple Silicon — with copy-paste setup that&lt;br&gt;
a first-timer can follow. Each one is an independent macOS conversion; the&lt;br&gt;
original authors and licenses are credited in every repo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Authorized use only.&lt;/strong&gt; These are for legal, educational, and authorized&lt;br&gt;
security testing. Only use them against systems you own or have written&lt;br&gt;
permission to test.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here's the lineup and how to run each one.&lt;/p&gt;
&lt;h2&gt;
  
  
  🔓 Hash-Buster — identify &amp;amp; crack hashes
&lt;/h2&gt;

&lt;p&gt;Detects a hash's type and looks up the cracked value across multiple databases.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/reapersapprentice/Hash-Buster-macOS.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Hash-Buster-macOS
pip3 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
python3 hash.py &lt;span class="nt"&gt;-s&lt;/span&gt; 5f4dcc3b5aa765d61d8327deb882cf99
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/reapersapprentice/Hash-Buster-macOS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/Hash-Buster-macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌐 theHarvester — map a domain's public footprint
&lt;/h2&gt;

&lt;p&gt;Gathers emails, subdomains, hosts and names for a domain from dozens of public&lt;br&gt;
sources — a classic first step in an authorized assessment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/reapersapprentice/theHarvester-macOS.git
&lt;span class="nb"&gt;cd &lt;/span&gt;theHarvester-macOS
pip3 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; theHarvester &lt;span class="nt"&gt;-d&lt;/span&gt; example.com &lt;span class="nt"&gt;-b&lt;/span&gt; duckduckgo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/reapersapprentice/theHarvester-macOS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/theHarvester-macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🦅 Eagle Eye — find social profiles from a photo
&lt;/h2&gt;

&lt;p&gt;Uses face recognition to match a person across social networks and builds a&lt;br&gt;
tidy report. Needs a couple of Homebrew packages; the repo's Quick Start&lt;br&gt;
installs them for you.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/reapersapprentice/EagleEye-macOS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/EagleEye-macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🧭 Sublist3r — fast subdomain enumeration
&lt;/h2&gt;

&lt;p&gt;Rapidly enumerates a domain's subdomains from search engines and public sources.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/reapersapprentice/Sublist3r-macOS.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Sublist3r-macOS
pip3 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
python3 sublist3r.py &lt;span class="nt"&gt;-d&lt;/span&gt; example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/reapersapprentice/Sublist3r-macOS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/Sublist3r-macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🕳️ httptunnel — tunnel a data stream over HTTP
&lt;/h2&gt;

&lt;p&gt;Creates a bidirectional connection tunnelled inside HTTP. It's written in C, so&lt;br&gt;
this build compiles and runs it for you inside a small container — no compiler&lt;br&gt;
setup by hand.&lt;/p&gt;

&lt;p&gt;→ &lt;strong&gt;&lt;a href="https://github.com/reapersapprentice/httptunnel-macOS" rel="noopener noreferrer"&gt;https://github.com/reapersapprentice/httptunnel-macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  New to the Terminal?
&lt;/h2&gt;

&lt;p&gt;Every repo has a beginner section: open &lt;strong&gt;Terminal&lt;/strong&gt; (Cmd ⌘ + Space → type&lt;br&gt;
&lt;em&gt;Terminal&lt;/em&gt;), run one line at a time, and paste with Cmd ⌘ + V. That's the whole&lt;br&gt;
learning curve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother converting instead of just using a VM?
&lt;/h2&gt;

&lt;p&gt;Because a VM is a lot of overhead for "I just want to run one recon tool." Native&lt;br&gt;
means it starts instantly, uses your real filesystem, and doesn't eat 4 GB of RAM&lt;br&gt;
in the background. For day-to-day OSINT on a Mac, that's a real quality-of-life&lt;br&gt;
win.&lt;/p&gt;

&lt;p&gt;If these are useful to you, a ⭐ on the repos helps others find them. More&lt;br&gt;
conversions are on the way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— C.Studva&lt;/em&gt;&lt;/p&gt;

</description>
      <category>macos</category>
      <category>osint</category>
      <category>security</category>
      <category>python</category>
    </item>
  </channel>
</rss>
