<?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: Aman Kumar Dewangan</title>
    <description>The latest articles on DEV Community by Aman Kumar Dewangan (@amandewatnitrr).</description>
    <link>https://dev.to/amandewatnitrr</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%2F430593%2Fdcad94fb-fefe-4104-9ae7-be99b75a8efe.jpeg</url>
      <title>DEV Community: Aman Kumar Dewangan</title>
      <link>https://dev.to/amandewatnitrr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amandewatnitrr"/>
    <language>en</language>
    <item>
      <title>Frostline: a garden planner that runs on Gemma, on your laptop, so you can touch grass</title>
      <dc:creator>Aman Kumar Dewangan</dc:creator>
      <pubDate>Tue, 06 Oct 2026 19:50:44 +0000</pubDate>
      <link>https://dev.to/amandewatnitrr/frostline-a-garden-planner-that-runs-on-gemma-on-your-laptop-so-you-can-touch-grass-96i</link>
      <guid>https://dev.to/amandewatnitrr/frostline-a-garden-planner-that-runs-on-gemma-on-your-laptop-so-you-can-touch-grass-96i</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;Frostline&lt;/strong&gt; is a small garden planner for one question: &lt;em&gt;what should I plant this week?&lt;/em&gt; It is for anyone with a patch of dirt, a balcony box or a community plot who would rather be out in it than reading about it.&lt;/p&gt;

&lt;p&gt;You enter today's date, your average last spring frost and your first fall frost. Frostline works out which sowing, indoor-starting and transplanting windows are open right now, which are closing within a week, and which open within two. A local open-weight model, &lt;strong&gt;Gemma 3 served by Ollama&lt;/strong&gt;, then writes a short coach note about those tasks and ends with one thing to do today with your hands in the soil.&lt;/p&gt;

&lt;p&gt;Then you hit &lt;strong&gt;Print field card&lt;/strong&gt;, close the laptop, and take a paper checklist outside. The screen is the shortest part of the experience, which is the point of the theme.&lt;/p&gt;

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

&lt;p&gt;There is no hosted demo, and that is deliberate: Frostline is local-first, so the model runs on your own machine rather than on a server I pay for. It takes two commands to run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma3:4b
npm start
&lt;span class="c"&gt;# open http://127.0.0.1:8787&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Enter dates like &lt;code&gt;04-30&lt;/code&gt; and &lt;code&gt;10-15&lt;/code&gt;, press &lt;strong&gt;Plan my week&lt;/strong&gt;, and you get a grouped checklist (closing soon, do now, coming up), a coach note, and a print-friendly field card. I have not recorded a video, and I have not yet taken it out into a real garden. This post doesn't claim a field report I don't have.&lt;/p&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/amandewatnitrr" rel="noopener noreferrer"&gt;
        amandewatnitrr
      &lt;/a&gt; / &lt;a href="https://github.com/amandewatnitrr/frostline" rel="noopener noreferrer"&gt;
        frostline
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first frost-date garden planner: deterministic planting windows + a coach note from Gemma via Ollama. Hacktoberfest 2026, Touch Grass.
    &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;Frostline&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What to plant this week, from your frost dates, with a coach note from an open-weight model running on your own machine. Then close the laptop and go outside.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;Hacktoberfest Open-Source AI Challenge: Week 1&lt;/a&gt; (theme: &lt;em&gt;Touch Grass&lt;/em&gt;).&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;You enter today's date, your average last spring frost and first fall frost (&lt;code&gt;MM-DD&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A small, deterministic planner (&lt;code&gt;public/js/planner.js&lt;/code&gt;) works out which sowing, indoor-starting and transplanting windows are open now, closing within a week, or opening within two weeks.&lt;/li&gt;
