BYOK Inline Suggestions
BYOK Inline Suggestions provides ghost-text code completions in VS Code through any OpenAI-compatible Chat Completions API. Bring your own API key and choose the endpoint, model, context sizes, prompt, and request behavior.
Features
- OpenAI-compatible Chat Completions requests.
- Configurable prefix and suffix context around the cursor.
- Configurable system prompt, model, temperature, token limit, timeout, and eagerness delay.
- Request cancellation and debouncing to avoid stale suggestions and unnecessary calls.
- Output cleanup for markdown fences and duplicated suffix text.
Requirements
VS Code 1.122 or newer is required. The API key is configured through VS Code settings and is intentionally not stored in SecretStorage in this first release. Do not sync the key or commit it to workspace settings.
Extension Settings
Set these settings in VS Code's Settings UI or settings.json:
byokInlineSuggestions.apiKey: API key for your provider.
byokInlineSuggestions.baseUrl: API base URL, such as https://api.openai.com/v1.
byokInlineSuggestions.apiMode: API mode (model type): chat for Chat Completions or fim for legacy/FIM Completions.
byokInlineSuggestions.reasoningEffort: auto omits the parameter; none requests no hidden reasoning for compatible models; low, medium, and high request corresponding effort levels.
byokInlineSuggestions.endpointPath: Optional route override, useful for LiteLLM deployments such as /chat/completions or /completions.
byokInlineSuggestions.model: Model or deployment name used for inline suggestions.
byokInlineSuggestions.systemPrompt: System prompt sent with each request.
byokInlineSuggestions.prefixLength / suffixLength: Context sizes in characters.
byokInlineSuggestions.eagernessDelayMs: Debounce delay before a request.
byokInlineSuggestions.maxTokens, temperature, and timeoutMs: Request controls.
byokInlineSuggestions.requestParameters: Additional or overriding JSON request fields. Set a field to null to remove a built-in field that your provider does not support. For example:
{
"byokInlineSuggestions.requestParameters": {
"temperature": null,
"suffix": "",
"chat_template_kwargs": { "enable_thinking": false }
}
}
byokInlineSuggestions.excludedLanguages: Language IDs to skip.
The extension sends a user message containing <|prefix|>, <|suffix|>, and <|completion|> markers. Providers that support Chat Completions should return only the code to insert.
For capable reasoning models, set byokInlineSuggestions.reasoningEffort to none to request the fastest response. This is provider/model-specific: gateways may reject the parameter or ignore it. Keep it set to auto when using a provider that does not document reasoning_effort.
Integration Test
The live integration test is opt-in and never reads the API key from committed settings. With the endpoint and model from the example configuration, run:
BYOK_INTEGRATION_API_KEY="your-key" npm run test:integration
Commands
BYOK Inline Suggestions: Toggle Suggestions
BYOK Inline Suggestions: Test Connection
Install And Debug
Run From Source
- Open this folder in VS Code.
- Run
npm install.
- Press
F5 or choose Run Extension from the Run and Debug view.
- In the new Extension Development Host window, configure
byokInlineSuggestions.apiKey, baseUrl, model, and any protocol settings.
- Open a code file and trigger inline suggestions by typing or moving the cursor.
The generated launch configuration runs the default build task before starting the Extension Development Host. Set breakpoints in src/*.ts; the debugger maps them through the generated source maps.
Build And Install A VSIX
Run:
npm install
npm run package:vsix
This creates byok-inline-suggestions-0.0.1.vsix. Install it from the Extensions view using the ... menu, Install from VSIX..., or from the command line:
code --install-extension byok-inline-suggestions-0.0.1.vsix
Reload VS Code after installation. To update it, build a new VSIX and install it again.
View Extension Logs
The extension creates an output category named BYOK Inline Suggestions as soon as it activates. Open it with:
View -> Output.
- Select
BYOK Inline Suggestions from the output-channel dropdown.
The channel records activation, provider skips, request mode, model, endpoint, context sizes, HTTP failures, timeout/transport errors, and completion sizes. API keys and source-code contents are intentionally excluded from logs. The Test Connection command also reports its sanitized failure reason in this channel and in a notification.
Known Issues
The initial release uses non-streaming responses. Provider-specific FIM formatting and streaming can be added later if needed.
Release Notes
0.0.1
Initial release.