<?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: Nayim Imrit</title>
    <description>The latest articles on DEV Community by Nayim Imrit (@naim_im_d327582a887633a6e).</description>
    <link>https://dev.to/naim_im_d327582a887633a6e</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%2F4047758%2F51104c1d-3fb5-4765-82b9-6fe0ba07bf0b.jpg</url>
      <title>DEV Community: Nayim Imrit</title>
      <link>https://dev.to/naim_im_d327582a887633a6e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naim_im_d327582a887633a6e"/>
    <language>en</language>
    <item>
      <title>How I Cut LLM Token Usage with OKF, CLAUDE.md, and Skills</title>
      <dc:creator>Nayim Imrit</dc:creator>
      <pubDate>Sun, 16 Aug 2026 06:35:00 +0000</pubDate>
      <link>https://dev.to/naim_im_d327582a887633a6e/stop-making-your-ai-re-read-your-codebase-every-session-36eh</link>
      <guid>https://dev.to/naim_im_d327582a887633a6e/stop-making-your-ai-re-read-your-codebase-every-session-36eh</guid>
      <description>&lt;p&gt;&lt;strong&gt;Every time you ask an AI coding assistant a question, it often starts from scratch.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Where is authentication implemented?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Who calls &lt;code&gt;UserService&lt;/code&gt;?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"How does this API flow work?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of remembering your architecture, the model crawls dozens of files again. That means more tokens, higher cost, slower responses, and more opportunities for hallucinations.&lt;/p&gt;

&lt;p&gt;After experimenting with AI-assisted development, I found that the biggest optimization isn't choosing a different model --- it's changing &lt;strong&gt;what you send&lt;/strong&gt; to the model.&lt;/p&gt;

&lt;p&gt;This article covers a layered workflow for making AI agents dramatically more efficient using OKF, persistent project memory, on-demand skills, and token compression.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why token optimization matters
&lt;/h2&gt;

&lt;p&gt;LLMs don't read code the way humans do. Everything becomes tokens processed through transformer layers.&lt;/p&gt;

&lt;p&gt;Every unnecessary file, log, or repeated explanation increases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💰 Cost (for paid APIs)&lt;/li&gt;
&lt;li&gt;⏱️ Latency&lt;/li&gt;
&lt;li&gt;🧠 Context window usage&lt;/li&gt;
&lt;li&gt;❌ Risk of losing important information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to provide &lt;em&gt;less&lt;/em&gt; context. &lt;strong&gt;It's to provide better structured context.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 1: Replace raw code with structured knowledge
&lt;/h2&gt;

&lt;p&gt;The biggest improvement comes from avoiding repeated file reads entirely.&lt;/p&gt;

&lt;p&gt;Instead of feeding an LLM your repository every session, generate a knowledge bundle once and let the agent query that instead. This is the core idea behind &lt;strong&gt;OKF (Optimised Knowledge Format)&lt;/strong&gt;. It extracts your project's architecture --- classes, functions, APIs, relationships, and modules --- into structured Markdown that both humans and AI agents can navigate efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional workflow:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
│
▼
Read 40 files
│
▼
Understand architecture
│
▼
Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;OKF workflow:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
│
▼
Read knowledge bundle
│
▼
Jump directly to implementation
│
▼
Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference is simple:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Without OKF&lt;/th&gt;
&lt;th&gt;With OKF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Re-reads source files&lt;/td&gt;
&lt;td&gt;Queries structured concepts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large token usage&lt;/td&gt;
&lt;td&gt;Small, focused context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slower reasoning&lt;/td&gt;
&lt;td&gt;Faster navigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture rediscovered every session&lt;/td&gt;
&lt;td&gt;Architecture indexed once&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Meet OKF Generator
&lt;/h3&gt;

&lt;p&gt;The easiest way to generate these knowledge bundles is with &lt;strong&gt;OKF Generator&lt;/strong&gt;, an open-source CLI that scans a repository and produces an OKF bundle using static analysis --- no LLM required. It supports incremental updates, agent integrations, and even a zero-LLM workflow where you can generate and query bundles entirely offline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/UmairBaig8/okf-generator" rel="noopener noreferrer"&gt;https://github.com/UmairBaig8/okf-generator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting started:&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;pip &lt;span class="nb"&gt;install &lt;/span&gt;okf-generator

