<?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>Using MonkeyCode 30M Free Tokens and Asked It to Build Tic-Tac-Toe — Here's What Happened</title>
      <dc:creator>Nayim Imrit</dc:creator>
      <pubDate>Sun, 30 Aug 2026 12:33:53 +0000</pubDate>
      <link>https://dev.to/naim_im_d327582a887633a6e/using-monkeycode-30m-free-tokens-and-asked-it-to-build-tic-tac-toe-heres-what-happened-3cak</link>
      <guid>https://dev.to/naim_im_d327582a887633a6e/using-monkeycode-30m-free-tokens-and-asked-it-to-build-tic-tac-toe-heres-what-happened-3cak</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I tested MonkeyCode with its daily free token quota and DeepSeek-V4-Flash by giving it a complete front-end development task, then asked it to publish the result to GitHub.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What happens when you give an AI coding agent a fairly detailed software specification and let it actually build the project instead of just generating snippets?&lt;/p&gt;

&lt;p&gt;I decided to find out.&lt;/p&gt;

&lt;p&gt;For this experiment, I used &lt;strong&gt;MonkeyCode&lt;/strong&gt; with &lt;strong&gt;DeepSeek-V4-Flash&lt;/strong&gt; and its roughly &lt;strong&gt;30M-free-token daily quota&lt;/strong&gt; available in my account.&lt;/p&gt;

&lt;p&gt;My goal was deliberately simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build a complete Tic-Tac-Toe web application from scratch, make it functional, preview it, and then push the finished project to GitHub.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The interesting part wasn't the game itself.&lt;/p&gt;

&lt;p&gt;It was watching how much work the agent could perform autonomously — from creating files and implementing the UI to testing the application and eventually publishing the project to my GitHub repository.&lt;/p&gt;




&lt;h1&gt;
  
  
  The experiment
&lt;/h1&gt;

&lt;p&gt;I wanted to test MonkeyCode with something slightly more demanding than:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a Tic-Tac-Toe game."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, I gave it an actual development specification.&lt;/p&gt;

&lt;p&gt;The requirements included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vanilla HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Modern JavaScript&lt;/li&gt;
&lt;li&gt;No frameworks&lt;/li&gt;
&lt;li&gt;No npm dependencies&lt;/li&gt;
&lt;li&gt;Responsive design&lt;/li&gt;
&lt;li&gt;Dark/light mode&lt;/li&gt;
&lt;li&gt;Player vs Player&lt;/li&gt;
&lt;li&gt;Player vs AI&lt;/li&gt;
&lt;li&gt;Easy AI&lt;/li&gt;
&lt;li&gt;Unbeatable Minimax AI&lt;/li&gt;
&lt;li&gt;Undo functionality&lt;/li&gt;
&lt;li&gt;Win detection&lt;/li&gt;
&lt;li&gt;Draw detection&lt;/li&gt;
&lt;li&gt;Persistent scoreboard&lt;/li&gt;
&lt;li&gt;&lt;code&gt;localStorage&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Animations&lt;/li&gt;
&lt;li&gt;Complete README documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I explicitly asked it to create:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
styles.css
script.js
README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The application also needed to work directly in a browser without a build process.&lt;/p&gt;

&lt;p&gt;That made it a nice little benchmark for an AI coding agent.&lt;/p&gt;




&lt;h1&gt;
  
  
  The prompt
&lt;/h1&gt;

&lt;p&gt;This is the exact prompt I used.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Act as a front-end web developer. Create a lightweight, single-page Tic-Tac-Toe web application using ONLY vanilla HTML, CSS, and modern JavaScript, and update the project's README.md file.

### Technical Guidelines &amp;amp; Rules
1. Tech Stack Constraints:
   - Use standard HTML5, CSS3, and modern Vanilla ES6+ JavaScript.
   - NO external frameworks (React, Next.js, Vue, Tailwind, etc.).
   - Keep it zero-dependency: output files must run directly in a standard web browser without build tools or npm dependencies.

2. File Structure:
   - index.html — Clean, semantic structure.
   - styles.css — Responsive design using Flexbox/Grid, CSS custom variables (for themes), smooth transitions, and a clean modern aesthetic (dark theme default).
   - script.js — Modular, cleanly formatted JavaScript handling game state, UI rendering, event listeners, and AI logic.
   - README.md — Complete documentation.

