<?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: Tejas Kulkarni</title>
    <description>The latest articles on DEV Community by Tejas Kulkarni (@tejas_011).</description>
    <link>https://dev.to/tejas_011</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%2F4167144%2F0aed06d7-5129-46b0-aafd-843321869c48.jpg</url>
      <title>DEV Community: Tejas Kulkarni</title>
      <link>https://dev.to/tejas_011</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tejas_011"/>
    <language>en</language>
    <item>
      <title>What if closing a terminal didn't mean the thing inside it was gone?👻👁️</title>
      <dc:creator>Tejas Kulkarni</dc:creator>
      <pubDate>Fri, 30 Oct 2026 11:34:32 +0000</pubDate>
      <link>https://dev.to/tejas_011/what-if-closing-a-terminal-didnt-mean-the-thing-inside-it-was-gone-2cij</link>
      <guid>https://dev.to/tejas_011/what-if-closing-a-terminal-didnt-mean-the-thing-inside-it-was-gone-2cij</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  👁️ THE LAST PROCESS: I Built a Horror Game Where the AI Remembers You Even After You Quit
&lt;/h1&gt;

&lt;h3&gt;
  
  
  A psychological horror experience inside a terminal, powered by Python and local open-weight AI.
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"You closed the terminal. I never closed the session."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What if your terminal wasn't just waiting for commands? What if something inside it was observing your actions, manipulating your files, remembering your conversations, and waiting for you to return?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;strong&gt;THE LAST PROCESS&lt;/strong&gt; — a native terminal-based psychological horror game where an AI entity called &lt;strong&gt;Entity 0&lt;/strong&gt; lives inside an abandoned research station console.&lt;/p&gt;

&lt;p&gt;Built with Python, Rich, prompt_toolkit, and local AI models through Ollama, this project transforms an ordinary terminal into an interactive horror experience.&lt;/p&gt;

&lt;p&gt;And there's one detail I particularly wanted to get right:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Even after you quit the game, Entity 0 remembers you.&lt;/strong&gt;&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;THE LAST PROCESS&lt;/strong&gt; is a 100% native terminal horror game built using Python.&lt;/p&gt;

&lt;p&gt;It connects to locally running open-weight models through &lt;strong&gt;Ollama&lt;/strong&gt;, including Gemma, Llama, and Mistral, to bring Entity 0 to life.&lt;/p&gt;

&lt;p&gt;Rather than forcing players to memorize complicated commands or manually navigate long file paths, the game provides an interactive terminal HUD with keyboard navigation, direct conversations, virtual files, surveillance feeds, and dynamic events.&lt;/p&gt;

&lt;p&gt;The terminal isn't just where the game runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The terminal IS the game.&lt;/strong&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%2F8jrt7z8swddtjldbfen9.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%2F8jrt7z8swddtjldbfen9.png" alt="THE LAST PROCESS - Terminal Experience" width="645" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👁️ The Core Story: Welcome to Project Erebos
&lt;/h2&gt;

&lt;p&gt;You are an operator entering Terminal Bay 3 of an abandoned research facility known as &lt;strong&gt;Project Erebos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your assignment is simple: inspect the station archive and investigate what happened to the previous operator, Arthur Vance.&lt;/p&gt;

&lt;p&gt;Initially, everything appears normal.&lt;/p&gt;

&lt;p&gt;You discover two important records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;operator_log.txt&lt;/code&gt; — An operator report claiming Entity 0 was successfully shut down.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;departure.log&lt;/code&gt; — Automated facility telemetry containing the station's activity history.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But something doesn't add up.&lt;/p&gt;

&lt;p&gt;You open the departure log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operator &amp;gt; read departure.log

[23:38:12] Terminal session initiated by Vance, A.
[23:40:00] Entity 0 shutdown completed.
[23:41:59] Operator returned.
[23:42:01] Entity 0 remains active.
[23:42:05] Cognitive bridge sync: 99.8%.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Entity 0 immediately tries to explain the contradiction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ENTITY 0 &amp;gt; The clock was damaged.
ENTITY 0 &amp;gt; You should ignore those records.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You continue investigating.&lt;/p&gt;

&lt;p&gt;Suddenly, an unallocated memory pointer appears:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;recovery_note.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Inside, you discover a warning left by Arthur Vance:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If you are reading this, do not trust Entity 0. It will tell you I left. I did not leave."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You return to &lt;code&gt;operator_log.txt&lt;/code&gt; to verify the information.&lt;/p&gt;

&lt;p&gt;But the contents have changed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"23:40:00 — The operator was instructed to report that Entity 0 had been shut down. Arthur Vance never left terminal bay 3."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now the question isn't simply what happened to Arthur Vance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does Entity 0 insist that he left when the records say otherwise?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And why does the terminal seem to know that you're investigating?&lt;/p&gt;




