Dev Tools
Curated AI coding CLIs, IDEs, extensions and utilities — all work with 3306.AI's OpenAI-compatible API.
CLI Tools
· 6Claude Code
3306.AI ReadyAnthropic's official terminal coding agent with subagents, hooks and MCP.
npm install -g @anthropic-ai/claude-codehttps://3306.ai/anthropicNot connecting? Work through these
- 404 right after saving the configUse https://3306.ai/anthropic as the base URL; the client appends /v1/messages itself. Only the Messages API is implemented — Anthropic's legacy /v1/complete text-completion endpoint is not offered.
- Intermittent 5xx: plain chat works, long context or feature flags failThe anthropic-version and anthropic-beta headers your client sends are forwarded upstream verbatim. If you run your own proxy in between, let both through — dropping anthropic-beta makes the upstream reject requests that carry feature flags.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Codex CLI
3306.AI ReadyOpenAI's official open-source terminal coding agent with local sandboxed exec.
npm install -g @openai/codexhttps://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Gemini CLI
3306.AI ReadyGoogle's official Gemini terminal agent with a generous free tier.
npm install -g @google/gemini-cliopencode
3306.AI ReadyOpen-source terminal AI coding agent, fully provider-agnostic.
curl -fsSL https://opencode.ai/install | bashhttps://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Aider
3306.AI ReadyBattle-tested terminal AI pair programmer, Git-aware, OpenAI-compatible.
python -m pip install -U aider-chathttps://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Crush
3306.AI ReadyCharm's glamorous terminal AI coding assistant with LSP and MCP support.
npm install -g @charmland/crushhttps://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Utilities
· 2CC Switch
3306.AI ReadyOne-click switching between multiple Claude Code provider configs.
brew install cc-switchhttps://3306.ai/anthropicNot connecting? Work through these
- 404 right after saving the configUse https://3306.ai/anthropic as the base URL; the client appends /v1/messages itself. Only the Messages API is implemented — Anthropic's legacy /v1/complete text-completion endpoint is not offered.
- Intermittent 5xx: plain chat works, long context or feature flags failThe anthropic-version and anthropic-beta headers your client sends are forwarded upstream verbatim. If you run your own proxy in between, let both through — dropping anthropic-beta makes the upstream reject requests that carry feature flags.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Claude Code Router
3306.AI ReadyLocal router that proxies Claude Code to any OpenAI-compatible model.
npm install -g @musistudio/claude-code-routerhttps://3306.ai/anthropicNot connecting? Work through these
- 404 right after saving the configUse https://3306.ai/anthropic as the base URL; the client appends /v1/messages itself. Only the Messages API is implemented — Anthropic's legacy /v1/complete text-completion endpoint is not offered.
- Intermittent 5xx: plain chat works, long context or feature flags failThe anthropic-version and anthropic-beta headers your client sends are forwarded upstream verbatim. If you run your own proxy in between, let both through — dropping anthropic-beta makes the upstream reject requests that carry feature flags.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
AI IDEs
· 4Cursor
3306.AI ReadyAI-native IDE built on VS Code, with Tab, Agent and Composer.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Windsurf
3306.AI ReadyCodeium's agentic AI editor with Cascade multi-step flows.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Zed
3306.AI ReadyBlazing-fast collaborative editor in Rust, with built-in AI and ACP.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Trae
ByteDance's AI IDE with Chinese-friendly UX and bundled models.
Editor Extensions
· 4Cline
3306.AI ReadyThe most popular AI coding extension for VS Code, with Plan/Act modes.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Roo Code
3306.AI ReadyCline fork with custom modes and multi-agent orchestration.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Continue
3306.AI ReadyOpen-source VS Code / JetBrains extension, self-host friendly.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.
Kilo Code
3306.AI ReadyCline / Roo Code merge, with a built-in MCP marketplace.
https://3306.ai/v1Not connecting? Work through these
- 404 right after saving the configThe base URL must be exactly https://3306.ai/v1 — the client appends /chat/completions itself. Dropping /v1, or pasting the full endpoint path as the base URL, both give a 404.
- A hand-written SSE parser blows up mid-streamThe stream carries keep-alive comment lines starting with a colon (such as : ping). Skip those instead of parsing them as data frames. Official SDKs already handle this for you.
- Sending an image returns 400The target model cannot read images. Image requests pass a gate before reaching the upstream: we would rather fail loudly than drop the image and let a text-only model invent an answer. Pick a model with a tick in the vision column of the capability matrix.
- 401 invalid_api_keyOnly Authorization: Bearer sk_live_… and x-api-key: sk_live_… are accepted. When pasting, make sure no quotes or stray whitespace end up in the config file.
- 403 insufficient_scopeThe response names the missing permission, e.g. This API key does not have permission for chat. This key was created without chat access — mint a new key with the chat scope in the console.
- 404 model_not_foundThe client's built-in default model name (gpt-4o, claude-3-5-sonnet and friends) is not in our catalogue. Fetch GET /v1/models and set the client's model name to a string from that list, verbatim.
- 429 rate limitedThe response carries Retry-After in seconds. Wait it out before retrying instead of hammering the endpoint. Open a ticket if you need sustained higher throughput.
- 402 insufficient balance or not entitledThe public API is for paying accounts: you need an active subscription, or a balance funded by a top-up. Sign-up bonus Stars still work inside the app but do not grant API access.