&lt;li&gt;The server asks a local open-weight model (&lt;strong&gt;Gemma 3 via &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;&lt;/strong&gt;) to write a short coach note about &lt;em&gt;only those tasks&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;You print the one-page &lt;strong&gt;field card&lt;/strong&gt; and take paper outside. The screen is the shortest part of the experience.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The model never decides dates. The planner does, so a small model can't hallucinate a planting window. The…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/amandewatnitrr/frostline" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;MIT licensed. No npm dependencies: the server is &lt;code&gt;node:http&lt;/code&gt;, the client is plain ES modules, and the tests use &lt;code&gt;node:test&lt;/code&gt;.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frost dates ──► planner.js (pure, deterministic) ──► tasks
                                                    │
                          Ollama + Gemma 3 ◄────────┘
                                │
                         short coach note ──► UI + printable field card
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open model:&lt;/strong&gt; Gemma 3 (&lt;code&gt;gemma3:4b&lt;/code&gt; by default), an open-weight model, run locally through Ollama's HTTP API. &lt;code&gt;OLLAMA_MODEL&lt;/code&gt; swaps in any other model Ollama can serve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The planner decides dates, the model doesn't.&lt;/strong&gt; Each crop in &lt;code&gt;crops.js&lt;/code&gt; has windows expressed as day offsets from the last or first frost. &lt;code&gt;planner.js&lt;/code&gt; is a pure function, so a small model can never hallucinate a planting window. It also handles windows that cross New Year and southern-hemisphere calendars.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model only sees data Frostline produced.&lt;/strong&gt; The server recomputes the plan from the three inputs rather than trusting a task list from the browser, and the system prompt tells Gemma to use only the listed tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It degrades gracefully.&lt;/strong&gt; If Ollama is not running, the planner and the field card still work. Only the coach note is skipped, and the UI says why.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Honest status:&lt;/strong&gt; I built Frostline with an AI agent (Claude Code), and this post is marked as AI-assisted. The test suite for the planner, the Ollama client and the server is included, but I have &lt;strong&gt;not&lt;/strong&gt; run it yet. The crop windows are rules of thumb for temperate climates, so check them against your local extension service. If something fails when you run it, please open an issue.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Private by construction.&lt;/strong&gt; Inference runs on &lt;code&gt;localhost&lt;/code&gt; and the server binds to &lt;code&gt;127.0.0.1&lt;/code&gt;. Frostline never asks where you live. It only needs three date strings. A garden planner has no business sending your yard to someone else's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free to run.&lt;/strong&gt; No API key, no quota, no bill for asking a question about radishes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable.&lt;/strong&gt; Change the model with one environment variable and trade size for speed on whatever hardware you have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right-sized.&lt;/strong&gt; The model's job is a 90-word note, not a database of agronomy. A 4B-parameter open-weight model is plenty when the facts come from deterministic code. A closed API would have added a key, a bill and a data-sharing question to what is really a date calculation.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 3 is the model behind the coach note, run locally via Ollama.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>plain-words: a local AI that decodes official letters for a friend</title>
      <dc:creator>Aman Kumar Dewangan</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:17:46 +0000</pubDate>
      <link>https://dev.to/amandewatnitrr/plain-words-a-local-ai-that-decodes-official-letters-for-a-friend-19c4</link>
      <guid>https://dev.to/amandewatnitrr/plain-words-a-local-ai-that-decodes-official-letters-for-a-friend-19c4</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;Official letters are written to be legally precise, not readable. A tax notice, a visa request, a clinic bill: for someone reading in their second language, one missed deadline can cost real money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;plain-words&lt;/strong&gt; is a small command-line tool for a friend in that spot. Give it the text of a letter and it answers five questions in short, simple sentences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is this?&lt;/li&gt;
