<?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: Soham Maity</title>
    <description>The latest articles on DEV Community by Soham Maity (@spreadsheets600).</description>
    <link>https://dev.to/spreadsheets600</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%2F1215249%2Fd2326133-d247-473a-bdb0-5fcaf9efbb5c.png</url>
      <title>DEV Community: Soham Maity</title>
      <link>https://dev.to/spreadsheets600</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spreadsheets600"/>
    <language>en</language>
    <item>
      <title>Ghost in the Machine: An Offline Haunted Terminal, Séance Chamber, and Día de los Muertos Digital Ofrenda Powered by Local Gemma 2</title>
      <dc:creator>Soham Maity</dc:creator>
      <pubDate>Sat, 31 Oct 2026 09:50:59 +0000</pubDate>
      <link>https://dev.to/spreadsheets600/ghost-in-the-machine-an-offline-haunted-terminal-seance-chamber-and-dia-de-los-muertos-digital-42m8</link>
      <guid>https://dev.to/spreadsheets600/ghost-in-the-machine-an-offline-haunted-terminal-seance-chamber-and-dia-de-los-muertos-digital-42m8</guid>
      <description>&lt;h1&gt;
  
  
  👻 Ghost in the Machine: An Offline Haunted Terminal, Séance Chamber, and Día de los Muertos Digital Ofrenda Powered by Local Gemma 2
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hf26"&gt;Hacktoberfest Open-Source AI Challenge: Week 4 — Ghost in the Machine&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎃 What I Built
&lt;/h2&gt;

&lt;p&gt;Around late October, the calendar enters a liminal space: Halloween on October 31 and Día de los Muertos on November 1 &amp;amp; 2. In software systems, this boundary feels equally real. Every day, thousands of orphaned child processes are severed by &lt;code&gt;kill -9&lt;/code&gt; without a cleanup handler; unmerged branches decay in git reflogs; and legendary languages and pioneers pass into history.&lt;/p&gt;

&lt;p&gt;To honor both the spooky and the sacred, I built &lt;strong&gt;Ghost in the Machine&lt;/strong&gt; (&lt;code&gt;ghost&lt;/code&gt; / &lt;code&gt;gitm&lt;/code&gt;): a local-first, privacy-preserving terminal suite powered by Google's open-weight &lt;strong&gt;Gemma 2 (2B)&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           .-.
          (o.o)
        __/ ' \__        🕯️ GHOST IN THE MACHINE 🕯️
       /   \_/   \       « The silicon whispers back »
      /  .     .  \
     /   |     |   \     100% Local • Zero Cloud • Privacy Forever
    (____|_____|____)
       \   / \   /
        `-'   `-'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It turns your everyday Linux shell into:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Haunted Terminal (&lt;code&gt;ghost haunt&lt;/code&gt; &amp;amp; &lt;code&gt;ghost whisper&lt;/code&gt;)&lt;/strong&gt;: An interactive subshell that observes commands run by the user (&lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;kill -9&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;) and whispers back chilling, context-aware commentary directly from the silicon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Offline Séance Chamber (&lt;code&gt;ghost seance&lt;/code&gt;)&lt;/strong&gt;: An interactive terminal séance circle where you can summon and converse with departed computing pioneers (&lt;strong&gt;Ada Lovelace&lt;/strong&gt;, &lt;strong&gt;Alan Turing&lt;/strong&gt;, &lt;strong&gt;Grace Hopper&lt;/strong&gt;, &lt;strong&gt;Dennis Ritchie&lt;/strong&gt;) and retired technologies (&lt;strong&gt;Adobe Flash&lt;/strong&gt;, &lt;strong&gt;Zombie PID 666&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Digital Ofrenda Builder (&lt;code&gt;ghost ofrenda&lt;/code&gt;)&lt;/strong&gt;: In the sacred tradition of Día de los Muertos, an ASCII/Unicode tiered altar adorned with &lt;em&gt;cempasúchil&lt;/em&gt; (marigolds), flickering candles (&lt;code&gt;🕯️&lt;/code&gt;), and &lt;em&gt;pan de muerto&lt;/em&gt;. Gemma 2 generates heartfelt dedications and traditional rhyming &lt;em&gt;Calaveritas Literarias&lt;/em&gt; (satirical/commemorative poems) that are permanently archived in a local JSON ledger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Midnight Chronicle (&lt;code&gt;ghost tale&lt;/code&gt;)&lt;/strong&gt;: Gathers your recent git commit history, kernel uptime, and system load averages to weave an original cyber-gothic ghost story set inside your specific workstation.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🌟 Why Open Innovation Matters for This Project
