{"id":49445414,"url":"https://github.com/zowe/zowex","last_synced_at":"2026-04-29T22:05:49.596Z","repository":{"id":272314075,"uuid":"916170009","full_name":"zowe/zowex","owner":"zowe","description":"Open-source, native code for z/OS mainframe operations usable via source, DLLs, native CLI (zowex), or callable over SSH via JSON-RPC.","archived":false,"fork":false,"pushed_at":"2026-04-28T13:16:06.000Z","size":4771,"stargazers_count":12,"open_issues_count":167,"forks_count":4,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-28T14:31:38.787Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zowe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-13T15:33:29.000Z","updated_at":"2026-04-28T02:00:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"d914cebc-18cc-44f8-a51a-d155658246bf","html_url":"https://github.com/zowe/zowex","commit_stats":null,"previous_names":["zowe/zowe-native-proto","zowe/zowex"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/zowe/zowex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowe%2Fzowex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowe%2Fzowex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowe%2Fzowex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowe%2Fzowex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zowe","download_url":"https://codeload.github.com/zowe/zowex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zowe%2Fzowex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32445618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-29T22:05:47.540Z","updated_at":"2026-04-29T22:05:49.580Z","avatar_url":"https://github.com/zowe.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Zowe Remote SSH\n\nAn open-source, native protocol for z/OS mainframe operations via SSH with minimal server-side configuration.\n\n## Prerequisites\n\n### Local\n\n- Node.js \u0026 npm - required to build client packages\n- VS Code extensions - recommended ones are listed in [extensions.json](./.vscode/extensions.json)\n\n### z/OS\n\n- [IBM Open XL C/C++ for z/OS](https://www.ibm.com/docs/en/open-xl-c-cpp-zos/latest) - `ibm-clang++` (C++ compilation)\n- [IBM C/C++ for z/OS](https://www.ibm.com/products/xl-cpp-compiler-zos) - `xlc` (required for Metal C compilation)\n- [SWIG](https://github.com/t1m0thyj/swig-zos) (optional) - used to build experimental Python bindings\n\n## Setup\n\n1. Clone this repository and run `npm install` to install project dependencies.\n2. Create a config file by copying `config.example.yaml` to `config.yaml`. Update the properties in the file for your environment.\n3. For a quick start, run `npm run all` which performs the following tasks:\n   1. `z:upload` - Upload source files\u003cbr/\u003e\n   2. `z:build` - Build native binaries on z/OS\u003cbr/\u003e\n   3. `z:artifacts` - Download build artifacts\u003cbr/\u003e\n   4. `build` - Build client packages locally\n\n\u003e [!TIP]\n\u003e If you don't have a z/OS build environment, you can download prebuilt binaries with `npm run download` (this requires the GitHub CLI). Then skip to Step 3.4 and run `npm run build` to build client packages.\n\n## Usage\n\n### VS Code extension\n\nTo run the VS Code extension, open the repository in VS Code and launch the \"Run Extension\" debug task. Then you can use SSH profiles in Zowe Explorer.\n\nSee the [VSCE readme](./packages/vsce/README.md) for more details about using the VS Code extension.\n\n### Zowe CLI plug-in\n\nTo install the CLI plug-in from source, run `zowe plugins install ./packages/cli`. Then run `zowe zssh --help` to see available commands.\n\nSee the [CLI readme](./packages/cli/README.md) for more details about using the CLI plug-in.\n\n### Native binaries\n\nTo run the `zowex` CLI on z/OS, connect to USS shell (OMVS) and `cd` to `c/build-out` inside the deploy directory. Then run `zowex`, or `zoweax` for commands that require APF authorization.\n\nSee the [native readme](./native/README.md) for more details about building the native components.\n\n## Development\n\n### Quickstart\n\nRun `npm run z:rebuild` to rebuild server code after editing files in the `native` folder. See [Troubleshooting](./doc/troubleshooting.md) to debug common build issues.\n\nRun `npm run build` to rebuild client code after editing files in the `packages` folder.\n\nTo test server changes without having to download artifacts and re-deploy them each time, you can define `serverPath` property in your SSH profile in `zowe.config.json`. It should point to the `\u003cdeployDir\u003e/c/build-out` folder that contains the `zowex` binary (which includes the embedded server via `zowex server`). See example below.\n\n```json\n  \"profiles\": {\n    \"ssh_dev\": {\n      \"type\": \"ssh\",\n      \"properties\": {\n        ...\n        \"serverPath\": \"~/zowex/c/build-out\"\n      }\n    }\n  }\n```\n\nTo package client components with native binaries bundled, run `npm run z:artifacts \u0026\u0026 npm run package` which generates packages in the `dist` directory.\n\n### Rebuilding the SDK\n\nThe SDK package contains both TypeScript client code and the native z/OS server binary (`bin/server.pax.Z`). How to rebuild depends on what changed:\n\n- **TypeScript only**: `npm run build --workspace=packages/sdk`\n- **Native only**: Run `npm run z:rebuild` and set `serverPath` in your SSH profile to the remote `\u003cdeployDir\u003e/c/build-out` — no SDK repackage needed\n- **Full SDK package** (`.tgz` with bundled binaries): `npm run z:rebuild \u0026\u0026 npm run z:artifacts \u0026\u0026 npm run build --workspace=packages/sdk \u0026\u0026 mkdir -p dist \u0026\u0026 npm run package --workspace=packages/sdk`\n\n\u003e [!TIP]\n\u003e See the list below for more useful scripts like `watch` for incremental build.\n\n### NPM Scripts\n\nWe use a custom build tool for interacting with z/OS that defines the following NPM scripts:\n\n| Command       | Description                                                                 |\n| ------------- | --------------------------------------------------------------------------- |\n| `z:artifacts` | Download native binaries and package them with clients                      |\n| `z:build`     | Run `make` on z/OS to build native binaries                                 |\n| `z:clean`     | Run `make clean` on z/OS to clean build targets                             |\n| `z:delete`    | Delete all files from deploy directory                                      |\n| `z:make`      | Execute the specified Make targets on z/OS                                  |\n| `z:package`   | Create server PAX artifact in `dist` directory                              |\n| `z:rebuild`   | Upload and Build combined in one command                                    |\n| `z:test`      | Run automated tests for native components on z/OS                           |\n| `z:upload`    | Upload source files from `native` directory to z/OS \u003csup\u003e1\u003c/sup\u003e            |\n| `z:watch`     | Detect changes to files in `native` directory and upload/build \u003csup\u003e2\u003c/sup\u003e |\n\n1. To deploy a single file or directory: `npm run z:upload -- c/zowex.cpp`\n2. To watch server and client code at the same time: `npm run watch:all`\n\n\u003e [!TIP]\n\u003e To deploy and build on a different LPAR, you can define additional profiles in `config.yaml` and use them by changing the `activeProfile` property. For example:\n\u003e\n\u003e ```yaml\n\u003e activeProfile: another\n\u003e\n\u003e profiles:\n\u003e   default:\n\u003e     # Profile properties...\n\u003e\n\u003e   another:\n\u003e     sshProfile: ssh2\n\u003e     deployDir: /tmp/zowex\n\u003e ```\n\n## Architecture\n\nClick on a component in the diagram below to learn more about it:\n\n```mermaid\ngraph LR\n  subgraph Client\n  sdk[Node.js SDK Package]\n  cli[Zowe CLI Plug-in]--\u003esdk\n  vsce[VS Code Extension]--\u003esdk\n  other[\u0026lt;My Custom App\u0026gt;]--\u003esdk\n  end\n  subgraph z/OS Server\n  zowex[\"C++ CLI Binary\u003cbr\u003e(zowex)\"]--\u003ecpp\n  ioserver[\"C++ I/O Server\u003cbr\u003e(zowex server)\"]--\u003ecpp[\"C++ Libraries\u003cbr\u003e(Backend)\"]\n  python[\"Python REST API\u003cbr\u003e(experimental)\"]--\u003ecpp\n  sdk\u003c--\u003e|SSH|ioserver\n  subgraph Mainframe Resources\n  ds[Data Sets]\n  uss[USS Files]\n  jobs[Jobs]\n  end\n  cpp--\u003eds\n  cpp--\u003euss\n  cpp--\u003ejobs\n  end\n  click sdk \"https://github.com/zowe/zowex/blob/main/doc/client/architecture.md#sdk-package\"\n  click cli \"https://github.com/zowe/zowex/blob/main/doc/client/architecture.md#cli-plug-in\"\n  click vsce \"https://github.com/zowe/zowex/blob/main/doc/client/architecture.md#vs-code-extension\"\n  click ioserver \"https://github.com/zowe/zowex/blob/main/doc/backend/server_architecture.md\"\n  click zowex \"https://github.com/zowe/zowex/blob/main/doc/backend/zowex_architecture.md\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzowe%2Fzowex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzowe%2Fzowex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzowe%2Fzowex/lists"}