&lt;li&gt;What do they want from me?&lt;/li&gt;
&lt;li&gt;What are the deadlines? (only dates that appear in the letter)&lt;/li&gt;
&lt;li&gt;Is it urgent?&lt;/li&gt;
&lt;li&gt;What do the hard words mean?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It can answer in any language the model handles (&lt;code&gt;-l Hindi&lt;/code&gt;, &lt;code&gt;-l Spanish&lt;/code&gt;), and it says "unclear" instead of guessing.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull llama3.2
python3 plainwords.py examples/tax_notice.txt
&lt;span class="nb"&gt;cat &lt;/span&gt;letter.txt | python3 plainwords.py &lt;span class="nt"&gt;-l&lt;/span&gt; Hindi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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/amandewatnitrr" rel="noopener noreferrer"&gt;
        amandewatnitrr
      &lt;/a&gt; / &lt;a href="https://github.com/amandewatnitrr/plain-words" rel="noopener noreferrer"&gt;
        plain-words
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Explain official letters in plain language, locally with Ollama
    &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;plain-words&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;Built for a friend who gets official letters in a language they're still learning.
Paste the letter, get a plain-language summary: what it is, what they want, deadlines, jargon explained.&lt;/p&gt;
&lt;p&gt;Runs on an &lt;strong&gt;open-weight model through local Ollama&lt;/strong&gt;. Letters hold tax, visa, and medical details;
none of it is sent to a cloud API. Open weights are what make that possible.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Hacktoberfest Weekend Challenge: Build for a Friend.&lt;/em&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Use&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;ollama pull llama3.2
python3 plainwords.py examples/tax_notice.txt
python3 plainwords.py -l Hindi -m qwen2.5 letter.txt
cat letter.txt &lt;span class="pl-k"&gt;|&lt;/span&gt; python3 plainwords.py&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;No dependencies beyond Python 3.8+. Tests: &lt;code&gt;python3 -m unittest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Not legal advice. Always check deadlines against the original letter.&lt;/p&gt;
&lt;p&gt;MIT licensed.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/amandewatnitrr/plain-words" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Pure Python standard library, MIT licensed, unit-tested (the tests mock the model call).&lt;/p&gt;

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

&lt;p&gt;The core is one HTTP call to a local &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; server running an open-weight model (&lt;code&gt;llama3.2&lt;/code&gt; by default, swappable with &lt;code&gt;-m&lt;/code&gt;). The real work is the prompt: fixed headings, a reading-level target, and a hard rule against inventing facts or dates. Everything else is about 60 lines of glue: stdin or file input, a clear error if Ollama isn't running, and tests that mock the HTTP layer.&lt;/p&gt;

&lt;p&gt;I did not add a web UI or an account system on purpose. My friend needs to paste a letter and get an answer, not learn another app.&lt;/p&gt;

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

&lt;p&gt;These letters contain tax figures, immigration status and medical details. The people who most need help reading them are the people who should least have to upload them to a third-party API.&lt;/p&gt;

&lt;p&gt;Because the model is open-weight and runs through local inference, the letter never leaves the laptop. No API key, no per-letter cost, no terms of service that let a vendor retain a visa notice. A closed API could write the same summary, but it could not make that privacy promise, and it couldn't keep working offline. Open weights also let my friend swap in a model that is stronger in their own language, which a single hosted model wouldn't allow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;p&gt;It is not legal advice, and small local models can still misread a letter. I wrote this under a tight deadline and did not run it end to end against a live model, so treat the output quality as untested. The prompt tells the model to flag uncertainty, and the README tells readers to check deadlines against the original.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Turned a $10 USB Drive Into a Portable, Offline AI Assistant — Here's How You Can Too</title>
      <dc:creator>Aman Kumar Dewangan</dc:creator>
      <pubDate>Mon, 24 Aug 2026 08:34:16 +0000</pubDate>
      <link>https://dev.to/amandewatnitrr/i-turned-a-10-usb-drive-into-a-portable-offline-ai-assistant-heres-how-you-can-too-573o</link>
      <guid>https://dev.to/amandewatnitrr/i-turned-a-10-usb-drive-into-a-portable-offline-ai-assistant-heres-how-you-can-too-573o</guid>
      <description>&lt;p&gt;&lt;em&gt;No cloud, no subscription, no internet required — how to run a quantized LLM entirely from a USB drive using llamafile.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you've ever wanted your own private AI assistant — one that runs entirely on your machine, never sends a single token to a third-party server, and works on a plane with no wifi — this guide walks through exactly how to build one. By the end, you'll have a self-contained AI environment that lives on a USB drive and boots on any Windows laptop in under a minute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Build This