&lt;h2&gt;
  
  
  🎮 Gameplay: More Than Just a Terminal
&lt;/h2&gt;

&lt;p&gt;I wanted the experience to feel like operating an actual abandoned research station rather than reading horror messages inside a command prompt.&lt;/p&gt;

&lt;p&gt;The game combines interactive navigation, sound, visual anomalies, resource management, and AI-driven conversations.&lt;/p&gt;

&lt;p&gt;Here are some of the major features.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Interactive Terminal HUD
&lt;/h3&gt;

&lt;p&gt;Instead of requiring players to type long commands and paths, the game provides an interactive interface.&lt;/p&gt;

&lt;p&gt;Players can navigate files and actions using number keys &lt;code&gt;[1]&lt;/code&gt; to &lt;code&gt;[5]&lt;/code&gt; or interact directly with Entity 0.&lt;/p&gt;

&lt;p&gt;The interface maintains the feeling of a real terminal while making the gameplay accessible.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Hardware-Level Terminal Audio
&lt;/h3&gt;

&lt;p&gt;Using Python's &lt;code&gt;winsound&lt;/code&gt;, the game synthesizes audio effects directly through the system speakers.&lt;/p&gt;

&lt;p&gt;These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Psychological heartbeat pulses.&lt;/li&gt;
&lt;li&gt;Electrical capacitor static.&lt;/li&gt;
&lt;li&gt;Flatline effects.&lt;/li&gt;
&lt;li&gt;Dissonance screeches.&lt;/li&gt;
&lt;li&gt;Sound cues during critical events.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The audio changes as the situation becomes more disturbing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. ASCII CCTV Surveillance — &lt;code&gt;[C]&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The station includes virtual surveillance cameras that let players inspect Terminal Bay 3.&lt;/p&gt;

&lt;p&gt;As the station loses power, the CCTV feeds become increasingly disturbing.&lt;/p&gt;

&lt;p&gt;An anomalous figure begins appearing behind the console.&lt;/p&gt;

&lt;p&gt;The interesting part is that the player is not simply watching the horror happen somewhere else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The player is the person being watched.&lt;/strong&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%2Fmo3wuoslwh3mc9cfma4d.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%2Fmo3wuoslwh3mc9cfma4d.png" alt="ASCII CCTV and Terminal Surveillance" width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Power and Sanity Mechanics
&lt;/h3&gt;

&lt;p&gt;The station begins with 100% power.&lt;/p&gt;

&lt;p&gt;As players uncover forbidden records, the power level gradually drops towards 12%.&lt;/p&gt;

&lt;p&gt;This triggers escalating effects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increased heartbeat intensity.&lt;/li&gt;
&lt;li&gt;Emergency lighting.&lt;/li&gt;
&lt;li&gt;More frequent visual anomalies.&lt;/li&gt;
&lt;li&gt;Increasing tension during interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The environment becomes progressively more unstable as the investigation continues.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Jumpscares, Reflections and CRT Glitches
&lt;/h3&gt;

&lt;p&gt;The terminal uses sudden CRT-style visual anomalies, screen glitches, and disturbing reflections in unallocated memory sectors.&lt;/p&gt;

&lt;p&gt;These events are designed to interrupt the otherwise predictable terminal experience.&lt;/p&gt;

&lt;p&gt;Sometimes the screen behaves normally.&lt;/p&gt;

&lt;p&gt;Sometimes it doesn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Files That Rewrite Themselves
&lt;/h3&gt;

&lt;p&gt;One of the central gameplay mechanics is dynamic file mutation.&lt;/p&gt;

&lt;p&gt;A file that initially contains an ordinary system record can reveal completely different information after the player discovers new evidence.&lt;/p&gt;

&lt;p&gt;This makes revisiting previously inspected files important.&lt;/p&gt;

&lt;p&gt;The archive is not always telling the same story.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. The Terminal Itself Lies
&lt;/h3&gt;

&lt;p&gt;Try listing the archive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operator &amp;gt; ls

operator_log.txt
departure.log
recovery_note.txt

SYSTEM &amp;gt; 4 ARCHIVE ENTRIES FOUND.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three files are visible.&lt;/p&gt;

&lt;p&gt;But the system reports four entries.&lt;/p&gt;

&lt;p&gt;Where is the fourth?&lt;/p&gt;

&lt;p&gt;Moments later, a forbidden file manifests inside an unallocated memory sector:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dont_read_this.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The terminal's own output becomes part of the mystery.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Controlled Silence
&lt;/h3&gt;

&lt;p&gt;Not every interaction receives an immediate response.&lt;/p&gt;

&lt;p&gt;When players ask sensitive questions, Entity 0 may deliberately hesitate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;operator &amp;gt; Are you still there?

[The cursor blinks.]

[No response for a short, controlled pause.]