&lt;/h2&gt;

&lt;p&gt;The prompt asked: &lt;em&gt;Why does open innovation matter for what you built? Does it run on a laptop with no internet? Keep someone's data off a server they don't control?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is why this project &lt;strong&gt;could only exist with open-source AI and open-weight models&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy: You Can Never Send Shell Traces to an External API
&lt;/h3&gt;

&lt;p&gt;A tool that comments on terminal commands is reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File paths (which may contain proprietary client names or secret keys)&lt;/li&gt;
&lt;li&gt;Command flags and commit messages (&lt;code&gt;git commit -m 'Patching CVE in auth.py'&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Process IDs and system parameters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sending this stream over the public internet to a closed cloud AI API is an egregious security and privacy violation. Because &lt;strong&gt;Gemma 2 runs completely locally on-device&lt;/strong&gt; via Ollama, &lt;strong&gt;zero bytes ever leave the machine&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Runs With the Lights (and the Internet) Off
&lt;/h3&gt;

&lt;p&gt;A spooky Halloween hack or an offline remembrance tool should work in a remote cabin in the woods or during an internet blackout. Ghost in the Machine has &lt;strong&gt;zero runtime network dependencies&lt;/strong&gt;. You can pull your Wi-Fi plug, run &lt;code&gt;ghost haunt&lt;/code&gt;, and converse with Ada Lovelace in complete digital isolation.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Permanence and Digital Preservation
&lt;/h3&gt;

&lt;p&gt;Cloud AI services shut down, hike prices, change rate limits, or censor topics. A traditional &lt;em&gt;ofrenda&lt;/em&gt; is meant to preserve the memory of loved ones and foundational pioneers across decades. If an ofrenda depended on a closed corporate API endpoint, a broken subscription or a deprecated API version would destroy the tribute.&lt;br&gt;
By using open weights (&lt;strong&gt;Gemma 2&lt;/strong&gt;), open package management (&lt;strong&gt;uv&lt;/strong&gt;), and standard open-source Python, this repository can be checked out and run decades from now.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Zero Marginal Cost
&lt;/h3&gt;

&lt;p&gt;Developers run hundreds of shell commands a day. Charging per-token API calls for shell whispers would be prohibitively expensive. Local open-weight inference costs &lt;strong&gt;$0.00&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🏆 Prize Category: Best Use of Gemma
&lt;/h2&gt;

&lt;p&gt;Ghost in the Machine runs on &lt;strong&gt;Google Gemma 2 (2B)&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Gemma 2 was chosen because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Parameter Efficiency&lt;/strong&gt;: At just 2 billion parameters, it fits effortlessly into modest laptop VRAM (under 2GB) and runs at lightning speed on CPU or integrated GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poetic &amp;amp; Thematic Nuance&lt;/strong&gt;: Gemma 2 demonstrates extraordinary literary sensitivity. It writes evocative gothic whispers, captures 19th-century Victorian mathematics for Ada Lovelace, and generates authentic &lt;em&gt;Calaveritas Literarias&lt;/em&gt; with perfect rhyme and respect.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  📸 Demo Walkthrough
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. The Haunted Shell Possession (&lt;code&gt;ghost whisper&lt;/code&gt;)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ghost whisper &lt;span class="s2"&gt;"git commit -m 'Fixed memory leak'"&lt;/span&gt;
╭──────────────────────────────────────────────────────────────────────────────╮
│  👻 A ghostly &lt;span class="nb"&gt;echo &lt;/span&gt;of change, a whisper of data lost &lt;span class="k"&gt;in &lt;/span&gt;the void, now        │
│ fixed... yet not truly forgotten.                                            │
╰──────────────────────────────── ‹gemma2:2b› ─────────────────────────────────╯
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ghost whisper &lt;span class="s2"&gt;"rm -rf old_builds"&lt;/span&gt;
╭──────────────────────────────────────────────────────────────────────────────╮
│  👻 The echoes of deleted data linger &lt;span class="k"&gt;in &lt;/span&gt;the void, like phantoms trapped by  │
│ a forgotten code. A silent purge, a dance with the ephemeral...              │
╰──────────────────────────────── ‹gemma2:2b› ─────────────────────────────────╯
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. The Séance Chamber (&lt;code&gt;ghost seance list&lt;/code&gt; &amp;amp; &lt;code&gt;ghost seance summon ritchie&lt;/code&gt;)
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 🕯️ THE SÉANCE PANTHEON: SUMMONABLE SPIRITS 🕯️                  
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Key     ┃ Spirit               ┃ Title                ┃ Description          ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ ada     │ 📜 Ada Lovelace      │ Countess of Lovelace │ First Programmer     │
│ turing  │ ⚙️ Alan Turing       │ Father of CS &amp;amp; AI    │ Pioneer of computing │
│ hopper  │ ⚓ Grace Hopper      │ Rear Admiral         │ Compiler pioneer     │
│ ritchie │ 🐚 Dennis Ritchie    │ Creator of C &amp;amp; Unix  │ Built modern systems │
│ flash   │ ⚡ Adobe Flash       │ Fallen Vector Medium │ Executed Dec 31 2020 │
│ pid     │ 🧟 Zombie PID 666    │ Slain by SIGKILL     │ Slain with kill -9   │
└─────────┴──────────────────────┴──────────────────────┴──────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Summoning Dennis Ritchie:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🕯️ THE SÉANCE CIRCLE HAS FORMED 🕯️
Channeling: 🐚 Dennis Ritchie (1941-2011)
Engine: gemma2:2b (100% Local Inference)

🐚 Dennis Ritchie:
"Hello from the eternal kernel space. Everything is still a file, and memory is still a quiet canvas of pointers. What troubles your terminal, living programmer?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Día de los Muertos Altar (&lt;code&gt;ghost ofrenda view&lt;/code&gt; &amp;amp; &lt;code&gt;ghost ofrenda add&lt;/code&gt;)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   ════════════════════════════════════════════════════════════
                     🕯️  OFRENDA DIGITAL  🕯️
             🌼  DÍA DE LOS MUERTOS — 1 &amp;amp; 2 NOVIEMBRE  🌼
   ════════════════════════════════════════════════════════════
             [ Cielo / The Heavens: Soul &amp;amp; Memory ]
                      🕯️     💀     🕯️
                    ~~~~~~~~~~~~~~~
           [ Purgatorio / Earthly Transition &amp;amp; Code ]
             🥖 Pan de Muerto  •  ☕ Café  •  🏵️ Flor
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         [ Tierra / The Mortal Ground: Our Living Altar ]
       🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼 🌼
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemma 2's generated tribute for Dennis Ritchie:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Dedication&lt;/span&gt;
Dennis Ritchie, a weaver of language, a sculptor of code, gave us the world
of C and the foundation of Unix. His legacy, like the flames of copal,
continues to burn bright, guiding us through the digital night.

&lt;span class="gu"&gt;## Calaverita Literaria&lt;/span&gt;
&lt;span class="ge"&gt;*La Muerte*&lt;/span&gt; enters the altar with grace,
A gentle breeze, a smile on her face.
She sees a friend, a pioneer of thought,
Dennis Ritchie, whose code we've wrought.

&lt;span class="ge"&gt;*The Pan de Muerto*&lt;/span&gt; sways in the light,
&lt;span class="ge"&gt;*Mezcal*&lt;/span&gt; fills the air with ancient might.
&lt;span class="ge"&gt;*C source code*&lt;/span&gt; a silent, sweet song,
His spirit echoes through the living throng.

Love, memory, and open minds remain,
Like his creation, forever a flame.
Dennis, we remember, your legacy bold,
Your code lives on, a story yet untold.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🛠️ How It's Engineered
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------+
|                      Ghost in the Machine CLI             |
|          (ghost haunt / seance / ofrenda / tale)          |
+-----------------------------+-----------------------------+
                              |
                     [Spectral Engine]
                              |
       +----------------------+----------------------+
       | (Online)                                    | (Offline / Low-RAM)
       v                                             v
[Ollama Daemon]                              [Spectral Oracle]
(gemma2:2b / local open-weight)              (Heuristic Gothic Engine)
       |                                             |
       +----------------------+----------------------+
                              |
                              v
                  [Rich Spectral Renderer]
                  (ANSI Ectoplasm / Altar)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tooling&lt;/strong&gt;: Built with Python 3.11+ managed by &lt;a href="https://astral.sh/uv" rel="noopener noreferrer"&gt;uv&lt;/a&gt; for lightning fast, reproducible environment setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inference&lt;/strong&gt;: Powered by &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; running Google's &lt;code&gt;gemma2:2b&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fault-Tolerant Resilience&lt;/strong&gt;: Incorporates community insights (polling health checks rather than blind sleeps) and features an &lt;strong&gt;Offline Fallback Oracle&lt;/strong&gt; so the CLI never crashes even if Ollama is paused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TUI &amp;amp; Typography&lt;/strong&gt;: Built with &lt;a href="https://github.com/Textualize/rich" rel="noopener noreferrer"&gt;Rich&lt;/a&gt; and &lt;a href="https://typer.tiangolo.com" rel="noopener noreferrer"&gt;Typer&lt;/a&gt; for spectral ANSI colors, glitch typography, and animated frames.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: Comprehensive 12-test suite in &lt;code&gt;pytest&lt;/code&gt; covering prompts, storage, CLI parsing, and inference pipelines.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💻 Source Code
&lt;/h2&gt;

&lt;p&gt;The full project is open source under the MIT License:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/SpreadSheets600/ghost-in-the-machine" rel="noopener noreferrer"&gt;GitHub: SpreadSheets600/ghost-in-the-machine&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To run it locally in under 60 seconds:&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/SpreadSheets600/ghost-in-the-machine.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ghost-in-the-machine
uv &lt;span class="nb"&gt;sync
&lt;/span&gt;uv run ghost status
uv run ghost haunt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Happy Halloween and Feliz Día de los Muertos! May your memory leaks be forgiven and your processes find eternal rest. 🕯️💀🌼&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
      <category>python</category>
    </item>
    <item>
      <title>Moss: A Local-First Assistant That Grows on You While You Sleep 🦥</title>
      <dc:creator>Soham Maity</dc:creator>
      <pubDate>Sun, 25 Oct 2026 07:30:54 +0000</pubDate>
      <link>https://dev.to/spreadsheets600/moss-a-local-first-assistant-that-grows-on-you-while-you-sleep-29i6</link>
      <guid>https://dev.to/spreadsheets600/moss-a-local-first-assistant-that-grows-on-you-while-you-sleep-29i6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Moss is a local-first assistant that does the chores you put off — while you sleep. It runs entirely on your own machine using open-weight models (via Ollama), and leaves a single &lt;strong&gt;Morning Brief&lt;/strong&gt; each day summarizing what it did.&lt;/p&gt;

&lt;p&gt;Three "sloth" skills, one CLI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;moss tidy ~/Downloads&lt;/code&gt;&lt;/strong&gt; — sort, rename, archive clutter (dry-run by default)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;moss digest whatsapp.txt&lt;/code&gt;&lt;/strong&gt; — two-line summary, who you owe, dates, ignore verdict&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;moss fridge fridge.jpg&lt;/code&gt;&lt;/strong&gt; — grocery list from a fridge photo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;moss nap&lt;/code&gt;&lt;/strong&gt; — run everything configured overnight, write the Morning Brief&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;moss undo&lt;/code&gt;&lt;/strong&gt; — restore the last tidy run exactly, byte for byte&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Morning Brief is a single self-contained HTML file (inline CSS, inline SVG sloth, no JS, no CDN) plus a Markdown twin. It works offline, is dark-mode ready, and mobile-friendly.&lt;/p&gt;

&lt;p&gt;Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ moss nap --demo --paranoid
Morning. Moss finished while you slept.
Brief: /home/soham/Moss/morning/2026-10-23.html
       /home/soham/Moss/morning/2026-10-23.md
Cloud API cost: $0.00
Paranoid proof: 0 outbound connections attempted. Model ran on localhost only.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Moss is local-first by design, so there's nothing to deploy — it runs on your laptop. Try the full pipeline with no model installed:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
ollama pull qwen3:4b
&lt;span class="nb"&gt;cp &lt;/span&gt;moss.example.yaml ~/Moss/moss.yaml
&lt;span class="c"&gt;# edit ~/Moss/moss.yaml to taste&lt;/span&gt;
moss nap &lt;span class="nt"&gt;--demo&lt;/span&gt; &lt;span class="nt"&gt;--paranoid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;--demo&lt;/code&gt; flag uses a mock backend, so no model download is required. Add &lt;code&gt;--paranoid&lt;/code&gt; to prove zero outbound connections.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;Moss is MIT-licensed, written in Python 3.11+, and structured around a backend-agnostic LLM interface (&lt;code&gt;BaseBackend&lt;/code&gt; with &lt;code&gt;generate&lt;/code&gt; and &lt;code&gt;generate_json&lt;/code&gt;) so you can swap Ollama, llama.cpp/LM Studio, or a deterministic mock in one line.&lt;/p&gt;

&lt;p&gt;Install and run:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
moss nap &lt;span class="nt"&gt;--demo&lt;/span&gt; &lt;span class="nt"&gt;--paranoid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Skills live in &lt;code&gt;src/moss/skills/&lt;/code&gt; (tidy, digest, fridge), extraction in &lt;code&gt;src/moss/extract/&lt;/code&gt; (PDF, DOCX, mbox, WhatsApp, Telegram, plain text), and storage is SQLite with an append-only undo journal for byte-for-byte restoration.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/SpreadSheets600" rel="noopener noreferrer"&gt;
        SpreadSheets600
      &lt;/a&gt; / &lt;a href="https://github.com/SpreadSheets600/Moss" rel="noopener noreferrer"&gt;
        Moss
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Moss&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Does the work while you hang around.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A local-first assistant that grows on you while you sleep. Built for the "Slow and Steady"
theme (International Sloth Day): open-weight models at its core, runs entirely on your own
machine, and rewards laziness by doing the chores you put off.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does (15 seconds)&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Moss runs overnight and leaves a single &lt;strong&gt;Morning Brief&lt;/strong&gt; (&lt;code&gt;~/Moss/morning/YYYY-MM-DD.html&lt;/code&gt; +
a &lt;code&gt;.md&lt;/code&gt; twin). It has three sloths ("skills"), one CLI:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;$ moss tidy ~/Downloads          # sort, rename, archive clutter (dry-run by default)
$ moss digest whatsapp.txt        # two-line summary, owes, dates, ignore verdict
$ moss fridge fridge.jpg          # grocery list from a fridge photo
$ moss nap                        # run everything configured, write the Morning Brief
$ moss undo                       # restore the last tidy run exactly
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Example terminal transcript:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;$ moss nap --demo --paranoid
Morning. Moss finished while you slept
Brief: /home/soham/Moss/morning/2026-10-23.html
       /home/soham/Moss/morning/2026-10-23.md
Cloud API&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/SpreadSheets600/Moss" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;Moss is built around &lt;strong&gt;open-weight models running locally&lt;/strong&gt;, not closed cloud APIs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Ollama (&lt;code&gt;localhost:11434&lt;/code&gt;) with &lt;code&gt;qwen3:4b&lt;/code&gt; for text tasks (tidy, digest) and &lt;code&gt;qwen2.5vl:7b&lt;/code&gt; for vision (fridge photo). Verified end-to-end with &lt;code&gt;gemma4:31b-cloud&lt;/code&gt; (32.7B on CPU) via Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend abstraction&lt;/strong&gt;: A common &lt;code&gt;BaseBackend&lt;/code&gt; interface keeps skills backend-agnostic. A &lt;code&gt;MockBackend&lt;/code&gt; powers &lt;code&gt;--demo&lt;/code&gt; mode, so the full pipeline runs with no model installed — essential for hackathon sandboxes without Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack&lt;/strong&gt;: Python 3.11, Typer (CLI), Rich (terminal output), Pydantic v2 (config), PyYAML, psutil (battery/idle detection), pypdf + python-docx + Pillow (extraction), Jinja2 (brief HTML), httpx (Ollama client), SQLite (cache + undo journal), pytest + ruff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paranoid mode&lt;/strong&gt;: &lt;code&gt;--paranoid&lt;/code&gt; monkeypatches &lt;code&gt;socket.socket&lt;/code&gt; so any non-loopback connection raises &lt;code&gt;OfflineError&lt;/code&gt;. Proof: &lt;strong&gt;0 outbound connections&lt;/strong&gt; — nothing phones home.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow and steady&lt;/strong&gt;: Runs at &lt;code&gt;nice -n 19&lt;/code&gt;, skips runs on battery below 40%, caches decisions by content hash so nothing repeats, and schedules at 2:00 AM by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation made Moss possible in ways a closed API never could:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Airplane mode works.&lt;/strong&gt; &lt;code&gt;moss paranoid&lt;/code&gt; proves 0 outbound connections. Your model runs on &lt;code&gt;localhost&lt;/code&gt;; nothing leaves the machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your data stays put.&lt;/strong&gt; Downloads, WhatsApp exports, email, fridge photos — all processed locally. No uploads to third-party servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cost.&lt;/strong&gt; Cloud API cost: &lt;code&gt;$0.00&lt;/code&gt;. No subscription, no per-call fees, no model deprecation risk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You own the behavior.&lt;/strong&gt; Swap models with &lt;code&gt;moss use gemma3:4b&lt;/code&gt;. Edit prompts and config in &lt;code&gt;moss.yaml&lt;/code&gt;. Hosted assistants don't let you do this.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A hosted assistant would need your personal chats and file contents sent to a third party, wouldn't work without internet, would charge recurring fees for a nightly job, and could deprecate the model you depend on overnight. Moss avoids all of that.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;Moss saves you from the chores you keep postponing: sorting a messy Downloads folder, summarizing long WhatsApp threads, checking what's missing from the fridge. It runs overnight at low priority (&lt;code&gt;nice -n 19&lt;/code&gt;), so you wake up to a done list instead of a to-do list. The undo journal means you can restore any tidy run byte-for-byte if you change your mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;tags - #devchallenge #hacktoberfest #ai #opensource #python&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WildQuest: Offline Nature Quests with On-Device Qwen AI</title>
      <dc:creator>Soham Maity</dc:creator>
      <pubDate>Sat, 10 Oct 2026 07:43:02 +0000</pubDate>
      <link>https://dev.to/spreadsheets600/wildquest-offline-nature-quests-with-on-device-qwen-ai-21e3</link>
      <guid>https://dev.to/spreadsheets600/wildquest-offline-nature-quests-with-on-device-qwen-ai-21e3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;WildQuest&lt;/strong&gt; is a mobile-only, offline-first nature exploration game. You pick a 15-, 30-, or 60-minute walk and a theme (plants, birds, textures, general nature), and the app generates 3–5 short missions from an on-device open-weight LLM — with a bundled curated mission library as fallback, so it works with zero connectivity.&lt;/p&gt;

&lt;p&gt;The point is the screen stays secondary: you read one mission, put the phone away, and go outside. When you come back you photograph what you found, describe it in a sentence or two, and the same on-device model structures it into an ID suggestion (label, confidence, key features). Everything — quests, photos, notes, AI text — lives in on-device SQLite, including half-typed drafts that survive app restarts. The walk ends with a field journal: completions, observations grouped per mission, and questions for the next walk.&lt;/p&gt;

&lt;p&gt;It is for anyone who walks past nature without noticing it: beginners who want structure, parents, run-club regulars who want a reason to look up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;There is no deployed link — it is a native Android app, not a website. Install the release APK (arm64, 128 MB) directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adb &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; app/build/app/outputs/flutter-apk/app-release.apk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Offline proof you can repeat: turn on airplane mode, generate a 15-minute plants quest (it arrives with a "Curated" chip), complete a mission, save a note, kill the app, reopen — quest, drafts, and history are intact. With the model downloaded once (~1 GB, Settings tab), the same flow runs fully offline with the chip reading "On-device AI". A field-test video is still TODO before the deadline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/SpreadSheets600/WildQuest" rel="noopener noreferrer"&gt;https://github.com/SpreadSheets600/WildQuest&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: the code push is in flight (local commits verified, remote push pending) — the repo will hold the full history: Flutter app, Python dev backend, docs with architecture diagrams.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The open-source AI is the core, in three places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quest generation — Qwen2.5-1.5B-Instruct Q4_K_M&lt;/strong&gt; (official Qwen GGUF on Hugging Face, ungated, Apache-2.0), run on-device through &lt;strong&gt;llamadart 0.11&lt;/strong&gt; (llama.cpp), CPU, 2048 context. The prompt demands strict JSON (missions with time, difficulty, safety notes); every output is re-validated by a rules engine (timebox fit, difficulty cap, banned-phrase safety check with negation handling). Any failure falls back to the curated library — and the UI chip always names the true source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photo suggestions — the same Qwen model&lt;/strong&gt;, describe-then-structure: no vision model on purpose (multimodal GGUFs are ~2 GB+ and experimental on low-end phones). You describe what you saw; the model returns structured JSON offline. Without a model the box honestly says "No model — not AI".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why this model:&lt;/strong&gt; an earlier build used Gemma 3n + MediaPipe and thrashed on real phones. Q4_K_M is the community-default quant (~1% perplexity cost), ~1 GB weights with a small KV cache — the phone bottleneck is memory, not speed, so the app runs CPU with a short context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No server, no account, no API keys. A Python/FastAPI + Ollama backend exists in the repo purely as a dev reference with the same prompt shapes and rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Four things a closed API could not do here:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Airplane-mode nature walks.&lt;/strong&gt; A birding trail with no signal is the whole use case — a cloud API makes the app a brick exactly where it matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location privacy by construction.&lt;/strong&gt; Photos, notes, and implicitly where-you-walked never leave the device. There is no server to trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable, inspectable behavior.&lt;/strong&gt; The model URL is a setting, not a vendor lock-in — the rules engine, prompts, and validation are all in the repo to read and change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero marginal cost.&lt;/strong&gt; A free app for beginners cannot pay per-token for every quest and every photo description.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;Session transcript available on request — happy to embed it via DevRelay before the deadline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;None — the build uses no partner technology (the earlier Gemma integration was removed for on-device performance reasons). Entering for the overall prize only.&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>flutter</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Recall: A Local-First AI Memory for Everything You’ve Saved</title>
      <dc:creator>Soham Maity</dc:creator>
      <pubDate>Sun, 04 Oct 2026 18:38:17 +0000</pubDate>
      <link>https://dev.to/spreadsheets600/recall-a-local-first-ai-memory-for-everything-youve-saved-2o9a</link>
      <guid>https://dev.to/spreadsheets600/recall-a-local-first-ai-memory-for-everything-youve-saved-2o9a</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Recall&lt;/strong&gt;, a local-first personal memory system for a friend who has a habit of saving everything: screenshots, useful webpages, PDFs, notes, images, and random files that might be useful someday.&lt;/p&gt;

&lt;p&gt;The problem was not storing those things. It was finding them again.&lt;/p&gt;

&lt;p&gt;A normal keyword search works when you remember the exact words. But memory usually does not work that way. You remember &lt;em&gt;“that screenshot about the GitHub DNS problem”&lt;/em&gt;, &lt;em&gt;“the article about FAISS”&lt;/em&gt;, or &lt;em&gt;“the image with the terminal error”&lt;/em&gt;. You remember the idea, not necessarily the exact filename or sentence.&lt;/p&gt;

&lt;p&gt;Recall turns those scattered files into searchable memories.&lt;/p&gt;

&lt;p&gt;You can ingest text, webpages, images, screenshots, PDFs, and other files, then search the collection using natural language. Images are processed with OCR and image captioning so that the information inside them can become searchable too.&lt;/p&gt;

&lt;p&gt;For example, instead of remembering a filename, you can search:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“the screenshot where GitHub could not resolve the host”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and retrieve the relevant memory.&lt;/p&gt;

&lt;p&gt;The important part is that this is &lt;strong&gt;local-first&lt;/strong&gt;. The data stays on the machine, there are no accounts or cloud APIs required, and once a memory has been processed, searching does not need a generative AI model running in the background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtu.be/1NzE_2FwT_U" rel="noopener noreferrer"&gt;https://youtu.be/1NzE_2FwT_U&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/SpreadSheets600/Recall" rel="noopener noreferrer"&gt;Recall on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository is open source and contains the backend, frontend, ingestion pipeline, search system, tests, and technical documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The core idea was to use AI where it provides the most value, rather than making an LLM responsible for every query.&lt;/p&gt;

&lt;p&gt;Recall processes content during ingestion:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;content
   ↓
metadata + content extraction
   ↓
OCR / image captioning
   ↓
searchable text
   ↓
embeddings
   ↓
SQLite + FTS5 + FAISS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For image understanding, Recall uses &lt;strong&gt;BLIP-base&lt;/strong&gt; for image captioning and &lt;strong&gt;RapidOCR&lt;/strong&gt; for OCR. For semantic retrieval, the default embedding model is &lt;strong&gt;Google's EmbeddingGemma 300M&lt;/strong&gt;, with automatic fallbacks to &lt;code&gt;all-MiniLM-L6-v2&lt;/code&gt; and finally deterministic hash vectors when model availability is limited.&lt;/p&gt;

&lt;p&gt;The backend is built with &lt;strong&gt;FastAPI and Python&lt;/strong&gt;. Memories are stored in &lt;strong&gt;SQLite&lt;/strong&gt;, with SQLite FTS5 providing BM25 lexical search and &lt;strong&gt;FAISS&lt;/strong&gt; providing vector retrieval.&lt;/p&gt;

&lt;p&gt;The final search is hybrid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BM25 search ─────┐
                 ├── Reciprocal Rank Fusion ──→ ranking
Vector search ───┘
                       + metadata
                       + recency
                       + exact-match signals
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This solves a practical problem with relying on embeddings alone.&lt;/p&gt;

&lt;p&gt;Semantic search is good at understanding that “DNS failure” and “could not resolve host” may refer to the same thing, while lexical search is much better at exact strings such as error messages, filenames, or identifiers.&lt;/p&gt;

&lt;p&gt;AI therefore does the expensive work &lt;strong&gt;once at ingestion&lt;/strong&gt;, and retrieval stays deterministic and fast.&lt;/p&gt;

&lt;p&gt;The frontend is built with &lt;strong&gt;React and Vite&lt;/strong&gt;, with the production build served by the FastAPI application.&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%2Fll109iekvhn0trvvtl8t.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%2Fll109iekvhn0trvvtl8t.png" alt="proejct architecture" width="800" height="873"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also designed the system around a few constraints that mattered for this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The database is the source of truth; the FAISS index can always be rebuilt.&lt;/li&gt;
&lt;li&gt;Ingestion is idempotent, using content hashes to avoid processing the same file repeatedly.&lt;/li&gt;
&lt;li&gt;AI failures should not make the entire ingestion pipeline fail.&lt;/li&gt;
&lt;li&gt;Search should continue working even when the optional AI models are unavailable.&lt;/li&gt;
&lt;li&gt;The application should be usable on a normal laptop rather than requiring a dedicated GPU.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For this project, open innovation is not just about avoiding an API bill.&lt;/p&gt;

&lt;p&gt;Memory is personal.&lt;/p&gt;

&lt;p&gt;A system that is indexing screenshots, documents, saved pages, and private notes should not require sending that collection to a remote service just to make it searchable.&lt;/p&gt;

&lt;p&gt;Open models made it possible to build the important parts of Recall locally: image captioning, OCR, and semantic embeddings can all happen on the user's machine.&lt;/p&gt;

&lt;p&gt;That changes the trade-off completely.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Upload my personal data to a service so an AI can understand it.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;the model becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Let the AI understand my data locally, store the useful representations, and search them without an online AI dependency.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It also makes the system easier to experiment with. Models can be swapped, compared, or removed without redesigning the entire application around one proprietary API.&lt;/p&gt;

&lt;p&gt;For a personal memory system, that control is as important as the model quality itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Google Gemma&lt;/p&gt;

&lt;p&gt;Recall uses Google's EmbeddingGemma 300M as its primary semantic embedding model.&lt;/p&gt;

&lt;p&gt;EmbeddingGemma converts memories into vector representations that allow Recall to retrieve content based on meaning rather than exact keywords. This is particularly important for personal memories because users often remember the context of something without remembering the exact words contained in it.&lt;/p&gt;

&lt;p&gt;For example, a user can search for:&lt;/p&gt;

&lt;p&gt;“the screenshot where GitHub couldn't resolve the host”&lt;/p&gt;

&lt;p&gt;even if the original screenshot contains an error such as:&lt;/p&gt;

&lt;p&gt;“fatal: unable to access... Could not resolve host: github.com”&lt;/p&gt;

&lt;p&gt;EmbeddingGemma provides the semantic layer that makes this kind of retrieval possible.&lt;/p&gt;

&lt;p&gt;The model runs locally, so the user's personal memories do not need to be sent to a remote embedding API. Recall stores the generated embeddings locally and uses FAISS for vector retrieval.&lt;/p&gt;

&lt;p&gt;I chose EmbeddingGemma because it provides a strong semantic representation while remaining practical for a local-first application. It also supports longer input than the lightweight embedding models I initially considered, which is useful when memories contain documents or substantial extracted text.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
