Disclosure first: I work at LeanZero, we're a Marketplace Partner, and the model below is ours. My colleague Mihai Perdum built it, trained it and published the weights, and he's the one who measured every number here on tests we can rerun. I'm posting it because I think it's the most interesting thing we've done and it belongs in front of this community. Read the numbers as a builder's numbers and check them yourself.
Qwen3.8-27B is a strong open model that knows almost nothing about Atlassian Forge. Ask it for a Forge app and it invents a manifest format and imports packages that do not exist. Mihai taught it Forge, Jira, Confluence and Jira Service Management from real apps, the documentation, the OpenAPI specs and answers we gave on these forums, then published the result as open weights under Apache-2.0. It is the same model in the same file format, so anything that loads an mlx-community model loads it. It runs fully local on Apple Silicon, and training the 27B took 26 hours on one Mac Studio.
Models and adapter are all on Hugging Face under the account Mihai-LeanZero (search that name there): Q8-mlx (8-bit, about 31 GB, the one to use), Q6-mlx (about 21 GB), Q4-mlx (about 15 GB), the LoRA adapter alone (rank 32, 190 MB) and the untouched quantised base we trained from. All three builds ship the multi-token-prediction head as mtp.safetensors; goose local edition and Rapid-MLX use it for speculative decoding, while mlx-lm and LM Studio ignore it and load the model normally.
Same harness, same prompts, same machine. The base is the untouched quantised Qwen3.8-27B; tuned is what's on Hugging Face.
A complete app from a one-line brief can still need one fix before forge deploy. With thinking off the usual one is a TypeScript typing error against @Forge/react or @Forge/bridge; the next is a resolver or resources key placed under modules, or a handler path that does not match the file. The post-April facts did not move at all. And the 4-bit build's retention was measured only by agreement with the 8-bit model and the identifier probe; the app-writing tasks were not rerun on it. This is a strong assistant, not a compiler. Keep Atlassian's manifest validator and tsc in the loop, which is exactly what our harness does.
mlx_lm.generate --model <folder>, or load the adapter alone with --adapter-path after downloading it to a local folder, since mlx-lm resolves adapters from disk only.Because a 27B that actually knows Forge, running on a Mac with nothing leaving the machine, is the kind of thing this community should have access to, and open weights are how that happens. This is a premiere, the models went up on Hugging Face today. If you run the probes on your own setup and get different numbers, tell us, and if there's a test you'd want measured next, I'll pass it straight to Mihai.
Gabriela - LeanZero
2 comments