3. Core Gameplay &amp;amp; Features:
   - Game Modes:
     - Player vs. Player (Local 2-player)
     - Player vs. AI (Include a toggle for Easy AI vs. Unbeatable Minimax AI).
   - Game Mechanics:
     - Interactive 3x3 grid with hover indicators and clear click feedback.
     - Turn indicator display showing active player (X or O).
     - Move History / Undo last move functionality.
     - Automatic win detection with a visual highlight/line on winning cells.
     - Draw detection.
     - Scoreboard (X Wins, O Wins, Ties) persisted in browser localStorage.
     - Reset Board button &amp;amp; Clear Scoreboard button.
   - UI Polish:
     - Light/Dark mode toggle switch.
     - Smooth animations for marking X and O.

4. Documentation Requirement:
   - Create or completely update README.md in the project root containing:
     - Overview
     - Features
     - File Structure
     - How to Run
     - AI Logic Explained
     - Brief explanation of the Minimax decision algorithm.

Generate all files (index.html, styles.css, script.js, and README.md) with fully functional, clean, and well-commented code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I intentionally made the prompt detailed.&lt;/p&gt;

&lt;p&gt;I wanted to see whether the agent could follow a specification rather than simply produce something that looked like a Tic-Tac-Toe game.&lt;/p&gt;




&lt;h1&gt;
  
  
  What MonkeyCode did
&lt;/h1&gt;

&lt;p&gt;After submitting the task, MonkeyCode started working through the requirements.&lt;/p&gt;

&lt;p&gt;The workflow was interesting because it wasn't just one giant response containing four code blocks.&lt;/p&gt;

&lt;p&gt;The agent went through individual tasks and file operations.&lt;/p&gt;

&lt;p&gt;It started by planning the implementation and then created the project files.&lt;/p&gt;

&lt;p&gt;Here it is in action:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ltj6xa43hubbimltwfu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6ltj6xa43hubbimltwfu.gif" alt="MonkeyCode working through the Tic-Tac-Toe task — you can see it planning, creating files, and stepping through each implementation stage autonomously" width="720" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice how the interface exposes individual steps as they execute: planning first, then each file in sequence, then running a preview. That stepped visibility is one of the things that makes an agent feel meaningfully different from a chatbot.&lt;/p&gt;

&lt;p&gt;The workflow looked roughly 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;Task
 ↓
Planning
 ↓
Create index.html
 ↓
Create styles.css
 ↓
Create script.js
 ↓
Create/update README.md
 ↓
Run / preview application
 ↓
Inspect result
 ↓
Publish to GitHub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You're not simply asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Give me the code."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You're effectively delegating a development task.&lt;/p&gt;




&lt;h1&gt;
  
  
  The generated application
&lt;/h1&gt;

&lt;p&gt;The result was a complete zero-dependency Tic-Tac-Toe application.&lt;/p&gt;

&lt;p&gt;The repository contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tik-tak-toe_monkeyCode/
│
├── index.html
├── styles.css
├── script.js
├── README.md
└── LICENSE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The generated README documented the Minimax implementation and the different game modes.&lt;/p&gt;

&lt;p&gt;The GitHub repository is publicly available here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Nayim-Imrit/tik-tak-toe_monkeyCode" rel="noopener noreferrer"&gt;https://github.com/Nayim-Imrit/tik-tak-toe_monkeyCode&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: the repo slug uses "tik-tak-toe" — that's intentional, not a typo.)&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  And yes, the game actually worked
&lt;/h1&gt;

&lt;p&gt;This was the most important part of the test.&lt;/p&gt;

&lt;p&gt;The generated application wasn't just visually complete.&lt;/p&gt;

&lt;p&gt;I could actually run it in the browser.&lt;/p&gt;

&lt;p&gt;The preview worked, and the core functionality was there:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2-player mode&lt;/li&gt;
&lt;li&gt;AI mode&lt;/li&gt;
&lt;li&gt;Easy AI&lt;/li&gt;
&lt;li&gt;Minimax AI&lt;/li&gt;
&lt;li&gt;Score tracking&lt;/li&gt;
&lt;li&gt;Undo&lt;/li&gt;
&lt;li&gt;Reset&lt;/li&gt;
&lt;li&gt;Dark/light theme&lt;/li&gt;
&lt;li&gt;Persistent scores&lt;/li&gt;
&lt;li&gt;Responsive interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a task that started with one natural-language instruction, that was a pretty good result.&lt;/p&gt;




