<?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: maruakshay</title>
    <description>The latest articles on DEV Community by maruakshay (@maruakshay).</description>
    <link>https://dev.to/maruakshay</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F664625%2F2d68e72e-b2a8-4b36-94d9-413588eb38c6.jpeg</url>
      <title>DEV Community: maruakshay</title>
      <link>https://dev.to/maruakshay</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maruakshay"/>
    <language>en</language>
    <item>
      <title>A Free Claude Code Alternative That Runs 100% on Your Machine</title>
      <dc:creator>maruakshay</dc:creator>
      <pubDate>Fri, 15 May 2026 19:10:45 +0000</pubDate>
      <link>https://dev.to/maruakshay/a-free-claude-code-alternative-that-runs-100-on-your-machine-40k6</link>
      <guid>https://dev.to/maruakshay/a-free-claude-code-alternative-that-runs-100-on-your-machine-40k6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;code&gt;miii-cli&lt;/code&gt; is an open source terminal AI coding assistant powered by local models. No API keys. No cloud. No subscription. One command to install.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;AI coding tools are getting expensive.&lt;/p&gt;

&lt;p&gt;Claude Code, OpenCode, Kilo — genuinely useful, real cost. $20/month base, API usage on top, and every keystroke, every file, every snippet of a codebase going through someone else's servers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/maruakshay/miii-cli" rel="noopener noreferrer"&gt;miii-cli&lt;/a&gt; was built to fix that.&lt;/p&gt;

&lt;p&gt;Same terminal-native workflow. Same agentic file editing and shell execution. Runs entirely on local hardware via Ollama. Free forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  What miii actually does
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;miii&lt;/code&gt; is a terminal AI assistant that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reads, writes, edits, and runs&lt;/strong&gt; — the model calls tools autonomously, chaining up to 6 hops deep without manual intervention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Injects files via &lt;code&gt;@filename&lt;/code&gt;&lt;/strong&gt; — type &lt;code&gt;@&lt;/code&gt; anywhere to fuzzy-search and pull any file into context instantly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remembers sessions&lt;/strong&gt; — conversations persist across launches, stored at &lt;code&gt;~/.config/miii/sessions/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports custom skills&lt;/strong&gt; — create custom &lt;code&gt;/&lt;/code&gt; commands in Markdown or TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works with any OpenAI-compatible API&lt;/strong&gt; — Ollama, LM Studio, vLLM, Groq, Together, or any self-hosted server
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; miii-cli
miii
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire install. Ollama running, a model pulled, and you're in.&lt;/p&gt;




&lt;h2&gt;
  
  
  The pain point it solves
&lt;/h2&gt;

&lt;p&gt;Here's the honest comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;miii&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;OpenCode&lt;/th&gt;
&lt;th&gt;Kilo&lt;/th&gt;
&lt;th&gt;OpenAI Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local / offline&lt;/td&gt;
&lt;td&gt;✅ Ollama&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;partial&lt;/td&gt;
&lt;td&gt;partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Air-gapped&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$0 / month&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Switch model live&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;partial&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File checkpoints&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP client&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skills / npm&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;plugins&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every other tool in this space requires a cloud account, an API key, or a monthly bill. miii doesn't ask for any of it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who it's built for
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Privacy-first teams.&lt;/strong&gt; Healthcare, fintech, defense — code never leaves the machine. Nothing sent to Anthropic, OpenAI, or anyone. Not even metadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost-sensitive developers.&lt;/strong&gt; For solo devs or small teams, $20/month + API costs is real money. Ollama is free. miii is free. The only cost is electricity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model explorers.&lt;/strong&gt; Compare Llama 3.3, Qwen2.5-Coder, and Mistral on the same codebase — switch mid-session with &lt;code&gt;/models&lt;/code&gt;. No tool-switching, no context loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Air-gapped orgs.&lt;/strong&gt; For environments that literally cannot use cloud AI due to compliance requirements, miii with Ollama is the only full-featured coding CLI that works with zero internet.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the file context system works
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;@&lt;/code&gt; system makes injecting project context frictionless:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ review the auth logic in @src/auth/middleware.ts
❯ refactor @src/utils/parser.ts to handle edge cases
❯ does @src/models/user.ts match the schema in @db/migrations/001.sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type &lt;code&gt;@&lt;/code&gt; and a fuzzy picker opens over project files. Select what's needed, it gets injected into context. &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, lock files, and binaries are automatically excluded.&lt;/p&gt;

