summaryrefslogtreecommitdiff
path: root/snippets/hyperstack
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-18 17:28:56 +0200
committerPaul Buetow <paul@buetow.org>2026-03-18 17:28:56 +0200
commitbda86a3c91b307e25507e975927c3dde38f65a74 (patch)
tree892e7d3f03a05b34528c08bd1091172c4e6de643 /snippets/hyperstack
parentd3821c76ecd18bf6256d7493596c304fff784d29 (diff)
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) <noreply@anthropic.com>
Diffstat (limited to 'snippets/hyperstack')
-rw-r--r--snippets/hyperstack/hyperstack-vm.toml4
-rw-r--r--snippets/hyperstack/hyperstack.rb6
2 files changed, 7 insertions, 3 deletions
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)