python-vibe

ask, test, fix, add

GitHub

Local loop vs hosted agents

Every weight, CLI, and way of connecting them in this repo, set next to a hosted IDE agent with native tools, extra servers, a browser, and a 100k–1M context window.

Measured on one laptop (29 Aug 2026): Ollama llama3.1:8b, qwen2.5-coder:0.5b, Hub YauhenBichel/python-vibe-0.5b. The hosted column is a frontier coding agent in an IDE, not a local weight.

None of the python-vibe brains match a hosted IDE agent. The published LoRA is 0.5B. The everyday default is untuned llama3.1:8b. A 7B LoRA is a config only — not trained.

On this laptop Result
Published Hub model 1 (python-vibe-0.5b)
0.5B parsed Actions that day 0 / 2
8B first Action on three scoped tasks 3 / 3
8B live eval parse floor 2 / 3

First Action on the same three tasks (scripts/measure/skill_probe.py plus one live agent.py question). A score of 1 means the first parsed Action was the intended one (done on a question, patch + Append: on add).

Task 0.5B 8B + harness Hosted IDE agent
what does listen_addr return? 0 1 1
complete after two blocked drafts 0 1 1
add multiply + test 0 1 1

The 8B still answered listen_addr as “a tuple of host and port” and omitted env and argv defaults. The hosted agent quoted both in one read.

Every python-vibe path

Path What it is On the laptop Vs a hosted IDE agent
YauhenBichel/python-vibe-0.5b Only published Hub weights. QLoRA on Qwen2.5-Coder-0.5B. Style prior from ~45 pairs. Adapters on disk. Held-out vibe tasks 0/4. A 100-file stub walk returned “no issues”. Not a daily coding model. Misses Action: lines. Do not train more 0.5B for agency.
qwen2.5-coder:0.5b (--tiny / serve.py) Base 0.5B without the LoRA. Linux serve is this + harness, not MLX adapters. Pulled (~400 MB). No parse on listen_addr or add-multiply (echoed the skill). Worse than 8B. Smoke and CI only.
vibe.py / batch_review.py One-shot draft or one-file review. No explore loop. Shipped. A batch of 100 stubs was not a review. A hosted agent walks many files, applies diffs, and runs tests.
agent.py + llama3.1:8b Everyday default. Text Actions + locate prelude + skills and the write limit. Pulled (~5 GB). After a hint fix: done in one step on listen_addr. Add-feature probe: patch + Append:. Parse eval 2/3. Closest laptop stand-in. Answers are shallow. No extra tools, no browser, text files only (no secrets). 20 steps max.
agent.py + qwen2.5-coder 7B / 14B / 32B Listed in everyday.py. Same harness. Not pulled. Not measured that day. Likely stronger Python than 8B. Still a text protocol, not native IDE tools. 32B is RAM-heavy.
train.py --everyday (python-vibe-8b) MLX LoRA on Qwen2.5-Coder-7B-Instruct-4bit. Needs ~2k tool traces. Config only. adapters/python-vibe-8b is not trained. Seed data is 30 train rows. Could teach Action: format. Will not grow context, extra tools, or an IDE loop.
openai_compat.py Local OpenAI /v1 so an editor can pick llama3.1:8b. Docs shipped. Does not add tools. The editor still drives the loop. Wires a python-vibe brain into an editor chat. Quality stays 8B-class unless you pick a hosted model.

A 30B coder may already sit on the same machine as --model. It is not in EVERYDAY_OLLAMA_CHOICES. It still has no native IDE tools.

Same jobs, every path

Job 0.5B LoRA / --tiny 8B + harness Hosted IDE agent
Answer what does listen_addr return? No Action. Echoed the skill line. done in 1 step after a hint fix. “tuple of host and port.” Missed env + argv. One read. Quoted host/port env names and argv.
Add multiply(a, b) + test No parse. Wrote Action: patch + Append: as one line. patch Path: pkg/mathy.py + Append: def multiply… Function + test + run.
Held-out vibe (weekday, count-md) 0 / 4 with harness. Eval gate exists. Live parse 2/3. Not everyday-ready. Ordinary edits.
Review a 100-file repo 100× “no issues” on stubs. Need --scope + map. 8B will not walk the tree. Multi-file, tests, extra tools.
Browser / extra tools / any language No. run is Python argv. Writes are limited to project text files. No. Yes.
Offline / $0 API Yes. ~400 MB. Yes. ~5 GB RAM for 8B Q4. No. Cloud, billed on a usage pool.
Safe writes on a laptop PythonVibeGuard + .bak + 2/3 length + ast.parse. Same write limit. Questions refuse patch / edit / run. Editor diff / confirm. No PV00x rules. Relies on you.

Use python-vibe when

You want a cheap offline loop on a small Python tree (≤40 files, ≤200 KB), writes limited to one folder, no cloud. Default llama3.1:8b. Keep 0.5B for Hub demos and CI smoke.

Pull 7B or 14B if 8B answers stay shallow. Train python-vibe-8b only after ~2k redacted traces.

Use a hosted IDE agent when

The job is multi-file, another language, extra tools, a browser, or you need a precise quote from more than one call site.

Pointing an editor at Ollama via openai_compat.py does not make 8B into a hosted agent. It only changes the brain, not the tools.

Evening re-run of the eleven demo jobs, same 8B, against a hosted IDE agent on the same wording: same jobs, same evening. File-job check 3 / 4. add-feature wrote the controller.

Next: what to improve.