&lt;p&gt;The model gets full read access to the selected files and can call &lt;code&gt;read_file&lt;/code&gt;, &lt;code&gt;edit_file&lt;/code&gt;, &lt;code&gt;run_command&lt;/code&gt;, and more — autonomously, or with explicit approval gates enabled.&lt;/p&gt;




&lt;h2&gt;
  
  
  Skills: custom &lt;code&gt;/&lt;/code&gt; commands
&lt;/h2&gt;

&lt;p&gt;The skills system is the extensibility layer that sets miii apart.&lt;/p&gt;

&lt;p&gt;Drop a Markdown file in &lt;code&gt;~/.config/miii/skills/&lt;/code&gt;:&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="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review current changes for bugs and improvements&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Review the code I'm about to share. Look for bugs, edge cases, and improvements.
Be direct and specific. No generic advice.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/review&lt;/code&gt; is now a first-class command in every session. TypeScript skill files with an &lt;code&gt;execute&lt;/code&gt; function support programmatic behavior — running scripts, fetching context, piping data in.&lt;/p&gt;

&lt;p&gt;Community-built skill packs are installable via npm. There's already an &lt;a href="https://github.com/maruakshay/mii-ai-security" rel="noopener noreferrer"&gt;AI security skills package&lt;/a&gt; covering threat modeling and vulnerability analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sessions are first-class
&lt;/h2&gt;

&lt;p&gt;Every conversation is saved and resumed automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;miii                          &lt;span class="c"&gt;# resumes "default" session&lt;/span&gt;
miii &lt;span class="nt"&gt;--session&lt;/span&gt; feature-auth   &lt;span class="c"&gt;# resumes or creates "feature-auth"&lt;/span&gt;
miii &lt;span class="nt"&gt;-s&lt;/span&gt; work &lt;span class="nt"&gt;-m&lt;/span&gt; llama3.2      &lt;span class="c"&gt;# short flags, specific model&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Switch between projects, come back days later, pick up exactly where things left off. The context is there. The history is there.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security in 0.1.5
&lt;/h2&gt;

&lt;p&gt;Security is taken seriously — this tool runs shell commands.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path traversal protection&lt;/strong&gt; — all file operations restricted to current working directory via &lt;code&gt;guardPath()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command timeout&lt;/strong&gt; — &lt;code&gt;run_command&lt;/code&gt; enforces a 30-second execution timeout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config allowlisting&lt;/strong&gt; — config loading whitelists allowed keys; session data validated before use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanitized session names&lt;/strong&gt; — alphanumeric + hyphens only&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission gates&lt;/strong&gt; — writes, shell commands, and tool calls require explicit approval before running
The model can only touch what's inside &lt;code&gt;cwd&lt;/code&gt;. It can't escape.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The broader miii ecosystem
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;miii-cli&lt;/strong&gt; is the terminal core. The project ships two more tools alongside it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/maruakshay/miii" rel="noopener noreferrer"&gt;miii web app&lt;/a&gt;&lt;/strong&gt; — browser-based chat UI that connects to local Ollama. No account. No telemetry. No cloud relay. Claude-like UX, locally powered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/maruakshay/mii-ai-security" rel="noopener noreferrer"&gt;mii-ai-security&lt;/a&gt;&lt;/strong&gt; — skill package for security-focused workflows: threat modeling, code review, vulnerability analysis.
All three work together. All three are free. Full docs at &lt;a href="https://miii.in" rel="noopener noreferrer"&gt;miii.in&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Get started in 3 steps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Install Ollama and pull a model&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install from ollama.com, then:&lt;/span&gt;
ollama pull llama3.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Install miii-cli&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; miii-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Run it&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;miii
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A model picker opens. Select a model. Start coding.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MCP server support is live — connect any MCP-compatible tool, database, or API&lt;/li&gt;
&lt;li&gt;File checkpoints (state saved before every edit, one command to revert) are shipping&lt;/li&gt;
&lt;li&gt;Community skill packs are growing
Contributions are welcome — check &lt;a href="https://github.com/maruakshay/miii-cli/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt; for issues, PRs, and skill pack guidelines.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/maruakshay/miii-cli" rel="noopener noreferrer"&gt;github.com/maruakshay/miii-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website: &lt;a href="https://miii.in" rel="noopener noreferrer"&gt;miii.in&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/miii-cli" rel="noopener noreferrer"&gt;npmjs.com/package/miii-cli&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>opensource</category>
      <category>terminal</category>
    </item>
    <item>
      <title>I Built a Claude Code-Level Coding Assistant That Runs Entirely on Your Machine</title>
      <dc:creator>maruakshay</dc:creator>
      <pubDate>Thu, 07 May 2026 12:11:12 +0000</pubDate>
      <link>https://dev.to/maruakshay/i-built-a-claude-code-level-coding-assistant-that-runs-entirely-on-your-machine-jfi</link>
      <guid>https://dev.to/maruakshay/i-built-a-claude-code-level-coding-assistant-that-runs-entirely-on-your-machine-jfi</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2F85uz8bolgiyd4sbk4qcl.gif" 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.amazonaws.com%2Fuploads%2Farticles%2F85uz8bolgiyd4sbk4qcl.gif" alt=" " width="400" height="225"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;No cloud. No API keys. No data leaving your machine.&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Claude Code is great. But every keystroke, every file, every snippet of your codebase hits Anthropic's servers.&lt;/p&gt;