&lt;span class="c"&gt;# Generate your first bundle&lt;/span&gt;
okf generate

&lt;span class="c"&gt;# Update it after new changes&lt;/span&gt;
okf update

&lt;span class="c"&gt;# Install integrations for AI agents&lt;/span&gt;
okf &lt;span class="nb"&gt;install &lt;/span&gt;all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once generated, point your agent to the bundle instead of your entire repository. The bundle is plain Markdown, version-controllable, and designed to live alongside your source code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not Just Claude: OKF Works With Any Agent
&lt;/h3&gt;

&lt;p&gt;OKF goes beyond token optimization. When onboarding developers to a large codebase, you can give any LLM the generated &lt;code&gt;okf_bundle&lt;/code&gt; and ask it to explain the project, identify key components and their relationships, and generate a &lt;strong&gt;Mermaid diagram&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This provides a quick, high-level overview of the codebase and can significantly reduce onboarding time.&lt;/p&gt;

&lt;p&gt;For this example, using a local LLM(gpt-oss20b), I asked it to analyze &lt;code&gt;C:\Code\uigen\okf_bundle&lt;/code&gt; and generate a Mermaid diagram with an explanation of the project's key components and how they interact.&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%2Foqq1ssxoqx1wt59al170.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%2Foqq1ssxoqx1wt59al170.png" alt=" " width="799" height="322"&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%2Fjv7yajs5dxa6raq1y0u3.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%2Fjv7yajs5dxa6raq1y0u3.png" alt=" " width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the components, explanations, and web flow were generated in less than 2 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 2: Give your project a memory (CLAUDE.md)
&lt;/h2&gt;

&lt;p&gt;Most developers repeatedly explain the same things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to run the project&lt;/li&gt;
&lt;li&gt;Coding conventions&lt;/li&gt;
&lt;li&gt;Folder structure&lt;/li&gt;
&lt;li&gt;Architectural decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That information belongs in &lt;strong&gt;CLAUDE.md&lt;/strong&gt;, a persistent Markdown file automatically loaded at the beginning of every session. It eliminates repeated briefings and keeps foundational project knowledge available without bloating every prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A good CLAUDE.md contains:&lt;/strong&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="gh"&gt;# Project Rules&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Use pnpm instead of npm

This project has an OKF knowledge bundle at ./okf_bundle/.
&lt;span class="p"&gt;-&lt;/span&gt; Use &lt;span class="sb"&gt;`okf lookup &amp;lt;Name&amp;gt;`&lt;/span&gt; for full concept context.
&lt;span class="p"&gt;-&lt;/span&gt; Use &lt;span class="sb"&gt;`okf lookup --type &amp;lt;Type&amp;gt;`&lt;/span&gt; to filter by type.
&lt;span class="p"&gt;-&lt;/span&gt; Read &lt;span class="sb"&gt;`SUMMARY.md`&lt;/span&gt; for the full knowledge map.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of repeating these instructions across conversations, they're loaded automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File locations:&lt;/strong&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="gh"&gt;# Project-level&lt;/span&gt;
./CLAUDE.md
./.claude/CLAUDE.md
&lt;span class="gh"&gt;# User-level&lt;/span&gt;
~/.claude/CLAUDE.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Layer 3: Load knowledge only when needed (Skills)
&lt;/h2&gt;

&lt;p&gt;Not everything deserves permanent context.&lt;/p&gt;

&lt;p&gt;Deployment guides, review checklists, compliance docs, and long API references are better stored as &lt;strong&gt;Skills&lt;/strong&gt;. Skills are reusable &lt;code&gt;SKILL.md&lt;/code&gt; files that stay out of the main context until the task requires them, keeping the default prompt lean while still making detailed workflows instantly available.&lt;/p&gt;

&lt;p&gt;Good examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/release&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/database-migration&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your default context stays small, but expertise is always one command away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File locations:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;.claude/skills/&lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;/SKILL.md
&lt;span class="gh"&gt;# or&lt;/span&gt;
~/.claude/skills/&lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;/SKILL.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Layer 4: Automate consistency with Hooks
&lt;/h2&gt;