&lt;/h2&gt;

&lt;p&gt;Most people assume running a capable large language model requires a GPU rig, a cloud subscription, or at minimum a beefy always-on machine. That's no longer true. Thanks to model quantization and single-binary inference engines, a 7-8B parameter model can now run comfortably on consumer laptop CPUs, packaged into a single portable executable.&lt;/p&gt;

&lt;p&gt;The benefits of a pendrive-based setup specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data sovereignty&lt;/strong&gt; — nothing you type ever leaves the local machine or network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero marginal cost&lt;/strong&gt; — no per-token API billing, ever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;True portability&lt;/strong&gt; — plug into any Windows machine, get the same AI, no installation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline capable&lt;/strong&gt; — once the files are loaded, no internet connection is needed at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A genuine systems lesson&lt;/strong&gt; — you'll understand how LLM inference, quantization, and local networking actually fit together, instead of treating it as a black box behind an API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What You'll Need
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A USB drive (16GB+, 32GB recommended)&lt;/td&gt;
&lt;td&gt;Storage for the engine and model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/Mozilla-Ocho/llamafile" rel="noopener noreferrer"&gt;llamafile&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Single-executable LLM inference engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A GGUF-format quantized model&lt;/td&gt;
&lt;td&gt;The actual language model weights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A Windows/macOS/Linux laptop&lt;/td&gt;
&lt;td&gt;Host machine to run it on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(Optional) A local chat UI like llama-ui&lt;/td&gt;
&lt;td&gt;Nicer front-end than the raw CLI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On model choice: pick any instruction-tuned open-weight model in GGUF format from Hugging Face — Qwen2.5/3, Llama 3, Mistral, and Gemma all have well-supported quantized releases. A &lt;code&gt;Q4_K_M&lt;/code&gt; quantization is the sweet spot between size and coherence for CPU inference; it roughly halves the model's footprint versus full precision with minimal quality loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up the Folder Structure on Your Drive
&lt;/h2&gt;

&lt;p&gt;Plug in your pendrive and lay out a structure like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E:\PortableAI\
├── bin\
│   └── llamafile\
│       └── llamafile.exe
├── models\
│   └── your-model-Q4_K_M.gguf
└── run-portable-ai.bat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keeping the engine and model in fixed relative paths means the launch script never has to hardcode a drive letter — it works whether the pendrive mounts as &lt;code&gt;E:&lt;/code&gt;, &lt;code&gt;F:&lt;/code&gt;, or anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Download llamafile
&lt;/h2&gt;

&lt;p&gt;Grab the latest &lt;code&gt;llamafile.exe&lt;/code&gt; release from the &lt;a href="https://github.com/Mozilla-Ocho/llamafile" rel="noopener noreferrer"&gt;official llamafile repo&lt;/a&gt;. It's a single binary — no installer, no dependencies. Drop it into &lt;code&gt;bin\llamafile\&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;llamafile bundles a llama.cpp-based inference engine and a lightweight web server into one executable, which is exactly what makes this portable: one file runs the model &lt;em&gt;and&lt;/em&gt; serves a chat interface over HTTP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Download a Quantized Model
&lt;/h2&gt;

&lt;p&gt;Head to Hugging Face and search for GGUF builds of your model of choice (e.g., "Qwen2.5-7B-Instruct-GGUF"). Download the &lt;code&gt;Q4_K_M&lt;/code&gt; variant — it typically lands in the 4–5GB range for a 7-8B model, which fits comfortably on any USB 3.0 drive alongside the engine.&lt;/p&gt;

&lt;p&gt;Place the &lt;code&gt;.gguf&lt;/code&gt; file in &lt;code&gt;models\&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Write the Launch Script
&lt;/h2&gt;

