Contents
To use SolCard Inference in Kilo Code, add a custom provider with the OpenAI Compatible API, set the base URL to https://api.solcardinference.ai/v1, paste your sk-si- key, and add solcard-inference-fast as a model. Then set each model’s token limits in kilo.jsonc, which is where Kilo’s docs send you for them. Everything about Kilo below comes from Kilo’s own docs. We haven’t run Kilo ourselves, but the API behind it is the one OpenCode and Cline use.
What you need
- A SolCard Inference API key. Make one on the dashboard’s API keys page. Keys start with
sk-si-and are shown once. - Some balance or a plan. One prepaid USD balance pays for every key and model; see how billing works.
- Kilo Code, as the VS Code extension or the CLI. Kilo’s CLI docs install the CLI with
npm install -g @kilocode/cli.
In VS Code: the Custom provider dialog
Open Settings (the gear icon), go to the Providers tab, scroll down and click Custom provider. Fill it in like this:
| Field | Value |
|---|---|
| Provider ID | solcard-inference |
| Display name | SolCard Inference |
| Provider API | OpenAI Compatible |
| Base URL | https://api.solcardinference.ai/v1 |
| API key | your sk-si-... key |
| Models | solcard-inference-fast, solcard-inference-large, solcard-inference-base |
Click Submit. Kilo’s OpenAI Compatible page says that with a valid base URL and key it queries /v1/models and shows a picker, so you can click Fetch models instead of typing the ids. If that fails, type them in.
Pick OpenAI Compatible, not the other two. Kilo’s docs point OpenAI Responses at OpenAI and xAI models and Anthropic Messages at Anthropic and MiniMax models. Our API also serves those formats, but OpenAI Compatible, on Chat Completions, is what Kilo suggests for everyone else.
Set the token limits in kilo.jsonc
Kilo’s docs say to always set limit.context and limit.output for custom models. Left unset, they’re 0: compaction is off, output defaults to 32,000 tokens and context tracking is skipped. Its OpenAI Compatible page sends you to kilo.jsonc for token limits and tool calling.
Kilo’s settings page says the global config lives at ~/.config/kilo/kilo.jsonc and that the CLI, VS Code and JetBrains all read the same files. So this one block covers both clients:
{
"$schema": "https://app.kilo.ai/config.json",
"provider": {
"solcard-inference": {
"options": {
"apiKey": "{env:SOLCARD_INFERENCE_API_KEY}",
"baseURL": "https://api.solcardinference.ai/v1"
},
"models": {
"solcard-inference-fast": { "name": "SolCard Inference Fast", "tool_call": true, "limit": { "context": 1048576, "output": 32768 } },
"solcard-inference-large": { "name": "SolCard Inference Large", "tool_call": true, "limit": { "context": 1000000, "output": 32768 } },
"solcard-inference-base": { "name": "SolCard Inference Base", "tool_call": true, "limit": { "context": 262144, "output": 32768 } }
}
}
},
"model": "solcard-inference/solcard-inference-fast"
}
Then put the key in the variable apiKey points to:
export SOLCARD_INFERENCE_API_KEY=sk-si-...
What each part does, per Kilo’s docs:
| Field | What it’s for |
|---|---|
options.apiKey | Your key. {env:...} reads it from a variable, so the key stays out of the file. |
options.baseURL | The endpoint. Ours ends in /v1. |
models | The ids Kilo lists. Each key must match our model id exactly. |
tool_call | Marks the model as able to call tools. Kilo’s fix when tools don’t work. |
limit | Context and output limits, in tokens. |
model | The default, as provider_id/model_id. |
Every model writes at most 32,768 tokens per request, so keep output at that. The context sizes are the ones on our models page, which also says all three models support function tools. Keep credentials in your global config: Kilo’s docs say {env:...} references don’t resolve in project-level files.
Switching models
Start on solcard-inference-fast, the default above, and move to solcard-inference-large for planning or a bug you can’t pin down. Large always reasons and costs about three times as much. Switch with /models in the CLI or the model picker in VS Code, and keep the token limits in kilo.jsonc in step with the model you pick. Fast, Large or Base compares the three.
Check it works
Check the key and URL from a terminal first:
curl https://api.solcardinference.ai/v1/models \
-H "Authorization: Bearer sk-si-..."
You should see solcard-inference-fast, -large and -base. Then ask Kilo what it sees, and send one prompt:
kilo models solcard-inference
kilo run "Say hello in five words."
In VS Code, pick a SolCard Inference model and give it a small task, such as “Explain what this file does.”
What a task costs
A Kilo request on Fast that resends 70,000 tokens of conversation, 65,000 of them cached, and writes 1,000 tokens is about $0.017. A 25-request task is about $0.42 on Fast; on Large each request is about $0.049. How billing works has the price list and the plans.
Troubleshooting
These are the API’s codes, from our errors page; Kilo may word them differently.
- 401
invalid_api_key: the key is missing, revoked or unrecognized. In the CLI, check the variable is set in the shell that startedkilo. - 400
model_not_found: a model id doesn’t match. Usesolcard-inference-fast,-largeor-base. - 400
unsupported_content: an image or file reached the model. Our models take text only. - 402
insufficient_balance: top up, then retry.
On connection errors, Kilo’s docs say to verify the base URL: ours is https://api.solcardinference.ai/v1. If a model is missing from the picker, Kilo’s docs say to check that model matches provider/model-key and to run kilo models.
FAQ
Can I keep my other providers in Kilo Code?
Yes. A custom provider sits next to the ones you have. Pick between them in the model picker or with /models.
Do I need the dialog and kilo.jsonc both?
No. The kilo.jsonc block alone sets up the provider for every Kilo client. The dialog is the quick way in VS Code, but Kilo’s docs send you to kilo.jsonc for token limits.
Can I attach images?
No. Our models take text only, and a request with an image is rejected with unsupported_content.
Are my prompts or code stored? No. Prompts and responses are never logged or stored, on any model. Keeps nothing follows one request through.