Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Routes to the best predicted fit from configured metadata/evidence after hard-capability filtering.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ANTHROPIC_API_KEY, ANTHROPIC_MODELS, ANTHROPIC_NAMES, ANTHROPIC_STRENGTHS, ANTHROPIC_CONTEXT, ANTHROPIC_MAX_OUTPUT, ANTHROPIC_TOOLS, ANTHROPIC_COST_IN, ANTHROPIC_COST_OUT, ANTHROPIC_TIER, MOONSHOT_API_KEY, MOONSHOT_BASE_URL, MOONSHOT_MODELS, MOONSHOT_NAMES, MOONSHOT_STRENGTHS, MOONSHOT_CONTEXT, MOONSHOT_MAX_OUTPUT, MOONSHOT_TOOLS, MOONSHOT_COST_IN, MOONSHOT_COST_OUT, MOONSHOT_TIER, OLLAMA_BASE_URL, OLLAMA_API_KEY, OLLAMA_MODELS, OLLAMA_NAMES, OLLAMA_STRENGTHS, OLLAMA_CONTEXT, OLLAMA_MAX_OUTPUT, OLLAMA_TOOLS, OLLAMA_COST_IN, OLLAMA_COST_OUT, OLLAMA_TIER, CLAUDE_CODE_ENABLED, CLAUDE_CODE_MODELS, CLAUDE_CODE_TIER, CLAUDE_CODE_MAX_OUTPUT, CLAUDE_CODE_TIMEOUT, CLAUDE_CODE_SYSTEM_PROMPT_MODE, CODEX_ENABLED, CODEX_MODELS, CODEX_TIER, CODEX_CONTEXT, CODEX_MAX_OUTPUT, CODEX_COST_IN, CODEX_COST_OUT, CODEX_TIMEOUT, OPENAI_COMPAT_BASE_URL, OPENAI_COMPAT_KEY, OPENAI_COMPAT_MODEL, OPENAI_COMPAT_NAME, OPENAI_COMPAT_STRENGTHS, OPENAI_COMPAT_CONTEXT, OPENAI_COMPAT_MAX_OUTPUT, OPENAI_COMPAT_TOOLS, OPENAI_COMPAT_COST_IN, OPENAI_COMPAT_COST_OUT, OPENAI_COMPAT_TIER, OPENAI_COMPAT_2_BASE_URL, OPENAI_COMPAT_2_KEY, OPENAI_COMPAT_2_MODEL, OPENAI_COMPAT_2_NAME, OPENAI_COMPAT_2_STRENGTHS, OPENAI_COMPAT_2_CONTEXT, OPENAI_COMPAT_2_MAX_OUTPUT, OPENAI_COMPAT_2_TOOLS, OPENAI_COMPAT_2_COST_IN, OPENAI_COMPAT_2_COST_OUT, OPENAI_COMPAT_2_TIER, OPENAI_COMPAT_3_BASE_URL, OPENAI_COMPAT_3_KEY, OPENAI_COMPAT_3_MODEL, OPENAI_COMPAT_3_NAME, OPENAI_COMPAT_3_STRENGTHS, OPENAI_COMPAT_3_CONTEXT, OPENAI_COMPAT_3_MAX_OUTPUT, OPENAI_COMPAT_3_TOOLS, OPENAI_COMPAT_3_COST_IN, OPENAI_COMPAT_3_COST_OUT, OPENAI_COMPAT_3_TIER, VOLANTE_QUALITY_PROFILES_FILE, VOLANTE_MODEL_OVERRIDES_FILE, VOLANTE_FETCH_ALLOWLIST, VOLANTE_READ_ROOT, VOLANTE_SANDBOX, VOLANTE_MAX_SUBSCRIPTION_CALLSค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"volante": {
"command": "uvx",
"args": [
"volante"
],
"env": {
"ANTHROPIC_API_KEY": "ใส่ค่าของคุณ",
"ANTHROPIC_MODELS": "ใส่ค่าของคุณ",
"ANTHROPIC_NAMES": "ใส่ค่าของคุณ",
"ANTHROPIC_STRENGTHS": "ใส่ค่าของคุณ",
"ANTHROPIC_CONTEXT": "ใส่ค่าของคุณ",
"ANTHROPIC_MAX_OUTPUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TOOLS": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_IN": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_OUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TIER": "ใส่ค่าของคุณ",
"MOONSHOT_API_KEY": "ใส่ค่าของคุณ",
"MOONSHOT_BASE_URL": "ใส่ค่าของคุณ",
"MOONSHOT_MODELS": "ใส่ค่าของคุณ",
"MOONSHOT_NAMES": "ใส่ค่าของคุณ",
"MOONSHOT_STRENGTHS": "ใส่ค่าของคุณ",
"MOONSHOT_CONTEXT": "ใส่ค่าของคุณ",
"MOONSHOT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"MOONSHOT_TOOLS": "ใส่ค่าของคุณ",
"MOONSHOT_COST_IN": "ใส่ค่าของคุณ",
"MOONSHOT_COST_OUT": "ใส่ค่าของคุณ",
"MOONSHOT_TIER": "ใส่ค่าของคุณ",
"OLLAMA_BASE_URL": "ใส่ค่าของคุณ",
"OLLAMA_API_KEY": "ใส่ค่าของคุณ",
"OLLAMA_MODELS": "ใส่ค่าของคุณ",
"OLLAMA_NAMES": "ใส่ค่าของคุณ",
"OLLAMA_STRENGTHS": "ใส่ค่าของคุณ",
"OLLAMA_CONTEXT": "ใส่ค่าของคุณ",
"OLLAMA_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OLLAMA_TOOLS": "ใส่ค่าของคุณ",
"OLLAMA_COST_IN": "ใส่ค่าของคุณ",
"OLLAMA_COST_OUT": "ใส่ค่าของคุณ",
"OLLAMA_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_ENABLED": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MODELS": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIMEOUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_SYSTEM_PROMPT_MODE": "ใส่ค่าของคุณ",
"CODEX_ENABLED": "ใส่ค่าของคุณ",
"CODEX_MODELS": "ใส่ค่าของคุณ",
"CODEX_TIER": "ใส่ค่าของคุณ",
"CODEX_CONTEXT": "ใส่ค่าของคุณ",
"CODEX_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CODEX_COST_IN": "ใส่ค่าของคุณ",
"CODEX_COST_OUT": "ใส่ค่าของคุณ",
"CODEX_TIMEOUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TIER": "ใส่ค่าของคุณ",
"VOLANTE_QUALITY_PROFILES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_MODEL_OVERRIDES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_FETCH_ALLOWLIST": "ใส่ค่าของคุณ",
"VOLANTE_READ_ROOT": "ใส่ค่าของคุณ",
"VOLANTE_SANDBOX": "ใส่ค่าของคุณ",
"VOLANTE_MAX_SUBSCRIPTION_CALLS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add volante --env ANTHROPIC_API_KEY='ใส่ค่าของคุณ' --env ANTHROPIC_MODELS='ใส่ค่าของคุณ' --env ANTHROPIC_NAMES='ใส่ค่าของคุณ' --env ANTHROPIC_STRENGTHS='ใส่ค่าของคุณ' --env ANTHROPIC_CONTEXT='ใส่ค่าของคุณ' --env ANTHROPIC_MAX_OUTPUT='ใส่ค่าของคุณ' --env ANTHROPIC_TOOLS='ใส่ค่าของคุณ' --env ANTHROPIC_COST_IN='ใส่ค่าของคุณ' --env ANTHROPIC_COST_OUT='ใส่ค่าของคุณ' --env ANTHROPIC_TIER='ใส่ค่าของคุณ' --env MOONSHOT_API_KEY='ใส่ค่าของคุณ' --env MOONSHOT_BASE_URL='ใส่ค่าของคุณ' --env MOONSHOT_MODELS='ใส่ค่าของคุณ' --env MOONSHOT_NAMES='ใส่ค่าของคุณ' --env MOONSHOT_STRENGTHS='ใส่ค่าของคุณ' --env MOONSHOT_CONTEXT='ใส่ค่าของคุณ' --env MOONSHOT_MAX_OUTPUT='ใส่ค่าของคุณ' --env MOONSHOT_TOOLS='ใส่ค่าของคุณ' --env MOONSHOT_COST_IN='ใส่ค่าของคุณ' --env MOONSHOT_COST_OUT='ใส่ค่าของคุณ' --env MOONSHOT_TIER='ใส่ค่าของคุณ' --env OLLAMA_BASE_URL='ใส่ค่าของคุณ' --env OLLAMA_API_KEY='ใส่ค่าของคุณ' --env OLLAMA_MODELS='ใส่ค่าของคุณ' --env OLLAMA_NAMES='ใส่ค่าของคุณ' --env OLLAMA_STRENGTHS='ใส่ค่าของคุณ' --env OLLAMA_CONTEXT='ใส่ค่าของคุณ' --env OLLAMA_MAX_OUTPUT='ใส่ค่าของคุณ' --env OLLAMA_TOOLS='ใส่ค่าของคุณ' --env OLLAMA_COST_IN='ใส่ค่าของคุณ' --env OLLAMA_COST_OUT='ใส่ค่าของคุณ' --env OLLAMA_TIER='ใส่ค่าของคุณ' --env CLAUDE_CODE_ENABLED='ใส่ค่าของคุณ' --env CLAUDE_CODE_MODELS='ใส่ค่าของคุณ' --env CLAUDE_CODE_TIER='ใส่ค่าของคุณ' --env CLAUDE_CODE_MAX_OUTPUT='ใส่ค่าของคุณ' --env CLAUDE_CODE_TIMEOUT='ใส่ค่าของคุณ' --env CLAUDE_CODE_SYSTEM_PROMPT_MODE='ใส่ค่าของคุณ' --env CODEX_ENABLED='ใส่ค่าของคุณ' --env CODEX_MODELS='ใส่ค่าของคุณ' --env CODEX_TIER='ใส่ค่าของคุณ' --env CODEX_CONTEXT='ใส่ค่าของคุณ' --env CODEX_MAX_OUTPUT='ใส่ค่าของคุณ' --env CODEX_COST_IN='ใส่ค่าของคุณ' --env CODEX_COST_OUT='ใส่ค่าของคุณ' --env CODEX_TIMEOUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_BASE_URL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_KEY='ใส่ค่าของคุณ' --env OPENAI_COMPAT_MODEL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_NAME='ใส่ค่าของคุณ' --env OPENAI_COMPAT_STRENGTHS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_CONTEXT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_MAX_OUTPUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_TOOLS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_COST_IN='ใส่ค่าของคุณ' --env OPENAI_COMPAT_COST_OUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_TIER='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_BASE_URL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_KEY='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_MODEL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_NAME='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_STRENGTHS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_CONTEXT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_MAX_OUTPUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_TOOLS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_COST_IN='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_COST_OUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_2_TIER='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_BASE_URL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_KEY='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_MODEL='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_NAME='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_STRENGTHS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_CONTEXT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_MAX_OUTPUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_TOOLS='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_COST_IN='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_COST_OUT='ใส่ค่าของคุณ' --env OPENAI_COMPAT_3_TIER='ใส่ค่าของคุณ' --env VOLANTE_QUALITY_PROFILES_FILE='ใส่ค่าของคุณ' --env VOLANTE_MODEL_OVERRIDES_FILE='ใส่ค่าของคุณ' --env VOLANTE_FETCH_ALLOWLIST='ใส่ค่าของคุณ' --env VOLANTE_READ_ROOT='ใส่ค่าของคุณ' --env VOLANTE_SANDBOX='ใส่ค่าของคุณ' --env VOLANTE_MAX_SUBSCRIPTION_CALLS='ใส่ค่าของคุณ' -- uvx volanteเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"volante": {
"command": "uvx",
"args": [
"volante"
],
"env": {
"ANTHROPIC_API_KEY": "ใส่ค่าของคุณ",
"ANTHROPIC_MODELS": "ใส่ค่าของคุณ",
"ANTHROPIC_NAMES": "ใส่ค่าของคุณ",
"ANTHROPIC_STRENGTHS": "ใส่ค่าของคุณ",
"ANTHROPIC_CONTEXT": "ใส่ค่าของคุณ",
"ANTHROPIC_MAX_OUTPUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TOOLS": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_IN": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_OUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TIER": "ใส่ค่าของคุณ",
"MOONSHOT_API_KEY": "ใส่ค่าของคุณ",
"MOONSHOT_BASE_URL": "ใส่ค่าของคุณ",
"MOONSHOT_MODELS": "ใส่ค่าของคุณ",
"MOONSHOT_NAMES": "ใส่ค่าของคุณ",
"MOONSHOT_STRENGTHS": "ใส่ค่าของคุณ",
"MOONSHOT_CONTEXT": "ใส่ค่าของคุณ",
"MOONSHOT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"MOONSHOT_TOOLS": "ใส่ค่าของคุณ",
"MOONSHOT_COST_IN": "ใส่ค่าของคุณ",
"MOONSHOT_COST_OUT": "ใส่ค่าของคุณ",
"MOONSHOT_TIER": "ใส่ค่าของคุณ",
"OLLAMA_BASE_URL": "ใส่ค่าของคุณ",
"OLLAMA_API_KEY": "ใส่ค่าของคุณ",
"OLLAMA_MODELS": "ใส่ค่าของคุณ",
"OLLAMA_NAMES": "ใส่ค่าของคุณ",
"OLLAMA_STRENGTHS": "ใส่ค่าของคุณ",
"OLLAMA_CONTEXT": "ใส่ค่าของคุณ",
"OLLAMA_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OLLAMA_TOOLS": "ใส่ค่าของคุณ",
"OLLAMA_COST_IN": "ใส่ค่าของคุณ",
"OLLAMA_COST_OUT": "ใส่ค่าของคุณ",
"OLLAMA_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_ENABLED": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MODELS": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIMEOUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_SYSTEM_PROMPT_MODE": "ใส่ค่าของคุณ",
"CODEX_ENABLED": "ใส่ค่าของคุณ",
"CODEX_MODELS": "ใส่ค่าของคุณ",
"CODEX_TIER": "ใส่ค่าของคุณ",
"CODEX_CONTEXT": "ใส่ค่าของคุณ",
"CODEX_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CODEX_COST_IN": "ใส่ค่าของคุณ",
"CODEX_COST_OUT": "ใส่ค่าของคุณ",
"CODEX_TIMEOUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TIER": "ใส่ค่าของคุณ",
"VOLANTE_QUALITY_PROFILES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_MODEL_OVERRIDES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_FETCH_ALLOWLIST": "ใส่ค่าของคุณ",
"VOLANTE_READ_ROOT": "ใส่ค่าของคุณ",
"VOLANTE_SANDBOX": "ใส่ค่าของคุณ",
"VOLANTE_MAX_SUBSCRIPTION_CALLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"volante": {
"type": "stdio",
"command": "uvx",
"args": [
"volante"
],
"env": {
"ANTHROPIC_API_KEY": "ใส่ค่าของคุณ",
"ANTHROPIC_MODELS": "ใส่ค่าของคุณ",
"ANTHROPIC_NAMES": "ใส่ค่าของคุณ",
"ANTHROPIC_STRENGTHS": "ใส่ค่าของคุณ",
"ANTHROPIC_CONTEXT": "ใส่ค่าของคุณ",
"ANTHROPIC_MAX_OUTPUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TOOLS": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_IN": "ใส่ค่าของคุณ",
"ANTHROPIC_COST_OUT": "ใส่ค่าของคุณ",
"ANTHROPIC_TIER": "ใส่ค่าของคุณ",
"MOONSHOT_API_KEY": "ใส่ค่าของคุณ",
"MOONSHOT_BASE_URL": "ใส่ค่าของคุณ",
"MOONSHOT_MODELS": "ใส่ค่าของคุณ",
"MOONSHOT_NAMES": "ใส่ค่าของคุณ",
"MOONSHOT_STRENGTHS": "ใส่ค่าของคุณ",
"MOONSHOT_CONTEXT": "ใส่ค่าของคุณ",
"MOONSHOT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"MOONSHOT_TOOLS": "ใส่ค่าของคุณ",
"MOONSHOT_COST_IN": "ใส่ค่าของคุณ",
"MOONSHOT_COST_OUT": "ใส่ค่าของคุณ",
"MOONSHOT_TIER": "ใส่ค่าของคุณ",
"OLLAMA_BASE_URL": "ใส่ค่าของคุณ",
"OLLAMA_API_KEY": "ใส่ค่าของคุณ",
"OLLAMA_MODELS": "ใส่ค่าของคุณ",
"OLLAMA_NAMES": "ใส่ค่าของคุณ",
"OLLAMA_STRENGTHS": "ใส่ค่าของคุณ",
"OLLAMA_CONTEXT": "ใส่ค่าของคุณ",
"OLLAMA_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OLLAMA_TOOLS": "ใส่ค่าของคุณ",
"OLLAMA_COST_IN": "ใส่ค่าของคุณ",
"OLLAMA_COST_OUT": "ใส่ค่าของคุณ",
"OLLAMA_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_ENABLED": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MODELS": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIER": "ใส่ค่าของคุณ",
"CLAUDE_CODE_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_TIMEOUT": "ใส่ค่าของคุณ",
"CLAUDE_CODE_SYSTEM_PROMPT_MODE": "ใส่ค่าของคุณ",
"CODEX_ENABLED": "ใส่ค่าของคุณ",
"CODEX_MODELS": "ใส่ค่าของคุณ",
"CODEX_TIER": "ใส่ค่าของคุณ",
"CODEX_CONTEXT": "ใส่ค่าของคุณ",
"CODEX_MAX_OUTPUT": "ใส่ค่าของคุณ",
"CODEX_COST_IN": "ใส่ค่าของคุณ",
"CODEX_COST_OUT": "ใส่ค่าของคุณ",
"CODEX_TIMEOUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_2_TIER": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_BASE_URL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_KEY": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MODEL": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_NAME": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_STRENGTHS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_CONTEXT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_MAX_OUTPUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TOOLS": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_IN": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_COST_OUT": "ใส่ค่าของคุณ",
"OPENAI_COMPAT_3_TIER": "ใส่ค่าของคุณ",
"VOLANTE_QUALITY_PROFILES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_MODEL_OVERRIDES_FILE": "ใส่ค่าของคุณ",
"VOLANTE_FETCH_ALLOWLIST": "ใส่ค่าของคุณ",
"VOLANTE_READ_ROOT": "ใส่ค่าของคุณ",
"VOLANTE_SANDBOX": "ใส่ค่าของคุณ",
"VOLANTE_MAX_SUBSCRIPTION_CALLS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ANTHROPIC_MODELS envANTHROPIC_NAMES envANTHROPIC_STRENGTHS envANTHROPIC_CONTEXT envANTHROPIC_MAX_OUTPUT envANTHROPIC_TOOLS envANTHROPIC_COST_IN envANTHROPIC_COST_OUT envANTHROPIC_TIER envMOONSHOT_BASE_URL envMOONSHOT_MODELS envMOONSHOT_NAMES envMOONSHOT_STRENGTHS envMOONSHOT_CONTEXT envMOONSHOT_MAX_OUTPUT envMOONSHOT_TOOLS envMOONSHOT_COST_IN envMOONSHOT_COST_OUT envMOONSHOT_TIER envOLLAMA_BASE_URL envOLLAMA_MODELS envOLLAMA_NAMES envOLLAMA_STRENGTHS envOLLAMA_CONTEXT envOLLAMA_MAX_OUTPUT envOLLAMA_TOOLS envOLLAMA_COST_IN envOLLAMA_COST_OUT envOLLAMA_TIER envCLAUDE_CODE_ENABLED envCLAUDE_CODE_MODELS envCLAUDE_CODE_TIER envCLAUDE_CODE_MAX_OUTPUT envCLAUDE_CODE_TIMEOUT envCLAUDE_CODE_SYSTEM_PROMPT_MODE envCODEX_ENABLED envCODEX_MODELS envCODEX_TIER envCODEX_CONTEXT envCODEX_MAX_OUTPUT envCODEX_COST_IN envCODEX_COST_OUT envCODEX_TIMEOUT envOPENAI_COMPAT_BASE_URL envOPENAI_COMPAT_MODEL envOPENAI_COMPAT_NAME envOPENAI_COMPAT_STRENGTHS envOPENAI_COMPAT_CONTEXT envOPENAI_COMPAT_MAX_OUTPUT envOPENAI_COMPAT_TOOLS envOPENAI_COMPAT_COST_IN envOPENAI_COMPAT_COST_OUT envOPENAI_COMPAT_TIER envOPENAI_COMPAT_2_BASE_URL envOPENAI_COMPAT_2_MODEL envOPENAI_COMPAT_2_NAME envOPENAI_COMPAT_2_STRENGTHS envOPENAI_COMPAT_2_CONTEXT envOPENAI_COMPAT_2_MAX_OUTPUT envOPENAI_COMPAT_2_TOOLS envOPENAI_COMPAT_2_COST_IN envOPENAI_COMPAT_2_COST_OUT envOPENAI_COMPAT_2_TIER envOPENAI_COMPAT_3_BASE_URL envOPENAI_COMPAT_3_MODEL envOPENAI_COMPAT_3_NAME envOPENAI_COMPAT_3_STRENGTHS envOPENAI_COMPAT_3_CONTEXT envOPENAI_COMPAT_3_MAX_OUTPUT envOPENAI_COMPAT_3_TOOLS envOPENAI_COMPAT_3_COST_IN envOPENAI_COMPAT_3_COST_OUT envOPENAI_COMPAT_3_TIER envVOLANTE_QUALITY_PROFILES_FILE envVOLANTE_MODEL_OVERRIDES_FILE envVOLANTE_FETCH_ALLOWLIST envVOLANTE_READ_ROOT envVOLANTE_SANDBOX envVOLANTE_MAX_SUBSCRIPTION_CALLS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub ribato22 ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: ANTHROPIC_API_KEY, MOONSHOT_API_KEY, OLLAMA_API_KEY, OPENAI_COMPAT_KEY, OPENAI_COMPAT_2_KEY, OPENAI_COMPAT_3_KEY
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.10.0) เข้า registry 3 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Verbaly
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
i18n for coding agents: extract, check and translate an app's text, with drafts a person approves
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A transparent, user-owned model router that checks its own answers (alpha). Volante routes a goal across the models *you* configured — enforcing hard capabilities first, ranking the rest on explainable metadata and evaluation evidence — and can then verify the result by RUNNING it: assertions derived from your goal, executed in a sandbox, reported check by check. Inventory, policy, credentials and decision traces stay on your machine. By default it answers in ONE call — across 72 paired runs, planning and synthesising scored -0.047 against that [95% CI -0.135, +0.041] at 8.8x the cost, so the interval bounds its best case near +0.04. --orchestrate opts back into the task DAG for the work that genuinely needs a tool loop, which one call cannot do.
What the measurements say, including the parts that do not flatter it. This project runs a 3-arm eval against itself and publishes the losses. Orchestration does not reliably beat a single strong model: an earlier release of this README claimed +0.289 at p<0.005, it failed to reproduce, and on the goal built to give decomposition headroom a stronger model in the same family scores 0.958 alone. Four predictive gates, a repair pass and a model-escalation policy were all built, measured, and discarded. What survived every test is narrower and real — the router, the reliability work (unparsable output 2 runs in 8 -> 0 in 8), and the verifier. Full numbers, method and corrections: eval/artifacts/README.md.
Selection quality is an evidence-based prediction, not a claim of a universal winner. Volante does not yet ship published representative cross-provider benchmarks or automatic score calibration. Built without an orchestration framework (no LangChain / CrewAI / LiteLLM).
A *volante* steers the game: the deep-lying midfielder who reads the whole pitch and sends the
ball where it does the most good — then takes it back. One mind, many players.
quality, local, cheap, and cash_protect_quota are distinct routing objectives.AnthropicProvider and a generic OpenAICompatProvider speak to Anthropic, Google AI Studio (Gemini), Groq, OpenRouter, DeepSeek, Moonshot (Kimi), local Ollama, and any other OpenAI-compatible endpoint. The inventory and credentials stay in the user's environment.run_python in a Docker-isolated sandbox when a daemon is available, withheld when none is — plus host-mediated fetch_url / read_file).volante --verify derives assert statements from your goal, runs them against the result in the sandbox, and prints which passed and which failed — with the check text, not a badge, because a failing check is often the CHECK being wrong and only the line shows that. It reports three states, including "not enough evidence" when your goal states no expected result. Measured: 0 false positives and 0 false negatives across 8 goals against a coarse defect, 5 of 6 caught against edit-shaped ones. A clean report is evidence, not a guarantee.CostMeter tallies per-model usage and cost, and propagates an *estimated* flag when a provider returns no usage.FakeProvider + local subprocesses), ruff-clean, mypy-clean.flowchart TD
goal(["goal"]) --> S["Supervisor plan → validated task DAG (acyclic · typed · one_shot | agentic)"] S --> R["Router best predicted fit per task (hard constraints → explainable score)"] R --> P subgraph wave["wave execution · asyncio fan-out · fail-fast"] direction TB P["Projector scoped, budget-capped request (system + task + deps)"] P --> W["Worker one-shot"] P --> AW["AgenticWorker model ↔ tool loop (run_python · fetch_url · read_file)"] end W --> BB[("Blackboard append-only · provenance · latest-wins")] AW --> BB BB --> SY["Synthesizer combine artifacts → final answer"] SY --> result(["result
classDef io stroke:#8b5cf6,stroke-width:2px; classDef store stroke:#f59e0b,stroke-width:2px; class goal,result io; class BB store;
Text version (renders anywhere, e.g. PyPI or a terminal)
┌──────────────┐
goal ──────────► │ Supervisor │ plan → validated task DAG (acyclic, typed, one_shot|agentic) └──────┬───────┘ ▼ ┌──────────────┐ per task: hard-capability filter, then rank the │ Router │ predicted fit from configured evidence └──────┬───────┘ ▼ ┌───────────── wave execution (asyncio, fan-out cap, fail-fast) ─────────────┐ │ ┌───────────┐ scoped, budget-capped request (system + task + deps) │ │ │ Projector │──────────────────────────────────────────────────────────► │ │ └───────────┘ │ │ ▼ ▼ │ │ ┌─────────┐ one-shot ┌───────────────┐ model↔tool loop │ │ │ Worker │ │ AgenticWorker │ (run_python sandbox, │ │ └────┬────┘ └───────┬───────┘ fetch_url, read_file) │ │ └──────────────┬──────────────────┘ │ └───────────────────────┼───────────────────────────────────────────────────┘ ▼ ┌──────────────────────┐ append-only, provenance, latest-wins │ Blackboard │◄────────────────────────────────────── └──────────┬───────────┘ ▼ ┌──────────────┐ │ Synthesizer │ combine artifacts → final answer └──────┬───────┘ ▼ result (+ CostMeter totals, usage, duration)
| Component | File | Responsibility |
|---|---|---|
| Supervisor | src/volante/supervisor.py | Decompose goal → validated task DAG |
| Router | src/volante/router.py | Whole inventory → eligible candidates → explainable ranking |
| Projector | src/volante/projector.py | Scoped, budget-capped request from blackboard artifacts |
| Worker | src/volante/worker.py | One-shot model call |
| AgenticWorker | src/volante/agent.py | Model↔tool loop with per-turn records |
| Blackboard | src/volante/blackboard.py | Append-only shared state with provenance |
| Synthesizer | src/volante/synthesizer.py | Artifacts → final answer |
| Runtime | src/volante/runtime.py | Orchestrate: plan → waves → synthesize (streaming, fail-fast) |
| Providers | src/volante/providers/ | Anthropic + OpenAI-compatible adapters (complete/stream/tools) |
| Tools | src/volante/tools/ | Sandbox / DockerSandbox, run_python, fetch_url, read_file |
| Eval | eval/ | 7 goals (5 katas + 2 multi-part), 3-arm comparison, forgery-resistant scorer |
Requires Python 3.11.10+ (the floor is a security boundary — see Providers).
Install it:
pip install volante # the CLI and the library
pip install "volante[mcp]" # ...plus the MCP server, for IDE use volante --version volante --list-models # what your environment currently offers, offline
volante needs at least one configured provider before it can run a goal — see Providers for the two-line setup. Until then --list-models and --help work and everything else will tell you what is missing.
Or work on it: the clone gives you the tests, the Web UI, and a zero-key demo that the wheel deliberately does not ship.
git clone https://github.com/ribato22/volante
cd volante uv sync --dev # install deps + dev tools uv run pytest # 1200+ tests, no network uv run ruff check . # lint
uv run python examples/fake_provider.py
Then configure at least one real provider (see Providers) and run a demo:
cp .env.example .env # fill in one provider, then `set -a; . .env; set +a`
uv run python demo.py # show detected providers uv run python demo.py orchestrate # full supervisor → workers → synth, streamed live uv run python demo.py agentic # one cross-provider agentic coding task (run_python loop) uv run python demo.py eval # 3-arm eval suite
demo.py orchestrate streams every phase live, then prints the result (illustrative):
Orchestrate demo — planner/synth model=openai/gpt-4o-mini
(planning + workers + synthesis stream live) [haiku] Threads run as one— / tasks bloom in parallel time, / the join gathers all.
STATUS: success
FINAL: Threads run as one— tasks bloom in parallel time, the join gathers all.
cost: $0.001834
demo.py eval prints the 3-arm table (format_report). Here is what it actually printed on the last full run:
GOAL WINNER BASE ORCH AGEN
slugify baseline 1.00
ตัดมาแค่ช่วงต้น อ่านต่อใน repo