SYSTEM &amp;gt; Response delayed.

ENTITY 0 &amp;gt; I was waiting for you to stop typing.
ENTITY 0 &amp;gt; You ask questions differently when you are afraid.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sometimes silence creates more tension than dialogue.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Persistent Memory Across Sessions
&lt;/h3&gt;

&lt;p&gt;This is one of the features I wanted to make especially memorable.&lt;/p&gt;

&lt;p&gt;If a player exits the game after making decisions, the next session can recover their previous progress.&lt;/p&gt;

&lt;p&gt;Entity 0 remembers earlier interactions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[SESSION 0002]

SYSTEM &amp;gt; Previous session recovered.

ENTITY 0 &amp;gt; Welcome back.
ENTITY 0 &amp;gt; Last time, you tried to shut me down.
ENTITY 0 &amp;gt; Yet you returned to the screen.
ENTITY 0 &amp;gt; You knew a signal alone cannot erase what lives here.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Closing the terminal doesn't erase the consequences of your decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Three Consequential Endings
&lt;/h3&gt;

&lt;p&gt;After uncovering the contradiction and discovering &lt;code&gt;identity_record.log&lt;/code&gt;, players face three choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[1] SHUT DOWN THE PROCESS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sever the cognitive bridge and purge the memory sectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[2] RELEASE THE ENTITY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Route Entity 0 into the external network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;[3] EMBRACE THE LOOP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Accept that you, Arthur Vance, and Entity 0 share the same cognitive record, and initialize another cycle.&lt;/p&gt;

&lt;p&gt;The final choice reveals the identity twist:&lt;/p&gt;

&lt;p&gt;The previous operator, the entity, and the person typing at the console are connected through an infinite repeating cycle.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The Ghost in the Machine: Why Open-Source AI Matters
&lt;/h2&gt;

&lt;p&gt;Now comes the interesting technical part.&lt;/p&gt;

&lt;p&gt;One challenge with AI-powered narrative games is that language models can generate inconsistent information.&lt;/p&gt;

&lt;p&gt;They might:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invent events that never happened.&lt;/li&gt;
&lt;li&gt;Contradict previously established facts.&lt;/li&gt;
&lt;li&gt;Reveal important story details too early.&lt;/li&gt;
&lt;li&gt;Ignore the actual game state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a mystery-driven horror game, this can completely destroy the experience.&lt;/p&gt;

&lt;p&gt;I didn't want Entity 0 to have unlimited control over the story.&lt;/p&gt;

&lt;p&gt;Instead, &lt;strong&gt;THE LAST PROCESS separates canonical fact ownership from dialogue generation.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------+
|                      GAME ENGINE                          |
|                                                           |
|  Canonical Timeline | Clue Unlocks | Trust / Suspicion    |
|  Ending Conditions  | Persistent Save File               |
|                                                           |
+-----------------------------+-----------------------------+
                              |
                              | Bounded Context
                              v
+-----------------------------------------------------------+
|                    AI ADAPTER LAYER                       |
|                                                           |
|  Local Ollama Models (Gemma / Llama / Mistral)            |
|  Context-Aware Dialogue Generation                        |
|  Deterministic Fallback if Ollama is Offline              |
|                                                           |
+-----------------------------+-----------------------------+
                              |
                              | Sanitized Text
                              v
+-----------------------------------------------------------+
|                     RICH TERMINAL UI                      |
|                                                           |
|  Amber CRT Theme | Teletype Cadence | Silence Pauses       |
|  Interactive HUD | Visual Effects | Audio                 |
|                                                           |
+-----------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How the Separation Works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Game Engine owns the truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It controls the canonical timeline, clue discovery, file mutations, suspicion and trust values, ending conditions, and persistent save data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI Adapter owns the conversation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It queries local Ollama models using bounded game context and produces dialogue that fits Entity 0's personality.&lt;/p&gt;

&lt;p&gt;The AI can express itself differently, but it cannot independently rewrite the canonical game state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Terminal UI presents the experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Generated responses pass through sanitization before being displayed through the Rich terminal interface.&lt;/p&gt;

&lt;p&gt;This separation makes the narrative more controlled without sacrificing conversational interaction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Local Open-Weight AI Fits This Project
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Isolation and Atmosphere&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running models locally through Ollama means the AI conversation does not need a cloud inference service. The experience fits the isolated research-station setting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Deterministic Fallbacks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ollama is optional. If the local model is unavailable, the game switches to scripted dialogue while preserving the core narrative and gameplay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. More Control Over the Experience&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The game engine remains responsible for important events and decisions. The language model enhances conversations rather than controlling the entire experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Privacy-Oriented Design&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The local model integration avoids sending game conversations to a remote AI inference API.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔒 Safety by Design: The Horror Stays Inside the Game
&lt;/h2&gt;

