VSCode Central Remote Configuration


CRC distributes AI coding assistant configurations to developers from a central remote server. The available tools and their configuration variants are declared in a server-side manifest — no extension update is needed to add or remove tools.
The extension replaces placeholders with a user-provided API key on every sync, and keeps configurations up to date automatically in the background.
User Guide
This section is for developers who install the extension and use it to keep their AI assistant configurations in sync.
Installation
- Open VS Code and go to the Extensions panel (
Ctrl+Shift+X / Cmd+Shift+X).
- Search for central-remote-config.
- Click Install.
Quick start
- Open VS Code Settings (
Ctrl+, / Cmd+,) and search for crc.
- Set CRC: Remote End Point to the URL provided by your administrator.
- Optionally set CRC: Api Key if your administrator requires one.
- Open the Central Remote Config view in the Explorer sidebar.
- Right-click a tool and select Enable — CRC syncs its configuration immediately.
The Central Remote Config sidebar shows one row per tool available in the remote manifest. Each row displays:

| Icon |
Meaning |
| ✔ (check) |
Configuration is up to date |
| ⚠ (warning) |
Drift detected — local file differs from remote |
| ✖ (error) |
Sync error — check Output → CRC for details |
| ↻ (spinner) |
Syncing in progress |
| ⊘ (slash) |
Tool disabled |
| ○ (outline) |
Extension not installed |
| ? (question) |
Not checked yet |
Right-clicking a tool opens a context menu with the following actions depending on state:

| Action |
Available when |
| Enable |
Tool is disabled |
| Disable |
Tool is enabled or not installed |
| Sync now |
Tool is enabled |
| Change configuration variant |
Tool is enabled and has multiple variants |
| Open local config |
Tool is enabled |
| Open CRC settings |
Always |
Enable or disable tools from the sidebar context menu, or directly in settings.json:
"crc.tools": {
"continue": { "enabled": true },
"kilo": { "enabled": true }
}
To disable a tool:
"crc.tools": {
"kilo": { "enabled": false }
}
Selecting a configuration variant
Some tools offer multiple configuration variants (for example "Autocomplete only" vs "Full configuration"). To switch:
- Right-click the tool in the sidebar.
- Select Change configuration variant.
- Pick a variant from the list — CRC syncs the new variant immediately.
The selected variant is stored in crc.tools.<id>.configuration.
Sync modes
CRC checks for remote configuration changes every 30 minutes. Two modes control what happens when a change is detected:
| Mode |
Behaviour |
auto (default) |
Applies the new configuration silently; shows one toast per sync |
notify |
Prompts before applying — you decide when to update |
Change the mode via CRC Advanced: Sync Mode in Settings.
Auto-apply protection — in auto mode, if you have edited your local config after the last sync, CRC degrades to notify for that tool rather than silently overwriting your changes.
Settings reference

