docs
// Guides

Cline

Global settings, project rules. Cline keeps MCP and provider settings in one ~/.cline/data/settings/ folder shared by the IDE extension, the CLI and the SDK, and reads rules from .cline/rules/. The Erebine bundle merges an MCP server entry and a custom provider into the settings and drops the rules into the project.

Cline ships as an IDE extension, a CLI and an SDK. All three resolve the same global settings folder, so one merge covers every one of them. Cline has a native MCP client, native custom OpenAI-compatible providers, and native project rules, so the Erebine bundle installs no extension and no adapter: it is three settings snippets and one rules file.

The Client-tab download carries four files, plus a README.txt:

FileWhat it does
cline_mcp_settings.json The mcpServers.erebine entry: streamable-HTTP URL, Authorization and workspace headers, timeout. Merge into ~/.cline/data/settings/cline_mcp_settings.json.
providers.json The erebine provider's key, base URL and default model, and makes it the active provider. Merge into ~/.cline/data/settings/providers.json. Present only when this workspace advertises models.
models.json Registers every advertised model under a custom erebine provider so the picker lists them. Merge into ~/.cline/data/settings/models.json. Present only when this workspace advertises models.
erebine.md The Erebine tool-use rules. Save as .cline/rules/erebine.md at your project root.

~/.cline/data is the data root. CLINE_DATA_DIR moves it; when that variable is set, the three settings files live under $CLINE_DATA_DIR/settings/ instead.

See the general MCP integration documentation for the full tool catalog, the governed-execution model, and the security gates that apply to every MCP request.

Quick Start

Download the Cline bundle from the Chat page's Client tab (visible once a specific workspace is selected), then merge it:

  1. Merge cline_mcp_settings.json, providers.json and models.json into the files of the same name under ~/.cline/data/settings/. Copy a file whole if it does not exist yet.
  2. Set lastUsedProvider to "erebine" in providers.json if you merged into an existing file and want Erebine active on the next launch.
  3. Save erebine.md as .cline/rules/erebine.md at your project root.
  4. Restart Cline: reload the IDE window, or start a new CLI session. The settings are read at startup.
  5. Prompt: Call the Erebine intelligence brief tool (erebine.intelligence.brief) and summarize this workspace. The answer proves both halves of the bundle.

Both settings files carry your workspace API key. cline_mcp_settings.json holds it in the Authorization header and providers.json holds it in apiKey. Both live outside your repository; delete the extracted copies rather than leaving them in a tracked project tree. erebine.md carries no secrets and is safe to commit. Re-downloading rotates the key and revokes the one in your previous bundle.

MCP Server

Cline reads MCP servers from one global file. In the IDE, MCP Servers > Configure > "Configure MCP Servers" opens it; from a terminal, cline mcp edits it. The SDK-based IDE extension and the CLI both resolve the settings folder ~/.cline/data/settings/ (or $CLINE_DATA_DIR/settings); if your CLI build reads ~/.cline/mcp.json instead -- older docs name it -- merge the same entry there. This is the whole entry:

JSON
{ "mcpServers": { "erebine": { "type": "streamableHttp", "url": "https://api.erebine.ai/proj_ABC123/v1/mcp", "headers": { "Authorization": "Bearer <api_key>", "X-Erebine-Workspace": "<workspace_id>" }, "timeout": 60, "disabled": false, "autoApprove": [] } } }
  • type is not optional. A URL entry without it is treated as legacy SSE, and the Erebine endpoint answers streamable HTTP.
  • timeout is in seconds, not milliseconds. The default is 60 and the accepted range is 1 to 3600.
  • autoApprove lists the tools Cline may call without asking. It ships empty; add tool names to it once you trust them.
  • <api_key>, a key with the inference scope. Mint one with erectl keys --create --name "cline" --scopes inference.
  • <workspace_id>, the ws_xxx identifier this connection pins to. List options with erectl workspaces list.

Inference Provider