&lt;h1&gt;
  
  
  The token consumption surprised me
&lt;/h1&gt;

&lt;p&gt;This is where the experiment became more interesting.&lt;/p&gt;

&lt;p&gt;The platform gave me approximately &lt;strong&gt;30 million free tokens per day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And I decided to actually use them.&lt;/p&gt;

&lt;p&gt;You can see the live quota counter in the GIF above — at the point I captured it, the interface showed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Daily quota: ~30M
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By the time the full task completed — application created, previewed, and pushed to GitHub — the quota had dropped to approximately &lt;strong&gt;27M&lt;/strong&gt;, meaning the entire workflow consumed &lt;strong&gt;roughly 3 million tokens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That sounds enormous for a Tic-Tac-Toe game.&lt;/p&gt;

&lt;p&gt;And honestly, it is.&lt;/p&gt;

&lt;p&gt;But there's an important distinction.&lt;/p&gt;

&lt;p&gt;The token usage isn't simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;My prompt → 3M tokens → Tic-Tac-Toe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An agent performing software-development work can repeatedly interact with its environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read
 ↓
Think
 ↓
Edit
 ↓
Inspect
 ↓
Run
 ↓
Check
 ↓
Fix
 ↓
Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every one of those interactions can contribute to the total context and token consumption.&lt;/p&gt;

&lt;p&gt;That's fundamentally different from asking a normal chatbot to generate four files once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 million tokens for a small project is still a lot.&lt;/strong&gt; A more efficient agent should minimize unnecessary file re-reads, avoid redundant context and reduce iterations. This is something I'll be tracking closely in future experiments — token efficiency matters as much as output quality.&lt;/p&gt;




&lt;h1&gt;
  
  
  The GitHub test
&lt;/h1&gt;

&lt;p&gt;After the application was working, I gave MonkeyCode another task:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Push the project to my GitHub repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The target repository was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nayim-Imrit/tik-tak-toe_monkeyCode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent handled the repository workflow and the finished project ended up on GitHub.&lt;/p&gt;

&lt;p&gt;This was an important part of my test.&lt;/p&gt;

&lt;p&gt;Generating code is one thing.&lt;/p&gt;

&lt;p&gt;Getting an agent to work with an actual development environment and source-control workflow is another.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why this feels different from ChatGPT generating code
&lt;/h1&gt;

&lt;p&gt;This experiment made me think about the difference between an &lt;strong&gt;AI assistant&lt;/strong&gt; and an &lt;strong&gt;AI coding agent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A traditional coding assistant might do something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   ↓
Ask for code
   ↓
AI generates code
   ↓
Developer copies code
   ↓
Developer creates files
   ↓
Developer runs application
   ↓
Developer fixes errors
   ↓
Developer commits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An agent can potentially move more of that workflow into the AI environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer
   ↓
Specification
   ↓
AI Agent
   ├── Creates files
   ├── Edits files
   ├── Runs commands
   ├── Checks results
   ├── Iterates
   └── Publishes changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the real thing I wanted to test.&lt;/p&gt;

&lt;p&gt;Not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can AI write JavaScript?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We already know it can.&lt;/p&gt;

&lt;p&gt;The more interesting question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How much of the development workflow can an AI agent actually execute for you?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  DeepSeek-V4-Flash is an interesting model for this
&lt;/h1&gt;

&lt;p&gt;The timing of this experiment was also interesting because DeepSeek-V4-Flash had recently been released.&lt;/p&gt;

&lt;p&gt;DeepSeek describes V4-Flash as the faster, more cost-efficient member of the V4 family, built with a strong focus on agentic tasks — meaning it's designed for exactly this kind of multi-step, tool-using workflow rather than single-turn generation. In practice, that showed up in the planning phase: rather than immediately generating code, it broke the task down into discrete file operations first.&lt;/p&gt;

&lt;p&gt;That's why I wanted to run an actual task instead of just reading the benchmark numbers.&lt;/p&gt;




&lt;h1&gt;
  
  
  My test wasn't a benchmark
&lt;/h1&gt;

&lt;p&gt;I want to make this distinction very clear.&lt;/p&gt;

