GitHub Copilot CLI

The GitHub Copilot CLI is GitHub's terminal agent. It can send its model requests to a provider that you choose. These steps make the exchange that provider.

Copilot reads the settings from environment variables, so they apply only to the shell that you start it from.

Start with the Liquid CLI

The Liquid CLI starts the Copilot CLI with the exchange as its provider. It sets the variables below for that process only.

curl -fsSL https://inference.ai.exchange/cli/install.sh | bash
liquid login --browser --keys
liquid keys create laptop --save
liquid copilot

Before you start

1. Install the Copilot CLI

npm install -g @github/copilot

2. Point it at the exchange

Replace the placeholder with your buyer key. Use the same shell for each command below.

export LIQUID_API_KEY=sk-liquid-...
export COPILOT_MODEL=liquid.auto
export COPILOT_PROVIDER_API_KEY=$LIQUID_API_KEY
export COPILOT_PROVIDER_BASE_URL=https://router.inference.ai.exchange/v1
export COPILOT_PROVIDER_HEADERS="X-Title: GitHub Copilot CLI\nx-liquid-cap-usd: 1.00"
export COPILOT_PROVIDER_MAX_OUTPUT_TOKENS=16384
Setting Purpose
LIQUID_API_KEY Your buyer key.
COPILOT_PROVIDER_BASE_URL The exchange URL, with /v1. Copilot sends Chat Completions requests.
COPILOT_PROVIDER_API_KEY The key that Copilot sends as a bearer token.
COPILOT_MODEL The model for each request.
COPILOT_PROVIDER_HEADERS Headers for each request, separated by \n. See Request headers.
COPILOT_PROVIDER_MAX_OUTPUT_TOKENS The output limit of each request. Without it, Copilot sends no limit.

Copilot needs no GitHub sign-in to use this provider. To stop it from contacting GitHub at all, also set COPILOT_OFFLINE=true.

3. Check it works

copilot -p "Reply with the word ready"

The answer must contain ready. Open Credits → Receipts to check the charge and the Copilot CLI client label.

4. Start a session

copilot

Request headers

COPILOT_PROVIDER_HEADERS sends these headers with each model request, and only to the exchange:

Header Value Purpose
X-Title GitHub Copilot CLI Identifies the Copilot CLI on the receipt.
x-liquid-cap-usd 1.00 Limits the charge for each request.

Keep the X-Title header. Without it, the receipt shows the OpenAI SDK as the client.

Control the cost

To set a different cap, change the value of x-liquid-cap-usd in COPILOT_PROVIDER_HEADERS. With liquid copilot, use --cap.

A task can cause several requests, and the request cap does not limit the total charge. Set a spend limit on the key to limit total spend. See API keys.

Use a preset for other purchasing rules. See Purchasing rules.

Refusals

A refused request costs nothing. The Copilot CLI handles each refusal as follows:

Response What the Copilot CLI does
400, 402 Shows the error at once.
429 Tries 6 times in about a minute, then stops.
503 Tries 6 times in about 20 seconds, then stops.

After you add funds or raise a spend limit, the next request works.

Sampling parameters

Copilot sends temperature, top_p, frequency_penalty and presence_penalty with each request. The exchange sends the request only to an offer that accepts top_p and both penalties.

Most offers accept them. If none of the offers for your model do, the exchange refuses the request and makes no charge. See Errors.

Troubleshooting

Symptom Cause and fix
401 Check that COPILOT_PROVIDER_API_KEY holds a valid key that has not expired.
402 Add credit to the workspace or raise the key's spend limit.
404 Keep /v1 at the end of COPILOT_PROVIDER_BASE_URL.
The error names no_eligible_offer. Read eligibility.excluded in the error. It names the rule that each offer did not meet.

See Errors for the exchange's error codes and causes.

Next steps