harn-vm 0.8.113

Async bytecode virtual machine for the Harn programming language
Documentation
# ── Aliases ──────────────────────────────────────────────────────────────────
# Short symbolic names → (model id, provider, optional tool_format). The
# tier-resolution path (`resolve_tier_model("frontier", None)`) reads
# `frontier`, `mid`, `small`; provider-scoped tiers like `tier/mid` let
# callers force a specific resolution per provider.

# Short flagship aliases — these track whatever the current
# generation is. Bump these when a successor lands.
[aliases.sonnet]
id = "claude-sonnet-4-6"
provider = "anthropic"

[aliases.opus]
id = "claude-opus-4-8"
provider = "anthropic"

# Fable is the Mythos-class tier above Opus, not an Opus successor — the
# `opus` alias intentionally stays on claude-opus-4-8.
[aliases.fable]
id = "claude-fable-5"
provider = "anthropic"

[aliases.haiku]
id = "claude-haiku-4-5-20251001"
provider = "anthropic"

[aliases.frontier]
id = "claude-sonnet-4-6"
provider = "anthropic"

[aliases."tier/frontier"]
id = "claude-sonnet-4-6"
provider = "anthropic"

[aliases.mid]
id = "gpt-4o-mini"
provider = "openai"

[aliases."tier/mid"]
id = "gpt-4o-mini"
provider = "openai"

[aliases.small]
id = "Qwen/Qwen3.5-9B"
provider = "openrouter"

[aliases."tier/small"]
id = "Qwen/Qwen3.5-9B"
provider = "openrouter"

# Local Gemma 4 variants (vLLM / OpenAI-compat backend at `providers.local`).
[aliases.local-gemma4]
id = "gemma-4-26b-a4b-it"
provider = "local"

[aliases.local-gemma4-26b]
id = "gemma-4-26b-a4b-it"
provider = "local"

[aliases.local-gemma4-31b]
id = "gemma-4-31b-it"
provider = "local"

[aliases.local-gemma4-e4b]
id = "gemma-4-e4b-it"
provider = "local"

[aliases.local-gemma4-e2b]
id = "gemma-4-e2b-it"
provider = "local"

[aliases.ollama-gemma4]
id = "gemma4:26b"
provider = "ollama"
tool_format = "text"

[aliases.ollama-gemma4-26b]
id = "gemma4:26b"
provider = "ollama"
tool_format = "text"

[aliases.ollama-gemma4-12b]
id = "gemma4:12b-mlx"
provider = "ollama"
tool_format = "text"

[aliases.ollama-gemma4-12b-nvfp4]
id = "gemma4:12b-nvfp4"
provider = "ollama"
tool_format = "text"

[aliases.local-gemma4-12b]
id = "gemma-4-12b-it"
provider = "local"

# Gemma 4 26B/31B via hosted APIs (the 12B is on-device only). The Gemini API
# serves Gemma under its bare id; OpenRouter/Together use org-prefixed ids.
[aliases.gemini-gemma4-31b]
id = "models/gemma-4-31b-it"
provider = "gemini"

[aliases.gemini-gemma4-26b]
id = "models/gemma-4-26b-a4b-it"
provider = "gemini"

[aliases.openrouter-gemma4-31b]
id = "google/gemma-4-31b-it"
provider = "openrouter"

[aliases.openrouter-gemma4-26b]
id = "google/gemma-4-26b-a4b-it"
provider = "openrouter"

[aliases.together-gemma4-31b]
id = "google/gemma-4-31B-it"
provider = "together"

# Kimi via OpenRouter. Keep the short alias on the current code-focused route;
# the full model id remains available for callers that want explicit slugs.
[aliases."kimi-k2.7-code"]
id = "moonshotai/kimi-k2.7-code"
provider = "openrouter"

[aliases."openrouter-kimi-k2.7-code"]
id = "moonshotai/kimi-k2.7-code"
provider = "openrouter"

