Inspiration

I got tired of PC tools that say whatever they want.

The PC is slow, so you open Task Manager: memory at 92%, thirty-one copies of svchost.exe, and not a word about why. You download a PC cleaner, and it finds "1,248 problems", offers to boost your RAM, tells you your PC is 87% slower, then asks for $29.99 a year. None of those numbers mean anything.

So I did what a lot of developers do now and I asked Claude and other coding agents to look at my own machine. They can run PowerShell, and they're good at reasoning about what comes back. But they're missing a lot of tools. Every time, they improvise one-off commands, paste raw counters back into the chat and parse them on the fly. There's nothing built for the job: no grouping of a browser's dozens of processes into one app, no GPU readings through NVML, no history of what happened before you asked, no fast drive scan through the NTFS master file table (MFT), no clean way to ask for admin rights for a single read. And nothing checks that the numbers in the answer match what was measured. The same shell that reads your PC can also change it, so "be careful" is the only safety net.

That's the gap I wanted to close: give a strong model the tools a good technician would use, all read-only and purpose-built, check every number it gives you against the measurement, and keep every change behind your click.

What it does

PC Agent is a Windows desktop app. You type something like "Why is my PC slow?" and NVIDIA Nemotron, running on Nebius Token Factory, goes and looks.

It has about two dozen read-only tools: memory, processes, CPU, disk latency, the GPU through NVML, drivers, storage and history. Nemotron picks the ones it needs, reads the results and writes an answer like "Google Chrome holds 2.31 GiB, close the tabs you don't need". Every number links to the measurement it came from, and a local checker compares each figure and program name with that measurement before you see the answer. If something doesn't match, Nemotron has to fix it.

The model can't run anything. When it suggests a clean-up, you get the exact folder, its real size and how to undo it, and nothing happens until you click. Afterwards the app measures again so you can see what changed.

Privacy is a visible switch in the composer, and one click shows the exact message that would leave your PC. User names, file contents, command lines and secrets never leave.

Around the chat:

  • a Live PC view where you can select anything and ask about it or watch it;
  • watches that send a Windows notification when a threshold is crossed;
  • a daily health report that runs even when the app is closed;
  • a local history, so it can see what happened before you asked;
  • a storage map, to see what fills the disk and ask what's safe to delete;
  • web lookups with Tavily for driver notes, known Windows issues and the price of the exact RAM module your PC takes, cited separately from the measurements;
  • local voice dictation, screenshots and photos read by Nemotron 3.5 Super VL, a mode that works with no API key, and English and French.

We also fine-tuned our own small Nemotron (Nano 4B) on Nebius AI Cloud to choose the next measurement. It runs inside the app, on your PC, then hands over to the cloud model.

How we built it

The core is Rust and Windows-first, though it also builds and passes its tests on Linux. It holds the collectors (PDH, NVML, process trees, a storage scanner, SQLite history), a set of local diagnostic rules that the model treats as hints, an actions broker that re-checks every target before touching it, and a separate admin helper with no network access and no LLM.

The agent loop talks to Token Factory through its OpenAI-compatible API, with closed-schema tools and tool_choice: "required". The only way for the model to finish is a structured submit_answer call: cited Markdown, a confidence level and any proposed actions. Our checker reads it, and the model gets up to three tries to fix what's wrong.

We route between Nemotron models. Super handles everyday questions, Ultra the hard ones, and Super VL anything with an image. The model list and the cost shown under each answer come straight from the account's catalog, so no price is hard-coded.

The desktop app is Tauri 2 with a plain JavaScript UI, a strict CSP and no innerHTML. Nox, a detective owl, is the mascot.

For the fine-tune we generated synthetic diagnostic episodes and split them by scenario before making variants, so no test scenario leaks into training. We trained a QLoRA adapter (rank 16, two epochs, loss on the answer only) on one L40S on Nebius AI Cloud, compared it with the base model on scenarios it had never seen, and published the adapter with checksums. The app serves it locally over loopback.

Challenges we ran into

Numbers were the first problem. Nemotron would copy raw counters (bytes, values multiplied by 100) that didn't match anything the checker could find. Once every tool returned both the raw value and a readable one, and the citation rules got precise, most of the fix-up rounds went away.

Then there was the stream that wouldn't stop. After a complete final answer, the model sometimes kept generating for 70 to 90 seconds, right up to the output limit. Now we close the stream as soon as a complete submit_answer arrives, and the Stop button is instant.

The model also liked to answer before looking. We now offer it the final-answer tool only after it has inspected something real.

Latency was the hardest. On 8 real questions the median was 94 seconds, and most of that was fix-up rounds of 40 to 50 seconds each. Better tool outputs helped more than a bigger model would have.

Privacy pulled against usefulness the whole time. We wrote down exactly what may leave the PC, made program names an explicit choice, and added the preview of the exact first message.

Accomplishments that we're proud of

Every number in an answer traces back to a real measurement on the user's PC, and it's checked before display. That's the part I care about most, because it's exactly what PC cleaners don't do.

The fine-tuned model works. On 60 PC problems it had never seen, the original Nano 4B picked the right next measurement zero times. Ours got it right 52 times. And it runs inside the app.

An answer from Nemotron 3 Super costs about $0.0044, and the app shows that cost under each one.

It's a full product, not a demo script: chat with history and search, Live PC, watches, the daily report, the storage map, web lookups, voice, images, two languages, an evaluation harness and hundreds of automated tests.

What we learned

Checking beats prompting. Making every figure point to a measurement did more for reliability than switching models ever did.

An agent's latency hides in the fix-up rounds, not the first answer.

A 4B model can learn a narrow, safe job. The base model ignored the "pick a read-only measurement" format entirely; after fine-tuning it mostly gets it right.

And the Nemotron family works well as a set: Super for reliability at a low price, Ultra when you need depth, Super VL for images, Nano for something small you can train yourself.

What's next for PC Agent: proof, not guesses, for a slow PC

  • Testing on more real machines, including Windows 10, and real-PC data for the local model.
  • Turning on the automatic handover from Super to Ultra once our evaluation says when it pays off.
  • Deeper checks: startup impact, thermal throttling, driver regressions, and a short trace recorded while the slowdown happens.
  • A signed installer and automatic updates, then a public beta.
  • Linux and macOS versions. The core already builds on Linux and we started macOS version too.

Built With

Share this project:

Updates

Submission history