{"planner":{"model":"qwen3.5:4b","min_tps":10,"min_prompt_tps":30,"min_ctx":32768,"min_ollama_version":"0.17.6","variants":[{"tag":"qwen3.5:4b-q4_K_M","hardware":"default","capabilities":["text","vision"]},{"tag":"qwen3.5:4b-mlx","hardware":"apple","capabilities":["text"]},{"tag":"qwen3.5:4b-nvfp4","hardware":"blackwell","capabilities":["text"]}]},"worker":{"model":"qwen3.5:9b","min_tps":15,"min_prompt_tps":45,"min_ctx":32768,"min_ollama_version":"0.17.6","variants":[{"tag":"qwen3.5:9b-q4_K_M","hardware":"default","capabilities":["text","vision"]},{"tag":"qwen3.5:9b-mlx","hardware":"apple","capabilities":["text"]},{"tag":"qwen3.5:9b-nvfp4","hardware":"blackwell","capabilities":["text"]}]},"helper":{"model":"qwen3.5:4b","min_tps":20,"min_prompt_tps":60,"min_ctx":32768,"min_ollama_version":"0.17.6","variants":[{"tag":"qwen3.5:4b-q4_K_M","hardware":"default","capabilities":["text","vision"]},{"tag":"qwen3.5:4b-mlx","hardware":"apple","capabilities":["text"]},{"tag":"qwen3.5:4b-nvfp4","hardware":"blackwell","capabilities":["text"]}]},"rungs":[{"name":"low","ordinal":0,"model":"qwen3.5:4b","min_tps":20,"min_prompt_tps":60,"min_ctx":32768,"min_ollama_version":"0.17.6","variants":[{"tag":"qwen3.5:4b-q4_K_M","hardware":"default","capabilities":["text","vision"]},{"tag":"qwen3.5:4b-mlx","hardware":"apple","capabilities":["text"]},{"tag":"qwen3.5:4b-nvfp4","hardware":"blackwell","capabilities":["text"]}],"deadline":{"header_sec":170,"inference_sec":180,"stage_inference_sec":90},"liquid":true},{"name":"mid","ordinal":1,"model":"qwen3.5:9b","min_tps":15,"min_prompt_tps":45,"min_ctx":32768,"min_ollama_version":"0.17.6","variants":[{"tag":"qwen3.5:9b-q4_K_M","hardware":"default","capabilities":["text","vision"]},{"tag":"qwen3.5:9b-mlx","hardware":"apple","capabilities":["text"]},{"tag":"qwen3.5:9b-nvfp4","hardware":"blackwell","capabilities":["text"]}],"deadline":{"header_sec":170,"inference_sec":180,"stage_inference_sec":90},"liquid":true}],"capabilities":{"audio_stt":{"tool_name":"TranscribeAudio","pool_depth":1,"contract":{"input_schema":{"audio_content_ref":"string, required — content_ref (ULID) of the audio clip, pulled over the reverse tunnel","model":"string, optional — logical STT model, default STT_MODEL; the node's host loads it on demand","language":"string, optional — ISO-639-1 hint (e.g. \"en\"); omit for auto-detect (multilingual)","word_timestamps":"boolean, optional, default true — emit per-word start/end times","verbatim":"boolean, optional, default false — retain fillers/disfluencies (routes to a verbatim model e.g. CrisperWhisper)","initial_prompt":"string, optional — vocabulary/glossary bias (Whisper initial_prompt)","decode_options":"object, optional — per-request decoding tuning, opaque to the relay and validated node-side. Supported keys: temperature (number 0-1, 0 = greedy/deterministic) and hotwords (string, decoder bias, distinct from initial_prompt). ANY OTHER KEY IS REJECTED with an error naming the supported set — the backing host silently ignores form fields it does not declare, so a dropped key would be indistinguishable from an honoured one, and identical audio decoded at different settings yields materially different transcripts. Notably NOT available: beam_size, condition_on_previous_text, compression_ratio_threshold, log_prob_threshold, no_speech_threshold (undeclared by the host's HTTP surface) and vad_filter/vad_parameters (the host runs VAD unconditionally from a hardcoded constant). See cli/internal/audio/decodeopts.go."},"transcript_schema":{"text":"string — the settled transcript","language":"string — detected or supplied language","words":[{"word":"string","start":"number (s)","end":"number (s)","probability":"number, often absent — the Speaches host does not reliably populate this"}]},"codec":"opus","sample_rate_hz":16000,"channels":1,"max_clip_s":300}},"embeddings":{"pool_depth":2,"contract":{"input_schema":{"texts":"array of strings, required — 1..N documents/queries to embed (batch = length \u003e 1, a single Ollama call either way)","model":"string, optional — logical embedding model, default EMBEDDING_MODEL","truncate":"boolean, optional, default true — truncate inputs exceeding the model's context instead of erroring"},"embedding_schema":{"embeddings":"array of float arrays, one per input text, same order as texts","dims":"integer — vector width","model":"string","usage":{"prompt_tokens":"integer"}}},"benchmark_axes":{"batch_speedup":{"median":4.322959976376684,"samples":3},"embed_tok_per_sec":{"median":109.37601687771844,"samples":3},"p95_latency_ms_single":{"median":590.744,"samples":3}}}}}