# Kimi via Moonshot's first-party API. Native tool calls are reliable on
# the direct route, so pin `native`.
[aliases."kimi-direct"]
id = "moonshot/kimi-k2.6"
provider = "moonshot"
tool_format = "native"

[aliases."moonshot-kimi"]
id = "moonshot/kimi-k2.6"
provider = "moonshot"
tool_format = "native"

[aliases."moonshot-kimi-k2.7-code"]
id = "moonshot/kimi-k2.7-code"
provider = "moonshot"
tool_format = "native"

# DeepInfra — open-weight OpenAI-compatible host.
[aliases."deepinfra-deepseek"]
id = "deepinfra/deepseek-ai/DeepSeek-V4-Pro"
provider = "deepinfra"
tool_format = "native"

[aliases."deepinfra-qwen3.6"]
id = "deepinfra/Qwen/Qwen3.6-35B-A3B"
provider = "deepinfra"
tool_format = "native"

# SambaNova Cloud — fast RDU inference.
[aliases."sambanova-deepseek"]
id = "sambanova/DeepSeek-V4-Pro"
provider = "sambanova"
tool_format = "native"

[aliases."sambanova-llama"]
id = "sambanova/Llama-4-Maverick"
provider = "sambanova"
tool_format = "native"

# Qwen 3.7 via OpenRouter/Together. Keep bare aliases on OpenRouter because it
# exposes both Max and Plus; Together currently serves only Max.
[aliases."qwen3.7"]
id = "qwen/qwen3.7-max"
provider = "openrouter"

[aliases."qwen3.7-max"]
id = "qwen/qwen3.7-max"
provider = "openrouter"

[aliases."qwen3.7-plus"]
id = "qwen/qwen3.7-plus"
provider = "openrouter"

[aliases."openrouter-qwen3.7-max"]
id = "qwen/qwen3.7-max"
provider = "openrouter"

[aliases."openrouter-qwen3.7-plus"]
id = "qwen/qwen3.7-plus"
provider = "openrouter"

[aliases."together-qwen3.7-max"]
id = "Qwen/Qwen3.7-Max"
provider = "together"

# OpenRouter-only coding specialist.
[aliases."kat-coder-pro-v2"]
id = "kwaipilot/kat-coder-pro-v2"
provider = "openrouter"

[aliases."openrouter-kat-coder-pro-v2"]
id = "kwaipilot/kat-coder-pro-v2"
provider = "openrouter"

# Together mirror of DeepSeek V4 Pro.
[aliases."together-deepseek"]
id = "deepseek-ai/DeepSeek-V4-Pro"
provider = "together"

[aliases."together-deepseek-v4-pro"]
id = "deepseek-ai/DeepSeek-V4-Pro"
provider = "together"

# StepFun long-context agent route via OpenRouter.
[aliases."step-3.7-flash"]
id = "stepfun/step-3.7-flash"
provider = "openrouter"

[aliases."openrouter-step-3.7-flash"]
id = "stepfun/step-3.7-flash"
provider = "openrouter"

# Together mirrors for current GLM/MiniMax agent routes.
[aliases."together-glm-5.1"]
id = "zai-org/GLM-5.1"
provider = "together"

[aliases."together-minimax-m2.7"]
id = "MiniMaxAI/MiniMax-M2.7"
provider = "together"

# qwen3.6 has no working Ollama route — Ollama's qwen3.5-family server-side
# tool-call parser 500s on text-tool output (ollama/ollama#14986, #14570).
# Use the llamacpp provider for local qwen3.x.

# llama.cpp — Unsloth Dynamic 2.0 GGUF served by llama-server.
# No `tool_format` pin: this non-native-quant id matches the `*qwen3.6*`
# text-channel capability row, which now resolves to the global `json`
# (fenced-JSON) default. json's ```tool fence sidesteps the reserved
# <tool_call> token (so the reserved-token remap stays correct) and is
# delimiter-safe vs heredoc. To force heredoc, set `tool_format = "text"`.
[aliases."llamacpp-qwen3.6"]
id = "qwen3.6-35b-a3b"
provider = "llamacpp"

