{"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-25T07:02:05","modified_gmt":"2026-09-25T07:02:05","slug":"duoport-connect-for-opencode","status":"publish","type":"plugin","link":"https:\/\/sw.wordpress.org\/plugins\/duoport-connect-for-opencode\/","author":23191642,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.6","stable_tag":"0.1.6","tested":"7.1.2","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":"292f3a","last_updated":"2026-09-25 07:02:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":155,"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},"0.1.4":{"tag":"0.1.4","author":"nilesh912","date":"2026-09-21 04:24:06","revision":3704820},"0.1.5":{"tag":"0.1.5","author":"nilesh912","date":"2026-09-25 05:47:01","revision":3712434},"0.1.6":{"tag":"0.1.6","author":"nilesh912","date":"2026-09-25 07:02:05","revision":3712542}},"upgrade_notice":{"0.1.6":"<p>No configuration migration is required. Existing Go and Zen connector keys remain separate and unchanged; this release publishes the verified listing screenshots and documentation improvements.<\/p>","0.1.5":"<p>No configuration migration is required. Existing Go and Zen connector keys remain separate and unchanged.<\/p>","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-128x128.png":{"filename":"icon-128x128.png","revision":3704867,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3704867,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3704867,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3704867,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3704867,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.3","0.1.4","0.1.5","0.1.6"],"block_files":[],"assets_screenshots":{"screenshot-2.png":{"filename":"screenshot-2.png","revision":3712542,"resolution":"2","location":"plugin","width":1440,"height":868},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3712542,"resolution":"1","location":"plugin","width":1440,"height":868}},"screenshots":{"1":"The WordPress Connectors screen lists the real OpenCode Go and Zen provider setup entries.","2":"DuoPort's native Settings page shows connection state, the optional model-view toggle, and the small settings surface."}},"plugin_section":[],"plugin_tags":[2353,5739,25308,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-artificial-intelligence","plugin_tags-connector","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=3704867","banner_2x":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/banner-1544x500.png?rev=3704867","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/icon.svg?rev=3704867","icon":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/assets\/icon.svg?rev=3704867","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/trunk\/screenshot-1.png?rev=3712542","caption":"The WordPress Connectors screen lists the real OpenCode Go and Zen provider setup entries."},{"src":"https:\/\/ps.w.org\/duoport-connect-for-opencode\/trunk\/screenshot-2.png?rev=3712542","caption":"DuoPort's native Settings page shows connection state, the optional model-view toggle, and the small settings surface."}],"raw_content":"<!--section=description-->\n<p>DuoPort Connector for OpenCode registers two WordPress AI Client providers:<\/p>\n\n<ul>\n<li><strong>OpenCode Go<\/strong> for the subscription catalog.<\/li>\n<li><strong>OpenCode Zen<\/strong> for the pay-as-you-go catalog, including reviewed free-model records.<\/li>\n<\/ul>\n\n<p>Enter your opencode.ai key in the Go and Zen fields on <strong>Settings \u2192 Connectors<\/strong>. The same key works for both catalogs, while each field remains independently testable. DuoPort keeps credentials in WordPress and keeps model policy in a reviewed registry.<\/p>\n\n<p>This plugin is not affiliated with or endorsed by OpenCode (Anomaly Innovations, Inc.).<\/p>\n\n<h3>Why DuoPort?<\/h3>\n\n<p>DuoPort gives WordPress teams a small, auditable OpenCode bridge instead of another opaque AI dashboard. It works with the native WordPress AI Client, keeps Go and Zen catalog identities separate, and exposes only model routes whose endpoint and capability contracts have been reviewed. The optional Model Radar tracks public catalog changes and queues new or free-model candidates for verification; it never auto-promotes a model.<\/p>\n\n<h3>OpenCode Go and Zen<\/h3>\n\n<h4>OpenCode Go<\/h4>\n\n<p>Use the Go subscription catalog for its reviewed text-generation models. Go availability is checked with a bounded probe and transient cache, so the plugin can report configured or unavailable states without repeatedly calling the catalog API.<\/p>\n\n<h4>OpenCode Zen<\/h4>\n\n<p>Use the Zen pay-as-you-go catalog for reviewed text-generation models, including records explicitly identified as free. Free availability is supplied by OpenCode and can change; a free-looking model name is only a verification candidate, not a promise of free access.<\/p>\n\n<h3>Current OpenCode models<\/h3>\n\n<p>Model lists change over time. By default, DuoPort presents the reviewed chat\/completions records for each catalog and labels Zen free records. The credential-free Model Radar compares current public Go and Zen <code>\/models<\/code> evidence with that registry and reports new, retired, unsupported, and verification-required changes in one aggregate issue.<\/p>\n\n<p>Enable <strong>Show all models<\/strong> only when you want to inspect the complete live catalog. Unknown models, unknown endpoint families, unsupported capabilities, and unverified free-name candidates remain default-deny; discovering a model is not the same as making it routable.<\/p>\n\n<h3>Free OpenCode models<\/h3>\n\n<p>Zen records with explicit free evidence are marked <code>(Free)<\/code> in the model picker when they are part of the reviewed registry. Free models still require an API key and may have limits, availability changes, or catalog retirement. DuoPort does not promise that every free-looking ID is free or supported.<\/p>\n\n<h3>WordPress AI Client integration<\/h3>\n\n<p>DuoPort uses the native WordPress AI Client provider registry. It does not create a separate site-wide model router, duplicate WordPress credentials, or read connector secrets for diagnostics. Model selection, metadata, and request transport remain inside the plugin's reviewed boundaries.<\/p>\n\n<h3>Verified model support<\/h3>\n\n<p>Only reviewed chat\/completions records are advertised by default. The current adapter does not claim Responses, Messages, image, tool, or web-search support unless the corresponding contract is explicitly present in the registry. Unknown or unresolved routes fail clearly instead of silently falling back.<\/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>Explicitly reviewed free models labeled <code>(Free)<\/code> in the model picker (Zen catalog).<\/li>\n<li>Credential-free Model Radar and catalog watch for fast-follow verification work.<\/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<li>Use the WordPress AI Client's normal provider\/model selection flow<\/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 reviewed chat\/completions models are shown. Zen may include explicitly reviewed free-model records. Enable <strong>Show all models<\/strong> on Settings \u2192 DuoPort Connector to inspect every live API model, including non-chat models that may fail. The toggle is for inspection, not a guarantee of support.<\/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<dt id=\"is%20duoport%20affiliated%20with%20opencode%3F\"><h3>Is DuoPort affiliated with OpenCode?<\/h3><\/dt>\n<dd><p>No. DuoPort is an independent WordPress integration and is not endorsed by OpenCode or Anomaly Innovations, Inc.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Added two real WordPress.org screenshots for the Connectors and DuoPort Settings screens.<\/li>\n<li>Expanded the listing with factual Go + Zen, free-model, verified-support, and WordPress AI Client sections.<\/li>\n<li>No model registry, transport, capability, or credential behavior changed.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Centralized Go session and client User-Agent headers across text and image requests.<\/li>\n<li>Added an authoritative architecture baseline, class inventory, dependency graph, boundaries, scope, improvement rules, and single-item improvement queue.<\/li>\n<li>Hardened release documentation so post-0.1.4 additions carry accurate @since metadata.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Added <code>deepseek-v4.1-flash<\/code> to the Go catalog.<\/li>\n<li>Fixed: the key validation probe now sends the required <code>x-opencode-session<\/code> header and probes an authentication-discriminating model, so valid Go\/Zen keys are accepted instead of rejected.<\/li>\n<li>Added image-generation model path: image-capable models advertise the <code>imageGeneration<\/code> capability through new Go\/Zen image models behind a per-catalog allowlist. Ships with no image IDs allowlisted yet, so the path stays inert and text generation is unaffected. Also added a Media Library saver with MIME, size, and capability guards.<\/li>\n<\/ul>\n\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 to the WordPress AI Client with a conservative, WordPress-native integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=357081"}],"author":[{"embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nilesh912"}],"wp:attachment":[{"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357081"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357081"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357081"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357081"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357081"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}