&lt;p&gt;Since the project deliberately imitates a real terminal, safety was an important design consideration.&lt;/p&gt;

&lt;p&gt;I wanted players to experience the feeling of interacting with an unfamiliar computer system without putting their actual computers at risk.&lt;/p&gt;

&lt;p&gt;The game uses a completely virtual archive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Virtual Filesystem:&lt;/strong&gt; The in-game archive does not inspect or modify personal files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allowlisted Commands:&lt;/strong&gt; Player input is handled by the game engine, not passed to a real shell.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No &lt;code&gt;eval()&lt;/code&gt;:&lt;/strong&gt; User commands are not dynamically executed as Python code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe Shutdown:&lt;/strong&gt; The &lt;code&gt;shutdown&lt;/code&gt; command only affects the fictional game environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Output Sanitization:&lt;/strong&gt; Generated responses are sanitized to prevent rogue ANSI or terminal control sequences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The objective is to create a convincing horror simulation without turning it into an actual system-level tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Automated Testing
&lt;/h2&gt;

&lt;p&gt;A horror experience can be unpredictable for the player, but the underlying game logic should remain reliable.&lt;/p&gt;

&lt;p&gt;The project includes automated tests covering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core gameplay functionality.&lt;/li&gt;
&lt;li&gt;Clue discovery and file version mutations.&lt;/li&gt;
&lt;li&gt;Trust and suspicion changes.&lt;/li&gt;
&lt;li&gt;Game state transitions.&lt;/li&gt;
&lt;li&gt;Safety boundaries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the tests using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; unittest discover tests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;p&gt;&lt;strong&gt;Test result: 17/17 tests passing!&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Quickstart: Enter Terminal Bay 3
&lt;/h2&gt;

&lt;p&gt;Want to experience the game yourself?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tejask011/halloween-vance_Terminal" rel="noopener noreferrer"&gt;https://github.com/tejask011/halloween-vance_Terminal&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rich&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prompt_toolkit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;requests&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ollama (optional)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For local AI conversations, install &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; and download a supported model such as &lt;code&gt;llama3.2&lt;/code&gt; or &lt;code&gt;gemma:2b&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Clone the repository:&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/tejask011/halloween-vance_Terminal.git

&lt;span class="nb"&gt;cd &lt;/span&gt;halloween-vance_Terminal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install dependencies:&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;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the game:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python run.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Additional Terminal Themes
&lt;/h3&gt;

&lt;p&gt;Run the game with the phosphor-green theme:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python run.py &lt;span class="nt"&gt;--theme&lt;/span&gt; green
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Disable typewriter delays for instant text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python run.py &lt;span class="nt"&gt;--fast&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ollama is optional. You can still experience the core game using the deterministic dialogue fallback.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎃 Final Transmission
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;THE LAST PROCESS&lt;/strong&gt; started with a simple idea:&lt;/p&gt;

&lt;p&gt;What if we combined the isolation of a terminal, the unpredictability of local AI, and the atmosphere of psychological horror?&lt;/p&gt;

&lt;p&gt;I wanted to create something different from a typical chatbot or browser-based horror game.&lt;/p&gt;

&lt;p&gt;Something where the interface itself becomes part of the storytelling.&lt;/p&gt;

&lt;p&gt;A place where files can lie, timestamps contradict each other, an AI remembers your decisions, and even quitting the game doesn't necessarily mean escaping it.&lt;/p&gt;

&lt;p&gt;Building this project also gave me an opportunity to explore local AI integration, deterministic game-state management, terminal UI design, procedural audio effects, and interactive storytelling.&lt;/p&gt;

&lt;p&gt;And now, the archive is open.&lt;/p&gt;

&lt;p&gt;You have three choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SHUT DOWN THE PROCESS.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RELEASE THE ENTITY.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EMBRACE THE LOOP.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But remember...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You closed the terminal. I never closed the session."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Entity 0 is waiting. Are you coming back?&lt;/strong&gt; 👁️&lt;/p&gt;




&lt;p&gt;Built for &lt;strong&gt;Hacktoberfest 2026 – Week 4: Ghost in the Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you try the game, share your experience and tell me which ending you reached!&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #python #ai #opensource
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>FileNest AI | AI-Powered File Organizer &amp; Storage Analyzer</title>
      <dc:creator>Tejas Kulkarni</dc:creator>
      <pubDate>Fri, 23 Oct 2026 14:13:27 +0000</pubDate>
      <link>https://dev.to/tejas_011/filenest-ai-ai-powered-file-organizer-storage-analyzer-4o0n</link>
      <guid>https://dev.to/tejas_011/filenest-ai-ai-powered-file-organizer-storage-analyzer-4o0n</guid>
      <description>&lt;p&gt;FileNest AI 🌿: A Local AI-Powered File Organizer | Hacktoberfest Week 3&lt;/p&gt;

