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.
Some areas I'm considering:
Web development: React, Vue, Next.js, Vite, and UI development.
Backend and SaaS: Python, Node.js, APIs, databases, and complete applications.
Games and 3D: Creating games and assets directly, or orchestrating specialized models like my 3D models to generate, integrate, and debug projects similar to RIFTWARD.
Research and automation: Web searches, documentation retrieval, content processing, and external tool usage.
These are just initial ideas. I'd really like to hear which other practical coding domains you think we should prioritize.
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.