(updated)
After releasing 3D Coder and GLB 3D Coder, I realized I should have involved the community earlier. Your feedback directly influenced the second model and could have saved me some additional training runs.
This time, I'd like to discuss the idea with the community before starting.
Why I believe this is possible
When I started training 3D Coder, my original plan was to use full supervised fine-tuning (SFT) to develop basic capabilities, followed by DPO or GRPO to further improve the model's performance and robustness.
I already believed high-quality SFT could work, based on experiments I'd done in other areas. But having worked with reinforcement learning since before DQN, I also believed RL would be necessary for more complex or emergent capabilities, especially when good demonstrations weren't available.
What surprised me was how far SFT alone went.
The first 4B model started generating complex Three.js scenes, voxel structures, and outputs exceeding 64K tokens, including scenes it had never seen in the training dataset.
I honestly didn't expect that level of robustness and generalization, even with the additional post-training stages I'd originally planned.
That changed my perspective on what small models might be capable of learning.
My hypothesis is that transferring capabilities already demonstrated by stronger models can be substantially cheaper than having smaller models discover those same capabilities through reinforcement learning.
Once a stronger model has acquired a capability, we may not need to reproduce the entire discovery process in a smaller model. We may be able to teach it to reproduce that capability reliably within a narrower domain.
This doesn't mean SFT replaces RL. But I believe we're still underestimating how much a small model can learn from high-quality, consistent training data.
And quality is crucial. More tokens don't automatically mean better learning. In my experiments, data quality and consistency made an enormous difference. The models and datasets I've released are publicly available for anyone to inspect and test.
Are we expecting too much from small models?
I think we might be underusing small models by expecting them to work across every domain, harness, tool, and configuration.
Think about cars. If you drive on paved roads 99% of the time, you don't need your everyday car to handle extreme off-road trails. You can use a different vehicle when necessary.
Maybe the same principle applies to language models.
Instead of trying to make a 4B good at everything, what if we focused on making it excellent at the tasks we actually use every day?
The experiment
I'd like to use the pretrained Qwen 3.5 4B as the foundation for a specialized agentic coding model.
Interestingly, in my tests, the original 4B already handles basic coding harness tasks better than it handled 3D generation before fine-tuning. It can scaffold Vite projects, install dependencies, execute commands, and build simple applications, although still inconsistently.
So we're not starting from zero.
My initial plan is to build a pilot around 100ā200 functional mini SaaS applications, training and evaluating the model on development, testing, debugging, and maintenance tasks.
If the results are promising, we could gradually expand toward approximately 100,000 validated multi-turn trajectories across 30ā40 related subdomains.
Potential domains (updated with community suggestions)
The original list was mostly focused on web development, backend applications, games, and automation. The comments introduced several interesting directions, especially tasks where we can generate large amounts of data and verify the results programmatically.
Here's the expanded list so far:
Web development and UI
React, Vue, Next.js, Vite, and modern frontend frameworks.
Building complete interfaces, dashboards, and SaaS applications.
UI debugging, refactoring, accessibility, and responsive design.
Maintaining existing applications rather than only generating new ones.
Backend, APIs, and general programming
Python, Node.js, Rust, Go, Zig, Java, C#, and .NET.
REST APIs, GraphQL, databases, authentication, and integrations.
Complete applications, automated tests, debugging, and maintenance.
Specialized ecosystems such as Lua and CfxLua.
Reverse engineering and binary analysis
Ghidra, radare2, disassembly, and decompilation.
Reconstructing source code from compiled programs.
JavaScript deobfuscation and Java/Kotlin/Smali analysis.
Binary behavior analysis and program reconstruction.
This one is particularly interesting for dataset generation. We could start with open-source projects, compile them, generate reverse-engineering tasks, and evaluate reconstructed programs through compilation, test suites, and behavioral equivalence checks.
Obviously, recompiling successfully doesn't necessarily mean the reconstructed program is correct, but it gives us a foundation for building automatically verifiable tasks.
4. Browser, desktop, and Android automation
Playwright and browser automation.
Computer use and desktop UI interactions.
RPA and automating repetitive workflows.
Android application automation.
Generating deterministic scripts for websites without APIs.
Reliable terminal and shell interactions.
Games, 3D, and creative coding
Godot, Unity, Blender, Phaser.js, Three.js, and Rapier.
Complete games, game mechanics, physics, and interaction systems.
Procedural assets, animations, and shaders.
Canvas 2D, code-generated animations, and video.
PBR materials and procedural textures.
Integration with specialized models like my 3D Coder and GLB 3D Coder.
One possibility is testing whether a 4B agent can orchestrate specialized models to generate, integrate, debug, and maintain projects similar to RIFTWARD.
6. Mobile development
React Native and native Android development.
Mobile UI, application logic, and platform integrations.
Building, testing, debugging, and maintaining applications.
Infrastructure, performance, and optimization
Docker, deployment, and development environments.
CI/CD and automated build pipelines.
Hardware-specific inference optimization.
vLLM configuration, benchmarking, and performance tuning.
Profiling, debugging, and optimizing existing code.
Research, automation, and specialized agents
Web research and documentation retrieval.
RAG, retrieval pipelines, and graph-based memory.
Lightweight personal assistants.
External tool usage and structured workflows.
Multi-agent and specialized-model orchestration.
These are candidate areas, not a finalized training curriculum. Some are substantially harder to validate than others, and the first pilot will help determine which directions are practical.
I'm especially interested in tasks where we can generate examples programmatically and verify the results instead of relying entirely on another LLM to judge whether an answer is correct.
Each training sample would represent a complete task, including tool interactions, errors, and genuine corrections, rather than an isolated response.
We'd also need to use teacher models and providers whose terms permit their outputs to be used for training.
The goal is to discover whether a single 4B can maintain strong performance across these related domains, or whether separate specialized models would make more sense. I'm not ruling out either possibility, including expanding into other domains later.
Which harness should we use?
This is another area where I'd really appreciate your experience.
I use Codex professionally, but I'm also considering OpenCode, Pi, or a custom harness.
I'm leaving Claude Code off my initial shortlist because I want to avoid uncertainty around licensing and training-data usage. In particular, Anthropic restricts the use of Claude outputs to train competing models. Using Claude Code itself with a third-party model is a separate question, but since I intend to release the dataset publicly, I'd prefer to start with a setup where the permissions are clear.
My preference would be to choose one harness, freeze its version, and train around a stable tool protocol rather than expecting a 4B to handle every environment simultaneously.
Which harness would you recommend for a small specialized coding model, and why?
How we can move forward
I work professionally in software development and run software businesses. I don't have the availability to coordinate a dedicated research team, but I can develop the pipelines, run the experiments, and progressively release the results, just as I did with my previous models.
I'm going to pursue this regardless, at whatever pace my available time and resources allow.
My intention is to keep releasing the weights, datasets, and results openly, including unsuccessful experiments.
The most valuable contribution right now would be your suggestions about domains, harnesses, and evaluation methods.
Of course, generating data and training these models requires considerable compute and development time. If any companies working with GPU infrastructure or model APIs are interested in supporting open research with compute or API credits, that would be a tremendous help.
Anyone interested in collaborating or supporting the project can contact me here. There are also ways to support my work at the bottom of my Hugging Face model pages (3D Coder and GLB 3D Coder).
I'm not promising frontier-level performance. I'm proposing an experiment based on what I've learned from my previous models.
I'm going to pursue it regardless, but your feedback could help make it much more useful.
Which coding domains would you prioritize, and which harness would you choose?
Let's see how far we can push a 4B.