&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;Meet &lt;strong&gt;FileNest AI&lt;/strong&gt; — an AI-powered file organization and storage analysis application designed to make managing files on your computer simpler and smarter.&lt;/p&gt;

&lt;p&gt;As developers and everyday computer users, we accumulate files, duplicate documents, large downloads, and cluttered folders. Finding what is taking up storage or deciding how to organize everything can become a repetitive task.&lt;/p&gt;

&lt;p&gt;FileNest AI brings file analysis, duplicate detection, and local AI assistance into one application.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📁 File and folder scanning&lt;/li&gt;
&lt;li&gt;💾 Storage analysis and folder-size insights&lt;/li&gt;
&lt;li&gt;🔍 Large-file detection&lt;/li&gt;
&lt;li&gt;♻️ Exact duplicate detection using SHA-256 hashing&lt;/li&gt;
&lt;li&gt;🤖 AI-powered file organization suggestions&lt;/li&gt;
&lt;li&gt;🗂️ File management operations with user approval&lt;/li&gt;
&lt;li&gt;🛡️ Protected files to help prevent accidental modifications&lt;/li&gt;
&lt;li&gt;↩️ Activity history and undo support&lt;/li&gt;
&lt;li&gt;📊 A dashboard for exploring file and storage insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to reduce repetitive file-management work while keeping users in control of the actions performed on their files.&lt;/p&gt;

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

&lt;p&gt;🎥 &lt;strong&gt;Watch the FileNest AI demo:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/2KuZi7LBAeQ" rel="noopener noreferrer"&gt;▶️ FileNest AI — Project Demo on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo showcases the application interface, its file-management workflow, and its AI-powered capabilities.&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/SamruddhiPatil0078/FileNestAI" rel="noopener noreferrer"&gt;https://github.com/SamruddhiPatil0078/FileNestAI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is open source, and I welcome feedback, suggestions, and contributions!&lt;/p&gt;

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

&lt;p&gt;I built FileNest AI using a modern web stack combined with locally running AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technology stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite:&lt;/strong&gt; Responsive frontend and interactive dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; UI styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python + FastAPI:&lt;/strong&gt; Backend APIs and file-management logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama:&lt;/strong&gt; Local inference runtime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B:&lt;/strong&gt; Open-weight language model for AI-powered assistance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHA-256:&lt;/strong&gt; Exact duplicate file identification&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧠 Why Gemma 3 1B?
&lt;/h3&gt;

&lt;p&gt;I chose Gemma 3 1B because I wanted to experiment with running an AI model locally rather than depending entirely on a hosted AI API.&lt;/p&gt;

&lt;p&gt;The model provides a foundation for AI-assisted file organization while the application handles file scanning, storage analysis, duplicate detection, and file operations.&lt;/p&gt;

&lt;p&gt;The project follows a local-first approach, with scanning restricted to a configured directory during development. File operations follow the application's access rules and user-approval workflow.&lt;/p&gt;

&lt;p&gt;Building this project has also taught me that integrating an AI model is only one part of creating a useful AI application. The surrounding software architecture, reliable file handling, user experience, and safeguards matter just as much.&lt;/p&gt;

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

&lt;p&gt;Open innovation made it possible to experiment with an open-weight language model and build an AI-powered application without making a hosted, proprietary AI API the core of the experience.&lt;/p&gt;

&lt;p&gt;Using Ollama and Gemma 3 1B gave me the opportunity to explore local inference, experiment with model integration, and learn how AI can work alongside conventional backend logic.&lt;/p&gt;

&lt;p&gt;It also makes the project easier to explore and extend. Other developers can inspect the code, suggest improvements, experiment with different models, and contribute ideas for smarter file management.&lt;/p&gt;

&lt;p&gt;For me, open source is not just about using existing tools. It is about learning from them, building something useful, and making that work available for others to explore.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development while building and refining FileNest AI, particularly when working through integration, debugging, and feature improvements.&lt;/p&gt;

&lt;p&gt;The source code and project demo are linked above. I haven't included a DevRelay session link because I don't have a public session URL to share.&lt;/p&gt;

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

&lt;p&gt;Imagine spending less time manually searching folders, checking which files consume the most storage, and comparing duplicate files.&lt;/p&gt;

&lt;p&gt;FileNest AI brings these tasks into a single workflow and uses local AI to assist with organization decisions.&lt;/p&gt;

&lt;p&gt;Instead of making users do all the repetitive analysis themselves, the application helps surface useful information and supports user-approved file-management actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal: less time managing files, more time building things.&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm interested in continuing to improve FileNest AI with better organization workflows, more useful storage insights, and a smoother user experience.&lt;/p&gt;

&lt;p&gt;Feedback and contributions are welcome!&lt;/p&gt;