&lt;p&gt;Hooks aren't about saving tokens directly. &lt;strong&gt;They're about preventing expensive mistakes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-format after every edit&lt;/li&gt;
&lt;li&gt;Block dangerous shell commands&lt;/li&gt;
&lt;li&gt;Notify you when an agent finishes&lt;/li&gt;
&lt;li&gt;Run linting automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since hooks fire at predefined lifecycle events, they remove repetitive instructions from your prompts entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File locations:&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="err"&gt;.claude/settings.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;~/.claude/settings.json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Keep your knowledge bundle up to date
&lt;/h2&gt;

&lt;p&gt;A stale architecture is almost as bad as no architecture.&lt;/p&gt;

&lt;p&gt;You can regenerate your OKF bundle automatically using GitHub Actions whenever someone pushes to &lt;code&gt;main&lt;/code&gt; or opens a pull request. The workflow keeps your AI context synchronized with your codebase and can even generate impact summaries for reviews.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;OKF Bundle&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;main&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;generate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pip install okf-generator&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;okf generate . okf_bundle&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your AI always understands the latest architecture.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reduce output tokens too
&lt;/h2&gt;

&lt;p&gt;Optimizing input is only half the story.&lt;/p&gt;

&lt;p&gt;Two complementary tools solve different problems:&lt;/p&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;Optimizes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OKF&lt;/td&gt;
&lt;td&gt;What the model reads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;caveman&lt;/td&gt;
&lt;td&gt;What the model writes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rtk&lt;/td&gt;
&lt;td&gt;Terminal and tool output&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If your context is filled with &lt;code&gt;git diff&lt;/code&gt;, build logs, or test output, &lt;strong&gt;rtk&lt;/strong&gt; trims that before it ever reaches the model. If your assistant tends to produce verbose explanations, &lt;strong&gt;caveman&lt;/strong&gt; keeps responses concise. Together they reduce both sides of the token equation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The complete token-efficient workflow
&lt;/h2&gt;

&lt;p&gt;Each layer removes a different source of waste:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it eliminates&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OKF&lt;/td&gt;
&lt;td&gt;Re-reading source files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLAUDE.md&lt;/td&gt;
&lt;td&gt;Repeating project briefings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skills&lt;/td&gt;
&lt;td&gt;Loading reference docs unnecessarily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hooks&lt;/td&gt;
&lt;td&gt;Repeating operational instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;caveman / rtk&lt;/td&gt;
&lt;td&gt;Verbose output and noisy logs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;The future of AI development isn't about endlessly increasing context windows. &lt;strong&gt;It's about making context intentional.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A well-structured repository gives AI assistants the same advantage it gives human developers: they spend less time searching and more time solving problems.&lt;/p&gt;

