Build something
without the limits.
One API key. Your choice of six models. Familiar APIs that fit right into your workflow.
Create your account
Generate and safely store your unique account code.
02Create an API key
Keep your account code separate from your applications.
03Send your first request
With an active membership, pick a model and start building.
Choose your endpoint
| Format | Endpoint | Authentication |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | Bearer API key |
| Stateless Responses | POST /v1/responses | Bearer API key |
| Messages | POST /v1/messages | x-api-key or Bearer |
| Model catalog | GET /v1/models | Bearer API key |
One address for the website and API.
The website, documentation and dashboard use https://manylane.chat. Connect API clients to the same host using the base for their protocol below. No separate API subdomain is required.
https://manylane.chat/v1https://manylane.chatThe Messages SDK adds /v1/messages itself: its base must not end in /v1. Direct HTTP requests use the full endpoints listed above. The tool guides below already use the correct base for each client, including Cursor aliases.
One account code. Separate API keys.
Your account code signs you into the website. It is never accepted as an API key. In API keys, create a named key for each application. The full key is displayed once; copy it into your application's secret manager.
MANYLANE_API_KEY=vl_sk_your_generated_secret_keyThe website uses an HttpOnly session cookie. API routes use explicit API keys only, so a browser session cannot accidentally authorize third-party API requests.
Connect your favorite tools.
Setup guides for 13 tools, including separate OpenCode v1 and v2 recipes. Each guide identifies the configuration file or settings screen for Windows, macOS and Linux. Choose your model and terminal before copying. Cursor uses its dedicated Manylane aliases below.
Based on the official sources linked in each guide. These clients have not all been installed and tested against Manylane. Conditional guides identify narrower support; a valid API response does not certify every agent feature.
https://manylane.chat/v1https://manylane.chatVL- account code. An active membership is required for inference. Merge examples with existing settings; do not overwrite other providers or weaken your client’s permissions.For terminal tools: set your API key privately
This prompt keeps the key out of the command text. The environment variable lasts for this terminal session and is inherited by programs launched from it. GUI credential fields require the actual key, not its variable name. Never share secret-bearing settings or logs.
read -r -s -p "Manylane API key: " MANYLANE_API_KEYprintf "\n"export MANYLANE_API_KEYFinding files on Windows, macOS, Linux and WSL
Windows: paste the shown %USERPROFILE% or %APPDATA% path into File Explorer, not PowerShell. In PowerShell use $env:USERPROFILE or $env:APPDATA. Show file extensions and avoid saving settings.json.txt. Create a missing parent folder, then open/create the named file in a plain-text editor.
macOS: Finder → Go → Go to Folder (Cmd+Shift+G) accepts the ~/ paths below. Use a code editor or plain-text mode, not rich text. Choose Zsh for a zsh terminal; Bash’s read -p prompt is not portable to zsh. Linux: ~ is your home directory; show hidden files to find dot-directories and edit the named file.
WSL is a separate Linux installation: use its Linux home, shell and environment when the tool runs there, not the Windows file by default. The same applies to SSH, containers and remote editor extensions. Configure the machine/process that actually sends inference requests.
Back up existing settings privately and merge only the shown fields. Replace inert placeholders locally; preserve security settings. Do not paste private files into online validators or commit credentials. Terminal variables last for that session; a running desktop app or server does not automatically inherit them. Restart the relevant process after changing its environment.
Claude CodeCLI · Messages · Conditional
Connect Claude Code
settings.json · Claude Code CLI user settings
- Windows
%USERPROFILE%\.claude\settings.json- macOS
~/.claude/settings.json- Linux / WSL
~/.claude/settings.json
Scope & overrides. User-wide on this machine. CLAUDE_CONFIG_DIR changes the .claude directory. A private project override is <project>/.claude/settings.local.json; ignore it in Git before adding credentials. This is not ~/.claude.json, CLAUDE.md, or your editor’s settings.json.
Open & merge. Open or create the parent folder and settings.json in a plain-text editor. Merge the env object, retaining one value per key and preserving permissions, hooks and other settings. Use valid JSON without comments or trailing commas.
API key. Replace YOUR_MANYLANE_API_KEY privately: this example stores a plaintext token. JSON does not expand $MANYLANE_API_KEY. To keep the token outside the file, omit ANTHROPIC_AUTH_TOKEN from env and export it in the launching terminal instead. File env values take precedence over shell values.
Apply changes. Save, start a new claude session and check /status. VS Code needs its separate user-settings snippet below for the extension’s login check. The desktop app uses third-party inference configuration instead of this CLI gateway file.
- Set MANYLANE_API_KEY in this terminal using the private-key prompt above. Apply the gateway variables below, then launch the installed Claude Code CLI from the same terminal.
- Run /status and confirm the Manylane base URL and gateway credential. Choose the exact model ID with /model; keep helper and subagent models on the Manylane catalog.
- For persistent CLI setup, merge the settings.json example below at the user path shown above and replace the token privately. It applies without re-entering all routing variables each session. Choose either persistent settings or terminal variables; conflicting settings-file values win.
- For the Claude Code VS Code extension, open the command palette (Ctrl+Shift+P on Windows/Linux, Cmd+Shift+P on macOS), then Preferences: Open User Settings (JSON). Merge the separate claudeCode.environmentVariables example, not the CLI env object. Default VS Code paths: Windows %APPDATA%\Code\User\settings.json; macOS ~/Library/Application Support/Code/User/settings.json; Linux ~/.config/Code/User/settings.json. Profiles/remote windows can use different files: the palette opens the active one.
export ANTHROPIC_BASE_URL="https://manylane.chat"export ANTHROPIC_AUTH_TOKEN="$MANYLANE_API_KEY"export ANTHROPIC_MODEL="qwen3.8-max-0902"export ANTHROPIC_DEFAULT_SONNET_MODEL="qwen3.8-max-0902"export ANTHROPIC_DEFAULT_OPUS_MODEL="qwen3.8-max-0902"export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3.8-flash"export CLAUDE_CODE_SUBAGENT_MODEL="qwen3.8-max-0902"claude --model qwen3.8-max-0902{ "env": { "ANTHROPIC_BASE_URL": "https://manylane.chat", "ANTHROPIC_AUTH_TOKEN": "YOUR_MANYLANE_API_KEY", "ANTHROPIC_MODEL": "qwen3.8-max-0902", "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3.8-max-0902", "ANTHROPIC_DEFAULT_OPUS_MODEL": "qwen3.8-max-0902", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "qwen3.8-flash", "CLAUDE_CODE_SUBAGENT_MODEL": "qwen3.8-max-0902" }}{ "claudeCode.environmentVariables": [ { "name": "ANTHROPIC_BASE_URL", "value": "https://manylane.chat" }, { "name": "ANTHROPIC_AUTH_TOKEN", "value": "YOUR_MANYLANE_API_KEY" }, { "name": "ANTHROPIC_MODEL", "value": "qwen3.8-max-0902" }, { "name": "ANTHROPIC_DEFAULT_SONNET_MODEL", "value": "qwen3.8-max-0902" }, { "name": "ANTHROPIC_DEFAULT_OPUS_MODEL", "value": "qwen3.8-max-0902" }, { "name": "ANTHROPIC_DEFAULT_HAIKU_MODEL", "value": "qwen3.8-flash" }, { "name": "CLAUDE_CODE_SUBAGENT_MODEL", "value": "qwen3.8-max-0902" } ]}Conditional compatibility, not a Claude subscription. Manylane serves its six models, not Claude models. The base URL must NOT end in /v1. Beta tools, token-counting, advanced thinking and hosted Claude features are not guaranteed; /v1/messages/count_tokens is not implemented. A successful basic Messages request does not certify the entire Claude Code agent workflow.
Codex CLICLI · Responses · Conditional
Connect Codex CLI
config.toml · Codex user configuration
- Windows
%USERPROFILE%\.codex\config.toml- macOS
~/.codex/config.toml- Linux / WSL
~/.codex/config.toml
Scope & overrides. User-wide. If CODEX_HOME is set, edit config.toml in that directory. Put provider and authentication settings here, not <project>/.codex/config.toml: current Codex ignores project-local provider keys.
Open & merge. Open or create config.toml in a plain-text editor. Merge root keys such as model and model_provider before the first [table]. Merge [model_providers.manylane] once. Avoid duplicate keys/tables and preserve sandbox, approval and other provider settings.
API key. env_key names MANYLANE_API_KEY, not the secret. Set that variable in the process launching Codex. No key belongs in this TOML example; do not edit auth.json by hand.
Apply changes. Start a new Codex CLI session from the terminal containing the variable; confirm provider/model with /status. Already-running IDE or desktop processes do not inherit a new terminal export.
- Set MANYLANE_API_KEY in the terminal. Merge this TOML into your user-level ~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml). Preserve your existing sandbox and approval settings.
- Start a new Codex CLI session from that terminal. Confirm Manylane and the exact selected model in /status before sending a small request.
- The provider configuration uses the Responses wire format. Manylane forces stateless responses; a client must resend history rather than depend on stored response IDs.
model = "qwen3.8-max-0902"model_provider = "manylane"web_search = "disabled"model_supports_reasoning_summaries = false[model_providers.manylane]name = "Manylane"base_url = "https://manylane.chat/v1"env_key = "MANYLANE_API_KEY"wire_api = "responses"requires_openai_auth = falsesupports_websockets = falsecodexConditional compatibility: custom-provider configuration is documented, but current Codex builds can require capabilities beyond this gateway. Manylane accepts function tools only, not custom/freeform apply_patch or hosted tools, WebSockets, /responses/compact, or previous_response_id. Unsupported requests return an error; no undocumented flag is claimed to make every Codex workflow work. Use a Chat Completions client when its workflow needs fewer features.
OMP · Oh My PiCLI · Chat Completions
Connect OMP · Oh My Pi
models.yml · OMP model registry
- Windows
%USERPROFILE%\.omp\agent\models.yml- macOS
~/.omp/agent/models.yml- Linux / WSL
~/.omp/agent/models.yml
Scope & overrides. User-level agent configuration. models.yml takes precedence over models.yaml: edit the active file rather than maintaining both. A custom agent/config directory must follow your actual OMP invocation.
Open & merge. Open or create models.yml. Merge manylane under the existing providers mapping. Use spaces for YAML indentation, not tabs. Preserve other providers; do not create a second providers key.
API key. apiKey: MANYLANE_API_KEY uses OMP’s documented environment-name lookup. Set the variable before startup; otherwise the name can be interpreted as a literal credential.
Apply changes. Save, restart omp from the same terminal and choose manylane/model explicitly. Check /model and any helper model roles.
- Set MANYLANE_API_KEY. Merge the YAML into ~/.omp/agent/models.yml (Windows: %USERPROFILE%\.omp\agent\models.yml). The current default is YAML, not models.json.
- Start OMP with the explicit manylane/model selector below. Run /model to inspect the provider; set any small/background model roles to a Manylane model too.
- The apiKey value is an environment-variable name. Ensure it is set, otherwise OMP may treat the name itself as a literal credential.
providers: manylane: baseUrl: https://manylane.chat/v1 apiKey: MANYLANE_API_KEY api: openai-completions authHeader: true remoteCompaction: enabled: false models: - id: qwen3.8-max-0902 name: Manylane qwen3.8-max-0902 input: [text] reasoning: false cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }omp --model manylane/qwen3.8-max-0902The zero prices disable misleading per-token estimates; membership is still paid. No context-window size or advanced capability is invented here. Add another catalog ID as a new models entry when needed. Do not select pi-native transport or remote compaction: those routes are not Manylane APIs.
OpenCode · v1 configCLI · Chat Completions
Connect OpenCode · v1 config
opencode.json / opencode.jsonc · OpenCode configuration
- Windows
%USERPROFILE%\.config\opencode\opencode.jsonc- macOS
~/.config/opencode/opencode.jsonc- Linux / WSL
~/.config/opencode/opencode.jsonc
Scope & overrides. Default user-wide home-relative location. A project-root opencode.json or opencode.jsonc can override it. Edit your active file rather than maintaining both extensions. Custom paths and managed settings can take precedence.
Open & merge. Open or create the file in a plain-text editor and merge the provider/npm/options recipe into the existing object. Do not mix v1 and v2 schemas. JSONC permits comments; JSON does not. In v1, OPENCODE_CONFIG can select another file; follow the installed version’s guide for overrides.
API key. Use /connect with provider ID manylane and paste the key into its prompt. The saved auth.json is application-managed secret storage, not the provider config. Never commit it.
Apply changes. Restart the OpenCode process sending model requests, including a separately running server. Select manylane/model in a new session.
- Check your OpenCode version first. This recipe uses the v1 provider/npm/options schema; do not mix it with the v2 recipe below.
- Merge this configuration into opencode.json. In OpenCode, run /connect, choose Other, use provider ID manylane, and enter your Manylane API key.
- Run /models and choose manylane plus an exact catalog model. Use the same provider for small/background tasks where your client exposes that setting.
{ "$schema": "https://opencode.ai/config.json", "model": "manylane/qwen3.8-max-0902", "provider": { "manylane": { "npm": "@ai-sdk/openai-compatible", "name": "Manylane", "options": { "baseURL": "https://manylane.chat/v1" }, "models": { "kimi-k3": { "name": "Kimi K3" }, "qwen3.8-max-0902": { "name": "Qwen 3.8 Max" }, "qwen3.8-flash": { "name": "Qwen 3.8 Flash" }, "deepseek-v4-pro-0813": { "name": "DeepSeek V4 Pro" }, "deepseek-v4.1-flash": { "name": "DeepSeek V4.1 Flash" }, "glm-5.3": { "name": "GLM 5.3" } } } }}This adapter uses /chat/completions. The @ai-sdk/openai adapter can use a different wire format. Credentials saved by /connect are local secrets; do not commit auth.json. Agent and native tool behavior still depends on the selected model.
OpenCode · v2 configCLI · Chat Completions
Connect OpenCode · v2 config
opencode.json / opencode.jsonc · OpenCode configuration
- Windows
%USERPROFILE%\.config\opencode\opencode.jsonc- macOS
~/.config/opencode/opencode.jsonc- Linux / WSL
~/.config/opencode/opencode.jsonc
Scope & overrides. Default user-wide home-relative location. A project-root opencode.json or opencode.jsonc can override it. Edit your active file rather than maintaining both extensions. Custom paths and managed settings can take precedence.
Open & merge. Open or create the file in a plain-text editor and merge the providers/package/settings recipe into the existing object. Do not mix v1 and v2 schemas. JSONC permits comments; JSON does not. In v1, OPENCODE_CONFIG can select another file; follow the installed version’s guide for overrides.
API key. The env array names MANYLANE_API_KEY. Set it in the server process environment. A desktop frontend does not transfer a variable from an unrelated terminal; no shell expansion in JSON is assumed.
Apply changes. Restart the OpenCode process sending model requests, including a separately running server. Select manylane/model in a new session.
- Use this only with a build using the documented v2 providers/package/settings schema. Set MANYLANE_API_KEY in the environment of the OpenCode server process.
- Merge into opencode.jsonc, then restart that process and select manylane with the chosen catalog ID.
- A desktop frontend and a separately running server may not share terminal variables. Configure the secret where the requests originate.
{ "$schema": "https://opencode.ai/config.json", "model": "manylane/qwen3.8-max-0902", "providers": { "manylane": { "env": [ "MANYLANE_API_KEY" ], "package": "@opencode/ai/providers/openai-compatible", "settings": { "baseURL": "https://manylane.chat/v1" }, "models": { "kimi-k3": { "modelID": "kimi-k3" }, "qwen3.8-max-0902": { "modelID": "qwen3.8-max-0902" }, "qwen3.8-flash": { "modelID": "qwen3.8-flash" }, "deepseek-v4-pro-0813": { "modelID": "deepseek-v4-pro-0813" }, "deepseek-v4.1-flash": { "modelID": "deepseek-v4.1-flash" }, "glm-5.3": { "modelID": "glm-5.3" } } } }}v1 fields are not interchangeable with v2 fields. Begin with text and standard function tools; do not route native hosted tools, embedding models, or remote Responses compaction to Manylane.
ClineEditor · Chat Completions
Connect Cline
Where to configure · application-managed provider settings
- Windows
VS Code → Cline sidebar → Settings → API Provider → OpenAI Compatible- macOS
VS Code → Cline sidebar → Settings → API Provider → OpenAI Compatible- Linux / WSL
VS Code → Cline sidebar → Settings → API Provider → OpenAI Compatible
Scope & overrides. Per editor/profile. Configure Plan and Act when they use separate settings. In remote/WSL workspaces configure the extension instance used there.
Open & merge. Use this provider form rather than inventing a settings.json entry or editing an internal database. Add a connection/profile and preserve the other providers.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save the provider and start a new task; reload the editor window if the old connection remains selected.
- Open the Cline settings panel and select OpenAI Compatible, not an OpenAI account-login provider.
- Enter the connection fields below. Configure both Plan and Act profiles when they use separate settings.
- Save, select the exact model and send a small text request. Check the Manylane usage log to confirm routing.
Provider: OpenAI CompatibleBase URL: https://manylane.chat/v1API key: YOUR_MANYLANE_API_KEYModel ID: qwen3.8-max-0902Start with text chat and a small, reversible coding task. Enable image, reasoning, or tool capabilities only after verifying that exact model. Tool-side token prices are estimates, not your Manylane membership bill.
Roo CodeEditor · Chat Completions
Connect Roo Code
Where to configure · application-managed provider settings
- Windows
VS Code → Roo Code sidebar → Settings → API Provider → OpenAI Compatible- macOS
VS Code → Roo Code sidebar → Settings → API Provider → OpenAI Compatible- Linux / WSL
VS Code → Roo Code sidebar → Settings → API Provider → OpenAI Compatible
Scope & overrides. Per Roo configuration profile. Select that profile in the mode you use. A remote workspace may run a separate extension instance.
Open & merge. Use this provider form rather than inventing a settings.json entry or editing an internal database. Add a connection/profile and preserve the other providers.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save and select the profile, then start a new task. Use Developer: Reload Window only if needed.
- Open Roo Code settings and select OpenAI Compatible in your configuration profile.
- Enter the URL, key and exact model below, save the profile and select it for the mode you use.
- Try a small task that calls a tool after basic text succeeds; tool support is a separate check.
Provider: OpenAI CompatibleBase URL: https://manylane.chat/v1API key: YOUR_MANYLANE_API_KEYModel ID: qwen3.8-max-0902Roo Code requires native tool calling; a text-only model response is not sufficient and there is no XML-tool fallback in the current documented version. Start with text chat and a small, reversible coding task. Enable image, reasoning, or tool capabilities only after verifying that exact model. Tool-side token prices are estimates, not your Manylane membership bill.
Kilo CodeEditor · Chat Completions
Connect Kilo Code
Where to configure · application-managed provider settings
- Windows
Kilo Settings → Providers → Custom provider → OpenAI Compatible- macOS
Kilo Settings → Providers → Custom provider → OpenAI Compatible- Linux / WSL
Kilo Settings → Providers → Custom provider → OpenAI Compatible
Scope & overrides. Per installation/profile. Earlier extensions expose API Provider in sidebar settings; use the supported GUI for your version.
Open & merge. Use this provider form rather than inventing a settings.json entry or editing an internal database. Add a connection/profile and preserve the other providers.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save, select the provider/model and begin a new conversation. Reload the application if its configuration is stale.
- Open Settings → Providers → Custom provider. Set provider ID manylane and display name Manylane.
- Choose OpenAI Compatible as the Provider API. Enter the URL/key below and fetch or manually add catalog models.
- Save the provider and select it in the model picker. Earlier extension versions may call this the API Provider setting.
Provider ID: manylaneDisplay name: ManylaneProvider: OpenAI CompatibleBase URL: https://manylane.chat/v1API key: YOUR_MANYLANE_API_KEYModel ID: qwen3.8-max-0902Start with text chat and a small, reversible coding task. Enable image, reasoning, or tool capabilities only after verifying that exact model. Tool-side token prices are estimates, not your Manylane membership bill.
ContinueEditor · Chat Completions
Connect Continue
config.yaml · Continue Local Config
- Windows
%USERPROFILE%\.continue\config.yaml- macOS
~/.continue/config.yaml- Linux / WSL
~/.continue/config.yaml
Scope & overrides. User-level Local Config, not your editor’s settings.json or the deprecated Continue config.json. Use the cog beside Local Config in Continue’s config selector to locate the active file.
Open & merge. Keep the existing name/version/schema header and append the Manylane entry to models. Do not add a second models key. An empty file may use the complete header in the example.
API key. Replace the placeholder in your private YAML, or use Continue’s documented secrets. The shown apiKey is literal: ordinary $MANYLANE_API_KEY text is not a shell lookup. Keep secret-bearing files and exports private.
Apply changes. Save: Continue refreshes Local Config. Select Manylane for Chat/Edit. Use Developer: Reload Window if an old configuration remains active.
- Open Continue’s local config.yaml from its configuration menu. Merge this model entry rather than overwriting other models.
- Replace the placeholder privately. Keep the configuration out of source control, or use Continue’s documented secret mechanism.
- Reload the configuration and select Manylane for Chat/Edit. Configure embeddings and autocomplete separately, using services that support those APIs.
name: Manylaneversion: 1.0.0schema: v1models: - name: Manylane qwen3.8-max-0902 provider: openai model: qwen3.8-max-0902 apiBase: https://manylane.chat/v1 apiKey: YOUR_MANYLANE_API_KEY roles: [chat, edit, apply] useResponsesApi: false useLegacyCompletionsEndpoint: falseManylane does not expose embeddings, reranking or legacy /completions endpoints. Do not assign this connection to those roles. Add tool_use only after checking native tool behavior; a capability flag does not add server support.
AiderCLI · Chat Completions
Connect Aider
.aider.conf.yml · Aider persistent options
- Windows
%USERPROFILE%\.aider.conf.yml- macOS
~/.aider.conf.yml- Linux / WSL
~/.aider.conf.yml
Scope & overrides. Aider loads home, repository-root and current-directory .aider.conf.yml in that order; later values win. --config <file> loads only the selected file. This recipe uses the home file.
Open & merge. Open or create .aider.conf.yml. Merge model and openai-api-base as top-level YAML keys, keeping your existing editing and Git preferences. Keep helper/editor models within your intended provider.
API key. Supply OPENAI_API_KEY through the launching environment. A private .env may store its literal value for persistence; exclude it from Git. Do not expect shell substitution inside YAML.
Apply changes. Restart aider from the intended repository with the key variable set and check its startup model. Project config or command-line flags can override the home file.
- Set MANYLANE_API_KEY using the private prompt, then set Aider’s OpenAI-compatible variables below.
- Run Aider from the intended repository. The openai/ prefix is Aider’s provider selector; the model ID after it remains unchanged.
- Check its startup model and test a small change. Keep normal edit approvals and review the diff.
export OPENAI_API_BASE="https://manylane.chat/v1"export OPENAI_API_KEY="$MANYLANE_API_KEY"aider --model openai/qwen3.8-max-0902model: openai/qwen3.8-max-0902openai-api-base: https://manylane.chat/v1Aider may warn about unfamiliar models or missing context/pricing metadata. Such a warning is not proof of API failure. Do not invent context limits or silently redirect to a different provider; test an appropriate edit format for the chosen model.
CursorEditor · Version-dependent · Conditional
Connect Cursor
Where to configure · application-managed provider settings
- Windows
Cursor Settings → Models (or Models & API Keys) → OpenAI API Key / Override OpenAI Base URL- macOS
Cursor Settings → Models (or Models & API Keys) → OpenAI API Key / Override OpenAI Base URL- Linux / WSL
Cursor Settings → Models (or Models & API Keys) → OpenAI API Key / Override OpenAI Base URL
Scope & overrides. Cursor application settings, not .cursor/rules, mcp.json, cli-config.json or the editor’s general settings.json. The recipe does not modify internal state files.
Open & merge. Set the URL override before enabling the Manylane key. Add the distinct manylane-… IDs below instead of canonical names that can collide with built-in models. Do not rename them to GPT or Claude models.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save/verify the URL and key, use Add Custom Model for the Manylane alias, enable it and select that exact alias in a new Chat. Reload Cursor if its configuration is stale.
- Open Cursor Settings → Models and inspect API-key settings. Only continue if your installed build offers an OpenAI-compatible base-URL override and a custom model entry.
- Set and enable Override OpenAI Base URL first, using the /v1 base below. Then enter your Manylane API key in the OpenAI API Key field. Without the URL override, do not submit a Manylane key to the official OpenAI connection.
- Click Add Custom Model and enter the selected manylane-… alias below, not its canonical ID. Enable that entry and select it explicitly in a new Chat instead of Auto. Add other aliases one at a time as needed.
- Verify a small Chat request and inspect Manylane Usage. The alias avoids built-in-name collisions but cannot enable a mode/model blocked by Cursor. If validation sends an unsupported built-in model, do not substitute another model silently; use a compatible extension such as Cline or Continue.
OpenAI Base URL: https://manylane.chat/v1OpenAI API Key: YOUR_MANYLANE_API_KEYCustom Model ID: manylane-qwen3.8-max-0902Actual model: qwen3.8-max-0902manylane-kimi-k3manylane-qwen3.8-max-0902manylane-qwen3.8-flashmanylane-deepseek-v4-pro-0813manylane-deepseek-v4.1-flashmanylane-glm-5.3Cursor alias → actual model
| Custom Model ID in Cursor | Actual model |
|---|---|
manylane-kimi-k3 | kimi-k3 |
manylane-qwen3.8-max-0902 | qwen3.8-max-0902 |
manylane-qwen3.8-flash | qwen3.8-flash |
manylane-deepseek-v4-pro-0813 | deepseek-v4-pro-0813 |
manylane-deepseek-v4.1-flash | deepseek-v4.1-flash |
manylane-glm-5.3 | glm-5.3 |
Exact, case-sensitive mappings; no automatic substitution. All three inference endpoints accept these aliases. Responses and streaming model metadata echo the requested alias; the X-Manylane-Model response header identifies the actual model. Usage, exports, filters and service health stay grouped under that actual model, including input/output/cache details.
Authenticated GET /v1/models?client=cursor lists these six aliases with canonical_model metadata. The default /v1/models still returns the original six IDs for existing clients. Keep the query out of Cursor’s base URL and add aliases manually.
Conditional, not certified in the Cursor client. These are Manylane routing aliases, not OpenAI/Claude models and not extra models. They work on Manylane’s standard endpoints; they do not add Cursor Tab, proprietary Agent request translation, or Cursor CLI custom-provider support. Cursor can reject a model or mode before contacting Manylane. Its server must reach your public HTTPS URL; localhost is unsuitable. Cursor’s own plan terms still apply.
Open WebUIChat · Chat Completions
Connect Open WebUI
Where to configure · application-managed provider settings
- Windows
Browser → Admin Panel → Settings → Connections → OpenAI → Add connection- macOS
Browser → Admin Panel → Settings → Connections → OpenAI → Add connection- Linux / WSL
Browser → Admin Panel → Settings → Connections → OpenAI → Add connection
Scope & overrides. Server-managed connection, shared according to your access controls. There is no config file to edit on the browser’s Windows/macOS/Linux device for this recipe.
Open & merge. Use this provider form rather than inventing a settings.json entry or editing an internal database. Add a connection/profile and preserve the other providers.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save, refresh the model list and start a new chat. Check connection access controls and title/task model selections.
- Open Settings → Admin → Connections and add an OpenAI API connection.
- Enter the Manylane base URL and key. Fetch models, or add the exact ID to the Model IDs allowlist, then save.
- Choose Manylane in a new conversation. Set title/helper tasks to a catalog model or turn those optional requests off.
Connection type: ExternalURL: https://manylane.chat/v1API key: YOUR_MANYLANE_API_KEYModel ID: qwen3.8-max-0902This config covers text chat, not an embeddings, speech, images or file-storage service. A shared administrator connection shares its Manylane membership and concurrency allowance with users of that connection. Review who can use it.
LibreChatChat · Chat Completions
Connect LibreChat
librechat.yaml + .env · LibreChat server configuration
- Windows
<LibreChat folder>\librechat.yaml and <LibreChat folder>\.env- macOS
<LibreChat folder>/librechat.yaml and <LibreChat folder>/.env- Linux / WSL
<LibreChat folder>/librechat.yaml and <LibreChat folder>/.env
Scope & overrides. Installation root on the server, not the browser device or your home directory. CONFIG_PATH may specify another YAML path. Docker uses Linux paths inside the container even on Windows/macOS.
Open & merge. Open or create librechat.yaml beside .env; append Manylane to endpoints.custom while preserving the schema version and other settings. For a new file, start from the bundled librechat.example.yaml. Our endpoint example is a fragment, not a replacement file.
API key. Put the literal MANYLANE_API_KEY in the private server .env or secret environment. LibreChat explicitly expands ${MANYLANE_API_KEY} in YAML. With Docker, pass the variable into the API container: Compose .env interpolation alone is not environment injection.
Apply changes. For Docker, mount the existing YAML at /app/librechat.yaml using the override fragment below, then run docker compose up -d api. For local installs restart the backend. Never paste private config into public YAML validators.
- Set MANYLANE_API_KEY in LibreChat’s server environment or private .env, never a public config file.
- Merge this custom endpoint into librechat.yaml, preserve the file’s existing version/settings, and restart the LibreChat server.
- Select the Manylane endpoint and exact model in a new chat. This example disables automatic title generation to avoid a hidden non-catalog model request.
endpoints: custom: - name: Manylane apiKey: '${MANYLANE_API_KEY}' baseURL: 'https://manylane.chat/v1' models: default: ['qwen3.8-max-0902'] fetch: true titleConvo: false modelDisplayLabel: ManylaneMANYLANE_API_KEY=YOUR_MANYLANE_API_KEYservices: api: environment: MANYLANE_API_KEY: ${MANYLANE_API_KEY} volumes: - type: bind source: ./librechat.yaml target: /app/librechat.yaml read_only: trueManylane’s key belongs on the LibreChat server for this setup. File/RAG/embedding features need separate configuration and are not enabled by adding a chat endpoint. A shared server key shares one membership and its limits.
Cherry StudioChat · Chat Completions · Conditional
Connect Cherry Studio
Where to configure · application-managed provider settings
- Windows
Cherry Studio → Settings → Model Provider → Add → OpenAI-compatible- macOS
Cherry Studio → Settings → Model Provider → Add → OpenAI-compatible- Linux / WSL
Cherry Studio → Settings → Model Provider → Add → OpenAI-compatible
Scope & overrides. Per desktop installation. Labels vary by release; use its settings screen, not internal JSON/database files. Configure each device separately.
Open & merge. Use this provider form rather than inventing a settings.json entry or editing an internal database. Add a connection/profile and preserve the other providers.
API key. Paste the actual Manylane API key into the private key field. A variable name such as $MANYLANE_API_KEY is not expanded by a GUI field. Do not share secret-bearing settings exports.
Apply changes. Save and enable the provider, add/select the model and start a new conversation. Restart the app if its model list is stale.
- In your installed Cherry Studio version, open model-provider settings and add a custom OpenAI-compatible provider named Manylane.
- Enter your Manylane key and configure the API host so the resulting request URL is exactly the Chat Completions URL below. Versions can append /v1 automatically: do not duplicate it.
- Add the exact model ID, enable the provider, and select it in a new text conversation. Verify the resulting request in Manylane Usage.
Provider: OpenAI-compatible custom providerAPI key: YOUR_MANYLANE_API_KEYModel ID: qwen3.8-max-0902Expected POST URL: https://manylane.chat/v1/chat/completionsExpected catalog URL: https://manylane.chat/v1/modelsVersion-dependent setup. The official project confirms multi-provider support; exact settings labels and URL normalization must be checked in your installed version. Knowledge-base embeddings, drawing, speech and advanced agent functions are separate capabilities, not automatically included.
Connection checklist & common errors
- Verify the API key with the model-catalog request below. It checks authentication without generating model output.
- Send a short prompt with an exact catalog ID. HTTP 402 means membership is inactive; 401 means the credential is missing, invalid or revoked.
- A 404 on /v1/v1 or /chat/completions/chat/completions indicates a duplicated URL suffix. Use the correct base, not a full endpoint, unless your client explicitly requests one.
- For 400 errors, inspect the requested feature: only standard function tools and stateless Responses are supported. Hosted tools, stored response history, /responses/compact, /messages/count_tokens, embeddings and image generation are not implemented.
- For 429, reduce parallel agent/helper requests and honor Retry-After. A client’s helper calls share the account-wide concurrency limit.
- Check your actual request in Usage & activity. Token estimates and cost displays inside a client are not your membership bill.
curl "https://manylane.chat/v1/models" \ -H "Authorization: Bearer $MANYLANE_API_KEY"Your plan, your pace.
Membership is $5 for 24 hours, $10 for 7 days, or $30 for 30 days. Every plan includes the same catalog and unlimited requests over the membership period, subject to the disclosed technical and acceptable-use limits. There are no automatic renewals.
Open Membership, select your plan, accept the purchase terms, then prepare a checkout. When payments are enabled, the server returns a unique order, the exact USDT quote and expiry, and a secure checkout link. Send USDT on BNB Smart Chain (BEP20) only. Never send funds while checkout is disabled or use an address from an unsolicited message.
Use a blockchain withdrawal, not Binance Pay or a Binance internal transfer. The full quoted amount must arrive after any withdrawal fees. Ethereum (ERC20), Tron (TRC20), and Base are not valid networks for a USDT/BEP20 quote. Account registration remains code-only: no email, personal name, or connected exchange account is required by Manylane.
Selecting a plan does not charge you. Returning from checkout, a wallet screenshot, or a transaction submitted for confirmation does not activate a plan. Manylane checks the payment service directly and activates each verified paid order once. Existing membership time is preserved: a new period starts at your current expiry if it is still in the future.
The page checks open orders while visible and online; server checks continue independently. For a partial payment, check the remaining balance in the original checkout before sending more. Do not resend the original amount. Expired, late, refunded, or reversed payments may require operator review. Keep your order ID for support, never share your account code, and read the purchase terms before paying.
Exact model IDs
Use these IDs exactly. Manylane never silently substitutes another model. Catalog inclusion is separate from live availability; check service status and test the capabilities your application needs.
| Model | API identifier | |
|---|---|---|
| Kimi K3 | kimi-k3 | |
| Qwen 3.8 Max | qwen3.8-max-0902 | |
| Qwen 3.8 Flash | qwen3.8-flash | |
| DeepSeek V4 Pro | deepseek-v4-pro-0813 | |
| DeepSeek V4.1 Flash | deepseek-v4.1-flash | |
| GLM 5.3 | glm-5.3 |
Chat Completions
POSTUse a non-empty messages array with a model ID. Standard text messages, streaming, and function tools are forwarded to the selected model. Model support for images, structured output, reasoning settings, and tools can differ.
import OpenAI from 'openai';const client = new OpenAI({ apiKey: process.env.MANYLANE_API_KEY, baseURL: 'https://manylane.chat/v1',});const response = await client.chat.completions.create({ model: 'qwen3.8-max-0902', messages: [{ role: 'user', content: 'Think bigger.' }],});console.log(response.choices[0].message.content);Responses
POSTSend a string or input-item array in input. This release supports stateless text responses, streaming, and function tools. Keep conversation history in your application and resend it in input.
import OpenAI from 'openai';const client = new OpenAI({ apiKey: process.env.MANYLANE_API_KEY, baseURL: 'https://manylane.chat/v1',});const response = await client.responses.create({ model: 'qwen3.8-max-0902', input: 'Think bigger.', store: false,});console.log(response.output_text);store: false. previous_response_id, shared conversations, background jobs, hosted file/vector-store IDs, and built-in hosted tools are not supported. This keeps one account from accessing another account's hosted resources.Messages
POSTUse the Anthropic SDK with your Manylane origin as baseURL. Include max_tokens and messages. System instructions belong in the top-level system field. We preserve the native Messages response and event formats.
import Anthropic from '@anthropic-ai/sdk';const client = new Anthropic({ apiKey: process.env.MANYLANE_API_KEY, baseURL: 'https://manylane.chat',});const message = await client.messages.create({ model: 'qwen3.8-max-0902', max_tokens: 1024, messages: [{ role: 'user', content: 'Think bigger.' }],});console.log(message.content);Compatible protocol does not mean access to Claude models. Choose one of the six catalog IDs above. Send anthropic-version: 2023-06-01 when using HTTP directly.
Stream, don't wait.
Set stream: true to receive Server-Sent Events. Streaming is incremental, not a buffered response disguised as streaming. Closing the client stream cancels the upstream request and releases the account's concurrency slot.
const stream = await client.chat.completions.create({ model: 'qwen3.8-flash', messages: [{ role: 'user', content: 'Hello.' }], stream: true,});for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? '');}For Chat Completions we request final usage metadata automatically. Token counts appear in the dashboard when the model reports them; missing usage is marked as unreported, not estimated. An HTTP 200 can still be followed by an SSE error, so check event errors and the terminal event.
Input, output and cache tokens.
The dashboard shows model-reported usage, not an estimate or a per-token bill. Open Usage & activity to view the breakdown by period and model, or expand an individual request.
| Metric | Meaning |
|---|---|
| Input tokens | Reported input total, including reported cache reads and writes once. Messages base input is normalized with its separate cache counters. |
| Output tokens | The model-reported output counter, which may include reasoning when the model includes it in that counter. Not an extra inferred token count. |
| Cache read | Input tokens reported as reused from prompt cache. Already part of input; do not add them again. |
| Cache write | Input tokens explicitly reported as written to prompt cache. Cache misses alone do not prove a cache write. |
| Total tokens | Input + output. Missing fields contribute only a known subtotal, not a complete usage claim. |
| Cache-read rate | Cache-read tokens / input tokens, using only the same requests that report both counters. No matched input means no rate. |
0 is a reported zero. Older requests retain their saved counts but are marked legacy; missing historical cache detail cannot be reconstructed.{ "input_tokens": 100, "output_tokens": 20, "cache_read_tokens": 60, "cache_write_tokens": 10, "input_tokens_reported": 1, "output_tokens_reported": 1}In this example, total usage is 120, not 190. A cache-read rate of 60% applies to the known input. Coverage counts show how many attempts actually reported each field, including partial or interrupted requests.
API field mapping
| Format | Read / write counters inside usage | Input normalization |
|---|---|---|
| Chat Completions | prompt_tokens_details.cached_tokensprompt_tokens_details.cache_write_tokensAlso accepts a reported prompt_cache_hit_tokens alias. | prompt_tokens already includes cache subsets. |
| Responses | input_tokens_details.cached_tokensinput_tokens_details.cache_write_tokens | input_tokens already includes cache subsets. |
| Messages | cache_read_input_tokenscache_creation_input_tokens | Base input_tokens + reported reads + reported writes. |
Raw inference responses keep their native protocol schema. Normalization is for Manylane’s usage ledger. Streaming usage events replace cumulative counters instead of adding them repeatedly. A disconnected stream can have partial counts and is not recorded as a successful completion.
CSV exports append the four detail/reporting columns; missing fields are empty cells. JSON exports use null. Per-field reporting flags are 1 for reported, 0 for missing, and null for legacy records. No model is promised to expose cache metadata, a specific hit rate, or a particular cache lifetime.
Unlimited requests. Clear boundaries.
There is no per-day request count or membership token budget. Technical limits keep access usable: 2 simultaneous requests per account, a 1 MiB request body, a five-minute request deadline, one completion per request, and the selected model's context and output limits.
| HTTP | Meaning | What to do |
|---|---|---|
400 | Invalid parameters or unsupported feature | Check the payload and model capabilities. |
401 | Missing, invalid, or revoked API key | Use an active key, not your account code. |
402 | No active membership | Check your membership and expiry time. |
404 | Unknown model or endpoint | Use an exact catalog ID and documented route. |
413 | Request body too large | Keep the JSON body within 1 MiB. |
429 | Concurrency or temporary capacity limit | Honor Retry-After and use exponential backoff with jitter. |
502 / 503 | Model or service unavailable | Retry later or choose another model. |
504 | Request deadline exceeded | Shorten the request and retry. |
Every response includes an X-Request-ID for troubleshooting. Errors intentionally omit provider credentials and internal diagnostics. Failed or interrupted inference attempts remain visible in your request log.
Useful insights, without a transcript.
Manylane stores request metadata: model, protocol, status, reported token counts, timestamps, and duration. It does not store your prompts or generated text in its application database. Your content is sent to a third-party inference service to generate a response; its processing policies apply.
Playground conversations live only in the current browser tab. API keys and account codes are stored as cryptographic hashes. Request metadata is retained for up to 90 days, with daily cleanup. You can export metadata or delete your account in Settings.
Read the privacy notice