Provider Overview
Human uses a vtable-driven provider interface. All AI model backends implement hu_provider_t and are selected by name at runtime.
Provider vtable interface
Section titled “Provider vtable interface”Each provider implements:
| Method | Description |
| ----------------------- | ---------------------------------------------- |
| chat | Non-streaming chat completion |
| chat_with_tools | Chat with tool calls (optional) |
| stream_chat | Streaming completion (optional) |
| supports_native_tools | Whether provider uses OpenAI-style tool schema |
| get_name | Provider identifier |
| deinit | Cleanup |
Optional methods: warmup, supports_streaming, supports_vision.
Provider types
Section titled “Provider types”Native providers (core)
Section titled “Native providers (core)”These have dedicated implementations with format-specific handling:
| Name | Type | Default base URL | | ------------ | ------ | ----------------------------------------- | | openai | Native | https://api.openai.com/v1 | | anthropic | Native | https://api.anthropic.com | | gemini | Native | https://generativelanguage.googleapis.com | | google | Native | (same as gemini) | | ollama | Native | http://localhost:11434 | | openrouter | Native | https://openrouter.ai/api/v1 | | compatible | Native | (configurable) | | claude_cli | Native | (Claude CLI) | | codex_cli | Native | (Codex CLI) | | openai-codex | Native | (OpenAI Codex) |
Compatible providers (OpenAI chat API)
Section titled “Compatible providers (OpenAI chat API)”These use the compatible backend with preset base URLs:
| Name | Default base URL | | ------------------------- | ------------------------------------------------- | | groq | https://api.groq.com/openai | | mistral | https://api.mistral.ai/v1 | | deepseek | https://api.deepseek.com | | xai, grok | https://api.x.ai | | cerebras | https://api.cerebras.ai/v1 | | perplexity | https://api.perplexity.ai | | cohere | https://api.cohere.com/compatibility | | together, together-ai | https://api.together.xyz | | fireworks, fireworks-ai | https://api.fireworks.ai/inference/v1 | | huggingface | https://router.huggingface.co/v1 | | siliconflow | https://api.siliconflow.cn/v1 | | venice | https://api.venice.ai | | vercel, vercel-ai | https://ai-gateway.vercel.sh/v1 | | chutes | https://chutes.ai/api/v1 | | synthetic | https://api.synthetic.new/openai/v1 | | opencode, opencode-zen | https://opencode.ai/zen/v1 | | astrai | https://as-trai.com/v1 | | poe | https://api.poe.com/v1 | | moonshot, kimi | https://api.moonshot.cn/v1 | | glm, zhipu, zai, z.ai | https://api.z.ai/api/paas/v4 | | minimax | https://api.minimax.io/v1 | | qwen, dashscope | https://dashscope.aliyuncs.com/compatible-mode/v1 | | qianfan, baidu | https://aip.baidubce.com | | doubao, volcengine, ark | https://ark.cn-beijing.volces.com/api/v3 | | byteplus | https://ark.ap-southeast.bytepluses.com/api/v3 | | bedrock, aws-bedrock | https://bedrock-runtime.us-east-1.amazonaws.com | | cloudflare, cloudflare-ai | https://gateway.ai.cloudflare.com/v1 | | copilot, github-copilot | https://api.githubcopilot.com | | nvidia, nvidia-nim | https://integrate.api.nvidia.com/v1 | | ovhcloud, ovh | https://oai.endpoints.kepler.ai.cloud.ovh.net/v1 |
Local providers
Section titled “Local providers”| Name | Default base URL | | ------------------- | ------------------------- | | lmstudio, lm-studio | http://localhost:1234/v1 | | vllm | http://localhost:8000/v1 | | llamacpp, llama.cpp | http://localhost:8080/v1 | | sglang | http://localhost:30000/v1 | | osaurus | http://localhost:1337/v1 | | litellm | http://localhost:4000 |
No API key is required for local providers.
Selecting a provider
Section titled “Selecting a provider”Set default_provider in config or pass --provider on the CLI:
./human agent --provider ollama --model llama3For compatible providers, add a providers entry with your API key:
{ "providers": [{ "name": "groq", "api_key": "gsk_..." }], "default_provider": "groq"}