CRC
| Setting |
Description |
| Api Key |
API key injected in place of the configured placeholder in every synced file. Optional. |
| Remote End Point |
Base URL of the CRC server (must use https://). |
| Profile |
Manifest profile. Determines which tools and variants are available. Provided by your administrator. |
CRC Advanced
| Setting |
Description |
| Sync Mode |
auto (default) or notify — see Sync modes above. |
| Api Key Pattern |
Placeholder replaced by the API key. Default: __CRC_API_KEY__. Change only if your server uses a different pattern. |
| Tools |
Per-tool configuration: crc.tools.<id>.enabled and crc.tools.<id>.configuration. |
| User Home Directory |
Custom home directory path. Leave empty for automatic detection (WSL-aware). |
Where configuration files are written
CRC writes each tool's configuration to the path declared in the remote manifest. Typical locations:
| Tool |
macOS / Linux |
WSL (Linux VS Code on Windows filesystem) |
| Continue |
~/.continue/config.yaml |
/mnt/c/Users/<user>/.continue/config.yaml |
| Kilo Code |
~/.config/kilo/kilo.jsonc |
/mnt/c/Users/<user>/.config/kilo/kilo.jsonc |
Note: Windows native (non-WSL) is not currently supported.
Administrator Guide
This section is for teams that operate a CRC server and define the available tools and configuration variants.
How CRC constructs URLs
Given crc.remoteEndPoint = https://crc.example.com and crc.profile = default:
- Root manifest:
https://crc.example.com/manifests/default/default.json
- Tool sub-manifest: URL declared in the root manifest's
configManifest field, resolved relative to the endpoint
- Configuration file:
<endpoint>/<serverPath>/<variant.filename>
CRC normalises the endpoint URL (adds a trailing slash if missing) before resolving relative paths.
Server directory layout
<endpoint>/
├── manifests/
│ ├── default/
│ │ ├── default.json ← root manifest (lists tools)
│ │ ├── default-continue.json ← per-tool variant manifest
│ │ └── default-kilocode.json
│ └── <profile>/
│ └── ...
└── tools_configuration/
└── default/
├── continue/
│ ├── continue-full.yaml
│ └── continue-autocomplete.yaml
└── kilocode/
└── kilocode-full.jsonc
Root manifest
Served at <endpoint>/manifests/<profile>/<profile>.json. Declares all tools available in this profile.
{
"name": "My team default",
"version": "1.0.0",
"schema": "v1",
"tools": [
{
"id": "continue",
"name": "Continue",
"extensionId": "Continue.continue",
"localDirectory": ".continue",
"localFilename": "config.yaml",
"serverPath": "tools_configuration/default/continue/",
"configManifest": "manifests/default/default-continue.json",
"requiresReloadAfterSync": false
},
{
"id": "kilo",
"name": "Kilo Code",
"extensionId": "kilocode.kilo-code",
"localDirectory": ".config/kilo",
"localFilename": "kilo.jsonc",
"serverPath": "tools_configuration/default/kilocode/",
"configManifest": "manifests/default/default-kilocode.json",
"requiresReloadAfterSync": true
}
]
}
Root manifest fields
| Field |
Type |
Description |
id |
string |
Stable identifier used in crc.tools.<id> settings keys. |
name |
string |
Display name shown in the sidebar. |
extensionId |
string |
VS Code extension ID used to detect whether the tool is installed. |
localDirectory |
string |
Path relative to the user's home directory where the config file is written. |
localFilename |
string |
Filename the target extension reads (e.g. config.yaml, kilo.jsonc). |
serverPath |
string |
Path on the remote server (relative to the endpoint) where this tool's config files live. Must end with /. |
configManifest |
string |
URL (relative to the endpoint) of the tool's variant sub-manifest. |
requiresReloadAfterSync |
boolean |
When true, CRC prompts the user to reload the VS Code window after syncing (for tools that do not auto-reload their config). |
Served at the URL declared in configManifest. Lists the configuration variants available for a tool.
{
"name": "Continue variants",
"version": "1.0.0",
"schema": "v1",
"configurations": [
{ "id": "autocomplete", "name": "Autocomplete", "filename": "continue-autocomplete.yaml" },
{ "id": "full", "name": "Full configuration", "filename": "continue-full.yaml" }
]
}
Variant fields
| Field |
Type |
Description |
id |
string |
Stable identifier stored in crc.tools.<id>.configuration. |
name |
string |
Human-readable name shown in the QuickPick and sidebar. |
filename |
string |
Filename on the server, relative to the tool's serverPath. |
Configuration files and API key substitution
CRC fetches the configuration file at <endpoint>/<serverPath>/<variant.filename> and writes it verbatim to the user's machine, substituting one placeholder before writing:
models:
- name: my-model
provider: openai
apiBase: https://llm.example.com
apiKey: __CRC_API_KEY__
Every occurrence of __CRC_API_KEY__ (configurable via crc.apiKeyPattern) is replaced with the value of crc.apiKey before the file is written. The pattern is a JavaScript regular expression — use a literal string for simple placeholders.
CRC treats fetched files as opaque text — it does not parse YAML or JSONC. Any valid text format works.
Manifest caching
CRC caches the root manifest and all tool sub-manifests to disk (globalStorageUri/manifest-cache.json) for 24 hours. On the next activation or manual refresh, if the cache is fresh and the profile hasn't changed, the network request is skipped. Changing crc.profile immediately triggers a fresh fetch.
Profiles
Profiles allow you to serve different tool sets and configurations to different groups. A profile is a directory under manifests/ on the server. Users select a profile via crc.profile in Settings.
Common pattern:
| Profile |
Purpose |
default |
Standard configuration for all users |
beta |
Preview configuration with experimental models |
Add as many profiles as needed — no extension update is required.
Contributing
Run and debug
Press F5 to open a new VS Code window with the extension loaded. Reload (Ctrl+R / Cmd+R) the window after code changes to pick them up.
Run linters and tests
npm run test
Package and install locally
npm run package
npx vsce package --out build/my-test.vsix
code --install-extension build/my-test.vsix --force
Deployment
- Push code to GitLab — semantic-release creates the version and VSIX artifact.
- Push code to GitHub.
- Publish to the VS Code Marketplace.
License
Distributed under the MIT License — see LICENSE.txt or https://spdx.org/licenses/MIT.html.
Contributors
- FX Soubirou (Orange SA) — Initial work
- Omar Oumlala (Orange SA) — Additional features