Back to guides
Integration·September 18, 2026·Updated September 21, 2026·16 min read

AI Agent API Directory: BYOK, Provider Support and Setup Guides

Find an agent client by category, then check its protocol, its bring-your-own-key boundary and whether it is still maintained.

Last reviewed on .

Most open-source agent clients let you set your own API base URL, but three things decide whether that actually works: the wire protocol the client speaks, where the bring-your-own-key boundary sits, and whether the project is still maintained. This directory lists 77 agent clients — 64 across terminal coding agents, editors, desktop chat apps, workflow builders and always-on personal agents, plus 3 with no documented third-party endpoint and 10 retired or superseded — with each one's protocol, endpoint boundary and lifecycle stated separately so you can tell "it takes a base URL" apart from "it will do what you need".

This is a navigational index, not a ranking. No client here has been runtime-tested by Kunavo, nothing is scored, and retired projects appear with their status rather than being quietly dropped. Client facts were gathered on September 17, 2026. On September 18, 2026 every lifecycle cell in the archived and no-endpoint tables was re-checked against the GitHub API, along with most of the rows listed as active; protocol and bring-your-own-key detail was re-read for a subset rather than for all 77. Each row links the page it was written from, so any cell can be re-checked at the source.

The three axes that decide whether a custom endpoint works

A single "supports custom API" column hides most of the real failure modes. Every row below separates them.

1. Wire protocol

"OpenAI-compatible" is the most common shape but not the only one, and the names clients use for these do not always match what they send.

