{"id":357081,"date":"2026-09-18T06:07:18","date_gmt":"2026-09-18T06:07:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/opencode-connector\/"},"modified":"2026-09-18T06:06:54","modified_gmt":"2026-09-18T06:06:54","slug":"duoport-connect-for-opencode","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/duoport-connect-for-opencode\/","author":23191642,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.3","stable_tag":"0.1.3","tested":"7.1.1","requires":"7.0","requires_php":"8.2","requires_plugins":null,"header_name":"DuoPort Connector for OpenCode","header_author":"Nilesh Kanzariya","header_description":"Connect OpenCode Go and Zen (including free models) to WordPress 7.0 AI.","assets_banners_color":"4d6aeb","last_updated":"2026-09-18 06:06:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":57,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.3":{"tag":"0.1.3","author":"nilesh912","date":"2026-09-18 06:06:54","revision":3701367}},"upgrade_notice":{"0.1.2":"<p>Go and Zen now use separate API key fields. After updating, re-enter your opencode.ai key in both fields on Settings \u2192 Connectors.<\/p>","0.1.1":"<p>Renamed to DuoPort Connector for OpenCode. Go and Zen now share one API key field; connecting the providers now requires a one-click approval consent in the Connectors screen.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon.svg":{"filename":"icon.svg","revision":3701367,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3701367,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2353,25308,26603,261513,4037],"plugin_category":[],"plugin_contributors":[238689],"plugin_business_model":[],"class_list":["post-357081","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-connector","plugin_tags-go","plugin_tags-opencode","plugin_tags-zen","plugin_contributors-nilesh912","plugin_committers-nilesh912"],"banners":{"banner":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/banner-772x250.png?rev=3701367","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/icon.svg?rev=3701367","icon":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/icon.svg?rev=3701367","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Registers two AI providers \u2014 <strong>OpenCode Go<\/strong> (subscription catalog) and <strong>OpenCode Zen<\/strong> (pay-as-you-go catalog including free models) \u2014 with the WordPress 7.0 AI Client. Enter your API key in both the Go and Zen fields on Settings \u2192 Connectors; the same opencode.ai key works for both catalogs.<\/p>\n\n<p>This plugin is not affiliated with or endorsed by OpenCode (Anomaly Innovations, Inc.).<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Two providers (<code>opencode-go<\/code> \/ <code>opencode-zen<\/code>) auto-discovered by the Connectors screen.<\/li>\n<li>Allowlisted chat\/completions models per catalog \u2014 verified against the OpenCode <code>\/models<\/code> API.<\/li>\n<li>Free models labeled <code>(Free)<\/code> in the model picker (Zen catalog).<\/li>\n<li>Availability probe with transient caching \u2014 validates key without calling <code>\/models<\/code>.<\/li>\n<li><strong>Show all models<\/strong> toggle on Settings \u2192 DuoPort Connector (off by default).<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the OpenCode API (https:\/\/opencode.ai) to list models, check availability, and generate text.<\/p>\n\n<ul>\n<li>Your API key is sent with every request.<\/li>\n<li>Prompts and messages you submit for generation are sent to OpenCode's servers.<\/li>\n<li>Model list is fetched from <code>https:\/\/opencode.ai\/zen\/go\/v1\/models<\/code> and <code>https:\/\/opencode.ai\/zen\/v1\/models<\/code>.<\/li>\n<li>Availability is validated by a <code>chat\/completions<\/code> probe (<code>max_tokens: 1<\/code>).<\/li>\n<li>See https:\/\/opencode.ai\/legal\/terms-of-service for terms and https:\/\/opencode.ai\/legal\/privacy-policy for privacy policy.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload to <code>\/wp-content\/plugins\/duoport-connect-for-opencode<\/code><\/li>\n<li>Activate through the Plugins menu<\/li>\n<li>Go to Settings \u2192 Connectors and enter your opencode.ai key in both the Go and Zen fields (the same key works for both catalogs)<\/li>\n<li>(Optional) Go to Settings \u2192 DuoPort Connector to enable <strong>Show all models<\/strong> or check connection status<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Visit https:\/\/opencode.ai\/auth and sign up for Go or Zen. The same key works for both catalogs.<\/p><\/dd>\n<dt id=\"do%20go%20and%20zen%20use%20the%20same%20api%20key%3F\"><h3>Do Go and Zen use the same API key?<\/h3><\/dt>\n<dd><p>Yes. OpenCode uses a unified auth domain, so paste the same opencode.ai key into both the Go and Zen fields on Settings \u2192 Connectors. Each catalog keeps its own key field so WordPress can validate them independently. You can also set <code>OPENCODE_GO_API_KEY<\/code> \/ <code>OPENCODE_ZEN_API_KEY<\/code> constants or env vars.<\/p><\/dd>\n<dt id=\"which%20models%20are%20available%3F\"><h3>Which models are available?<\/h3><\/dt>\n<dd><p>By default only allowlisted chat\/completions models are shown (Go: 16, Zen: 17 including free models). Enable <strong>Show all models<\/strong> on Settings \u2192 DuoPort Connector to expose every model from the API (including non-chat models that may fail).<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20wordpress%207.0%3F\"><h3>Does it work without WordPress 7.0?<\/h3><\/dt>\n<dd><p>No. Requires WordPress 7.0+ and PHP 8.2+. On older installs an admin notice is shown and registration is skipped.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Updated Zen model catalog: removed <code>hy3-free<\/code> and <code>laguna-s-2.1-free<\/code>, which OpenCode retired from the API.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Fixed: Go and Zen now use separate API key fields on the Connectors screen. The previous shared-key setup made WordPress reject valid keys on save (\"It was not possible to connect to the provider using this key\"). If you connected 0.1.1, please re-enter your key in both fields after updating.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Renamed plugin to DuoPort Connector for OpenCode; Go and Zen now share a single API key field on the Connectors screen; connecting the providers now requires a one-click approval consent in the Connectors screen.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: Go and Zen providers, allowlisted models with free labels, probe availability, shared-key sync, and Show all models toggle.<\/li>\n<\/ul>","raw_excerpt":"Connect OpenCode Go and Zen catalogs (including free models) to WordPress 7.0 AI.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=357081"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nilesh912"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357081"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357081"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357081"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357081"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357081"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}