CoolFace
Modelpublic

PulseOS/pulse-local-qwen3-0.6b

sourceHugging Faceapache-2.0updated 3d agoView on Hugging Face
1likes80downloads
Model Card

Qwen3-0.6B-pulse

A 0.6B Qwen3 fine-tuned for one job: being the language layer of Pulse Local, a Mac app where a personal-finance assistant, its ledger and every question stay on the user's own machine. It is published so the app can download it on first launch. In the app's Local Mode that download is the only network request it ever makes; its optional Connected Mode adds a bank feed through Plaid, and even then the model, the ledger and every question stay on the machine.

Read this before you try it as a general assistant: on its own it is not one. On our private 48-question finance benchmark this model scores about 55 out of

  1. 1.The app scores about 92 on the same questions, because the app answers roughly nine questions in ten in code and asks the model only for the rest. The tuning is for posture and tool-calling inside that system, not for general capability.

What the tuning changed

base Qwen3-0.6Bthis model
posture (describes, never directs)3090
answers that told the user to buy or sell20
tool calls in the app's formatkeptkept
answer lengthlongabout 4x shorter

"Posture" is the rule the app exists to keep: Pulse describes a financial situation and never tells anyone to buy, sell, hold, trim or allocate. The base model failed it, answering "selling now could be a good move" to a question about a falling holding. That is the failure this tuning exists to fix.

Files

filesizeuse
Qwen3-0.6B-pulse-v4-Q4_K_M.gguf397 MBwhat the app ships; about 120 tokens/s on an M4
Qwen3-0.6B-pulse-v4-Q8_0.gguf639 MBslightly better quality, slower

Q6K was measured and is not better than Q4K_M in the app, so it is not published.

How it is meant to be run

  • Chat template: Qwen3's, with the empty thinking block not prefilled. This model was trained on a template that emits no <think> block; prefill one and it drifts.
  • Tool calls: a plain generation loop that parses <tool_call>{"name": ..., "arguments": {...}}</tool_call> from the text. Note that node-llama-cpp's built-in function calling drops this model's calls; the same GGUF works in raw llama.cpp and MLX. The app uses its own loop for this reason.
  • Sampling: greedy (temperature 0). Sampled, it derails mid-JSON.
  • Context: 4096 is plenty; the app never needs more.

Training

  • Base: Qwen/Qwen3-0.6B, Apache 2.0.
  • Method: LoRA (rank 16, 16 layers, lr 3e-5) with mlx-lm on an M4 Mac, then fused and converted to GGUF with llama.cpp.
  • Data: about 1,860 synthetic rows, roughly 1,700 written answers plus tool-call rows generated from the app's own tool schemas and calculator. The answers were distilled from gpt-4.1-mini and filtered for directive phrasing, boilerplate, em dashes and length. No personal or user data was involved at any point; every ledger figure in the training data is synthetic.
  • A later round on 5,617 rows was trained and measured. It was flat, 8 items better and 9 worse out of 348, so it is not published.

Limitations

  • English only, US personal finance only.
  • No internet and no live data. It is trained to say so rather than invent a price, a rate or an index level.
  • It is bad at one-word yes/no answers: measured 13 correct out of 30 on questions with an unambiguous answer, biased toward "yes". The app never asks it for one.
  • It gets arithmetic method right and numbers wrong, which is why the app computes every figure in code rather than trusting the model.
  • It is not a financial adviser and neither is the app.

Where it runs

The app that carries this model is downloadable at pulse-browser.com/local (Mac, Apple Silicon, beta). It is pay what you want, including nothing, and the weights here are open under the license below. The model has not changed since 2026-09-19; the app around it has (a bank feed, a query planner that answers most questions in code, a category engine), which is why the app's score keeps moving while the model's does not. Card updated 2026-09-21.

Provenance note

The training answers were generated with OpenAI models. If you intend to build on this, check OpenAI's terms for your own use case.

License

Apache 2.0, inherited from the base model, whose LICENSE is included.