Cline's custom-provider registry is two files. models.json declares the provider and its models; providers.json holds the credentials and the current selection.

models.json registers the whole fleet this workspace advertises:

JSON
{ "version": 1, "providers": { "erebine": { "provider": { "name": "Erebine - <workspace_id>", "baseUrl": "https://api.erebine.ai/proj_ABC123/<workspace_id>/<endpoint-slug>/v1", "defaultModelId": "<endpoint-slug>", "protocol": "openai-chat", "client": "openai-compatible", "capabilities": ["streaming", "tools", "reasoning", "vision"] }, "models": { "<endpoint-slug>": { "id": "<endpoint-slug>", "name": "<model-name>", "capabilities": ["streaming", "tools", "reasoning", "images"], "contextWindow": 131072, "maxTokens": 32000 } } } } }

providers.json carries the key and the starting selection:

JSON
{ "version": 1, "lastUsedProvider": "erebine", "modes": {}, "providers": { "erebine": { "settings": { "provider": "erebine", "apiKey": "<api_key>", "baseUrl": "https://api.erebine.ai/proj_ABC123/<workspace_id>/<endpoint-slug>/v1", "model": "<endpoint-slug>", "protocol": "openai-chat", "client": "openai-compatible", "headers": { "X-Erebine-Augment-Corrective-Retries": "on" }, "contextWindow": 131072, "maxTokens": 32000, "reasoning": { "effort": "medium", "enabled": true } }, "updatedAt": "1970-01-01T00:00:00.000Z", "tokenSource": "manual" } } }
  • Model capabilities come from the descriptor: tools when the model takes tool calls, reasoning when it has a reasoning parser, images when it accepts image input. The provider row is the union over every model, and spells that last one vision.
  • contextWindow and maxTokens are the advertised window and output cap, emitted only when the model publishes them.
  • reasoning.effort is the model's default effort, emitted only when it is one of Cline's seven levels (none, minimal, low, medium, high, xhigh, max). Those seven are the providers.json vocabulary; the CLI's per-session override, cline --thinking <level>, takes the five it supports: none, low, medium, high, xhigh.
  • updatedAt is a fixed epoch timestamp so the file is byte-stable between downloads. Cline rewrites it the next time it saves settings.

Keep providers.json valid. Cline validates the whole file against its schema and treats a file that fails as empty, which signs you out of every provider you had configured, not just Erebine. updatedAt must be an ISO-8601 datetime and baseUrl must be a full URL. Back the file up before merging.

Switch models in the picker, or with cline --model <id>. The model travels in the request payload, so one base URL covers every id in models.json.

The routing mode chosen at download time decides how much of the fleet lands in the files:

  • Direct (default): every generative model in the project, all in the picker.
  • Semantic router: one entry pointing at the semantic router, which scores the fleet per request.
  • Pinned: the resolved endpoint, pinned. One model.

A workspace with no advertised models yields an MCP-only bundle: cline_mcp_settings.json and the rules file, no provider files, and Cline keeps whatever provider you already use.

Builds without a custom-provider registry

Older Cline builds have no models.json. Take the same values through the settings UI instead: pick the OpenAI Compatible provider and fill in three fields.

FieldValue
Base URLhttps://api.erebine.ai/proj_ABC123/<workspace_id>/<endpoint-slug>/v1, the baseUrl from providers.json
API KeyThe apiKey from providers.json
Model IDThe model from providers.json, or any id listed in models.json

Project Rules

.cline/rules/erebine.md carries the shared Erebine tool-use rules every other client receives through its own rules surface, plus a Cline addendum that spells out the tool naming. Cline concatenates every .md file in .cline/rules/ into the system prompt as context, so the rules apply to every task in the project without replacing anything.

Without them the agent will sometimes ask you about workspace state instead of calling the Erebine tools to retrieve it.

.cline/rules/, not .clinerules/. Cline still reads the older .clinerules/ directory, but its own source marks that path deprecated and cline config edits .cline/rules/. A project that already keeps AGENTS.md can keep it: Cline reads that too, and the files stack rather than shadow each other.