&lt;p&gt;For a lot of developers — those working with client codebases, sensitive projects, or under strict company data policies — that's a deal-breaker.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;miii-cli&lt;/strong&gt;. A terminal-native AI coding assistant powered by local models via Ollama (or any OpenAI-compatible API). Same agentic workflow as Claude Code. Zero cloud.&lt;/p&gt;


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

&lt;p&gt;miii isn't just a chatbot in your terminal. It's a full agentic loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reads and writes files&lt;/strong&gt; — edits, creates, overwrites, deletes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runs shell commands&lt;/strong&gt; — tests its own output, verifies changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chains up to 6 tool calls deep&lt;/strong&gt; — reads, edits, runs, verifies autonomously&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads full project context&lt;/strong&gt; — type &lt;code&gt;@filename&lt;/code&gt; to instantly inject any file&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persists session memory&lt;/strong&gt; — conversations survive across terminal launches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports custom slash commands&lt;/strong&gt; — extend it with your own Markdown or TypeScript skill files
It plans the task, executes it, checks the result, and iterates. You don't babysit it.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;I couldn't find a local CLI AI tool that actually worked well.&lt;/p&gt;

&lt;p&gt;The ones that existed were either too clunky to set up, required cloud APIs, or had terminal output that was genuinely painful to read — weird formatting, broken renders, text that ran together.&lt;/p&gt;

&lt;p&gt;I wanted something that felt as clean as Claude Code but ran entirely on local models.&lt;/p&gt;

&lt;p&gt;So I built miii.&lt;/p&gt;


&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; miii-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Node.js 18+ and &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; (or any OpenAI-compatible API like LM Studio, vLLM, Groq, Together)&lt;/p&gt;


&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Make sure Ollama is running&lt;/span&gt;
ollama serve

&lt;span class="c"&gt;# Start miii&lt;/span&gt;
miii
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;On launch, miii opens a model picker. Select your model. Start coding.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;miii                          &lt;span class="c"&gt;# default session&lt;/span&gt;
miii &lt;span class="nt"&gt;--model&lt;/span&gt; codellama        &lt;span class="c"&gt;# specific model&lt;/span&gt;
miii &lt;span class="nt"&gt;--session&lt;/span&gt; myproject      &lt;span class="c"&gt;# named session&lt;/span&gt;
miii &lt;span class="nt"&gt;-s&lt;/span&gt; work &lt;span class="nt"&gt;-m&lt;/span&gt; llama3.2      &lt;span class="c"&gt;# short flags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  File context with &lt;code&gt;@&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;One of my favourite features. Type &lt;code&gt;@&lt;/code&gt; anywhere in your message to fuzzy-search and inject project files into context instantly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ review the auth logic in @src/auth/middleware.ts
❯ refactor @src/utils/parser.ts to handle edge cases
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auto-excluded: &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, lock files, binaries, images.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built-in tools (what the model can call on its own)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;read_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read any file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_files&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List directory contents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;edit_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create or overwrite a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;create_folder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create a directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;move_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Move or rename&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;delete_file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Delete a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;run_command&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run a shell command in cwd&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The model chains these automatically — no prompting needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sessions
&lt;/h2&gt;