&lt;p&gt;This wasn't a scientific comparison between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;GPT&lt;/li&gt;
&lt;li&gt;Gemini&lt;/li&gt;
&lt;li&gt;GLM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wasn't measuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tokens per second&lt;/li&gt;
&lt;li&gt;latency&lt;/li&gt;
&lt;li&gt;benchmark scores&lt;/li&gt;
&lt;li&gt;coding accuracy across 100 repositories&lt;/li&gt;
&lt;li&gt;cost per accepted pull request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a practical experiment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Give an AI coding agent a realistic specification and see what happens.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And for that particular task, the result was surprisingly good.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I liked
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The agent understood a detailed specification
&lt;/h2&gt;

&lt;p&gt;The prompt contained a lot of requirements.&lt;/p&gt;

&lt;p&gt;It wasn't just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Make Tic-Tac-Toe."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It specified architecture, technology restrictions, features, documentation and AI behavior.&lt;/p&gt;

&lt;p&gt;The generated repository followed those requirements reasonably well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zero-dependency development worked well
&lt;/h2&gt;

&lt;p&gt;I deliberately prohibited:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React
Next.js
Vue
Tailwind
npm
build tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result remained:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML
CSS
JavaScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That made the application extremely portable.&lt;/p&gt;

&lt;p&gt;You can simply open:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;in a browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Minimax implementation was documented
&lt;/h2&gt;

&lt;p&gt;This was a nice detail.&lt;/p&gt;

&lt;p&gt;The README didn't simply say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The AI uses Minimax."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It explained the basic idea:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Current board
     ↓
Possible moves
     ↓
Opponent responses
     ↓
Future states
     ↓
Score positions
     ↓
Choose best move
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Tic-Tac-Toe, the game tree is small enough that exhaustive search is perfectly practical.&lt;/p&gt;




&lt;h1&gt;
  
  
  Token consumption is a real concern
&lt;/h1&gt;

&lt;p&gt;Nearly 3 million tokens for a relatively small application is a lot.&lt;/p&gt;

&lt;p&gt;Even though the daily quota is huge, developers should not automatically assume:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;More tokens = better result.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agent efficiency matters.&lt;/p&gt;

&lt;p&gt;A better agent should ideally minimize unnecessary context, repeated file reads and redundant iterations.&lt;/p&gt;

&lt;p&gt;This is something I've become increasingly interested in: &lt;strong&gt;token-efficient AI development workflows&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If an agent repeatedly reads the same files, re-evaluates the same architecture and regenerates context unnecessarily, the cost can grow very quickly.&lt;/p&gt;

&lt;p&gt;For production use, this isn't just a curiosity — it's a real cost and performance factor.&lt;/p&gt;




&lt;h1&gt;
  
  
  The local agent idea is even more interesting
&lt;/h1&gt;

&lt;p&gt;The part that really caught my attention is what happens when you move beyond a browser-based coding environment.&lt;/p&gt;

&lt;p&gt;The broader idea is to run an AI development agent locally on your own machine, connect it to tools, repositories and services, and give it controlled permissions.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌───────────────┐
                 │   AI Model    │
                 │ DeepSeek/GPT  │
                 │ Claude/GLM... │
                 └───────┬───────┘
                         │
                         ▼
                 ┌───────────────┐
                 │ Coding Agent  │
                 └───────┬───────┘
                         │
          ┌──────────────┼──────────────┐
          ▼              ▼              ▼
      Filesystem       GitHub          MCP
          │              │              │
          ▼              ▼              ▼
       Laptop         Repositories     Tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;blockquote&gt;
&lt;p&gt;"AI, tell me what command I should run."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can move toward:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI, implement this feature, run the tests, inspect the result and create the commit."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Obviously, this comes with an important warning:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't give an autonomous agent unrestricted access to your machine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Permissions matter.&lt;/p&gt;

&lt;p&gt;Credentials matter.&lt;/p&gt;

&lt;p&gt;Repository access matters.&lt;/p&gt;

&lt;p&gt;Tool integrations can potentially give an agent the ability to do much more than edit a source file.&lt;/p&gt;

&lt;p&gt;The principle should always be &lt;strong&gt;least privilege&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  What about connecting other AI subscriptions?
&lt;/h1&gt;

&lt;p&gt;This is another direction that I find interesting.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Which AI coding tool should I use?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;we can start thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Which model should handle which task?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Simple coding task
        ↓
DeepSeek V4-Flash

Complex reasoning
        ↓
GPT / Claude

Large refactoring
        ↓
Another specialized model

Local/private task
        ↓