&lt;p&gt;If you're already using Claude Code, Cursor, Copilot, or another AI coding assistant, try generating an OKF bundle for your next project. You'll probably notice the difference long before you notice the token savings.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/UmairBaig8/okf-generator" rel="noopener noreferrer"&gt;OKF Generator (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rtk-ai/rtk" rel="noopener noreferrer"&gt;rtk (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juliusbrussee/caveman" rel="noopener noreferrer"&gt;caveman (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;If you've been experimenting with token optimization or AI developer workflows, I'd love to hear what's working for you in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Testing 3 Local LLMs on a CPU-Only Laptop — Here's What Actually Happened</title>
      <dc:creator>Nayim Imrit</dc:creator>
      <pubDate>Wed, 05 Aug 2026 08:29:51 +0000</pubDate>
      <link>https://dev.to/naim_im_d327582a887633a6e/testing-3-local-llms-on-a-cpu-only-laptop-heres-what-actually-happened-1fe</link>
      <guid>https://dev.to/naim_im_d327582a887633a6e/testing-3-local-llms-on-a-cpu-only-laptop-heres-what-actually-happened-1fe</guid>
      <description>&lt;p&gt;As developers, we keep hearing that powerful LLMs require expensive GPUs. I wanted to find out how far local AI could actually go on a modest machine — no cloud, no cost, no GPU.&lt;/p&gt;

&lt;p&gt;So I ran a practical experiment using &lt;strong&gt;LM Studio&lt;/strong&gt; on a &lt;strong&gt;40 GB RAM laptop without a dedicated GPU&lt;/strong&gt;, pitting three open-weight models against each other on a real coding task.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test Environment
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hardware&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard laptop&lt;/li&gt;
&lt;li&gt;40 GB RAM&lt;/li&gt;
&lt;li&gt;No dedicated GPU (CPU inference only)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LM Studio (context length: 8192 tokens)&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;100% local inference — no API calls, no internet required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Models tested&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Qwen 3 14B&lt;/li&gt;
&lt;li&gt;GPT-OSS 20B&lt;/li&gt;
&lt;li&gt;Gemma 4 26B A4B QAT&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;p&gt;Each model received the &lt;strong&gt;exact same prompt&lt;/strong&gt;: generate a complete Snake Game using only HTML, CSS, and JavaScript — no frameworks, no external libraries.&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%2Fmuqq2at61higzaiiqc48.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%2Fmuqq2at61higzaiiqc48.png" alt=" " width="719" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I evaluated each result on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⏱ Generation time&lt;/li&gt;
&lt;li&gt;🪙 Token usage&lt;/li&gt;
&lt;li&gt;🎨 Quality of the generated UI&lt;/li&gt;
&lt;li&gt;🔧 Whether manual corrections were needed&lt;/li&gt;
&lt;li&gt;🧑‍💻 Overall developer experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🟡 Qwen 3 14B
&lt;/h3&gt;

&lt;p&gt;Generation took approximately &lt;strong&gt;9 minutes&lt;/strong&gt; and produced &lt;strong&gt;3 separate files&lt;/strong&gt; (HTML, CSS, JS).&lt;/p&gt;

&lt;p&gt;After testing, the snake moved too fast. I had to send a follow-up prompt, which triggered another full 9-minute generation cycle — and only around five lines of code actually changed.&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%2F2ptagum0it56snlqwxaz.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%2F2ptagum0it56snlqwxaz.png" alt=" " width="800" height="426"&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%2Fc0s1oq5klkoyl6ct5ak4.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%2Fc0s1oq5klkoyl6ct5ak4.png" alt=" " width="164" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functional game on the second attempt&lt;/li&gt;
&lt;li&gt;Game instructions included&lt;/li&gt;
&lt;li&gt;Low token usage (~651)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow generation&lt;/li&gt;
&lt;li&gt;Required a second iteration to fix gameplay speed&lt;/li&gt;
&lt;li&gt;Basic UI&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🟢 GPT-OSS 20B
&lt;/h3&gt;

&lt;p&gt;This was the &lt;strong&gt;biggest surprise&lt;/strong&gt; of the experiment.&lt;/p&gt;

&lt;p&gt;Generation completed in approximately &lt;strong&gt;3 minutes&lt;/strong&gt;, producing a &lt;strong&gt;single self-contained HTML file&lt;/strong&gt; with all HTML, CSS, and JS included. Token usage clocked in at ~51 — significantly lower than the other models (worth noting: token counting may differ across models, so treat this as directional rather than a strict apples-to-apples comparison).&lt;/p&gt;

&lt;p&gt;Unlike Qwen, the game worked correctly on the &lt;strong&gt;first attempt&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%2Fkc77t1sjgkcmjm39scdf.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%2Fkc77t1sjgkcmjm39scdf.png" alt=" " width="799" height="421"&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%2Fo60kb58ehjmu6jbr1m4k.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%2Fo60kb58ehjmu6jbr1m4k.png" alt=" " width="157" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fastest generation by far&lt;/li&gt;
&lt;li&gt;Lowest token usage&lt;/li&gt;
&lt;li&gt;No code changes required&lt;/li&gt;
&lt;li&gt;Score displayed during gameplay&lt;/li&gt;
&lt;li&gt;Instructions included&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI is functional but not the most polished&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔵 Gemma 4 26B A4B QAT
&lt;/h3&gt;

&lt;p&gt;Gemma required some extra setup before running correctly — specifically, adding capability entries in LM Studio's model configuration. If you're not comfortable editing model configs, budget a few extra minutes here.&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%2Fo18ay1qzb91byzfilsj3.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%2Fo18ay1qzb91byzfilsj3.png" alt=" " width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generation took approximately &lt;strong&gt;8 minutes&lt;/strong&gt; and produced &lt;strong&gt;3 files&lt;/strong&gt; (HTML, CSS, JS).&lt;/p&gt;

&lt;p&gt;The output was noticeably more polished visually than the other two models.&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%2F6fqpsgwtyi9un8e66ze7.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%2F6fqpsgwtyi9un8e66ze7.png" alt=" " width="800" height="422"&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%2Fbd1ud082slm41h0rf5q5.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%2Fbd1ud082slm41h0rf5q5.png" alt=" " width="191" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Best-looking interface of the three&lt;/li&gt;
&lt;li&gt;Well-structured project output&lt;/li&gt;
&lt;li&gt;Instructions included&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highest token usage (~2170)&lt;/li&gt;
&lt;li&gt;Slower than GPT-OSS&lt;/li&gt;
&lt;li&gt;Requires extra LM Studio configuration&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Files&lt;/th&gt;
&lt;th&gt;Tokens&lt;/th&gt;
&lt;th&gt;UI Quality&lt;/th&gt;
&lt;th&gt;Needed Changes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GPT-OSS 20B&lt;/td&gt;
&lt;td&gt;~3 min&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;~51&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 4 26B&lt;/td&gt;
&lt;td&gt;~8 min&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;~2170&lt;/td&gt;
&lt;td&gt;⭐ Best&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3 14B&lt;/td&gt;
&lt;td&gt;~9 min&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;~651&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Key Observations
&lt;/h2&gt;

&lt;p&gt;A few patterns stood out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT-OSS prioritised efficiency&lt;/strong&gt; — working code, fast, no fuss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma prioritised presentation&lt;/strong&gt; — the cleanest interface, though it needs configuration upfront.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen produced functional code&lt;/strong&gt; but needed a second pass to be usable.&lt;/li&gt;
&lt;li&gt;All three models completed a real coding task without touching the cloud.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;For my workflow, &lt;strong&gt;GPT-OSS was the clear winner&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemma produced the most polished result, but GPT-OSS delivered the best overall developer experience:&lt;/p&gt;

&lt;p&gt;✅ Fastest generation time&lt;br&gt;&lt;br&gt;
✅ Lowest token consumption&lt;br&gt;&lt;br&gt;
✅ Working solution on the first attempt&lt;br&gt;&lt;br&gt;
✅ Zero additional configuration&lt;br&gt;&lt;br&gt;
✅ Single-file output — easy to review and ship  &lt;/p&gt;

&lt;p&gt;On CPU-only hardware, these differences compound quickly. Waiting 3 minutes instead of 9 — and skipping multiple iterations — makes a real difference to your flow.&lt;/p&gt;

&lt;p&gt;More broadly, this experiment shows how capable modern open-weight models have become. Even on a mid-range laptop with no GPU, you can generate complete applications locally, maintain full privacy, and avoid cloud inference costs entirely.&lt;/p&gt;

&lt;p&gt;If you've tested local models on constrained hardware, I'd love to hear what you found — drop a comment below. 👇&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tested with LM Studio on a 40 GB RAM, CPU-only laptop. Models: GPT-OSS 20B, Qwen 3 14B, Gemma 4 26B A4B QAT.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building a PHP Wedding Planner with Omniroute: My First Experience</title>
      <dc:creator>Nayim Imrit</dc:creator>
      <pubDate>Sun, 26 Jul 2026 10:16:36 +0000</pubDate>
      <link>https://dev.to/naim_im_d327582a887633a6e/building-a-php-wedding-planner-with-omniroute-my-first-experience-jjp</link>
      <guid>https://dev.to/naim_im_d327582a887633a6e/building-a-php-wedding-planner-with-omniroute-my-first-experience-jjp</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;I tested an AI coding agent with a real university project spec — here's exactly what happened, token by token.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Artificial Intelligence is rapidly changing how we build software. Instead of spending hours scaffolding projects or writing repetitive boilerplate code, AI coding agents are now capable of planning, generating, and even refining applications with minimal input.&lt;/p&gt;

&lt;p&gt;Recently, I had the opportunity to test &lt;strong&gt;Omniroute&lt;/strong&gt; while helping a friend with her final-year university project. She already had a detailed project specification and needed a working PHP template to kick-start her development. Since I had never worked with Twig templating before, I decided this would be the perfect opportunity to see how far an AI-assisted development workflow could go.&lt;/p&gt;

&lt;p&gt;This article shares my experience — from setting up Omniroute to generating a complete project and evaluating the results.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Setting Up Omniroute
&lt;/h2&gt;

&lt;p&gt;I already had an old Claude API key with approximately &lt;strong&gt;$0.20&lt;/strong&gt; of credit remaining, so I decided to use it for this experiment.&lt;/p&gt;

&lt;p&gt;To install and configure Omniroute, I followed this setup tutorial:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CMzyOiUyEVc?start=92"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;After following the installation steps, my directory structure looked like this:&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%2Fqrquz0civ4ejx1dp8fmd.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%2Fqrquz0civ4ejx1dp8fmd.png" alt="Initial Omniroute directory" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Improving the AI's Coding Standards
&lt;/h2&gt;

&lt;p&gt;One feature I particularly liked was Omniroute's ability to customise the AI's behaviour through the &lt;code&gt;.agent&lt;/code&gt; configuration file.&lt;/p&gt;

&lt;p&gt;I configured Claude with modern development guidance so that it would generate code following current best practices instead of relying on outdated programming patterns.&lt;/p&gt;

&lt;p&gt;I used the following guide as inspiration:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://share.google/oRK9QBgjXKQogYPYA" rel="noopener noreferrer"&gt;How to Stop Your AI Coding Agent from Writing Outdated Code with Modern Web Guidance&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Although this step is optional, I would highly recommend it. Small improvements to the agent's instructions can significantly improve the quality and consistency of the generated code.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📋 Preparing the Project
&lt;/h2&gt;

&lt;p&gt;My friend had already written all of the project requirements, including both the functional and non-functional specifications.&lt;/p&gt;

&lt;p&gt;I created a new project folder called &lt;code&gt;wedmauritius&lt;/code&gt; inside my XAMPP &lt;code&gt;htdocs&lt;/code&gt; directory and copied her requirements into a file named:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;newProjectRequirement.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once everything was ready, I simply asked Claude whether it could access and understand the requirements document.&lt;/p&gt;

&lt;p&gt;Instead of immediately generating code, Omniroute &lt;strong&gt;analysed the project and asked whether I wanted it to create a development plan&lt;/strong&gt; before executing the implementation.&lt;/p&gt;

&lt;p&gt;I found this particularly impressive because it approached the project much like an experienced software developer would — understanding the requirements first before writing any code.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Generating the Application
&lt;/h2&gt;

&lt;p&gt;After confirming the execution plan, Omniroute began building the project automatically.&lt;/p&gt;

&lt;p&gt;The development process required very little manual intervention. It generated the project structure, organised the files appropriately, and implemented the requested functionality based on the specification document.&lt;/p&gt;

&lt;p&gt;The final project directory looked like this:&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%2Fj2ukt3hmtnvbf5vy9sod.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%2Fj2ukt3hmtnvbf5vy9sod.png" alt="Final project directory" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📊 Omniroute Dashboard
&lt;/h2&gt;

&lt;p&gt;When Omniroute starts, it automatically launches its web dashboard. From here you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor development sessions&lt;/li&gt;
&lt;li&gt;Configure quotas&lt;/li&gt;
&lt;li&gt;Review usage statistics&lt;/li&gt;
&lt;li&gt;Manage other application settings&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Security note:&lt;/strong&gt; The default login password is &lt;code&gt;CHANGEME&lt;/code&gt;. If you're installing Omniroute for the first time, remember to change this before using it regularly.&lt;/p&gt;
&lt;/blockquote&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%2F66y2x4670085qptz9usc.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%2F66y2x4670085qptz9usc.png" alt="Omniroute dashboard" width="696" height="406"&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%2Fwqik775928zq8iw99w5g.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%2Fwqik775928zq8iw99w5g.png" alt="Omniroute dashboard settings" width="753" height="383"&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%2F4rabdut6267kco8ibwt3.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%2F4rabdut6267kco8ibwt3.png" alt="Omniroute quota config" width="691" height="351"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ The Results
&lt;/h2&gt;

&lt;p&gt;Overall, I was pleasantly surprised by the quality of the generated application.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total tokens consumed&lt;/td&gt;
&lt;td&gt;~250,800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Additional API cost&lt;/td&gt;
&lt;td&gt;~$0.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual interventions needed&lt;/td&gt;
&lt;td&gt;1 (CSS fix)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output quality&lt;/td&gt;
&lt;td&gt;Production-ready starting point&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rather than producing a rough prototype, Omniroute generated a &lt;strong&gt;solid starting point&lt;/strong&gt; that my friend could immediately continue developing. For anyone beginning a university project or building an internal prototype, this can save many hours of initial setup work.&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%2Fl6f724d6wl9ia799eplo.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%2Fl6f724d6wl9ia799eplo.png" alt="Generated application result" width="586" height="268"&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%2Flgtjfp5x4o2wjofmm593.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%2Flgtjfp5x4o2wjofmm593.png" alt="Application pages" width="588" height="314"&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%2Ft7l13vwz0ozjiyyjjch8.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%2Ft7l13vwz0ozjiyyjjch8.png" alt="Application pages continued" width="594" height="319"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔢 Token Usage
&lt;/h2&gt;

&lt;p&gt;One of the more interesting parts of this experiment was the token consumption.&lt;/p&gt;

&lt;p&gt;Although my Claude account had virtually no remaining credit, Omniroute continued the development using available free-tier endpoints to complete the project.&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%2F2xavhkvphgg87qbkldja.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%2F2xavhkvphgg87qbkldja.png" alt="Token consumption summary" width="641" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An additional &lt;strong&gt;$0.50&lt;/strong&gt; worth of tokens was consumed during the process — remarkably cost-effective for what was generated.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Testing the Generated Website
&lt;/h2&gt;

&lt;p&gt;Once the project had been generated, I tested the application manually. Overall, everything worked remarkably well.&lt;/p&gt;

&lt;p&gt;The only issue I noticed was a small CSS problem — &lt;strong&gt;the navigation bar was not remaining sticky while scrolling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rather than fixing it manually, I simply opened another Omniroute session and asked Claude to correct the issue. It did so without any fuss, which demonstrates one of the biggest advantages of AI-assisted development: &lt;strong&gt;rapid iteration&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%2Flvapl4onpomg9rtq9zqz.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%2Flvapl4onpomg9rtq9zqz.png" alt="Generated website preview" width="718" height="416"&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%2F3awkyolt4hnz35ulr56q.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%2F3awkyolt4hnz35ulr56q.png" alt="Website pages" width="715" height="416"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💭 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This was my first real project using Omniroute, and I came away genuinely impressed.&lt;/p&gt;

&lt;p&gt;What stood out most wasn't just its ability to generate code — it was &lt;strong&gt;the workflow&lt;/strong&gt;. Omniroute analysed the requirements, proposed a development plan, and then executed that plan with very little guidance. That makes it feel less like an autocomplete tool and more like collaborating with a junior developer who can rapidly scaffold an application.&lt;/p&gt;

&lt;p&gt;Of course, AI-generated applications still require testing, code review, and refinement. Minor issues — such as the CSS bug I encountered — are to be expected. However, those are small trade-offs considering the amount of time saved during the initial development phase.&lt;/p&gt;

&lt;p&gt;If you're looking for a way to bootstrap small PHP applications, university projects, proof-of-concepts, or internal tools, &lt;strong&gt;Omniroute is worth exploring&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don't see it replacing software developers anytime soon — but it certainly makes them significantly more productive.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;Have you tried Omniroute or a similar AI coding agent? I'd love to hear about your experience in the comments below.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