ProtocolWhat the client sendsWhat that means for an endpoint
OpenAI Chat CompletionsPOST to /v1/chat/completionsThe widest-supported shape; the default assumption in most clients here
OpenAI ResponsesPOST to /v1/responsesA different endpoint. A gateway that implements only chat completions will not answer it
Anthropic MessagesPOST to /v1/messagesA different request and response shape entirely, not a header change
Google Gemini or Vertex nativemodels/*:generateContentGemini CLI takes a base URL but still speaks this, so an OpenAI-compatible URL will not work there
Native onlyFixed vendor endpointsNo base-URL field exists; the endpoint is compiled in

Two naming traps are worth memorising because the failure looks like a broken endpoint rather than a wrong protocol. In PicoClaw, provider: "anthropic" sends OpenAI-shaped chat completions and anthropic-messages sends the native Messages API, so an endpoint serving only /v1/messages returns 404 under the first value. In Factory's Droid, provider: openai means the Responses API and generic-chat-completion-api is the value for a chat-completions gateway.

2. Bring-your-own-key boundary

BoundaryWhat it looks likeExamples in this directory
Freely configurableA documented base-URL field, no account or paid tier involvedMost terminal agents, most self-hosted chat front-ends
Surface-gatedWorks on some surfaces of the product and not othersDroid (CLI and desktop only), Qoder (IDE, not CLI), OpenHands (local agent-server backend, not cloud), AutoGPT Platform (self-hosted chat agent, not the block layer)
Plan-gatedRequires a paid or early-access tierAmp custom endpoint URLs, Warp for organizations above ten employees, Smart Chat Pro
Protocol-scopedThe field exists but accepts only one vendor protocolGemini CLI, nanocode, NanoClaw on its default runtime
None documentedKeys yes, endpoint noKiro CLI, Devon

3. Lifecycle

An unarchived repository is weak evidence. Continue is read-only but carries no archive flag, so an archive-flag check reports it as live; Aider's repository is not archived either, but it has had no release since August 2025, and Stakpak's has neither an archive flag nor a commit since July 2026. A push date is weaker still, because it moves when anything is pushed anywhere in the repository while the default branch sits still — that gap is why Continue and Witsy both read as fresher than they are. Lifecycle cells below rest on the default-branch commit log, the release list and the project's own statement, not on a push date.

Why a base URL is not a compatibility guarantee

These are the recurring reasons a correctly configured endpoint still misbehaves, all drawn from the clients' own documentation:

  • Path handling. Cherry Studio wants the provider root and appends the version path itself, so pasting a full chat-completions URL doubles the path. Jan requires the version path in the base URL. TypingMind wants the complete /v1/chat/completions path. SillyTavern says not to add the suffix. Dify appends the version itself for non-LLM model types.
  • Model-list requirements. n8n's credential test issues GET /models and will not save without it. pool's context-length override applies only when the model appears in the provider's model list. Open WebUI works around a missing list with a manual allowlist field.
  • Hand-declared model metadata. None of Zed, Crush, Theia, OpenClaw, ChatWise or Dyad discovers a model's limits from your endpoint. What that costs you differs: Zed, Crush and ChatWise have you type the context window, output limits or per-token prices; OpenClaw and Dyad take those fields as optional and apply defaults when you leave them blank; Theia's custom model entry carries no limits or prices at all. Where a client reports spend from numbers you typed, the figure reflects what you typed, not what was billed.
  • Feature subsets. Twinny's autocomplete uses the legacy completions route while chat uses chat completions. AnythingLLM configures embeddings separately from chat. Jan cannot infer tool, vision or audio support for a custom provider. Oh My Pi needs a flag for endpoints that reject strict tool definitions.

Terminal coding agents

Retired and superseded terminal projects — SWE-agent, Plandex, Mentat, the archived Go OpenCode CLI and iFlow CLI — are in the archived section further down rather than in this table. Kiro CLI and Devon are in the no-endpoint table.

ClientLifecycleProtocol / BYOK boundaryBest forKey limitKunavo page
AiderNot archived but dormant: last release 2025-08-09, last default-branch commit 2026-05-22OpenAI Chat Completions via the openai/ model prefix and OPENAI_API_BASE. Freely configurableTerminal pair programming on an existing git repo, with edits applied and auto-committedNo release in over 13 months, so metadata for newer models can lag and may need supplying by handPricing, setup
gooseActive, but relocated: donated by Block to the Agentic AI Foundation, repo moved to aaif-goose/goose and docs to goose-docs.ai, announced 2026-04-07OpenAI Chat Completions (OPENAI_HOST plus OPENAI_BASE_PATH) and Anthropic Messages (ANTHROPIC_HOST). Freely configurableA general-purpose local agent beyond coding — desktop app, CLI and embeddable API, extended over MCPThe base URL is split across two variables, so an endpoint rooted at a version path needs that path set explicitlyvs Claude Code
CrushActive; pushed 2026-09-18, the same day it was checkedDistinct types: openai, openai-compat for non-OpenAI compatible APIs, and anthropic. Freely configurable via crushrc or crush.jsonA polished terminal agent where per-model context window and prices are declared locally, so cost is visible in-sessionNothing is discovered — context window, max tokens and prices are entered by hand. Both config files are trusted code: crushrc runs in a shell, and command substitution in crush.json executes at load
PiActive; earendil-works/pi pushed 2026-09-18. The older badlogic/pi-mono path redirects hereopenai-completions, openai-responses, anthropic-messages, google-generative-ai in ~/.pi/agent/models.json. Freely configurableBuilding on or embedding a small, hackable agent coreThe README states new issues and pull requests from new contributors are auto-closed by default, and you adopt a harness monorepo rather than just a CLIPricing, vs OpenCode
Oh My PiActive fork of Pi; pushed 2026-09-18The widest set here: openai-completions, openai-responses, openai-codex-responses, azure-openai-responses, anthropic-messages and three Google variants. Freely configurable via models.ymlMaximum provider and protocol coverage in one terminal agent, with LSP and DAP tooling wired inAnthropic-compatible endpoints that reject the strict field on tool definitions need disableStrictTools; discovery forces a /v1/models path unless explicitly disabled
poolActive but small: pushed 2026-08-18, 425 stars, commercially backed by PoolsideOpenAI-compatible only on the custom route (POOLSIDE_STANDALONE_BASE_URL); separately speaks ACP. Environment-variable only, no gateAn ACP-native terminal agent you can also run as a server for a compatible editorThe endpoint must serve GET /v1/models and list the selected model, or the context-length override silently stops applying
DeepSeek HarnessActive, self-declared developer preview; pushed 2026-09-17openai-completions, openai-responses or anthropic-messages, one protocol per provider entry in settings.yaml. Freely configurableTrying DeepSeek's plugin-architecture harness as a local web UI pointed at any endpointThe maintainers promise compatibility-breaking changes, and OAuth-based providers are not supported through the custom-provider interface
Droid (Factory)Active commercial product, closed source; documentation and pricing page both reachable 2026-09-18. factory.ai redirects to factory.comanthropic is Messages, openai is Responses, generic-chat-completion-api is Chat Completions. Surface-gated: CLI and desktop app onlyKeeping a commercially supported agent while moving inference to your own endpoint on the local surfacesCustom models never appear in the hosted web or mobile apps. No plan-tier gate is stated on the BYOK page and the pricing page does not list the feature — that is an absence of a documented gate, not proof there is nonePricing
Qwen CodeActive; pushed 2026-09-18OpenAI Chat Completions, Anthropic Messages, Google GenAI and Vertex, each with its own base-URL variable, plus an explicit Custom Provider option. Freely configurableSwitching protocol and provider at runtime from a single terminal clientThe Qwen OAuth free tier was discontinued 2026-04-15 and removed from the auth dialog, so any guide still promising a free daily quota is stalePricing
Kimi Code CLIActive; MoonshotAI/kimi-code pushed 2026-09-18. The older Kimi CLI repo says it is evolving into this one and will be gradually wound downOpenAI Chat Completions and Responses, Anthropic Messages, Google GenAI, Vertex — config.toml provider blocks. Freely configurableKeeping a managed Moonshot login as one provider while adding a third-party endpoint alongside itCredentials are never read from an ambient shell variable: the variable name must be declared in config, or startup failsvs Claude Code
OpenHandsActive but restructured: org renamed from All-Hands-AI, the main repo now ships Agent Canvas (1.20.0, 2026-09-17) while the agent lives in a separate SDK repo. CLI mode is still documentedLiteLLM, so a provider prefix is mandatory. Backend-gated: provider connections are available on local agent-server backends and hidden on a cloud backendAutonomous, sandboxed multi-step work — issue-to-pull-request tasks and scheduled automations — on your own machine or serverOn the proxy path the model name must already be configured on that proxy. Whether the cloud backend allows a direct key on a provider profile is not documented either wayvs OpenCode
mini-SWE-agentActive; pushed 2026-09-14, currently on v2 with v1 kept on a branchLiteLLM; a custom endpoint goes through model_kwargs with an OpenAI-compatible provider and an api_base. Freely configurableCheap, scriptable batch and benchmark runs, with a core loop short enough to read before trusting itA model outside the LiteLLM registry breaks cost tracking, and v2 changed the configuration layout so v1-era instructions do not transfer
NanocoderActive; pushed 2026-09-18. Run by a community collective rather than a companyOpenAI-compatible, plus Ollama and per-vendor presets. A provider entry in agents.config.json or the settings wizard. Freely configurableLocal-first terminal coding where a remote API is one option among local models rather than the assumed defaultSettings resolve block by block, so a one-field project override discards the rest of that block and falls back to built-in defaults instead of your global config
Mistral VibeActive; pushed 2026-09-18. An official Mistral projectOpenAI-compatible by default; provider blocks in config.toml carry api_base and the name of the key variable. Freely configurableA small, auditable Python CLI from a model vendor, with your own endpoint underneathThe provider reference lives in the in-repo config reference rather than the README, so key names can move between releases — pin a version in any setup instructions
Gemini CLIActive; pushed 2026-09-18Native Gemini only. The base-URL override applies to API-key auth, must be HTTPS unless it points at localhost, and no OpenAI-compatible mode is documentedGemini-first terminal work — and the clearest example of why protocol and endpoint are separate questionsThe override is documented only for the API-key path, so do not count on it reaching the Google-account OAuth login, and an OpenAI-compatible URL will not work unless the endpoint also serves the Gemini wire protocolvs Claude Code
GitHub Copilot CLIActive; release v1.0.86 on 2026-09-17. Not the archived gh copilot extension, which is a separate repo archived with a last push of 2025-10-30OpenAI Chat Completions, Azure OpenAI or Anthropic, selected by a provider-type variable alongside a base-URL variable. No plan gate for an individual; org and enterprise BYOK was not checkedRunning GitHub's coding agent against your own endpoint with no Copilot seat and no GitHub loginBYOK lets the CLI run with no GitHub authentication, and the authentication page lists what stops working without it: /delegate, the GitHub MCP server and GitHub Code Search. Model calls still work, and you can sign in as well as bring a key to keep bothvs Claude Code
gptmeActive; pushed 2026-09-18. Moved from a personal namespace to the gptme org, old paths redirectOpenAI-compatible only for custom endpoints, via a local model prefix with a base-URL variable or a named provider entry. Freely configurableA general terminal agent with shell and browser tools, repointed by setting one environment variableAn endpoint that speaks only Anthropic Messages has no documented slot, and any other protocol needs a plugin written against the provider entry point
Open InterpreterActive but rewritten into a different program: now a Rust implementation based on Codex, releases tagged rust-v0.0.44 on 2026-09-15, and the repository path itself moved to openinterpreter/openinterpreterA TOML provider table where wire_api accepts responses or chat. Freely configurableA Codex-style harness deliberately tuned for cheap open models, configured through a provider tableThe name no longer means what most write-ups mean by it — old Python config files, flags and tutorials do not apply. The documented example uses the responses wire, so a chat-completions-only endpoint must be declared explicitly
AmpCommercially active; a Sourcegraph agent, with a policy announcement dated 2026-09-13. Tiers are Hobby (free), Individual/Megawatt, Gigawatt, Teams and EnterpriseArbitrary custom endpoint URLs are early access for Megawatt and Gigawatt members, behind an experimental feature toggle; the announcement promises only that it will roll out to everyone soon, with no date. Plain bring-your-own-key is separate and broader — the same announcement states there are no BYOK token fees or limits for anyone except the Enterprise tier, and that everyone can use Amp with their own keys at no monthly feeTeams wanting a commercial agent with strong code search while token spend stays on their own provider accountDo not assume an arbitrary base URL: as of 2026-09-18 that specific capability is early access only
nanocodePublished but barely maintained: created 2026-04-01, last push 2026-04-02, 20 starsAnthropic Messages only, despite the README table. Base URL set by environment variable or a config command. Freely configurableReading rather than running — a short Python codebase showing how a Claude-Code-shaped agent loop is assembledThe advertised OpenAI compatibility does not exist in the code: the client wraps the Anthropic SDK, so a plain chat-completions endpoint will not work
QodeXActive but very small: created 2026-06-11, last push 2026-08-22, 32 stars. Unrelated to OpenAI's CodexAn openai type taking an arbitrary base URL, an ollama type, and an anthropic type with prompt caching on by default. Config holds the key variable name, not the key. Freely configurableLocal-first work where one configuration holds both a local server and a cloud endpoint, switched per run with a profileSingle-maintainer scale with no community to absorb a breaking upstream change, and none of it is runtime-verified by anyone
GoCodeActive but minimal: created 2026-07-25, last default-branch commit 2026-09-17, 5 starsMostly OpenAI-shaped across nine named gateways, with Anthropic as the one native entry; per-provider base_url in config.toml. Freely configurableA single small Go binary with in-session provider switching and no Node or Python runtime on the machineShipped default model ids are already stale, so you will pin them by hand — and the name collides with the long-established Go autocompletion daemon
Jan AgentPreview: the documentation states the installer pulls from a nightly channel. The parent repo is active, last commit 2026-09-18OpenAI-compatible by default, Anthropic Messages via an api-type flag. Flags, a config file or an environment variable. Freely configurableA terminal agent aimed at either an OpenAI-style or an Anthropic-style endpoint by changing one flagPreview software installed from a nightly channel, so flags and behaviour can change between builds and any setup you write down is version-specific
Junie CLIActive; the JetBrains custom-model documentation page was stamped 18 September 2026, the day it was checkedA JSON model profile with a base URL, a key (environment-variable interpolation supported) and an apiType selecting OpenAI completions, Anthropic or Gemini format. The BYOK page states no JetBrains AI subscription is requiredJetBrains users who want the Junie agent in a terminal, billed by their own providerThe documentation describes the CLI specifically and does not confirm the same profiles apply to the IDE plugin; it also stresses the model must be strong enough for agentic tool use
Docker AgentActive, renamed from cagent; the old repo path resolves to the new one and legacy environment-variable prefixes still workOpenAI chat completions through an explicit api_type with a base URL and a key-variable name, plus native anthropic, google and bedrock provider types. Freely configurableDeclarative multi-agent teams written in YAML and shipped as OCI artifactsNaming and billing confusion: older cagent material, the current Docker Agent docs and Docker's own AI subscription pages describe different things
fast-agentActive; repository not archived, with open issues and pull requests at the time of checkA generic OpenAI-compatible provider taking base_url and api_key in YAML, or a base-URL flag for a single run. Native Anthropic, OpenAI, Google, Azure and DeepSeek paths exist separately. Freely configurableBuilding MCP-native agents and workflow patterns in Python, driven from an interactive CLIA framework rather than a product — no hosted service or commercial support — and the documented generic examples are local endpoints, so a remote endpoint is in spec but not the illustrated shape
StakpakDormant, not archived: Apache-2.0, but the newest default-branch commit is 2026-07-06 and the newest release v0.3.88 is dated 2026-06-10 — over two months quiet at the time of checkOpenAI-compatible via an api_endpoint key; native Anthropic and OpenAI keys also accepted. A Stakpak account is one option rather than a requirementDevOps and infrastructure work — Kubernetes debugging, CI/CD and infrastructure-as-code — with guardrails against destructive commandsBoth worked examples in the README point api_endpoint at a local server, so the remote case is in spec but not the illustrated shape. Combined with the commit gap above, treat it as a project to check before adopting rather than one in active development
VT CodeActive but explicitly experimental and solo-maintained; the README says local inference and some automation flows may change between releasesAn OpenAI-compatible custom-provider array in vtcode.toml with base_url and a key-variable name, plus an optional providers allowlist. Freely configurableA single static Rust binary for people who want wide provider choice plus an auditable provider allowlistSpare-time solo maintenance with self-declared experimental surfaces, so configuration stability across releases is a real risk
CodeBuddy CodeActive; a Tencent Cloud product whose CLI documentation references v2.153.0OpenAI-compatible via a base-URL and key variable pair, presented for third-party model services. No Anthropic-format claim appears in the docs despite the familiar UX. No plan gate on the third-party pathA Claude-Code-shaped terminal workflow with sandboxed execution, custom sub-agents and hooksSeveral unrelated products carry the CodeBuddy name, and the vendor's own region switch stops applying once you point the CLI at a third-party base URL
WarpActive; the documentation pages checked carry a last-updated date of September 16, 2026OpenAI Chat Completions for the custom inference endpoint, configured per user on Free and eligible paid plans. Organizations above ten employees need Business or Enterprise. A separate enterprise-only feature covers cloud-vendor native pathsAn agentic terminal UI running against your own endpoint instead of a bundled model quotaTwo gates stack: the organization-size rule, and a hard requirement that the endpoint be publicly reachable — localhost, private network addresses and internal-only proxies are rejected outright

Editors and IDE forks

Continue, Void and PearAI are in the archived and superseded section, not here.

ClientLifecycleProtocol / BYOK boundaryBest forKey limitKunavo page
ZedActive; pushed 2026-09-18Two independent settings trees, OpenAI-compatible and Anthropic-compatible, each with its own api_url. The pricing page gives the free Personal plan unlimited use with your own API keys, so BYOK is not paywalled. Edit prediction has its own tree and can also take an OpenAI-compatible providerA fast native editor where one key can drive the agent panel, inline assist and edit predictionNo model discovery: every model is hand-declared with its own token limits, and a typo yields a missing model rather than an error. Zed as the model provider, and the default edit-prediction model, still require a Zed sign-invs Cursor, setup
Theia IDEActive; pushed 2026-09-18, with a nightly tagged the same dayOpenAI-compatible. A preference array of custom model objects carrying model, url, id and key. No plan or account gate, but AI features ship disabled behind a local toggleA vendor-neutral Eclipse Foundation desktop IDE where every model endpoint is declared explicitly in settingsNo model discovery, and a wrong url or id fails quietly. Do not confuse the downloadable Theia IDE with the Theia platform that other products embed — the configuration above is the IDE's
TwinnyActive; pushed 2026-09-18, MITOpenAI-compatible, over two different routes: chat appends chat-completions to the configured path while autocomplete uses the legacy completions route. Providers added one at a time through a form with a test button. Freely configurableFree VS Code autocomplete plus chat, with fill-in-the-middle and chat deliberately pointed at different models or even different endpointsChat compatibility does not imply autocomplete works: an endpoint serving only chat completions gives working chat and dead ghost text. Verify the completions route and the fill-in-the-middle template separately
QoderActive; an Alibaba agentic coding platform with current custom-model documentationSurface-gated. The IDE takes a base URL and key with an OpenAI-compatible (chat completions or responses) or Anthropic-compatible picker. The CLI does not: its own custom-models page says not to configure BYOK by hand in settings.json and that the available providers, models and credential fields are fixed by the BYOK catalogue on your accountRepo-aware agentic IDE work on your own key rather than a bundled quotaIDE and CLI do not share BYOK rules, so a product-wide "Qoder supports custom endpoints" claim is false for the CLI
DyadActive; release v1.15.0 on 2026-09-11 and a commit on 2026-09-18OpenAI-compatible only. Add a custom provider with an ID, display name and base URL, then add each model with an exact model ID. Dyad Pro credits are an alternative rather than a gateLocal desktop app building where the whole build loop runs on your own keyCustom models need output-token and context-window limits entered by hand; left blank, the app falls back to defaults that may quietly cap long builds
bolt.diyDormant, not archived: last commit 2026-02-07, 83 open issues, last tag v1.0.0 on 2025-05-12OpenAI-compatible through an OpenAI-like provider entry, or a base-URL and key pair in a local env file. Fully self-hosted, no gateSelf-hosted in-browser full-stack app building where every key stays in your own env fileNobody has pushed code since 2026-02-07, so new model ids, provider quirks and the open backlog are yours to carry — a working setup today is not a maintained one

Desktop chat and knowledge-base clients

Witsy is in the archived section; Smart Chat is in the no-endpoint table, because an arbitrary third-party base URL is not documented for it.

ClientLifecycleProtocol / BYOK boundaryBest forKey limitKunavo page
Cherry StudioActive; pushed 2026-09-18. AGPL-3.0 community edition with a separately sold enterprise edition and a commercial licence optionOpenAI-compatible by default, with OpenAI Responses, Anthropic and Gemini selectable per provider. Enter the provider root — the app appends the version path itself, and a trailing hash pins the address exactly. Freely configurableA free desktop workspace for one person juggling many providers, assistants, local models and documentsThe API address field is a root, not an endpoint: the settings page says Cherry Studio appends /v1/chat/completions itself unless the address ends in #, so pasting a full chat-completions URL doubles the path. The pull request that would have stripped it (#19120) was closed unmerged on 2026-09-04Setup
Chatbox AIActive; repo renamed to chatboxai/chatbox with the old path redirecting, pushed 2026-09-16OpenAI-compatible chat completions for custom providers: add a provider with an API host, an empty API path and a key, then fetch the model list. Not plan-gatedHanding a non-developer who already has a key something that works on desktop, mobile and web, with model-list fetching instead of hand-typed model IDsTwo API surfaces share the name and point in opposite directions: the product also serves an OpenAI-compatible endpoint on a paid plan billed in compute points, which is not BYOKSetup
Jan DesktopActive; pushed 2026-09-18, latest release v0.8.4 on 2026-07-23. The older org path redirects hereOpenAI-compatible or Anthropic-compatible, selected per provider. The base URL must include the version path your server expects, and a key is required even for unauthenticated local servers. Freely configurablePeople who start local and offline with a built-in inference engine but want the same app to reach a paid cloud endpointCustom providers are not capability-detected — the app cannot infer whether a model supports tools, vision or audio, so those must be switched on per model or they silently do nothing
Msty StudioActive commercial, closed source with no public repository; the vendor changelog shows v2.9.6 on 2026-07-24OpenAI-compatible for custom providers — base URL plus key — and that path is not plan-gated. Azure and Bedrock provider types are behind the paid tierA polished closed-source desktop workspace for someone who will never run DockerNo public commit history, so maintenance rests entirely on the vendor changelog; built-in tool presets are provider-specific and a custom provider does not inherit them
AnythingLLMActive; MIT, pushed 2026-09-17. Ships both a desktop app and a self-hosted serverOpenAI-compatible chat completions through a generic provider taking base URL, key, model name, context window and max tokens. No plan gate when self-hostedDocument retrieval on your own machine or server, with per-workspace model selectionChat, embedding and transcription are configured independently, so a chat endpoint gives you no embeddings and a working retrieval install needs a second provider. The docs also flag the generic provider as developer-focusedvs Open WebUI
Open WebUIActive; pushed 2026-09-18. Non-standard licence — BSD-3 plus a branding clause covering deployments above fifty end users in a rolling thirty-day periodOpenAI chat completions for both plain models and agent backends: enter a URL and key under admin connections. A model-list endpoint is recommended but optional; without one, list model IDs in the allowlist field. Freely configurableA self-hosted, multi-user chat server placed in front of an endpoint, and the standard place to plug in an agent backendTool calling is only as good as the upstream's schema fidelity; the docs single out a compatibility layer where required fields are omitted and tool calls fail silentlySetup
LibreChatActive; MIT, pushed 2026-09-18OpenAI-compatible by default; an anthropic provider value on a custom endpoint routes through the native Messages client instead. Config-file only, with the base URL as the API root. Freely configurableSelf-hosted multi-user deployments where each endpoint needs its own key policy, model allowlist and cost accountingAdding a provider means editing YAML and restarting, not clicking a settings pane; per-endpoint token pricing is metadata you type yourself, so the costs it displays are only as accurate as what you enteredvs Open WebUI
LobeHubActive and renamed: the old lobe-chat repo path now redirects, pushed 2026-09-18. Repositioned from a chat framework to an agent operator. Community licence with commercial conditionsA custom base URL is documented for self-hosted use, and the provider SDK options expose OpenAI and Anthropic types. Whether the hosted cloud gates custom base URLs behind a paid plan is not stated in the docsA self-hosted chat and agent workspace with a plugin and MCP marketplace, for a team running its own instanceThe rename is live but the ecosystem is not: third-party guides and older environment-variable walkthroughs still use the former name, and the setup steps changed with the new versionSetup
ChatWiseActive commercial, closed source with no public repository; documentation and pricing pages both live 2026-09-18OpenAI-compatible or Anthropic-compatible per custom provider, with models fetched from a model-list endpoint or added by hand. A one-time Pro licence exists; whether custom providers work on the free tier is not stated by either pageSomeone who wants a fast native desktop client, pays once rather than subscribing, and brings their own keyManually added models carry no auto-detected capabilities — you declare context length, vision, audio and reasoning yourself, and a wrong flag becomes a silently broken feature. The free tier is licensed for personal, non-commercial use
TypingMindActive commercial; sold as one-time licence plans, with the team product billed separatelyOpenAI-compatible chat completions, but the field wants the FULL path — the official example ends in the chat-completions route. Not tier-gated in the published plans tableA polished BYOK chat front-end you buy once, then feed with your own tokensAn endpoint published as a base URL needs the suffix appended by hand. Whether the browser app calls your endpoint directly, making CORS headers your problem, or proxies it, is not documented anywhere we could find — unverified
Copilot for ObsidianActive; release 4.0.9 on 2026-09-16, AGPL-3.0. Documentation moved to a new domain and the old paths redirectOpenAI-compatible. Add a custom provider with a base URL and model ID, plus a key when the endpoint requires one. The docs state this does not require a self-host licence; the paid tiers are a separate managed pathChatting with and searching an Obsidian vault on your own key, with no subscription to the plugin's hosted serviceIf the connection test passes but chat still fails, you must enable the provider's CORS option — and that kills streaming, so responses appear after completion instead of token by token
NextChatActive but slowing and commercialising: last commit 2026-08-11, last tagged release 2025-07-29. The repo now leads with a paid hosted service while self-hosting remains the documented deployment pathOpenAI-compatible: one base-URL variable rewrites the OpenAI route, and other vendors have their own variables. Self-hosted only, no plan gateA one-click self-hosted chat UI in front of an endpoint, where a model-name variable controls exactly which names your users seeYour endpoint's model IDs do not appear until you list them in that variable — setting the base URL alone leaves users looking at the default menu
ChatGPTBoxActive; ownership transferred to a project org with the old path redirecting, release v2.7.1 on 2026-09-06. A transfer, not a product renameOpenAI-compatible in custom-model mode, which accepts a custom API address and key. Freely configurableAn in-page browser assistant — selection actions, summaries, a search-results sidebar — pointed at your own endpointThe headline free modes drive a logged-in web session rather than your key; BYOK applies only once you deliberately switch to custom-model mode

Workflow builders

Flowise is in the archived section, not here.

ClientLifecycleProtocol / BYOK boundaryBest forKey limitKunavo page
DifyActive and fast-moving: last commit 2026-09-18, release 1.17.1 on 2026-09-10. Modified Apache 2.0OpenAI-compatible, declared per model type through a first-party compatibility plugin — a separate plugin instance for LLM, embedding, rerank, speech-to-text and text-to-speech. No plan gate when self-hostedTeams assembling retrieval pipelines and agent workflows visually, with one key sitting behind many model slotsFor non-LLM types the plugin appends the API version itself, so a base URL that already ends in a version path produces a duplicated path. The licence also forbids running it as a multi-tenant service without a commercial licence
n8nActive; last commit 2026-09-18. Fair-code under the Sustainable Use License, with enterprise-licensed files marked in the treeOpenAI-compatible. The credential exposes a base-URL field described as overriding the default API base, verified directly in the credential source rather than only in docs. Chat completions by default with an opt-in responses toggle. No plan gate on self-hostedSelf-hosted automation where an LLM step sits inside a larger workflow and one base-URL change moves every AI node at onceThe credential test issues a model-list request against your base URL, so an endpoint that does not serve one will fail to save. On the hosted cloud the same node can run on the vendor's own credits instead of your credential — confirm which is selected
AutoGPT PlatformThe repository is active (pushed 2026-09-18), but AutoGPT Classic — the 2023 autonomous agent most search traffic means — is explicitly unmaintained, with the official docs stating dependencies will not be updated and issues will not be fixedOpenAI-compatible chat completions, and the two halves of the product differ. Surface-gated: the AutoPilot chat agent takes CHAT_BASE_URL on a self-hosted install, and the guide lists a managed OpenAI-compatible API among the shapes that work. The block-layer provider helper is the opposite: a closed provider enumeration whose OpenAI and Anthropic clients are constructed with no base URL, its only user-settable host being an Ollama host checked against a trusted-hostname allowlistA block-based visual builder with a marketplace, where the chat agent beside it can run on your own endpointThe two paths read different environment variables, so configuring one does not configure the other, and the guide states the hosted agpt.co deployment ignores these variables entirely — this is a self-hosting route. The chat transport also refuses to fall back to an ambient OpenAI key, so CHAT_API_KEY must be set explicitly

Always-on personal agents

ClientLifecycleProtocol / BYOK boundaryBest forKey limitKunavo page
OpenClawActive; pushed 2026-09-18. Renamed twice — Clawdbot, then Moltbot, then OpenClaw — and both old repository paths still resolve hereA per-provider api field selects openai-completions, anthropic-messages or openai-responses, alongside baseUrl, apiKey and a models array in JSON. Freely configurableThe default general-purpose personal agent when you want the largest plugin ecosystem and community coverageNo catalogue discovery: each model must be listed by id, and contextWindow, maxTokens and the per-token cost fields are optional with defaults applied when omitted. Leave the costs out and its spend reporting is estimating; fill them in and it reflects what you typed rather than what was billedPricing, alternatives
Hermes AgentActive; MIT, pushed 2026-09-18, release tag v2026.9.14OpenAI-compatible by default; a transport field on the custom provider switches it to Anthropic Messages. Set interactively or in a YAML config. No plan, subscription or account gateA persistent personal CLI agent with memory in a local database, reachable from several chat platforms through one endpointThe default assumption is OpenAI-shaped chat completions, so an Anthropic-only endpoint needs that separate transport field — and the failure looks like a broken endpoint rather than a wrong wire formatPricing, vs OpenClaw
nanobotActive; MIT, pushed 2026-09-18, published by HKUDS. A different, also-active project holds the same name elsewhere — check the org before following a linkOpenAI-compatible for custom and arbitrarily named providers; an Anthropic-shaped endpoint must instead override the base on the built-in anthropic provider. The docs say to include the version path. Freely configurableA self-hosted personal agent that runs as web UI, terminal or chat app, and re-exposes an OpenAI-compatible API of its ownArbitrarily named custom providers are OpenAI-shaped only and do not use the Anthropic request format; native backends reject the proxy field outrightvs OpenClaw
ZeroClawActive; Apache-2.0, pushed 2026-09-18A wire_api field selects chat completions or OpenAI Responses per provider, with Anthropic-shaped routes in a separate provider slot. The uri field is required on the custom slot and also overrides any built-in family. Every field is settable by environment variable. Freely configurableA security-first Rust runtime small enough for cheap hardware, with supervised autonomy and OS-level sandboxingThe wire changes behaviour, not just transport: OpenAI-compatible and Responses wires cannot carry Anthropic refusal metadata, so automatic fallback works only through the Anthropic slot, and prompt caching across a chat-completions route needs a non-default flagvs OpenClaw
NanoClawActive; MIT, pushed 2026-09-17Anthropic-shaped and account-gated on the default path: the default runtime is the Claude Agent SDK, so out of the box it expects a Claude subscription or an Anthropic key. Any Anthropic-compatible endpoint works through a base-URL and token pair; OpenAI-compatible access is indirect, by delegating through a skillA container-isolated alternative to OpenClaw for people already living in Claude Code, wired into several messaging platformsAn OpenAI-only endpoint has to be reached through a delegation skill. The project also ships no configuration files by design, so BYOK settings live in an env file and per-group CLI commandsvs OpenClaw
PicoClawActive; MIT, pushed 2026-09-17, published by Sipeed. Written in Go from scratch, explicitly not a forkNaming trap: the anthropic provider value speaks OpenAI-compatible chat completions, while anthropic-messages speaks the native Messages API. An api_base field overrides the endpoint and custom headers can override authorization. Freely configurableThe smallest footprint here — one Go binary with agent, gateway and TUI modes, aimed at always-on and embedded deploymentsAn endpoint serving only the Messages route returns 404 under the anthropic value. Bedrock and the Azure identity path are not in the default binary and need a rebuild with build tags
IronClawActive; Apache-2.0, pushed 2026-09-13, published under the nearai orgA generic openai-compatible chat-completions adapter where the base URL is mandatory, plus native Anthropic, Gemini, Bedrock and others that each accept a base-URL override. An environment-variable fallback covers containers and one-off runs. Freely configurableA privacy- and security-oriented agent OS with an encrypted local secret store, sandboxed tools and progressive tool disclosureThe generic adapter has no default host, so the base URL has to be supplied — every documented example sets it explicitly, and none of them is a hosted third-party endpoint. Which layer a missing base URL fails at is not stated in the docs
Agent ZeroActive; pushed 2026-09-18, created 2024-06-10 — the oldest project in this group. Ownership moved from a personal account to the agent0ai org, and the old path redirectsOpenAI-compatible chat completions through a generic provider with a per-model API URL field, and the key entered separately. UI-only: the installation guide documents no config-file or environment-variable equivalent. No plan gateA hackable, prompt-driven agent framework run in Docker with a web UI, closer to a framework you shape than a finished assistantChat, utility and embedding models are configured independently, so an endpoint serving chat but not embeddings forces a split setup; the docs warn that very small utility models fail at memory tasks outrightvs OpenClaw
OpenManusActive but visibly slower: pushed 2026-08-22 with the newest commits dated 2026-08-16. Stale-link trap — the original repo path does NOT redirect and now resolves to a separate, unrelated repositoryOpenAI-compatible chat completions, confirmed in source rather than only in docs. A config.toml block with base_url, api_key and model; an api_type field switches to Azure or Bedrock clients. Freely configurableAn open reimplementation of a general-agent loop for research and browser automation, and the most mechanical configuration in this groupThere are two independent LLM blocks, one for the main model and one for vision, each needing its own base URL and key. The example config also still pins a 2025 model id that will fail on most current endpoints
SillyTavernActive; AGPL-3.0, pushed 2026-09-14OpenAI-compatible chat completions via a custom completion source. The docs say not to add the chat-completions suffix, and to try adding the version path if the connection fails. Freely configurableLong-form roleplay and character chat with heavy prompt control — a genuinely different buyer from the coding cohort, with different context and token patternsThe prompt post-processing mode matters more than the endpoint: the "no tools" variants remove tool calls from the prompt, and tool calling is not supported under them — with no errorBest API, setup
Msty GoActive, renamed from Msty Claw on 2026-08-04. Closed source; the pricing page lists it on a $0 beta plan with team tiers marked plannedUnknown. Settings documents a type, display name, base URL, key and model-list behaviour, but the docs never enumerate the type options, so the wire format a custom provider produces is not publishedA bounded desktop task runner with explicit folders, isolated execution and reviewable workClosed source, free beta and an undocumented provider type list: you cannot confirm from documentation that an arbitrary OpenAI-compatible endpoint will work. This one needs an install to prove
Page AssistActive; MIT, pushed 2026-09-13OpenAI-compatible. Settings offers an OpenAI-compatible tab where a Custom option takes the API URL and key. Freely configurableA browser-sidebar chat that can read the page you are on, for people who will never open a terminalA browser-extension chat UI rather than an autonomous agent — no coding or tool-running loop — and its centre of gravity is still local models, so cloud paths get comparatively little testing

Clients with no documented third-party endpoint

These three are live enough to appear in search results but none of them documents pointing the client at an arbitrary base URL. Keep three different facts apart here, because they are routinely collapsed into one: whether you can supply your own vendor key, whether you can supply your own endpoint, and whether nobody has established it either way. Kiro CLI and Devon take keys and document no base-URL field; Smart Chat is plan-gated and its arbitrary-endpoint support is simply unconfirmed, which is not the same as refused. Only the endpoint column makes a client reachable from Kunavo.

ClientCategoryLifecycleWhat is actually availableWhere that leaves you
Kiro CLITerminalActive, renamed from Amazon Q Developer CLI (available 2025-11-17, auto-updated 2025-11-24, old entry points still work). Separately, Amazon Q Developer IDE plugins and paid subscriptions reach end of support on 2027-04-30, with new signups blocked from 2026-05-15None documented. Models are supplied through subscription tiers and delivered over Bedrock; the model documentation contains no custom provider, key or base-URL option. BYOK exists only as open feature requestsNo third-party endpoint is possible today. Do not conflate it with Kiro Crew, a separate open-source orchestration product built on top of the CLI
DevonTerminalNot formally archived but effectively abandoned: the newest default-branch commit is dated 2024-07-29 and the last repository push of any kind is 2025-05-26Keys yes, endpoint no. The README documents per-vendor key variables and a local Ollama path, and contains no base-URL or api-base override anywhereHistorical reference only. Its directory value is disambiguation: Devon (open source, dormant) is not Devin, a different commercial product that dominates the same search results
Smart Chat (Smart Connections)Obsidian pluginActive but split into separate products: the free core is positioned as semantic search with no key required, while chat with API models is a separate extension. Last commit 2026-09-16Plan-gated, and an arbitrary endpoint is not confirmed. The documented workflow requires Smart Chat Pro plus a model from a fixed set of named adapters; the only custom base URL documented is for one specific self-hosted appTreat its arbitrary-endpoint support as unknown rather than absent — nothing in the current documentation settles it. The older Smart Connections setup pages are explicitly deprecated and should not be reused

Retired, archived and superseded

These ten are in the directory so that a search landing on the name reaches the status rather than an install command. None of them is a current recommendation.

ClientStatusWhat it is nowWhere to go instead
ContinueMaintenance ceased; the repository is read-only after a final 2.0.0 release of the VS Code extension, CLI and JetBrains plugin. The company's own site states it was acquired by Cursor. Last default-branch commit 2026-07-21A frozen coding agent — VS Code extension, CLI and JetBrains plugin — that can still be repointed at a third-party endpoint now that the bundled authentication has been pulled outExisting installs only, not a starting point. Mechanical warning for anyone re-checking: the repo is not flagged archived and its push date still moves daily, so an archive-flag check reports it as live. Existing setup page
VoidArchived 2026-06-02; read-only and not accepting contributions. The README opens by declaring it deprecatedAn archived VS Code fork the README itself recommends mainly as a reference for forking VS CodeMigrate. The README points to a community forks repository; Zed and Theia are the maintained editors in this directory
PearAIEditor repository has not shipped since 2025-05-20; the newest activity anywhere in the org is 2026-06-19. The homepage is live and still sells a router subscriptionA Continue-lineage editor whose BYOK instructions were last edited in late November 2024 and still present 2024-era models as the current line-upDo not present it as a working BYOK target. Nobody can currently confirm the custom-endpoint flow against a current build — verify against an installed copy first, and do not infer the product is dead from the editor repo alone
WitsyTransferred to a corporate owner and dormant: relocated on 2026-04-08, last release 2026-03-04, newest commit 2026-04-09. The product domain now redirects to the repositoryA BYOK desktop assistant and MCP client whose documentation is accurate but unmaintainedNot a live recommendation. Choose a maintained desktop client from the table above
FlowiseArchived 2026-08-13, along with its docs and embed repositories. Issues and pull requests are locked and the maintainers state published packages will be marked deprecatedAn Apache-2.0 codebase the maintainers tell users to fork. Whether the hosted cloud still operates is not stated either way, and the marketing site carries no archive noticeMigration or exit step only. Dify and n8n are the maintained workflow builders in this directory
SWE-agentMaintenance-only and superseded. The repository is not archived (last push 2026-09-14) but both the README and the docs state development has movedStill usable for reproducing published benchmark runs from a single fully documented YAML configUpstream recommends mini-SWE-agent for new work; it is in the terminal table above
PlandexDormant, and its domain no longer resolves. Last push 2025-10-03; on 2026-09-18 neither the site nor the hosted docs resolved, confirmed through two independent public resolversA self-hosted planning agent whose website, hosted documentation and cloud are all unreachable. Custom providers required self-hosting even when the site was up — the cloud BYOK tier could only use built-in providersTreat as unmaintained until upstream says otherwise
Mentat (archived CLI)Archived, last push 2025-01-07. The repository was deliberately renamed to an archive path and its README opens with an archived-project noticeA dead command-line tool. The name was reassigned — the archive README says Mentat now refers to a different product, a hosted code-review bot, whose current operating status could not be verified from this environmentNothing to migrate to within the project. Choose any maintained terminal agent above
OpenCode (archived Go CLI)Archived, last push 2025-09-18. The README leads with a notice that the project has continued under the name CrushThe original Go and TUI OpenCode, kept for provenance onlyCrush, in the terminal table above. Do not confuse this with the OpenCode people use today, which is a separate TypeScript project — Kunavo's existing OpenCode pages describe that one, not this archived repository
iFlow CLIShut down. The repository notice states it would shut down on April 17, 2026; that date has passed and the notice is still at the top of the READMEA retired OpenAI-compatible terminal agent whose configuration documentation is still reachable — which is exactly the trapMigration only. Pick a maintained OpenAI-compatible terminal agent from the table above

Kunavo verification status

Kunavo has not run a compatibility test against any client in this directory. That is the honest state of things, and it is worth stating plainly rather than burying, because the distinction changes what you should do next.

StatusWhat it meansWhat it does not mean
Setup guide publishedKunavo wrote configuration steps for this client, based on the client's own documentationIt does not mean a request was sent, a tool call was measured, or that the client is certified, verified or officially supported
Not testedThe protocol and endpoint details in the row come from the vendor's documentation, README or repository source on the stated check dateIt does not mean the client fails — only that nobody here has run it

Clients in this directory with a published Kunavo setup guide: Aider, Continue, Zed, Cherry Studio, Chatbox, Open WebUI, SillyTavern and LobeHub, whose guide is filed under the product's former name. Every other row in this directory is untested, and so are the specific features inside the eight above.

A practical consequence: treat your first task on any new client as the verification step. Send one bounded request, confirm the response streams, confirm a tool call returns, and check the recorded charge before moving scheduled or paid work onto it.

What running your own key costs

Once a client is pointed at your own endpoint, the bill is per token rather than per seat. At Kunavo's live catalog rates, Claude Sonnet 5 lists $2.00 per million input tokens and $10.00 per million output tokens; Claude Haiku 4.5 lists $0.40 and $2.00.

A hypothetical agent session using 400,000 uncached input tokens and 30,000 output tokens has a catalog estimate of $1.10 on Claude Sonnet 5 and $0.22 on Claude Haiku 4.5. That is token arithmetic on assumed volumes, not a measured task cost and not a ceiling on a bill. It excludes cache charges, external tools and any retries the agent makes; an agent that retries a failed tool call pays for every attempt.

The cheapest listed rate and the lowest cost to finish a task are different claims, and this directory does not promise either. A smaller model at a lower rate can need more attempts and more review; compare candidates on a rate card, then measure the same real task on two of them. Kunavo's minimum is a $10 prepaid top-up with no subscription — see billing details for how a catalog estimate relates to the final charge, and pricing for the current catalog.

Related reading: OpenAI-compatible API covers the endpoint shape most of these clients expect, Anthropic base URL covers the Messages-protocol clients, and quickstart gets a first key working. Create a Kunavo account when you are ready to test one of these clients against a real endpoint.

FAQ

Which AI agent clients can use a custom API endpoint?

Most open-source terminal agents, most self-hosted chat front-ends and most always-on personal agents document a base-URL field with no plan or account requirement. The exceptions fall into four groups: clients where the endpoint field exists only on some surfaces (Factory Droid on CLI and desktop, Qoder in the IDE but not the CLI, OpenHands on a local backend but not its cloud backend, the AutoGPT Platform chat agent when self-hosted but not on its hosted cloud), clients where an arbitrary base URL is behind a paid or early-access tier (Amp custom endpoint URLs, Warp for organizations above ten employees, Smart Chat Pro), clients that speak only one vendor protocol (Gemini CLI takes a base URL but still sends native Gemini requests), and clients with no endpoint field at all (Kiro CLI, Devon).

Does a documented custom endpoint mean every feature will work?

No. A base-URL field only establishes where requests go. Tool calling, prompt caching, fill-in-the-middle autocomplete, embeddings, vision and streaming are separate capabilities that can each fail while chat succeeds. Twinny sends autocomplete to the legacy completions route rather than chat completions, AnythingLLM configures embeddings as a separate provider, SillyTavern strips tool calls under some prompt post-processing modes, and several clients require you to type each model's context window and token prices by hand. Test the specific features you need before moving real work.

Has Kunavo tested these agent clients?

No. Kunavo has not run a compatibility test against any client in this directory. Where a Kunavo setup guide exists, it means configuration steps were written from that client's own documentation, not that a request was measured end to end. Every protocol and endpoint statement here is transcribed from the vendor's documentation, README or repository source on the stated check date. Treat the first task you run on any new client as your own verification step.

Which of these projects should I not start with?

Continue is read-only after a final 2.0.0 release and its company says it was acquired by Cursor. Void was archived on 2026-06-02 and Flowise on 2026-08-13. iFlow CLI published its own shutdown date of April 17, 2026. Mentat and the Go OpenCode CLI are archived, and SWE-agent is maintenance-only with upstream recommending mini-SWE-agent instead. Plandex has had no repository activity since 2025-10-03 and its domain no longer resolves. Devon has no default-branch commit since 2024-07-29, and PearAI's bring-your-own-key instructions were last edited in November 2024. These belong in a directory for migration and disambiguation, not as a starting point.

Is the cheapest listed model price the cheapest way to finish a task?

Not necessarily. A listed per-token rate and the total cost of completing a piece of work are different measurements. A smaller model at a lower rate can need more attempts, longer context or more human review, and an agent that retries a failed tool call pays for every attempt. Compare a rate card to pick candidates, then measure the same real task on two models before deciding. Kunavo publishes per-token catalog rates and starts at a $10 prepaid top-up, with no subscription.

Every client name in the tables above links to the project's own documentation page, README or repository file that the row was written from; where a row also rests on a second page — a CLI's separate docs, a vendor's authentication page — that page is linked inline in the cell making the claim. Those facts were gathered on September 17, 2026. The September 18, 2026 pass re-checked lifecycle through the GitHub REST API — archive flags, push dates, commit dates and old-path redirects — for every archived and no-endpoint row and for most active ones, and re-read the linked documentation for a subset of the protocol and bring-your-own-key cells rather than for every row. Where a project's marketing site and its repository disagreed, the repository and the maintainers' own statements were used and the disagreement is noted in the row. Star counts, push dates and plan structures are point-in-time and will drift — every lifecycle cell is written so the same check can be re-run. Kunavo token rates are read from the live catalog; cost examples are illustrative token arithmetic.