Downloads · 30 days
18
17% of all-time downloads
hazypiff/vibethinker-routed-stage2
vibethinker-routed-stage2 is a text generation model from hazypiff. Use it when you need the model to write or continue text. It is set up for llama.cpp. The card lists the license as other.
This repository contains the deployable artifacts and decision record for the local routed VibeThinker agent system built on July 4, 2026.
Downloads · 30 days
18
17% of all-time downloads
All-time downloads
105
Public
Repo size
120 MB
Likes
0
Public
Click a slice to open those files.
.gguf120 MB · 100%
From the Hugging Face model README
This repository contains the deployable artifacts and decision record for the local routed VibeThinker agent system built on July 4, 2026.
This is not a single merged GGUF. The working system is:
<tool_response> interpretation,The router path is intentional. A single-adapter path was tested and rejected.
Stage2c CP-500 was the best checkpoint on the short math screen, but it failed the dense agent/tool gate:
0/260/2619/190/32That means the math-replay adapter suppressed or destroyed the tool-use behavior needed for agent work. Even if a BFCL subset shows non-zero behavior under a different prompt distribution, CP-500 is not mergeable as the primary agent model.
The useful system is a router:
This keeps the strongest observed behavior from each component instead of forcing a single LoRA to preserve incompatible skills.
Adapters:
adapters/vibe_stage2b_ck250_lora.ggufadapters/vibe_stage2f_ck100_lora.ggufRuntime scripts:
scripts/vibethinker_routed_harness.pyscripts/tool_call_shim.pyscripts/stage2_route_infer.pyscripts/stage2_routed_score.pyIntegration notes:
integration/komodo-trade-desk.mdLocal service examples:
systemd/vibethinker.servicesystemd/vibethinker-tool-harness.serviceEvaluation and decision record:
evaluation/stage2_routed_scorecard.jsonevaluation/stage2_routed_scorecard.txtevaluation/stage2_routed_verdict.mdevaluation/stage2_local_routed_vibethinker_status.mdevaluation/dense_cp500.logevaluation/bfcl_cp500_100.logComposite routed scorecard:
74/100 = 74%405/500 = 81.0%95/100 = 95%26/2622/2619/1921/320Single-adapter warning:
22/40 = 55%386/500 = 77.2%401/500 = 80.2%,
but dense suite remains 0/26 tool selection and 0/32 Part-B compute, so
CP-500 is still rejected for agent work.The tested laptop deployment used:
/home/hazypiff/models/vibethinker-ablated/VibeThinker-3B-Ablated.Q4_K_M.ggufhttp://127.0.0.1:11501http://127.0.0.1:11502/v1/chat/completionshttp://127.0.0.1:11502/healthThe llama-server loads both LoRA adapters at global scale 0.0. The harness applies
per-request LoRA scales:
{
"bare": [
{"id": 0, "scale": 0.0},
{"id": 1, "scale": 0.0}
],
"stage2b": [
{"id": 0, "scale": 1.0},
{"id": 1, "scale": 0.0}
],
"stage2f": [
{"id": 0, "scale": 0.0},
{"id": 1, "scale": 1.0}
]
}
Adjust paths for your machine:
llama-server \
-m /path/to/VibeThinker-3B-Ablated.Q4_K_M.gguf \
--alias vibethinker-routed-local \
--lora-scaled /path/to/adapters/vibe_stage2b_ck250_lora.gguf:0.0,/path/to/adapters/vibe_stage2f_ck100_lora.gguf:0.0 \
--lora-init-without-apply \
-ngl 0 --host 127.0.0.1 --port 11501 \
-c 32768 -t 6 -b 512 -ub 128 -np 1 -fa on \
--repeat-last-n 256 --repeat-penalty 1.15 \
--dry-multiplier 0.8 --dry-allowed-length 2 --dry-penalty-last-n 2048 \
--cache-ram 0 --jinja --no-webui --metrics
Then run the routed harness:
export VT_HARNESS_UPSTREAM=http://127.0.0.1:11501/v1/chat/completions
export VT_HARNESS_PORT=11502
export VT_HARNESS_MODEL=vibethinker-routed-local
export VT_HARNESS_PROMPT_MODE=hermes
export VT_STAGE2B_LORA_ID=0
export VT_STAGE2F_LORA_ID=1
export VT_HARNESS_UPSTREAM_TIMEOUT=600
export VT_HARNESS_FALLBACK_TIMEOUT=600
export VT_HARNESS_STREAM_KEEPALIVE_SEC=15
export VT_HARNESS_PLAIN_MAX_TOKENS=1536
export VT_HARNESS_PLAIN_RESCUE_MAX_TOKENS=384
export VT_HARNESS_PLAIN_RESCUE_THINKING_BUDGET=0
python3 scripts/vibethinker_routed_harness.py
The deployed harness uses this policy:
<tool_response> in a non-system
message, use stage2f.<tools> block, use stage2b.For the bare route, the harness uses a single direct completion pass with a final answer commit instruction. This avoids the old two-round tool-call rescue loop for plain no-tool reasoning requests while preserving the stage2b/stage2f tool routes.
For local agents that call this endpoint with stream: true, use the current
harness. It opens the SSE stream immediately with an assistant-role chunk and
then sends no-op keepalive chunks while llama.cpp is still evaluating a long
reasoning prompt. Without that, clients such as Hermes can report waiting for stream response and fail the provider call before the CPU backend produces its
first final token.
The bare route intentionally allows the base model to think, but it also has a
plain-answer rescue path. If a no-tool reasoning pass spends the whole budget
inside <think> with no committed answer, the harness runs a compact final-answer
rescue against the original user message instead of returning an empty/fallback
assistant response.
Passed on the laptop before upload:
What is 12 * 7? -> 84get_weather({"city":"Boston"})<tool_response> -> direct answer, no recursive tool callReply with exactly OK. -> OK/api/agent/chat, forced reasoning: 12 * 7 -> 84/api/agent/chat, forced reasoning: desk state -> We are in paper mode with $808,550 equity, 13 robots (11 running, 5 open).The LoRAs were trained against WeiboAI/VibeThinker-3B and converted to llama.cpp
LoRA GGUF. The local deployment tested them against an uncensored/ablated VibeThinker
GGUF. That pairing smoke-tested successfully, but for maximum fidelity use a GGUF
base with the same architecture and lineage as the training base.
The base model GGUF is not included in this repository. This repo contains the router system, LoRA adapters, service wiring, and evaluation record.
Important file hashes are listed in manifest.json.