Tool Names

SDK-based Cline builds namespace MCP tools with the server name and sanitize the result to [A-Za-z0-9_-]: the server name, two underscores, then the tool name with dots replaced by underscores. Sanitizing changes every Erebine tool name, and when it does Cline appends an underscore and an eight-character hash it derives from the original dotted name, so every tool carries a suffix: erebine.intelligence.brief becomes erebine__erebine_intelligence_brief_fc26e278. Match a tool to the catalog by the erebine_<group>_<verb> segment between the double underscore and the hash.

The classic extension calls tools through use_mcp_tool instead, with server_name erebine and the dotted tool_name (erebine.intelligence.brief). The rules file documents both spellings, so the model reaches the catalog either way.

Cline does not surface MCP prompts. The six Erebine prompts have no slash-command form here; call the tools directly. Resources are read through access_mcp_resource with a URI such as erebine://workspace/current/brief on builds that offer it. Both are documented on the general MCP integration page.

CLI Setup

erectl prints the MCP server entry. When the settings file does not exist yet, write it straight out:

Shell
mkdir -p ~/.cline/data/settings erectl mcp setup --client cline --workspace <uuid> > ~/.cline/data/settings/cline_mcp_settings.json

If the file already exists, merge the mcpServers.erebine key into it instead of overwriting: the file holds every MCP server Cline knows about, and a redirect replaces all of them.

Cline does not expand the {env:EREBINE_API_KEY} placeholder erectl writes by default. Pass --inline-api-key <key> for Cline, or replace the placeholder in the file with the key before restarting Cline.

The CLI prints the server entry to stdout. Pass --out-dir <dir> to also write providers.json, models.json and the rules file, built from the workspace's _direct models over the management API, exactly as the dashboard's Direct bundle carries them; --mcp-only keeps the model provider you already use.

Capability Matrix

What the bundle wires into Cline, and how:

SurfaceSupportedMechanism
Inference provideryesmodels.json plus providers.json
MCP toolsyesNative MCP client, no bridge
PromptsnoCline does not surface MCP prompts
Resourcespartialaccess_mcp_resource, on builds that offer it
Project rulesyes.cline/rules/erebine.md, read as context
Streaming transportyesNative streamable HTTP (type: streamableHttp)
OAuthnoBearer header from cline_mcp_settings.json
Sampling, elicitation, rootsnoThe client advertises no capabilities to the server

See the full per-client comparison in docs/mcp, Security.

Troubleshooting

The server shows as disconnected

Check type in the mcpServers.erebine entry. Cline defaults a URL entry with no type to legacy SSE, and the Erebine endpoint answers streamable HTTP, so the handshake never completes. Set "type": "streamableHttp" and restart Cline.

"Request timed out"

timeout is in seconds. A value copied from a millisecond-based config reads as either far too small or out of range: Cline clamps it to 1 to 3600. Long research and exec calls want a higher number, not a bigger unit.

Signed out of every provider after merging

providers.json failed validation, and Cline treats a file that fails its schema as empty. Restore your backup, then re-merge and check the two fields that most often break it: updatedAt must be an ISO-8601 datetime and baseUrl must be a full URL. The provider id must match ^[a-z0-9][a-z0-9-]*$.

The model is missing from the picker

Either models.json was not merged, or Cline has not restarted since. The custom-provider registry is read once at startup. Reload the IDE window or start a new CLI session. On a build with no models.json support, use the OpenAI Compatible provider fields listed above.

401 Unauthorized on every tool call

The key in cline_mcp_settings.json is missing, malformed, or revoked. Each Client-tab download rotates your personal key and revokes the previous one. Re-download the bundle, or replace the Authorization header value with a key carrying the inference scope.

403 Forbidden with code scope_insufficient

The key authenticated but does not carry the inference scope the MCP surface requires. Mint a replacement with erectl keys --create --name "cline" --scopes inference.