Local open-weight model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates the possibility of treating AI models almost like interchangeable compute providers.&lt;/p&gt;

&lt;p&gt;The agent becomes the orchestration layer.&lt;/p&gt;

&lt;p&gt;The model becomes the engine.&lt;/p&gt;

&lt;p&gt;That separation is potentially much more interesting than simply choosing one AI subscription and using it for everything.&lt;/p&gt;




&lt;h1&gt;
  
  
  So, is MonkeyCode worth trying?
&lt;/h1&gt;

&lt;p&gt;Based on this experiment:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yes — if you're interested in AI agents rather than just AI chat.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Tic-Tac-Toe project isn't impressive because Tic-Tac-Toe is difficult.&lt;/p&gt;

&lt;p&gt;It's interesting because I gave the system a specification and it was able to turn that specification into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Requirements
     ↓
Implementation
     ↓
Files
     ↓
Working application
     ↓
Documentation
     ↓
Git repository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;with very little manual intervention from me.&lt;/p&gt;

&lt;p&gt;That's the direction AI-assisted development is moving toward.&lt;/p&gt;




&lt;h1&gt;
  
  
  But there's still a long way to go
&lt;/h1&gt;

&lt;p&gt;I wouldn't use this one experiment to conclude that AI coding agents can replace developers.&lt;/p&gt;

&lt;p&gt;They can't.&lt;/p&gt;

&lt;p&gt;At least, that's not what this test demonstrates.&lt;/p&gt;

&lt;p&gt;The developer is still responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defining the requirements&lt;/li&gt;
&lt;li&gt;Reviewing the generated code&lt;/li&gt;
&lt;li&gt;Validating behavior&lt;/li&gt;
&lt;li&gt;Checking security&lt;/li&gt;
&lt;li&gt;Reviewing dependencies&lt;/li&gt;
&lt;li&gt;Managing credentials&lt;/li&gt;
&lt;li&gt;Controlling permissions&lt;/li&gt;
&lt;li&gt;Testing edge cases&lt;/li&gt;
&lt;li&gt;Reviewing Git changes&lt;/li&gt;
&lt;li&gt;Deciding whether the solution is actually production-ready&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent can execute.&lt;/p&gt;

&lt;p&gt;The developer still needs to &lt;strong&gt;judge&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that distinction is important.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final thoughts
&lt;/h1&gt;

&lt;p&gt;My first MonkeyCode experiment was intentionally small.&lt;/p&gt;

&lt;p&gt;A Tic-Tac-Toe game.&lt;/p&gt;

&lt;p&gt;Four main files.&lt;/p&gt;

&lt;p&gt;Vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;No backend.&lt;/p&gt;

&lt;p&gt;No database.&lt;/p&gt;

&lt;p&gt;No external APIs.&lt;/p&gt;

&lt;p&gt;Yet the agent was able to take the specification, implement the application, provide a working preview and eventually get the project into GitHub.&lt;/p&gt;

&lt;p&gt;The most interesting number wasn't actually the 30M token quota.&lt;/p&gt;

&lt;p&gt;It was the fact that an AI agent consumed roughly 3 million tokens of that budget while doing real development work — planning, creating, iterating, previewing, committing.&lt;/p&gt;

&lt;p&gt;That raises a much more interesting question for my next experiment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What happens when I give the same agent a real full-stack application?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Something with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Database migrations&lt;/li&gt;
&lt;li&gt;Tests&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;CI/CD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And then measure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many tokens does it take?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many iterations does it need?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much code does it generate?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much of the work actually needs human intervention?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's a much more interesting benchmark.&lt;/p&gt;




&lt;h2&gt;
  
  
  The project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Nayim-Imrit/tik-tak-toe_monkeyCode" rel="noopener noreferrer"&gt;https://github.com/Nayim-Imrit/tik-tak-toe_monkeyCode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the generated HTML, CSS, JavaScript and README documentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  What should I test next?
&lt;/h2&gt;

&lt;p&gt;I'm thinking of taking this experiment much further.&lt;/p&gt;

&lt;p&gt;Instead of Tic-Tac-Toe, give an AI coding agent a &lt;strong&gt;real full-stack application&lt;/strong&gt; and track the entire process.&lt;br&gt;
If you'd like to see that experiment, let me know what kind of application I should throw at it. 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>coding</category>
      <category>productivity</category>
    </item>
    <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>