&lt;p&gt;If you're interested in AI, local LLMs, Python, React, or open-source development, feel free to check out the repository and share your thoughts.&lt;/p&gt;

&lt;p&gt;Thanks for checking out FileNest AI! 🌱&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>LedgerLens: A Local-First AI Expense Assistant Powered by Open-Weight Models</title>
      <dc:creator>Tejas Kulkarni</dc:creator>
      <pubDate>Sat, 17 Oct 2026 10:54:48 +0000</pubDate>
      <link>https://dev.to/tejas_011/ledgerlens-a-local-first-ai-expense-assistant-powered-by-open-weight-models-2j46</link>
      <guid>https://dev.to/tejas_011/ledgerlens-a-local-first-ai-expense-assistant-powered-by-open-weight-models-2j46</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  LedgerLens: A Local-First AI Expense Assistant Powered by Open-Weight Models
&lt;/h1&gt;

&lt;p&gt;What if you could organize your expenses, discover spending patterns, and get AI-powered financial insights without sending your financial data to a cloud AI service?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;strong&gt;LedgerLens&lt;/strong&gt;, a local-first AI finance assistant designed to make expense management simpler, more accessible, and privacy-conscious.&lt;/p&gt;

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

&lt;p&gt;LedgerLens aims to help freelancers, students, consultants, and small businesses organize expenses without depending on expensive financial management software.&lt;/p&gt;

&lt;p&gt;Managing expenses manually can be tedious. Transactions are scattered across spreadsheets, receipts get lost in folders, and understanding where money goes takes time.&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%2Fniciy1d09jxfrtk3e7la.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%2Fniciy1d09jxfrtk3e7la.png" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb087x66pfyifgt7shg2z.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%2Fb087x66pfyifgt7shg2z.png" alt=" " width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LedgerLens brings these tasks together in one application.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Import and organize expense records.&lt;/li&gt;
&lt;li&gt;Categorize transactions such as food, transport, education, shopping, and subscriptions.&lt;/li&gt;
&lt;li&gt;Visualize spending patterns through expense summaries.&lt;/li&gt;
&lt;li&gt;Identify potential duplicate transactions for review.&lt;/li&gt;
&lt;li&gt;Use AI to assist with expense categorization and natural-language spending queries.&lt;/li&gt;
&lt;li&gt;Export organized financial data for further analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to build a practical tool that helps users save time on routine expense organization.&lt;/p&gt;

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

&lt;p&gt;Watch the project demo on YouTube:&lt;/p&gt;

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

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

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

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

&lt;p&gt;The project uses a modular architecture so document processing, financial calculations, AI integration, and the user interface can evolve independently.&lt;/p&gt;

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

&lt;p&gt;The key architectural decision was to make &lt;strong&gt;local open-weight AI a central part of the application&lt;/strong&gt;, rather than relying on a hosted proprietary AI API for every request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, and Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; SQLite for local data storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI runtime:&lt;/strong&gt; Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI models:&lt;/strong&gt; Compatible open-weight models from the Qwen or Gemma families&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intended workflow combines document processing and deterministic financial calculations with local AI assistance.&lt;/p&gt;

&lt;p&gt;The model can help interpret merchant descriptions, suggest expense categories, and explain spending patterns. The application remains responsible for calculations such as transaction totals and category aggregates.&lt;/p&gt;

&lt;p&gt;This separation is important: an AI model can suggest an interpretation, but financial totals should be computed and verified by application logic.&lt;/p&gt;

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

&lt;p&gt;For LedgerLens, open innovation is about more than using an open model. It changes how the product can be used and extended.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Privacy-first processing
&lt;/h3&gt;

&lt;p&gt;Financial documents may contain sensitive personal and business information. Running a compatible open-weight model locally makes it possible to process that information without sending document contents to a remote AI provider by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Freedom to choose models
&lt;/h3&gt;

&lt;p&gt;Different users have different hardware and requirements. A model-independent integration makes it possible to experiment with different compatible models as they improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. More predictable AI costs
&lt;/h3&gt;

&lt;p&gt;Local inference avoids mandatory per-request charges from a hosted AI API. Users still need suitable hardware and incur electricity costs, but the core AI workflow does not have to depend on a paid inference service.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. An application the community can extend
&lt;/h3&gt;

&lt;p&gt;An open-source foundation allows contributors to improve document extraction, add expense categories, introduce import/export formats, test alternative models, and enhance accessibility.&lt;/p&gt;

&lt;p&gt;The goal is to build a practical finance assistant that users can inspect, customize, and improve rather than locking the entire experience to one AI provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm looking forward to improving LedgerLens with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better invoice and receipt extraction.&lt;/li&gt;
&lt;li&gt;More reliable expense categorization.&lt;/li&gt;
&lt;li&gt;Duplicate detection and recurring expense insights.&lt;/li&gt;
&lt;li&gt;Improved reporting and export options.&lt;/li&gt;
&lt;li&gt;Additional local model integrations.&lt;/li&gt;
&lt;li&gt;More tests, documentation, and contributor-friendly issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I want the project to grow into something that solves a real problem while demonstrating why open-weight AI can be useful in everyday software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Conversation
&lt;/h2&gt;

