{"_id":"@canary-builds/dsh-connect","_rev":"4-b23ab33065fe60886ac45f2399505d39","name":"@canary-builds/dsh-connect","dist-tags":{"latest":"0.4.0"},"versions":{"0.3.1":{"name":"@canary-builds/dsh-connect","version":"0.3.1","keywords":["dsh-plugin","deepseek-harness","codex","connector"],"author":{"name":"Canary Builds"},"license":"MIT","_id":"@canary-builds/dsh-connect@0.3.1","maintainers":[{"name":"mareekkk","email":"mark@canarybuilds.com"}],"homepage":"https://github.com/Canary-Builds/dhs-connect#readme","bugs":{"url":"https://github.com/Canary-Builds/dhs-connect/issues"},"bin":{"dsh-connect-login":"src/login.js","dsh-connect-doctor":"src/doctor.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"7e1ceb189db7446d2d48f37b9c350eeca7d28a56","tarball":"https://registry.npmjs.org/@canary-builds/dsh-connect/-/dsh-connect-0.3.1.tgz","fileCount":16,"integrity":"sha512-RVRzPshRPlF21d2IjCIlDWOYrHCDD7SkAmUL4I7cBSA9qSDKxM3HMM86YkxtB3woaFLC+q3b+key5qfro7r20A==","signatures":[{"sig":"MEUCIAKDd1uOuKXWuHKN4BO6PK5OZGQgZPyU/ltRVMsjj0aWAiEA1p/IgA/0oFX5Kz9OlJsl3folJElkTK0zCMGGt0ti6sg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58349},"main":"src/index.js","type":"module","_from":"file:/tmp/canary-builds-dsh-connect-0.3.1.tgz","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.js","./client":"./lib/client.js","./package.json":"./package.json"},"scripts":{"test":"node --test test/*.test.js","build":"node scripts/build.mjs","doctor":"node src/doctor.js","prepack":"node scripts/build.mjs","pretest":"node scripts/build.mjs","test:live":"node scripts/live-check.mjs","test:package":"node scripts/check-package.mjs"},"_npmUser":{"name":"mareekkk","email":"mark@canarybuilds.com"},"_resolved":"/tmp/canary-builds-dsh-connect-0.3.1.tgz","_integrity":"sha512-RVRzPshRPlF21d2IjCIlDWOYrHCDD7SkAmUL4I7cBSA9qSDKxM3HMM86YkxtB3woaFLC+q3b+key5qfro7r20A==","repository":{"url":"git+https://github.com/Canary-Builds/dhs-connect.git","type":"git"},"_npmVersion":"10.9.4","description":"Connect DeepSeek Harness to ChatGPT models through the Codex app-server","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-connect_0.3.1_1788654880026_0.08628244196726076","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@canary-builds/dsh-connect","version":"0.3.2","keywords":["dsh-plugin","deepseek-harness","codex","connector"],"author":{"name":"Canary Builds"},"license":"MIT","_id":"@canary-builds/dsh-connect@0.3.2","maintainers":[{"name":"mareekkk","email":"mark@canarybuilds.com"}],"homepage":"https://github.com/Canary-Builds/dhs-connect#readme","bugs":{"url":"https://github.com/Canary-Builds/dhs-connect/issues"},"bin":{"dsh-connect-login":"src/login.js","dsh-connect-doctor":"src/doctor.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"bfc711d47449f1116943afe2952e5e76633d43d7","tarball":"https://registry.npmjs.org/@canary-builds/dsh-connect/-/dsh-connect-0.3.2.tgz","fileCount":16,"integrity":"sha512-/thBA38IGLW4zVrxDGToHSdI/VsyZaRn/ZuhePMD33rc5mVVtpMeyLV8uWmWvq7hKBnxJcF1d63opt7uFrDM6A==","signatures":[{"sig":"MEYCIQCESlpQvh4UvZTu0PQo+UwuR8tu2lgCtpQ6pXfR0e3nFQIhAO7D1dO+eZExeIF08ej6xY2n/mHaU5m3RO0gqvqQ8oeR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@canary-builds%2fdsh-connect@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":58542},"main":"src/index.js","type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.js","./client":"./lib/client.js","./package.json":"./package.json"},"gitHead":"58be53eaaa017141f8799fb8065d7ebae92789e3","scripts":{"test":"node --test test/*.test.js","build":"node scripts/build.mjs","doctor":"node src/doctor.js","prepack":"node scripts/build.mjs","pretest":"node scripts/build.mjs","test:live":"node scripts/live-check.mjs","test:package":"node scripts/check-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6eaa9ce2-0345-4c35-ba57-8dd52d2097b9"}},"repository":{"url":"git+https://github.com/Canary-Builds/dhs-connect.git","type":"git"},"_npmVersion":"11.19.1","description":"Connect DeepSeek Harness to ChatGPT models through the Codex app-server","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-connect_0.3.2_1788655557082_0.7073485283191914","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@canary-builds/dsh-connect","version":"0.3.3","keywords":["dsh-plugin","deepseek-harness","codex","connector"],"author":{"name":"Canary Builds"},"license":"MIT","_id":"@canary-builds/dsh-connect@0.3.3","maintainers":[{"name":"mareekkk","email":"mark@canarybuilds.com"}],"homepage":"https://github.com/Canary-Builds/dhs-connect#readme","bugs":{"url":"https://github.com/Canary-Builds/dhs-connect/issues"},"bin":{"dsh-connect-login":"src/login.js","dsh-connect-doctor":"src/doctor.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"c27ce254ca2e46166a7a2de0fc58cd3106613768","tarball":"https://registry.npmjs.org/@canary-builds/dsh-connect/-/dsh-connect-0.3.3.tgz","fileCount":16,"integrity":"sha512-SAi2m5GWS8WWKKc2KV3MJa2Lrap1vAujERmg3WqhbTjs69dC1JhTA7Ir9ZZfJ/XQTBGja/UtIopNu9cF+fU+vA==","signatures":[{"sig":"MEUCIQCpcgm9h3Azk1Tkm0n1SZ8XIboQ414wG7o93fY8TvnWrAIgVAC79QtA30WWHxuAAEMhbrPbuz5Bl0Rh6EisJQb1e38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@canary-builds%2fdsh-connect@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60080},"main":"src/index.js","type":"module","engines":{"node":">=22.19.0"},"exports":{".":"./src/index.js","./client":"./lib/client.js","./package.json":"./package.json"},"gitHead":"a86635202207517f953fde9d87e707ea6356c0ec","scripts":{"test":"node --test test/*.test.js","build":"node scripts/build.mjs","doctor":"node src/doctor.js","prepack":"node scripts/build.mjs","pretest":"node scripts/build.mjs","test:live":"node scripts/live-check.mjs","test:package":"node scripts/check-package.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6eaa9ce2-0345-4c35-ba57-8dd52d2097b9"}},"repository":{"url":"git+https://github.com/Canary-Builds/dhs-connect.git","type":"git"},"_npmVersion":"11.19.1","description":"Connect DeepSeek Harness to ChatGPT models through the Codex app-server","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dsh-connect_0.3.3_1788656962679_0.2844600076574615","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@canary-builds/dsh-connect@0.4.0","bin":{"dsh-connect-login":"src/login.js","dsh-connect-doctor":"src/doctor.js","dsh-connect-grok-login":"src/grok-login.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"bugs":{"url":"https://github.com/Canary-Builds/dhs-connect/issues"},"dist":{"shasum":"320ce2d8a6f15edbfd807537ccd2c3249b310785","tarball":"https://registry.npmjs.org/@canary-builds/dsh-connect/-/dsh-connect-0.4.0.tgz","fileCount":22,"integrity":"sha512-B3/BggJoDEZAHuu4QWIjt14HJMDO1WnqyqsqyigD1RNRJIeb8lY+jQ1ZtSlZSjqDKBSYuJt+T/p+RziwbfZnmQ==","signatures":[{"sig":"MEUCIQC3XpMaja1HYOLhxMyMf+islZ754/d7QePQy1xBeYS7vQIgcXjk7rRCNl3cu6zq5ptpxd3xV1GLdv8mWzu1VDKHnho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDMnNcymVZBa7mpuIiRAaYV0Bq5hz+jC/VKhQWycaLuagIgKx1O5SiQL5jzyMNDPL5bpD+xZnaOGz9UVOrPjiubhBc="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@canary-builds%2fdsh-connect@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":101148},"main":"src/index.js","name":"@canary-builds/dsh-connect","type":"module","author":{"name":"Canary Builds"},"engines":{"node":">=22.19.0"},"exports":{".":"./src/index.js","./client":"./lib/client.js","./package.json":"./package.json"},"gitHead":"30a9f83fd5a9498771c0c1a240d330d8ce76fb26","license":"MIT","scripts":{"test":"node --test test/*.test.js","build":"node scripts/build.mjs","doctor":"node src/doctor.js","prepack":"node scripts/build.mjs","pretest":"node scripts/build.mjs","test:live":"node scripts/live-check.mjs","test:package":"node scripts/check-package.mjs"},"version":"0.4.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6eaa9ce2-0345-4c35-ba57-8dd52d2097b9"}},"homepage":"https://github.com/Canary-Builds/dhs-connect#readme","keywords":["dsh-plugin","deepseek-harness","codex","grok","xai","connector"],"repository":{"url":"git+https://github.com/Canary-Builds/dhs-connect.git","type":"git"},"_npmVersion":"11.20.0","description":"Connect DeepSeek Harness to ChatGPT or Grok with OAuth sign-in","directories":{},"maintainers":[{"name":"mareekkk","email":"mark@canarybuilds.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-connect_0.4.0_1790360316390_0.8556130735954981"}}},"time":{"created":"2026-09-06T00:34:39.905Z","modified":"2026-09-25T18:18:36.816Z","0.3.1":"2026-09-06T00:34:40.208Z","0.3.2":"2026-09-06T00:45:57.297Z","0.3.3":"2026-09-06T01:09:22.818Z","0.4.0":"2026-09-25T18:18:36.475Z"},"bugs":{"url":"https://github.com/Canary-Builds/dhs-connect/issues"},"author":{"name":"Canary Builds"},"license":"MIT","homepage":"https://github.com/Canary-Builds/dhs-connect#readme","keywords":["dsh-plugin","deepseek-harness","codex","grok","xai","connector"],"repository":{"url":"git+https://github.com/Canary-Builds/dhs-connect.git","type":"git"},"description":"Connect DeepSeek Harness to ChatGPT or Grok with OAuth sign-in","maintainers":[{"name":"mareekkk","email":"mark@canarybuilds.com"}],"readme":"# DSH Connect\n\n![DSH Connect — Connect DeepSeek Harness to ChatGPT models using OAuth sign-in](https://raw.githubusercontent.com/Canary-Builds/dhs-connect/main/assets/dsh-connect-cover.png)\n\nConnect DeepSeek Harness to ChatGPT or Grok using OAuth sign-in. ChatGPT goes through the official Codex app-server, without an OpenAI API key. Grok goes through the official Grok CLI, without an xAI API key. Connect either account, or both.\n\nDSH Connect is a community Cordis plugin with model-provider adapters and a web Settings panel. The ChatGPT provider ID is `openai-codex`. The Grok provider ID is `xai-grok`. Neither provider is tied to one model.\n\n## Install\n\nDSH does not discover plugins by scanning `node_modules`. Running `npm install @canary-builds/dsh-connect` in your home directory downloads files into `~/node_modules` and then does nothing: DSH never looks there. A package is loaded only when both of these are true:\n\n1. It is installed inside the profile workspace, `~/.dsh/profiles/<name>` (for the browser UI, `~/.dsh/profiles/web`).\n2. Its package name is listed in that profile's `package.json` under `dsh.profile.bundles`.\n\nA dependency that is installed but missing from `bundles` stays invisible. DSH does not scan `dependencies` and turn them into plugins.\n\nInstall with the profile command. It runs the package manager inside the profile and appends this package to `bundles`:\n\n```sh\ndsh plugin --profile web add @canary-builds/dsh-connect\n```\n\nUse `--profile headless` for the CLI profile. To pin this release after it is published, use `@canary-builds/dsh-connect@0.4.0`. No npm account or plugin build step is required to install the public package.\n\nIf `dsh plugin` is unavailable, do both steps yourself. Do not remove the bundles already in the file (`@deepseek-ai/dsh-base`, `@deepseek-ai/dsh-web-app`, and any others):\n\n```sh\ncd ~/.dsh/profiles/web\nnpm install @canary-builds/dsh-connect\n```\n\n```json\n\"dsh\": { \"profile\": { \"bundles\": [\"@deepseek-ai/dsh-base\", \"@deepseek-ai/dsh-web-app\", \"@canary-builds/dsh-connect\"] } }\n```\n\nRestart the process that serves that profile, then refresh the browser. For a user service that is `systemctl --user restart dsh-web`. Open **Settings → DSH Connect**, sign in, and pick a model from the normal model picker. Install only the profiles you use. A pnpm workspace-root profile may require its existing `ignoreWorkspaceRootCheck` setting or the package-manager workspace-root option.\n\n[DSH Mobile UI](https://github.com/Canary-Builds/dsh-mobile-ui) is a separate package. Install it the same way (`dsh plugin --profile web add @canary-builds/dsh-mobile-ui`). It is not a dependency of DSH Connect.\n\nA prebuilt tarball and `SHA256SUMS` are in the [v0.4.0 GitHub release](https://github.com/Canary-Builds/dhs-connect/releases/tag/v0.4.0).\n\n### ChatGPT and Grok CLIs\n\nThis package does not download a model CLI. Each provider needs its own official executable on the `PATH` of the user that runs DSH. Installing one does not install the other.\n\n| Provider | Binary | Required when |\n| --- | --- | --- |\n| ChatGPT | `codex` (official Codex CLI, for example `npm install -g @openai/codex`) | You want ChatGPT. Without it, **Sign in with ChatGPT** fails immediately and the browser popup closes. `dsh-connect-doctor` reports `Codex executable not found`. |\n| Grok | `grok` (official Grok CLI) | You want Grok. Grok does not require Codex to be installed. |\n\nInstall the CLI as the same user that runs DSH, then restart DSH. A root-only install does nothing if that user's service cannot execute the binary. Check with `dsh-connect-doctor` from the profile (`~/.dsh/profiles/web/node_modules/.bin/dsh-connect-doctor`). A missing Codex binary is not a failed plugin install: Grok can still sign in.\n\n### Browser on another computer\n\nChatGPT sends the OAuth callback to `127.0.0.1:1455` on the computer running the browser. Forwarding only the web UI does not complete sign-in. Keep both forwards open until ChatGPT login finishes. `3080` is the usual DSH web port; change it if your server listens elsewhere. `1455` is fixed.\n\n```sh\nssh -N -o ExitOnForwardFailure=yes -L 3080:127.0.0.1:3080 -L 1455:127.0.0.1:1455 user@harness-host\n```\n\nGrok device login does not use port 1455. Use the code in Settings, or run `dsh-connect-grok-login` on the server. The bundled `dsh-connect-login` command also supports Codex's `--device-auth` option when your account allows it.\n\nRemove the earlier `dsh-plugin-codex-astra` or `dsh-openai-oauth` adapter from a profile before installing this one: both claim the same `openai-codex` provider route. Keep your existing Codex sign-in directory to preserve authentication.\n\n## Screenshots\n\nSelect a screenshot to view it at full size.\n\n<table>\n  <tr>\n    <td align=\"center\" valign=\"top\"><a href=\"https://raw.githubusercontent.com/Canary-Builds/dhs-connect/main/assets/screenshots/settings-desktop.png\"><img src=\"https://raw.githubusercontent.com/Canary-Builds/dhs-connect/main/assets/screenshots/settings-desktop.png\" width=\"480\" alt=\"Desktop connection settings and model catalog\"></a><br>Desktop connection settings and model catalog</td>\n    <td align=\"center\" valign=\"top\"><a href=\"https://raw.githubusercontent.com/Canary-Builds/dhs-connect/main/assets/screenshots/settings-mobile.png\"><img src=\"https://raw.githubusercontent.com/Canary-Builds/dhs-connect/main/assets/screenshots/settings-mobile.png\" width=\"280\" alt=\"Connection settings on a narrow screen\"></a><br>Connection settings on a narrow screen</td>\n  </tr>\n</table>\n\nThe narrow-screen example also uses [DSH Mobile UI](https://github.com/Canary-Builds/dsh-mobile-ui). Models shown depend on your account and plugin version.\n\n## Features\n\n- Account model discovery merged with a curated fallback; unlisted model IDs can still be requested.\n- One catalog shared by Settings and the model picker, with refresh and connection diagnostics.\n- Text streaming, reasoning summaries, Harness dynamic tool calls and token accounting.\n- Request cancellation, RPC timeouts, process recovery and separate auxiliary calls.\n- Conversation reconstruction after restart, compaction or changed tool definitions.\n- No runtime npm dependencies or automatic binary downloads.\n\nHarness owns tool execution and permissions. The connector disables native Codex tools. Grok is not given shell or filesystem access; a Grok tool request is returned to Harness instead. The connector does not silently substitute a different model.\n\n## Configuration\n\nBy default DSH Connect finds `codex` on `PATH`, and uses `~/.deepseek-harness/codex` as its sign-in directory. Set `DSH_CODEX_HOME` to an existing Codex home if you want to reuse that login.\n\nEnvironment variables:\n\n| Variable | Purpose |\n| --- | --- |\n| `DSH_CODEX_BIN` | Absolute path to the official Codex executable; overrides discovery. |\n| `DSH_CODEX_HOME` | Codex sign-in and configuration directory. |\n| `DSH_GROK_BIN` | Absolute path to the official Grok executable; overrides discovery. |\n| `DSH_GROK_HOME` | Grok sign-in directory. Defaults to `~/.grok`. |\n| `DSH_CONNECT_CONFIG` | Override the configuration-file path. |\n| `DSH_CONNECT_NO_PROXY` | Optional domains to append to the child `NO_PROXY`. |\n\nAlternatively, create `$DSH_HOME/connect.json` (default `~/.dsh/connect.json`):\n\n```json\n{\n  \"codexBin\": \"/absolute/path/to/codex\",\n  \"codexHome\": \"/absolute/path/to/codex-home\",\n  \"grokBin\": \"/absolute/path/to/grok\",\n  \"grokHome\": \"/absolute/path/to/grok-home\"\n}\n```\n\nThe optional `noProxy` field contains a comma-separated domain list. Proxy routing is inherited unchanged unless explicitly configured. Do not put credentials in this file. The official Codex executable manages ChatGPT authentication, and the official Grok executable manages Grok authentication. Remote ChatGPT sign-in needs the tunnel in [Browser on another computer](#browser-on-another-computer).\n\nTested with DSH 0.1.1-rc.2 and Codex 0.153.4 on Linux. Grok uses `grok agent stdio` from the current Grok CLI. Both upstream interfaces are evolving; other versions and operating systems need validation. Requires Node.js 22.19+.\n\n## Development\n\n```sh\ngit clone https://github.com/Canary-Builds/dhs-connect.git\ncd dhs-connect\n```\n\n\n```sh\nnpm test\nnpm run test:package\nnpm run doctor\nnpm run test:live\n```\n\nNo dependency installation is required for unit tests. `npm test` rebuilds the client and exercises transport failures, cancellation, model fallback, tool bridging, history recovery, Settings registration and request-origin checks. The build derives the client module ID from `package.json`; edit `src/client.js`, not `lib/client.js`.\n\n`test:live` uses your configured ChatGPT login and sends a few short requests. Set `DSH_CONNECT_TEST_MODEL` to choose the test model. `scripts/verify-web.mjs` checks a running DSH server's served module using its actual module loader and a React render check; it uses `DSH_WEB_URL` and optionally `DSH_RUNTIME_PACKAGE` for the host location.\n\n## Limits and security\n\nThis version supports text and text tool results. Image attachments and per-turn temperature, stop sequences or output-token caps are not supported. A model's presence in the catalog does not guarantee account access.\n\nMatching continuations reuse an ephemeral Codex thread. When that state no longer matches the supplied DSH history, the connector rebuilds from a role-labeled JSON transcript. This adds prompt tokens and does not restore hidden reasoning or replay completed tool execution.\n\nSettings controls require loopback transport and same-origin requests and reject cross-site requests. Remote access requires a trusted deployment proxy; the plugin does not create public endpoints or add authentication to a proxy. Native stderr is not forwarded to Harness logs because it can include request data. Diagnostics filter common credential patterns.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for changes, [RELEASING.md](RELEASING.md) for versioned releases and npm publishing, and [DIRECTORY.md](DIRECTORY.md) for a ready-to-copy directory submission.\n\n## Upstream references\n\n- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)\n- [Codex app-server protocol](https://learn.chatgpt.com/docs/app-server)\n- [Grok CLI](https://x.ai/cli)\n- [DSH contribution guidance](https://github.com/deepseek-ai/deepseek-harness/blob/master/CONTRIBUTING.md)\n\nThe development history began with the community [dsh-openai-oauth](https://github.com/DGPisces/dsh-openai-oauth) integration. The connector implementation in this repository was subsequently rewritten. DSH Connect is independently maintained by Canary Builds and is not an official DeepSeek or OpenAI product.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","readmeFilename":"README.md"}