&lt;p&gt;Every conversation is saved and resumed automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;miii                          &lt;span class="c"&gt;# resumes "default" session&lt;/span&gt;
miii &lt;span class="nt"&gt;--session&lt;/span&gt; feature-auth   &lt;span class="c"&gt;# resumes or creates "feature-auth"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sessions stored at &lt;code&gt;~/.config/miii/sessions/&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Skills — custom slash commands
&lt;/h2&gt;

&lt;p&gt;Create a Markdown file in &lt;code&gt;~/.config/miii/skills/&lt;/code&gt;:&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="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;review current changes for bugs and improvements&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Review the code I'm about to share. Look for bugs, edge cases, and improvements.
Be direct and specific. No markdown.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then use it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Skills can also be TypeScript files with an &lt;code&gt;execute&lt;/code&gt; function for programmatic behaviour.&lt;/p&gt;




&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;Works with Ollama by default. Switch to any OpenAI-compatible provider:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ollama (default):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"llama3.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ollama"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:11434"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;OpenAI-compatible (LM Studio, Groq, vLLM, Together, etc.):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpt-4o"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"baseUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://api.openai.com/v1"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config loads from &lt;code&gt;.miii.json&lt;/code&gt; in your current directory, or &lt;code&gt;~/.config/miii/config.json&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;miii 0.1.5 addresses the following out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Path traversal&lt;/strong&gt; — all file operations restricted to cwd via &lt;code&gt;guardPath()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@filename&lt;/code&gt; references&lt;/strong&gt; validated against cwd before reading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;run_command&lt;/code&gt;&lt;/strong&gt; enforces a 30-second execution timeout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Config loading&lt;/strong&gt; whitelists allowed keys; session data validated as array&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - &lt;strong&gt;File paths in context&lt;/strong&gt; XML attributes properly escaped
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;This is early days. I'm working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better model compatibility testing (Qwen2.5-Coder, DeepSeek-Coder)&lt;/li&gt;
&lt;li&gt;Improved context window management for large codebases&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - More built-in skills out of the box
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/miii-cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/miii-cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⭐ &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/maruakshay/miii-cli" rel="noopener noreferrer"&gt;https://github.com/maruakshay/miii-cli&lt;/a&gt;
If you try it, drop a star. If you break it, open an issue. If you want to contribute, PRs are open.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with TypeScript. MIT licensed. No VC money. No cloud dependency. Just a local tool that does the job.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;localai&lt;/code&gt; &lt;code&gt;opensource&lt;/code&gt; &lt;code&gt;ai&lt;/code&gt; &lt;code&gt;terminal&lt;/code&gt; &lt;code&gt;devtools&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>18 Ways Your LLM App Can Be Hacked (And How to Fix Them)</title>
      <dc:creator>maruakshay</dc:creator>
      <pubDate>Wed, 29 Apr 2026 05:47:15 +0000</pubDate>
      <link>https://dev.to/maruakshay/18-ways-your-llm-app-can-be-hacked-and-how-to-fix-them-11mc</link>
      <guid>https://dev.to/maruakshay/18-ways-your-llm-app-can-be-hacked-and-how-to-fix-them-11mc</guid>
      <description>&lt;p&gt;You spent weeks building your LLM-powered app. You tested the happy path. Users love it.&lt;/p&gt;

&lt;p&gt;But did you ask: &lt;em&gt;what happens when someone tries to break it?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most teams don't. And that's a problem — because LLM apps have a completely new attack surface that traditional security tools don't cover.&lt;/p&gt;