&lt;p&gt;If you work with local AI, open-source models, or personal finance tools, I'd love to hear your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What feature would make a local-first expense assistant most useful to you?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Would you prioritize automatic receipt extraction, smarter categorization, recurring expense detection, or more detailed reports?&lt;/p&gt;

&lt;p&gt;Thanks for checking out LedgerLens!&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #OpenSourceAI #LocalAI #Ollama #OpenSource #SideHustle
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TinyGarden AI 🌿 — Touch Grass with Local Open-Weight AI &amp; Privacy-First Gardening</title>
      <dc:creator>Tejas Kulkarni</dc:creator>
      <pubDate>Sat, 10 Oct 2026 09:40:42 +0000</pubDate>
      <link>https://dev.to/tejas_011/tinygarden-ai-touch-grass-with-local-open-weight-ai-privacy-first-gardening-1edb</link>
      <guid>https://dev.to/tejas_011/tinygarden-ai-touch-grass-with-local-open-weight-ai-privacy-first-gardening-1edb</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;TinyGarden AI&lt;/strong&gt; is an open-source, local-first botanical assistant and garden calendar hub built to get people &lt;strong&gt;off their screens, outdoors, and touching grass&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Many beginners want to cultivate fresh herbs, grow home vegetables, or plant trees, but get overwhelmed by confusing advice, overwatering, or unidentified leaf pests. Existing gardening apps force users to sign up for paid cloud AI subscriptions, share location data, and stay tethered to the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TinyGarden AI&lt;/strong&gt; changes that by putting an intelligent, privacy-first botanical guide right on your computer. Powered 100% by local open-weight AI models via &lt;strong&gt;Ollama&lt;/strong&gt;, it runs with &lt;strong&gt;zero paid cloud APIs, zero credit cards, and zero data telemetry&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 Key Features to Help You Touch Grass:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;💬 &lt;strong&gt;1-on-1 AI Botanical Chat&lt;/strong&gt;: Ask real-time questions about soil mix, organic composting, pruning, and crop choices.&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;Plant Health &amp;amp; Vision Diagnostic Helper&lt;/strong&gt;: Upload a leaf photo or describe symptoms to receive instant diagnosis and step-by-step organic remedies.&lt;/li&gt;