&lt;p&gt;This is the part that makes the whole thing feel like a real product instead of a CLI toy. Create &lt;code&gt;run-portable-ai.bat&lt;/code&gt; with the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;@echo &lt;span class="na"&gt;off&lt;/span&gt;
&lt;span class="nb"&gt;setlocal&lt;/span&gt; &lt;span class="na"&gt;enabledelayedexpansion&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"DIR=&lt;/span&gt;&lt;span class="vm"&gt;%~dp0&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"MODEL=&lt;/span&gt;&lt;span class="nv"&gt;%DIR%&lt;/span&gt;&lt;span class="s2"&gt;models\your-model-Q4_K_M.gguf"&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"BIN=&lt;/span&gt;&lt;span class="nv"&gt;%DIR%&lt;/span&gt;&lt;span class="s2"&gt;bin\llamafile\llamafile.exe"&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"HOST=0.0.0.0"&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"PORT=8080"&lt;/span&gt;

&lt;span class="c"&gt;rem Optional shared password for the API/UI. Leave empty for no auth.&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"APIKEY=your-secret-key-here"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;exist&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;%BIN%&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="kd"&gt;llamafile&lt;/span&gt;&lt;span class="err"&gt;.exe&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kd"&gt;found&lt;/span&gt; &lt;span class="nb"&gt;at&lt;/span&gt;: &lt;span class="nv"&gt;%BIN%&lt;/span&gt;
    &lt;span class="nb"&gt;pause&lt;/span&gt;
    &lt;span class="k"&gt;exit&lt;/span&gt; &lt;span class="na"&gt;/b &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;exist&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;%MODEL%&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="kd"&gt;Model&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kd"&gt;found&lt;/span&gt; &lt;span class="nb"&gt;at&lt;/span&gt;: &lt;span class="nv"&gt;%MODEL%&lt;/span&gt;
    &lt;span class="nb"&gt;pause&lt;/span&gt;
    &lt;span class="k"&gt;exit&lt;/span&gt; &lt;span class="na"&gt;/b &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;rem Detect this machine's LAN IP so other devices on the network can connect.&lt;/span&gt;
&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"LANIP="&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="na"&gt;/f &lt;/span&gt;&lt;span class="s2"&gt;"delims="&lt;/span&gt; &lt;span class="vm"&gt;%%a&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'powershell -NoProfile -Command "(Get-NetIPConfiguration &lt;/span&gt;&lt;span class="se"&gt;^|&lt;/span&gt;&lt;span class="s1"&gt; Where-Object {$_.IPv4DefaultGateway -ne $null -and $_.NetAdapter.Status -eq '&lt;/span&gt;&lt;span class="kd"&gt;Up&lt;/span&gt;&lt;span class="s1"&gt;'} &lt;/span&gt;&lt;span class="se"&gt;^|&lt;/span&gt;&lt;span class="s1"&gt; Select-Object -First 1 -ExpandProperty IPv4Address).IPAddress" 2&lt;/span&gt;&lt;span class="se"&gt;^&amp;gt;&lt;/span&gt;&lt;span class="s1"&gt;nul'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"LANIP=&lt;/span&gt;&lt;span class="vm"&gt;%%a&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;defined&lt;/span&gt; &lt;span class="kd"&gt;LANIP&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"LANIP=&amp;lt;this-laptop-ip&amp;gt;"&lt;/span&gt;

&lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"AUTH="&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;defined&lt;/span&gt; &lt;span class="kd"&gt;APIKEY&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="s2"&gt;"AUTH=--api-key &lt;/span&gt;&lt;span class="nv"&gt;%APIKEY%&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;==========================================================&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;  &lt;span class="kd"&gt;Portable&lt;/span&gt; &lt;span class="kd"&gt;AI&lt;/span&gt; &lt;span class="kd"&gt;server&lt;/span&gt; &lt;span class="kd"&gt;starting&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;==========================================================&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;   &lt;span class="kd"&gt;On&lt;/span&gt; &lt;span class="kd"&gt;this&lt;/span&gt; &lt;span class="kd"&gt;laptop&lt;/span&gt; : &lt;span class="kd"&gt;http&lt;/span&gt;://127.0.0.1:&lt;span class="nv"&gt;%PORT%&lt;/span&gt;/
&lt;span class="nb"&gt;echo&lt;/span&gt;   &lt;span class="kd"&gt;Other&lt;/span&gt; &lt;span class="kd"&gt;devices&lt;/span&gt;  : &lt;span class="kd"&gt;http&lt;/span&gt;://&lt;span class="nv"&gt;%LANIP%&lt;/span&gt;:&lt;span class="nv"&gt;%PORT%&lt;/span&gt;/
&lt;span class="nb"&gt;echo&lt;/span&gt;.
&lt;span class="nb"&gt;echo&lt;/span&gt;  &lt;span class="kd"&gt;Press&lt;/span&gt; &lt;span class="kd"&gt;Ctrl&lt;/span&gt;&lt;span class="na"&gt;+C &lt;/span&gt;&lt;span class="kd"&gt;to&lt;/span&gt; &lt;span class="kd"&gt;stop&lt;/span&gt; &lt;span class="kd"&gt;the&lt;/span&gt; &lt;span class="kd"&gt;server&lt;/span&gt;.
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;==========================================================&lt;/span&gt;

&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;%BIN%&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="na"&gt;-m &lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;%MODEL%&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="na"&gt;--host &lt;/span&gt;&lt;span class="nv"&gt;%HOST%&lt;/span&gt; &lt;span class="na"&gt;--port &lt;/span&gt;&lt;span class="nv"&gt;%PORT%&lt;/span&gt; &lt;span class="nv"&gt;%AUTH%&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few implementation notes worth calling out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;%~dp0&lt;/code&gt; resolves to the script's own directory&lt;/strong&gt; — this is the trick that makes the whole thing drive-letter-agnostic. It works whether Windows mounts your pendrive as &lt;code&gt;E:\&lt;/code&gt; or &lt;code&gt;G:\&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;HOST=0.0.0.0&lt;/code&gt;&lt;/strong&gt; binds the server to all network interfaces, not just localhost — this is what lets other devices on the same wifi reach it. If you only want it accessible from the host laptop itself, set this to &lt;code&gt;127.0.0.1&lt;/code&gt; instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The PowerShell one-liner&lt;/strong&gt; pulls the first "up" network adapter with a default gateway, a reliable way to grab the actual LAN-facing IP rather than a VPN or virtual adapter address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;APIKEY&lt;/code&gt;&lt;/strong&gt; gates access with a shared secret. Leave it blank for personal single-device use; set it if you're exposing the server to a shared network.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Run It
&lt;/h2&gt;

&lt;p&gt;Double-click &lt;code&gt;run-portable-ai.bat&lt;/code&gt;. On first launch:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Windows Firewall will prompt to allow &lt;code&gt;llamafile.exe&lt;/code&gt; — accept for &lt;strong&gt;Private networks&lt;/strong&gt; if you want other devices to reach it.&lt;/li&gt;
&lt;li&gt;The model loads into memory (a few seconds to a minute, depending on size and disk speed).&lt;/li&gt;
&lt;li&gt;Once ready, open &lt;code&gt;http://127.0.0.1:8080/&lt;/code&gt; in a browser — you'll see a built-in chat UI, ready to use, fully offline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To use it from your phone or another laptop on the same wifi, browse to the LAN address the script printed (e.g., &lt;code&gt;http://192.168.0.101:8080/&lt;/code&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%2Fbzbyqoazx6vokwwvph9h.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%2Fbzbyqoazx6vokwwvph9h.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6 (Optional): A Nicer Front-End
&lt;/h2&gt;

