Microsoft FrogNano 4B for GPU Poor: Budget AI Software Engineer
Read the Portuguese translation →
Author: Fahd Mirza · Watch on YouTube
Video authored by the channel shown, not by IANIA; all rights belong to the creator. Transcript and summary generated automatically; the original-language content is preserved.
Original language: English
Original video: Microsoft FrogNano 4B for GPU Poor: Budget AI Software Engineer · Channel: Fahd Mirza · 10:57 · Watch on YouTube
Topics: AI agents, AI evaluation and benchmarks, Software engineering with AI, Local and open-source models
Summary
Section titled “Summary”The video tests Microsoft’s FrogNano, a 4-billion-parameter coding model trained with reinforcement learning on synthetic software engineering tasks and designed to run on a single GPU. Using a Hermes agent rather than its Leaf harness, the model successfully fixes a passenger-counting bug in a live ferry dashboard, though its reasoning is slow and sometimes erratic. It fails to make a generated HTML/JavaScript kebab demo work in the browser, but performs strongly on a Python expense-tracker task, including building a CLI, SQLite database, and tests. The presenter concludes that FrogNano is especially capable for Python coding on modest hardware, while its performance depends on the task and harness.
Key points
Section titled “Key points”- FrogNano is a compact 4-billion-parameter coding model built on Qwen 3.5 4B and trained with reinforcement learning on around 1,500 synthetic software engineering tasks.
- The model uses a lightweight harness called Leaf, which provides five tools: read, write, edit, glob, and bash.
- The presenter runs FrogNano with SG Lang and a Hermes agent, adjusting context length to reduce VRAM use on a commodity GPU.
- On the ferry dashboard, the model found and fixed a SQL bug that counted bookings instead of passengers.
- The dashboard then showed the corrected figures: JetRA 1 went from 5% full with 114 seats available to 76.7% full with 28 seats available.
- The presenter says the model’s reasoning identified the bug but was slow and messy, including unnecessary database rebuilds and broken scripts; the difference in harness may have contributed.
- FrogNano did not successfully produce a working HTML/JavaScript kebab demo in the browser.
- For the Python expense tracker, the model created a SQLite-backed application, wrote five unit tests that passed, and built a CLI with initialization, expense-entry, listing, and total features.
- The presenter’s conclusion is that FrogNano is particularly strong for Python tasks and offers substantial capability for a model small enough to run on one GPU.
Chapters
Section titled “Chapters”| Start | Chapter | Summary |
|---|---|---|
| 00:01 | FrogNano overview and setup | The presenter introduces FrogNano’s training, tools, and GPU setup before beginning a real-world bug-fix test. |
| 01:33 | Fixing the ferry dashboard bug | FrogNano is tasked with correcting a live app that counts bookings instead of passengers, leading to inaccurate seat availability. |
| 03:39 | Training approach and bug-fix results | The presenter explains FrogNano’s iterative reinforcement-learning task selection, reviews its imperfect reasoning, and verifies the corrected dashboard numbers. |
| 05:44 | Kebab demo and model comparisons | The model’s benchmark standing is discussed, but its generated HTML/JavaScript kebab demo does not work in the browser. |
| 07:50 | Python expense-tracker test and conclusion | FrogNano builds and tests a Python SQLite expense tracker, and the presenter demonstrates its CLI and concludes that Python is a strong use case. |
Quotes
Section titled “Quotes”a compact 4 billion parameter coding agent small model to run on a single GPU. — 00:01
The back end counts booking rows instead of summing the passengers. — 02:37
The dashboard now shows real numbers. — 05:14
HTML JavaScript doesn’t seem to be its forte. — 07:19
as far as Python is concerned and if that is your use case 4 billion parameter model throws it out of the park — 10:26
Concepts and entities
Section titled “Concepts and entities”FrogNano 4B, Qwen3.5 4B, Leaf, Hermes, SGLang, reinforcement learning, Nusantara Ferry Lines, Microsoft
Full transcript (original language)
Section titled “Full transcript (original language)”00:01 Microsoft has released a model for GPU poor frog nano a compact 4 billion parameter coding agent small model to run on a single GPU. It is built on quen 3.5 4 billion and instead of copying answers from a bigger model it was trained purely with reinforcement learning on around 1,500 synthetic software engineering tasks. It works through a lightweight harness called as
00:32 leaf. That gives it just five tools. Read, write, edit, glob, and bash. That’s it. That training gave it a big jump over its own base model. So, let’s see if a tiny model can really find and fix a bug in a real app. I already have started running it with SG lang as you can see here with this command. And this is how much VRAM it is consuming due to this KV cache here. You just need to you know reduce this context length and it
01:02 will be small enough to run on a commodity GPU. I have also enabled tool call because I want it to run with this Hermes agent. Now, I’m not using their leaf harness because that is more geared towards Kubernetes and I just wanted to make sure that we run it on commodity GPU to see if it works or not. If you’re looking to rent a GPU on very good price, you can find the link to master compute in videos description. Recently, I also have started this free
01:33 weekly AI newsletter which you can subscribe at fazmaha.substack.com. And if you want to help out the channel, please become a member. Now, coming back to this model, first up, I’m going to check out a bug fix for this model. So, on your screen, you can see a live app. This is Nusantara Ferry Lines, a live occupancy dashboard for passenger fairies between Indonesian islands. Each ferry has a fixed number of seats and
02:05 one booking can carry a whole family or tour group. So every booking has a passenger count. The dashboard shows a gauge, a capacity bar and the seats remaining. This is not a toy app by any stretch of imagination. As you can see, I already have started it with docker compose and the stack is with three services. A postgress SQL 16 database, a fast API back end, enginex front end, Android is cache and few other things
02:37 running. If you look at this app at the moment, especially the numbers, every ferry looks almost empty. For example, KMP JetRA 1 says 5% full with 114 seats available. And this is the park. The back end counts booking rows instead of summing the passengers. Six booking of families and groups are counted as six people. When the real figure is 92 passengers with only 28 seats left,
03:08 impact is serious. Nearly full ferry looks almost empty. So staff and customers trust seats that do not exist that leads to overbooking which is a real safety and operation failure. So this is where I’m going to go and give this prompt or goal to Hermes agent with this model to go find and fix every bug. So let’s run this. While this runs, let me show you a bit
03:39 more uh interesting things around this model, especially this diagram. So when I saw this diagram, it you know it just feels like a student who is writing its own his own practice exams. The model is creating coding tasks, throws out the ones that are too hard, it never solves them and too easy, it always solves them and keeps only the ones where it sometimes wins. The model trains on those with reinforcement learning, gets better, then writes harder task for its new level. So this
04:10 is how it got trained. This repeats five times. So it is always practicing right at the edge of what it can do. And the green leaf marks where the leaf harness is used. I might get um a Kubernetes cluster down the road and show you how leaf work. But I think Microsoft really needs to make it bit simpler. model has come back with the response. And as always the case, let me quickly show you the reasoning because these things matter. I would say even more than the result itself. So look at this.
04:43 The reasoning is very impressive and messy at the same time and quite slow. It spotted the exact bug early and fixed it with a right chain, but then it wandered a lot. It tore the database down, rebuilt it several times, blamed the wrong cause and fired off a few broken scripts which makes sense because it was trained in leaf and this is a different harness and harness matters a lot for these models. In the end, as you can see, it got there on its own and reported correct numbers for every
05:14 selling. So, let’s not take its word for it and check the dashboard ourselves. So I’m just going to go here and press Ctrl F5 to hard reset. And model has thrown it out of the park. The dashboard now shows real numbers. JetRA one went from 5% full with 114 seats to 76.7% full with 28 seats. So the model fixed the actual SQL query. Okay. So now let’s do another test.
05:44 Let’s see now if model can cook a donor kebab. So, it’s a full coverage in a single self-contained HTML file, a donor kebab on a gas powered element. Let’s see what it produces. Meanwhile, the model works. Have a look at this diagram. Each dot is a model with size along the bottom and score up the side. So, the further left and higher a dot sits, the more impressive it is. Frog Nano, the green star, is way over on the left. One of the smallest models on the chart, yet it clearly
06:16 beats its own base model. and the bigger coin 9 billion sibling. On the main coding benchmark, it sits right alongside a model about seven times its size. A few coding specialist models around 30 billion still edged out. And the big frontier models in the red zone are well above it. So, it’s not a giant killer, but for something small enough to run on one GPU, commodity one, it punches far above its weight. And we just saw it in one example. Let’s go back and wait for this to produce and
06:48 then we will check it out. Okay, you know what? It already has created this thing. So, let me quickly open it. I’ll just open it in front of you. Okay. So, it doesn’t show me anything. I’ll just go back and tell it when I access this file. Sorry. It doesn’t do anything
07:19 in browser. Yeah, let the typos be there. It has identified few errors. Let’s wait for it to fix. Okay, so it says that it has fixed the bug. I’ll just go back and reload it with control F5. Nothing happens. So look, um I think this is Python rich coding model. So HTML JavaScript doesn’t seem to be its forte. So let’s do another test then. So I’m going to give it another prompt
07:50 with a goal to build a Python application which is just a expense tracker with a backend SQLite. And let’s see if it is able to create this simple app in Python. It’s not as simple but still not a bad one for a 4 billion parameter model. Okay, so the model seems quite excited about Python uh test. It has built the tool and its five unit tests also passed. It wrote them by itself. Its own demo uh actually built the SQLite
08:21 database, filled in some of the dummy values and then provided us the commands to test. So let me get out of this Hermes and then we will check it out in the terminal. Okay. So for the testing, let’s do it in a methodical way. First up, I’m going to clean up any leftover data from the models earlier test. So I have cleaned up that database. Let’s now initialize the database using model’s own init option. And how do I um know that init
08:53 option is there? Let me show you something very very interesting. Model has actually built its own CLI tool. So if you do the help these are all the commands which model says that it has spilled and that is why I’m going to test them out and first up let’s initialize. So it is uh putting in some seed data into the database and all that stuff putting everything at the starting point.
09:24 So you can see that the database has been initialized. Let’s now add the first food expense of 150 using the flag subm models build. So that is pretty good. Let’s do another second uh food expense of around 7550. And I’m still using the flag it gave me. That is also done. Now let’s do the transport expense in a same fashion. Transport expense is done. Let’s do
09:54 another transport expense. That is also done. And now let’s see if it is able to list all these items which I have added. There you go. All four items have been listed directly from the database. And now let’s see if it is able to do the total cuz that is one feature I asked it to build. There you go. So it has given me that okay this is the total for food and this is the total for transport.
10:26 So look as far as Python is concerned and if that is your use case 4 billion parameter model throws it out of the park and the first test it also passed with flying colors because the back end was Python and they also have a you know quiz version in GGF if you want to even squeeze more juice out of the storage. Let me know what do you think about prog nano and now you know the use case. Again, if you want to help out the
10:57 channel, please become a member.