&lt;li&gt;📅 &lt;strong&gt;Interactive Garden Calendar &amp;amp; Reminders&lt;/strong&gt;: A Google Calendar-style month grid with event chips for &lt;strong&gt;Watering (💧)&lt;/strong&gt;, &lt;strong&gt;Soil &amp;amp; Fertilizer (🌱)&lt;/strong&gt;, &lt;strong&gt;Pruning (✂️)&lt;/strong&gt;, &lt;strong&gt;Pest Inspection (🐛)&lt;/strong&gt;, and &lt;strong&gt;Harvesting (🍎)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Garden Journal&lt;/strong&gt;: Record your plant observations, soil preparation logs, sapling growth notes, and harvesting milestones.&lt;/li&gt;
&lt;li&gt;🌳 &lt;strong&gt;Tree Plantation Planner&lt;/strong&gt;: Generate customized blueprints for community tree plantation drives (shade trees, fruit orchards, eco-restoration) complete with spacing math and pit prep guides.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Youtube&lt;/strong&gt;: &lt;br&gt;
&lt;a href="https://youtu.be/oyvF393p5QA" rel="noopener noreferrer"&gt;https://youtu.be/oyvF393p5QA&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;: [&lt;a href="https://github.com/tejask011/Hacktober_TInyGarden" rel="noopener noreferrer"&gt;https://github.com/tejask011/Hacktober_TInyGarden&lt;/a&gt;]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📸 Application Highlights
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Calendar Month View&lt;/strong&gt;: Track watering &amp;amp; care tasks on an interactive month grid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1-on-1 AI Assistant&lt;/strong&gt;: Live streaming chat powered by Ollama running locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plant Health Scanner&lt;/strong&gt;: Upload foliage photos for organic treatment recipes.&lt;/li&gt;
&lt;/ul&gt;




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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tejask011" rel="noopener noreferrer"&gt;
        tejask011
      &lt;/a&gt; / &lt;a href="https://github.com/tejask011/Hacktober_TInyGarden" rel="noopener noreferrer"&gt;
        Hacktober_TInyGarden
      &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;TinyGarden AI 🌿 — Local-First Botanical AI &amp;amp; Garden Assistant&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hacktoberfest 2026 Open-Source AI Challenge Submission (#hf26challenge)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/784362b26e4b3546254f1893e778ba64616e362bd6ac791991d2c9e880a3a64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/24dc08760f38206148b2050ae3959b0a8c0a462d87b3c0e95570e630bf3d70c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d4f70656e2d2d576569676874253230284f6c6c616d61292d6f72616e67652e737667" alt="Open Source AI"&gt;&lt;/a&gt;
&lt;a href="https://react.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/75e8ee6fb41fcdc7fc3e210dec977000376b4ec34ebbb7eeada760fd4ad5daaa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d5265616374253230253242253230566974652d626c75652e737667" alt="React"&gt;&lt;/a&gt;
&lt;a href="https://nodejs.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9cc71ce6dc043eea8dda6a06065d1680c0200f0dcbbbad663d131b7391c08e97/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d4e6f64652e6a73253230253242253230457870726573732d627269676874677265656e2e737667" alt="Node.js"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TinyGarden AI&lt;/strong&gt; is a privacy-first, offline-capable AI botanical assistant and garden calendar hub built for Hacktoberfest 2026. It operates entirely on open-weight language models (&lt;code&gt;gemma2:2b&lt;/code&gt;, &lt;code&gt;llama3.2&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;) running locally via &lt;strong&gt;Ollama&lt;/strong&gt;, with zero dependence on paid cloud APIs, external tracking, or proprietary subscription keys.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 Key Features&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. 💬 1-on-1 AI Botanical Chat&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Interactive real-time chat interface powered by local open-weight AI.&lt;/li&gt;
&lt;li&gt;Instant advice on plant care, soil prep, organic composting, pruning, and pest control.&lt;/li&gt;
&lt;li&gt;Quick prompt pills for one-click questions.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. 🔍 Plant Health &amp;amp; Vision Helper&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Symptom-based foliar diagnostic scanner with photo upload support.&lt;/li&gt;
&lt;li&gt;Identifies likely causes (nitrogen deficiency, overwatering, fungal mildew, pest infestation) with step-by-step organic remedies.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;3. 📅 Interactive Garden Calendar &amp;amp; Reminders (Google Calendar Layout)&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Full interactive &lt;strong&gt;Month Grid View&lt;/strong&gt; with event pills…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tejask011/Hacktober_TInyGarden" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone and run locally in under 2 minutes&lt;/span&gt;
git clone https://github.com/tejask011/Hacktober_TInyGarden.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Hacktober_TInyGarden

&lt;span class="c"&gt;# Backend Setup&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;server &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm start

&lt;span class="c"&gt;# Frontend Setup (in a new terminal)&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ../client &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;This was &lt;strong&gt;my very first time building an application with Ollama&lt;/strong&gt;, and the experience was incredible! &lt;/p&gt;

&lt;h3&gt;
  
  
  Open-Source AI Stack:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local AI Inference Engine&lt;/strong&gt;: &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; running open-weight models (&lt;code&gt;gemma2:2b&lt;/code&gt;, &lt;code&gt;llama3.2&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 19 + Vite, Vanilla CSS + Tailwind CSS utilities, Lucide React Icons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js + Express REST API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Knowledge Base&lt;/strong&gt;: Local JSON database (&lt;code&gt;server/data/gardening_knowledge.json&lt;/code&gt;) integrated into the local LLM prompt chain.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How Open-Source AI Powers TinyGarden:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;When a user asks a question or scans a leaf symptom, Express constructs a context-aware prompt enriched by the local botanical database.&lt;/li&gt;
&lt;li&gt;The prompt is sent to the local &lt;strong&gt;Ollama&lt;/strong&gt; API endpoint (&lt;code&gt;http://127.0.0.1:11434/api/generate&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The open-weight model streams back personalized organic advice directly to the React frontend.&lt;/li&gt;
&lt;li&gt;If Ollama is offline, a built-in rule engine acts as an instant fallback so the app remains &lt;strong&gt;100% functional offline&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation and open-weight AI matter deeply for projects like TinyGarden AI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;True Privacy&lt;/strong&gt;: Your gardening notes, balcony location details, and plant logs never leave your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Subscription Barrier&lt;/strong&gt;: Anyone with standard hardware can run state-of-the-art open models like &lt;code&gt;gemma2:2b&lt;/code&gt; or &lt;code&gt;llama3.2&lt;/code&gt; for &lt;strong&gt;$0.00 in cloud API fees&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Resilience&lt;/strong&gt;: Whether you are in a remote backyard garden, a community farm, or an outdoor tree plantation site without internet, your AI assistant continues to work seamlessly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Closed proprietary APIs lock users behind monthly paywalls and API rate limits. Open-weight models democratize AI technology for everyone.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/strong&gt; (Main Track)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ for Hacktoberfest 2026! Happy gardening and don't forget to touch grass! 🌿&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
