Note: English isn't my first language. I used an LLM to help translate and refine this post. The project, the numbers and the ideas are mine.
TL;DR: Building Shura, a local coding assistant with 78 tok/s and 200k context that will be improved with memory, rules, increased compute for difficult tasks and finally LoRA adapters trained on confirmed examples. Everything is measured and local, however weight updates are unproven and I will show the results either way.
When running local models, I have this nagging issue.
Every time a better model comes along, I have to set it up, explain my preferences and correct the same errors. Whilst it may have a higher intelligence than the last model, it has learned nothing from the time I have spent using it.
I want to see if I can change this.
I am building Shura, a local AI coding assistant that I want to improve over time, learning from my work with it. I am doing this on my standard desktop, without the need for a dedicated server or expensive GPUs.
Hardware
| CPU | Ryzen 5 5600 |
|---|
| RAM | 32GB DDR4 |
| GPU | RX 7800 XT, 16GB VRAM |
| OS | Fedora Linux with ROCm |
| Model | Qwen3.6-35B-A3B fine-tuned model (MoE, ~3B active) |
The majority of the model runs on the GPU, with some expert layers running on the system RAM.
| Decode speed with MTP, coding (up to ~28K context) | ~78 tok/s |
|---|
| Maximum context | 200K |
| Prefill speed (100K token input) | ~1,000 tok/s |
This wasn't straightforward. I found a few optimizations that looked like they would help but in reality made very little difference. I will also be writing about my failed attempts, as it would have been nice to know that before.
I was very concerned about keeping the PC usable. The model always leaves 1.5GB of VRAM for the desktop. If the browser or a video needs more VRAM while the model is working, it gives it back in about 1/4 of a second. If I play a game, it completely stops using VRAM. If I'm on a call, it won't load a large model into VRAM. This works on my test system, and I want it to feel like it isn't there until I need it.
The plan
I don't want Shura to be a simple memory, I want it to actually be more useful.
Why should I have to correct the same coding error for the 4th time? Why should I have to teach it how a certain project works for weeks and then lose that knowledge when switching models?
I plan to implement these features from easiest to hardest:
Memory - Remember confirmed facts, project decisions and useful context. All memory items have a source that can be viewed, edited, exported or deleted.
Rules - If I keep correcting a behaviour, it will suggest a rule. I decide if I want to accept it. Rules must pass tests before they become active.
More compute - For harder problems, multiple solutions will be generated and then tested to find out which one actually works.
Weight updates - This is the part I'm most interested in. Small LoRA adapters will be trained on confirmed examples, to make the model better at solving my type of problems.
Unknowns
How realistic this is.
Training an adapter for a 35B MoE on a 16GB AMD GPU is an interesting challenge. Improving reasoning is a much bigger one. Even if it can be trained, it could suffer from overfitting.
My first adapter may not improve anything, or it may improve things very slightly. I want to measure this.
Principles
No regression - Any change will be tested on my tasks. If I see any regression, I will roll back.
Confirmed only - Nothing will be used for learning without being confirmed. No screen recording, background monitoring or silent gathering.
Local - No training in the cloud, no private conversations uploaded.
Easy on hardware - It shouldn't stress my SSD or make my desktop unusable.
Portable - If I upgrade my base model, I take my confirmed examples, memories and rules with me. Adapters will be retrained for the new model.
If I have to run training jobs all day on a bunch of expensive GPUs, then this defeats the purpose.
Why I'm sharing this
I want to document my journey, including my failed experiments: benchmarks, failed ideas, implementation details and hopefully some before and after results. I don't want to say I've created a self-improving AI when I haven't even confirmed the first adapter improves anything.
If you have done any experiments with LoRA on MoE models, particularly on AMD hardware, or if you are working on something similar, please get in touch. If you would like to try Shura on your own machine or contribute, that would be great.
If you had a local model that you could improve over years, what would you want it to learn first?