From bda86a3c91b307e25507e975927c3dde38f65a74 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 18 Mar 2026 17:28:56 +0200 Subject: Fix nemotron-super tool_call_parser; auto-clear WireGuard hostname from known_hosts - hyperstack-vm.toml: set tool_call_parser=llama3_json for nemotron-super so vLLM accepts tool_choice requests from opencode; model won't spontaneously call tools so the vLLM 0.17.1 token_ids crash in llama3_json won't trigger - hyperstack.rb: wait_for_ssh now also removes the WireGuard hostname (hyperstack.wg1) from known_hosts alongside the IP, preventing StrictHostKeyChecking failures across VM recreates Co-Authored-By: Claude Sonnet 4.6 (1M context) --- snippets/hyperstack/hyperstack-vm.toml | 4 +++- snippets/hyperstack/hyperstack.rb | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'snippets/hyperstack') diff --git a/snippets/hyperstack/hyperstack-vm.toml b/snippets/hyperstack/hyperstack-vm.toml index f1c80a7..4ec6879 100644 --- a/snippets/hyperstack/hyperstack-vm.toml +++ b/snippets/hyperstack/hyperstack-vm.toml @@ -100,7 +100,9 @@ container_name = "vllm_nemotron_super" max_model_len = 65536 gpu_memory_utilization = 0.92 tensor_parallel_size = 1 -tool_call_parser = "" +# llama3_json lets vLLM accept tool_choice requests (required by opencode). +# Nemotron won't spontaneously call tools, so the vLLM 0.17.1 token_ids bug won't trigger. +tool_call_parser = "llama3_json" trust_remote_code = true # OpenAI GPT-OSS 20B — ultra-fast MoE (3.6B active / 20B total, MXFP4), ~14 GB on A100. diff --git a/snippets/hyperstack/hyperstack.rb b/snippets/hyperstack/hyperstack.rb index 2ab53c9..f46ce6b 100644 --- a/snippets/hyperstack/hyperstack.rb +++ b/snippets/hyperstack/hyperstack.rb @@ -1106,9 +1106,11 @@ module HyperstackVM end def wait_for_ssh(host) - # Remove stale host key for this IP — VMs frequently reuse IPs after - # delete/recreate, causing StrictHostKeyChecking to reject the new key + # Remove stale host keys for both the IP and the WireGuard hostname — VMs + # frequently reuse IPs and the same WireGuard alias after delete/recreate, + # causing StrictHostKeyChecking to reject the new host key. remove_stale_host_key(host) + remove_stale_host_key(@config.wireguard_gateway_hostname) info "Waiting for SSH on #{host}:#{@config.ssh_port}..." with_polling("SSH on #{host}:#{@config.ssh_port}") do next nil unless tcp_open?(host, @config.ssh_port) -- cgit v1.2.3