&lt;p&gt;llamafile's built-in UI is functional but basic. For a more polished chat experience, point a local UI like &lt;strong&gt;llama-ui&lt;/strong&gt; at the same endpoint — it talks to llamafile's OpenAI-compatible API (&lt;code&gt;/v1/chat/completions&lt;/code&gt;) and adds conversation history, model switching, and a settings panel for your API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Notes Before You Share This With Anyone
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Binding to &lt;code&gt;0.0.0.0&lt;/code&gt; with no API key means anyone on the same network can use your AI&lt;/strong&gt; — fine at home, not fine on public/office wifi. Set &lt;code&gt;APIKEY&lt;/code&gt; outside a fully trusted network.&lt;/li&gt;
&lt;li&gt;This setup is for &lt;strong&gt;personal, local, authorized use&lt;/strong&gt;. Don't port-forward it to the public internet without authentication and a reverse proxy — an open llamafile endpoint is an open compute resource for anyone who finds it.&lt;/li&gt;
&lt;li&gt;Quantized models can still produce inaccurate output. Treat it like any other LLM: verify anything factual before relying on it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What This Actually Demonstrates
&lt;/h2&gt;

&lt;p&gt;This isn't just a neat trick — it's a working example of the shift happening in AI right now: inference moving from centralized cloud APIs to the edge. Quantization made 8B-parameter models small enough to run on a laptop CPU; single-binary engines like llamafile made deployment trivial enough that "portable AI on a USB stick" is now a weekend project instead of a research paper.&lt;/p&gt;

&lt;p&gt;For anyone thinking about data privacy, offline-capable tooling, or just wanting to understand LLM infrastructure hands-on instead of through an API wrapper — this is one of the most direct ways to get there.&lt;/p&gt;




&lt;p&gt;Have questions about adapting this for macOS/Linux, running a larger model, or securing it for multi-user access? Drop a comment below — happy to dig in.&lt;br&gt;
Sent&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>llm</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting Over Hacktoberfest 2020</title>
      <dc:creator>Aman Kumar Dewangan</dc:creator>
      <pubDate>Tue, 03 Nov 2020 23:28:15 +0000</pubDate>
      <link>https://dev.to/amandewatnitrr/getting-over-hacktoberfest-2020-35n4</link>
      <guid>https://dev.to/amandewatnitrr/getting-over-hacktoberfest-2020-35n4</guid>
      <description>&lt;h3&gt;
  
  
  My First Open Source Contribution: Hacktoberfest 2020
&lt;/h3&gt;

&lt;p&gt;My name is Aman Kumar Dewangan, pursuing B.Tech in Electrical Engineering from the National Institute of Technology Raipur. I am a proficient IoT developer, Electronics Enthusiast, Frontend Developer, and Begineer in Cloud Engineering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Background
&lt;/h3&gt;

&lt;p&gt;I took CSE as my extra subject in Class 12&lt;sup&gt;th&lt;/sup&gt;, hence I have a pretty good knowledge of coding in C++. With the time I learnt the implementation of C++ in Arduino and choose my Area of Intrest as IoT. I further learnt Python during my initial days of college and spent a significant time understanding the concepts of Machine Learning. As time spent I decided to move to Frontend Development and still learning many things related to it. I am familiar with many programming languages like C, C++, Java, Python, JavaScript etc... (!Alert: HTML and CSS are not programming languages.).&lt;/p&gt;

&lt;h3&gt;
  
  
  Progress
&lt;/h3&gt;

&lt;p&gt;As I have recently learnt JavaScript and I realised that it is pretty much different from other languages and there is no textual content available on the Internet to explain it easily, so I wrote articles on JavaScript and how learning Javascript can actually become fun. &lt;/p&gt;

&lt;h3&gt;
  
  
  Contributions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Adding articles on JavaScript&lt;/li&gt;
&lt;li&gt;Pulse Oximeter for Calidad Healthcare&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Reflections
&lt;/h3&gt;

&lt;p&gt;It was really enjoying and informational, we get to learn from each other through interaction and learn what mistakes we possibly make while developing something. If possible, I surely wish to participate in it next year as well.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
