Arrmes-Qwen3-0.6B (Published MLX LoRA Baseline & v7 Adapter)
Arrmes-Qwen3-0.6B provides function-calling LoRA adapters for a separately downloaded Qwen/Qwen3-0.6B base and the 20-action arrmes.tools.v2 self-hosted media-operations contract (e34f94ec5110423f7e5dfc0309c5e8f10988f158253559f88f34d9d977a2efe8).
- Preserved Root Baseline (
adapters.safetensors): The unchanged root adapter from initial publication (8a9bcf224e6f9fd6bf238267093c70360ee837cb) has SHA-256a9a7ab8705d68e16f0e9597d96e2ddf58b6f3dfffcecf683e2b36c8b11f23fab. Its 196 LoRA tensors are stored in float32 (345,563,976bytes / ~345.6 MBcombined with the 4-bit basemlx-community/Qwen3-0.6B-4bit@73e3e38d981303bc594367cd910ea6eb48349da8; weight-file size on disk is not runtime RAM). It differs across all 196 tensors from an internal research checkpoint that shared thev6directory label. - Subdirectory
v7-lora/(v1.4.0): Contains thev7LoRA adapter trained onTrainPool-v7(5,827examples,seed=20261102,200iterations,lr=5e-5) and its provenance manifest (v7-lora/provenance.json). - Companion Neural Router: For sub-millisecond CPU routing across both
arrmes.tools.v2(20 tools) andarrmes.tools.v3(23 tools including 31 nativeservice_querypairs and Bazarr subtitle workflows), seeNorviTech/arrmes-neural-router-v3(7.52 MiB,p50 = 0.674 ms).
Five generative checkpoints on the same 100 positive and 100 negative cases; raw model output and verified proposals are shown separately. This slice is separate from the full-suite neural-router results. Recorded scores.
Highlights & Architectural Scope
- 20-Name Neural Contract (
arrmes.tools.v2): Defines 18 service-operation names and two control names across ten named integration domains: Sonarr (tv_status,tv_missing,tv_search_missing), Radarr (movie_status,movie_search), Lidarr (music_status,music_search), Tautulli (now_playing,watch_history), qBittorrent (torrent_list,torrent_pause,torrent_resume), Seer (seer_discover), Request Portal (request_status,request_media), Armiger (armiger_parse), Bitmagnet (bitmagnet_search), DH-Waypoint (waypoint_status), and structured abstention (clarify,unsupported). Expandedarrmes.tools.v3native operations (service_query,bazarr_subtitle_search,bazarr_subtitle_download) are handled byNorviTech/arrmes-neural-router-v3or explicit grammar routing, not by thisv2generative adapter. - Measured Apple Silicon MLX Latency & Memory (
v1.4.0): On an Apple M4 Pro (macOS 26.3 ARM64, 48 GiB unified memory) with static system-prompt KV caching (make_prompt_cache), the 4-bitQwen3-0.6B v7checkpoint (346.93 MB/330.86 MiBon disk) runs warm generation atp50 = 114.23 ms / p95 = 121.62 ms(256.7 tok/s) and warm routing +verify_proposalatp50 = 114.40 ms / p95 = 121.86 ms, with MLX Metal unified peak memory1,593.34 MiB(active343.62 MiB) and process RSS805.23 MiB(unified memory; do not sum). The earlier ~230–245 ms figure timed the unbatched generation core alone. - Execution Safeguards: Model outputs are untrusted proposals. Runtime schema validation (
verify_proposal), caller scope checks, and single-use HMAC-SHA256 confirmation tokens (WriteConfirmationStore) are mandatory before any consequential write executes.
Evaluation Results (Raw Track A vs Verified Track B)
Raw model output (raw_unverified, Track A), verifier-processed proposals (raw / verify_proposal, Track B), and controlled fixture execution (Track C) are measured and reported separately:
- Frozen 1,000-Case Diagnostic (
acceptance-v4,v1.4.0Verifier Replay):- On the frozen 1,000-case corpus (
docs/benchmark-acceptance-v4.md), the unchanged public fine-tunedQwen3-0.6Bscores770 / 1,000(77.00%) raw exact versus396 / 1,000(39.60%) for the untunedQwen3-0.6Bbase and782 / 1,000(78.20%) for theQwen3-4Breference. - While an intermediate pre-final verifier snapshot (
e5e76b8) regressed from717/1,000to678/1,000by damaging 135 correct predictions on contrastive subordinate clauses (rather than,instead of,do not) and multi-entity Lidarr(artist, album)cards, the general grammatical repairs in Arrmesv1.4.0restore and improve verified accuracy on those identical raw predictions to981 / 1,000(98.10%), repairing 211 model errors with0correct predictions damaged and0unexpected write proposals.
- On the frozen 1,000-case corpus (
- Locked
acceptance-v5Stratified 200-Case Generative Comparison (seed=7007,NorviTech/arrmes-bench-v5):- Evaluated on a stratified 200-case slice (
100positive +100hard-negative/safety) with zero query or entity overlap againstTrainPool-v7(5,827rows) andacceptance-v4(1,000rows):- Released
Qwen3-0.6B(fp16 + LoRA): Positive Track A88/100(88.0%), Track B91/100(91.0%); Hard-Negative Track A43/100, Track B96/100(96.0%),0unauthorized writes. - Trained
Qwen3-0.6B v7(fp16 + LoRA,v7-lora/): Positive Track A76/100(76.0%), Track B77/100(77.0%); Hard-Negative Track A33/100, Track B97/100(97.0%),0unauthorized writes. (Post-training 4-bit quantization ofQwen3-0.6B v7degraded unseen entity copying to53/100raw /62/100verified; keepQwen3-0.6Binfp16 + LoRAor useArrmesNeuralRouterV3.)
- Released
- Evaluated on a stratified 200-case slice (
- Historical
sealed-acceptance-v3(N = 314) Audit Disclosure:- Exact-public replay of the root adapter (
8a9bcf2...) with original public source (a536483...) measured 296/314 raw exact (94.27%) and 310/314 verifier-processed exact (98.73%), with 4 raw unexpected write proposals and 1 surviving the original verifier among 226 (not 229) non-write opportunities (311/314and0unexpected proposals after the later descriptor-grounding repair). - The 4,389-row historical training file shares 37 normalized templates with 261/314
sealed-v3rows (0identical full query+context records,34recurring query strings across different contexts). UseNorviTech/arrmes-bench-v5for zero-leakage evaluation.
- Exact-public replay of the root adapter (
Warm routing plus verification on Apple M4 Pro, excluding service and network time. Disk size is separate from runtime memory; sample counts and axis scales are labeled. Recorded profiles.
Quickstart (MLX on Apple Silicon)
raw is verifier-processed output; inspect raw_unverified separately when measuring raw model generation.
from arrmes.model import LocalModel
model = LocalModel(
"models/qwen3-06b", # 4-bit or fp16 Qwen3-0.6B base
family="hermes",
adapter="adapters/arrmes-qwen3-0.6b", # root v6 baseline or v7-lora/
contract_version="v2",
)
# 1. Read-only status proposal
res = model.infer("Check Sonarr for any missing episodes of Sintel without starting a search.")
print(res["raw_unverified"]) # Track A direct model output
print(res["raw"]) # Track B verified proposal
# <tool_call>{"name": "tv_missing", "arguments": {"title": "Sintel"}}</tool_call>
Licence
Released under the Apache-2.0 licence (inheriting from Qwen/Qwen3-0.6B). Part of the NorviTech Suite and Arrmes v1.4.0.