[providers.modal]
display_name = "Modal"
adapter = "openai_compatible"
agent_profile = "kimi"
api_key_url = "https://modal.com/docs/guide/endpoints#proxy-tokens"
priority = 75
enabled = false

[providers.modal.extra_headers]
"Modal-Key" = "{{ secrets.MODAL_TOKEN_ID }}"
"Modal-Secret" = "{{ secrets.MODAL_TOKEN_SECRET }}"

# Modal assigns an endpoint URL when the Shared API or an Auto Endpoint is
# created. To enable Modal, add the endpoint URL to ~/.fabro/settings.toml:
#
# [llm.providers.modal]
# enabled = true
# base_url = "https://<your-modal-endpoint>.modal.run/v1"
#
# Then store both proxy-token values in the Fabro server vault:
#
# fabro secret set MODAL_TOKEN_ID wk-...
# fabro secret set MODAL_TOKEN_SECRET ws-...

# Modal serves the Hugging Face repository id, so `api_id` keeps that
# capitalization. OpenRouter routes the same model under its own lowercase
# slug (`moonshotai/kimi-k3`).
[providers.modal.models."kimi-k3"]
api_id = "moonshotai/Kimi-K3"
display_name = "Kimi K3 (via Modal)"
family = "kimi-k3"
default = true
estimated_output_tps = 460

[providers.modal.models."kimi-k3".limits]
context_window = 1048576
max_output = 131072

[providers.modal.models."kimi-k3".features]
tools = true
vision = true
reasoning = true
reasoning_effort = "always_adaptive"
prompt_cache = true
sampling_params = false

[providers.modal.models."kimi-k3".controls]
reasoning_effort = ["low", "high", "max"]

[providers.modal.models."kimi-k3".costs]
input_cost_per_mtok = 3.0
output_cost_per_mtok = 15.0
cache_input_cost_per_mtok = 0.3