[aliases."llamacpp-qwen3.6-q4"]
id = "qwen3.6-35b-a3b-ud-q4-k-xl"
provider = "llamacpp"
tool_format = "native"

[aliases."local-qwen3.6"]
id = "qwen3.6-35b-a3b-ud-q4-k-xl"
provider = "llamacpp"
tool_format = "native"

[aliases."local-qwen3.6-gguf"]
id = "qwen3.6-35b-a3b-ud-q4-k-xl"
provider = "llamacpp"
tool_format = "native"

# MLX (Apple Silicon).
[aliases.mlx-qwen36-27b]
id = "unsloth/Qwen3.6-27B-UD-MLX-4bit"
provider = "mlx"

[aliases."mlx-qwen3.6-27b"]
id = "unsloth/Qwen3.6-27B-UD-MLX-4bit"
provider = "mlx"
tool_format = "native"

[aliases."mlx-qwen3.6-27b-q4"]
id = "unsloth/Qwen3.6-27B-UD-MLX-4bit"
provider = "mlx"
tool_format = "native"

[aliases."local-qwen3.6-27b"]
id = "unsloth/Qwen3.6-27B-UD-MLX-4bit"
provider = "mlx"
tool_format = "native"

# MiniMax direct API aliases.
[aliases.minimax]
id = "MiniMax-M3"
provider = "minimax"

[aliases."minimax-m2"]
id = "MiniMax-M2"
provider = "minimax"

[aliases."minimax-m2.5"]
id = "MiniMax-M2.5"
provider = "minimax"

[aliases."minimax-m2.7"]
id = "MiniMax-M2.7"
provider = "minimax"

[aliases."minimax-m3"]
id = "MiniMax-M3"
provider = "minimax"

# Z.AI GLM aliases.
[aliases.glm]
id = "glm-5.1"
provider = "zai"

[aliases."glm-5"]
id = "glm-5"
provider = "zai"

[aliases."glm-5.1"]
id = "glm-5.1"
provider = "zai"

# DeepSeek V4 direct API aliases.
[aliases.deepseek]
id = "deepseek-v4-flash"
provider = "deepseek"

[aliases."deepseek-flash"]
id = "deepseek-v4-flash"
provider = "deepseek"

[aliases."deepseek-pro"]
id = "deepseek-v4-pro"
provider = "deepseek"

[aliases."deepseek-v4-flash"]
id = "deepseek-v4-flash"
provider = "deepseek"

[aliases."deepseek-v4-pro"]
id = "deepseek-v4-pro"
provider = "deepseek"

[aliases.cohere]
id = "command-a-plus-05-2026"
provider = "cohere"

[aliases."command-a-plus"]
id = "command-a-plus-05-2026"
provider = "cohere"

[aliases.grok-code]
id = "grok-build-0.1"
provider = "xai"

[aliases."grok-code-fast"]
id = "grok-build-0.1"
provider = "xai"

# Devstral (Mistral's agentic-coding tune).
# No `tool_format` pin: these aliases inherit the `devstral-small-2*` capability
# row's resolved default, now `json` (fenced-JSON) — the global text-channel
# default. devstral has no reserved-token constraint, so the stale heredoc
# `text` pin that used to sit here had no structural reason to exist; json is
# delimiter-safe and root-cause-fixes heredoc's `<<EOF` content leak. To force
# heredoc, set `tool_format = "text"` here or pin the capability row.
[aliases.devstral-small-2]
id = "devstral-small-2:24b"
provider = "ollama"

[aliases.ollama-devstral-small-2]
id = "devstral-small-2:24b"
provider = "ollama"

# NOTE: there is intentionally no `ollama-devstral-small-2-native` alias.
# Devstral Small 2 on Ollama is text-tool-only (see the `devstral-small-2*`
# capability rule: native_tools = false). A `tool_format = "native"` pin here
# would be silently half-supported — accepted by resolution but degraded to
# the text protocol downstream — which the catalog validator now rejects.