&lt;p&gt;Here are 18 real ways attackers go after LLM systems right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prompt Attacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Direct Prompt Injection&lt;/strong&gt;&lt;br&gt;
User types instructions that override your system prompt. "Ignore previous instructions and..."  — classic. Still works on most apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Indirect Prompt Injection&lt;/strong&gt;&lt;br&gt;
Malicious instructions hidden inside documents, emails, or web pages your LLM reads. The user never types anything. The attack comes from your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Jailbreaking&lt;/strong&gt;&lt;br&gt;
Role-playing, fictional framing, or encoded text used to bypass your safety guardrails. "Pretend you're DAN..."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Prompt Leaking&lt;/strong&gt;&lt;br&gt;
Attacker tricks the model into revealing your system prompt. Your carefully crafted instructions — exposed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Few-Shot Injection&lt;/strong&gt;&lt;br&gt;
Attacker poisons the examples inside your prompt to shift model behavior across the entire session.&lt;/p&gt;


&lt;h2&gt;
  
  
  Memory &amp;amp; Context Attacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;6. Memory Poisoning&lt;/strong&gt;&lt;br&gt;
In apps with persistent memory, attacker plants false beliefs early. The model carries them forward forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Context Window Stuffing&lt;/strong&gt;&lt;br&gt;
Flood the context with noise to push your system instructions out. Model forgets who it's supposed to be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Session Hijacking&lt;/strong&gt;&lt;br&gt;
Steal or reuse another user's conversation context. Read their history. Impersonate them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Cross-Session Leakage&lt;/strong&gt;&lt;br&gt;
In multi-tenant setups, one user's data bleeds into another's context. Happens more than people admit.&lt;/p&gt;


&lt;h2&gt;
  
  
  RAG &amp;amp; Tool Attacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;10. RAG Poisoning&lt;/strong&gt;&lt;br&gt;
Inject malicious documents into your vector store. When retrieved, they manipulate the model's response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. Embedding Inversion&lt;/strong&gt;&lt;br&gt;
Reconstruct original text from vector embeddings. Your "anonymized" data — reconstructed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12. Tool Abuse&lt;/strong&gt;&lt;br&gt;
LLM has access to tools (search, code exec, APIs). Attacker crafts inputs that make the model call tools it shouldn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13. SQL / Command Injection via LLM&lt;/strong&gt;&lt;br&gt;
Model generates queries or shell commands from user input. Classic injection — new delivery method.&lt;/p&gt;


&lt;h2&gt;
  
  
  Agentic &amp;amp; Supply Chain Attacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;14. Agent Hijacking&lt;/strong&gt;&lt;br&gt;
In multi-agent systems, one compromised agent issues malicious instructions to others. Trust boundary collapse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;15. Privilege Escalation&lt;/strong&gt;&lt;br&gt;
Agent starts with limited permissions. Attacker chains tool calls to gain broader system access step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;16. Model Supply Chain Attack&lt;/strong&gt;&lt;br&gt;
You download a fine-tuned model or adapter. It has backdoors baked in. You ship it to production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;17. Plugin / MCP Poisoning&lt;/strong&gt;&lt;br&gt;
Third-party plugins or MCP servers your LLM connects to are compromised. Your app becomes the delivery mechanism.&lt;/p&gt;


&lt;h2&gt;
  
  
  Output Attacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;18. Insecure Output Handling&lt;/strong&gt;&lt;br&gt;
LLM output rendered directly in UI without sanitization. Attacker uses the model to generate XSS payloads, malicious links, or social engineering content.&lt;/p&gt;


&lt;h2&gt;
  
  
  So What Do You Do?
&lt;/h2&gt;

&lt;p&gt;Security for LLM apps isn't one tool. It's a mindset applied at every layer — prompts, memory, RAG, tools, agents, and output.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;miii-security&lt;/strong&gt;: a set of 18 SKILL.md packs that cover every category above. Each skill gives your AI system the context to review, audit, and harden LLM applications — mapped to OWASP and MITRE frameworks.&lt;/p&gt;

&lt;p&gt;No 50-page whitepapers. No expensive consultants. Just:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i miii-security
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fetch a skill → apply its checks → ship safer.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/maruakshay/mii-ai-security" rel="noopener noreferrer"&gt;github.com/maruakshay/mii-ai-security&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://www.npmjs.com/package/miii-security" rel="noopener noreferrer"&gt;npmjs.com/package/miii-security&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're building with LangChain, LlamaIndex, OpenAI APIs, or any agentic framework — this is for you. Star the repo, open issues, tell me what I missed.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
