{"id":40467655,"url":"https://github.com/cap-js-community/mtx-tool","last_synced_at":"2026-02-17T15:03:14.989Z","repository":{"id":65552312,"uuid":"590077548","full_name":"cap-js-community/mtx-tool","owner":"cap-js-community","description":"Multitenancy and Extensibility Tool is a cli to reduce operational overhead for Cloud Foundry SaaS applications","archived":false,"fork":false,"pushed_at":"2026-01-19T08:00:33.000Z","size":4336,"stargazers_count":25,"open_issues_count":7,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-19T16:35:16.846Z","etag":null,"topics":["cli","cloud-foundry","devops","open-source","sap-btp","sap-cap"],"latest_commit_sha":null,"homepage":"https://cap-js-community.github.io/mtx-tool/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cap-js-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2023-01-17T15:58:10.000Z","updated_at":"2026-01-19T08:00:39.000Z","dependencies_parsed_at":"2023-12-21T12:42:46.642Z","dependency_job_id":"b2937fbc-e22d-4bf9-9d05-43bd658f802a","html_url":"https://github.com/cap-js-community/mtx-tool","commit_stats":{"total_commits":30,"total_committers":4,"mean_commits":7.5,"dds":0.1333333333333333,"last_synced_commit":"2b335052e15e185c58e406921fc3422234e81fd3"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":"cap-js-community/repository-template","purl":"pkg:github/cap-js-community/mtx-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-js-community%2Fmtx-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-js-community%2Fmtx-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-js-community%2Fmtx-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-js-community%2Fmtx-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cap-js-community","download_url":"https://codeload.github.com/cap-js-community/mtx-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cap-js-community%2Fmtx-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28608352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: 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":["cli","cloud-foundry","devops","open-source","sap-btp","sap-cap"],"created_at":"2026-01-20T18:13:20.952Z","updated_at":"2026-02-17T15:03:14.982Z","avatar_url":"https://github.com/cap-js-community.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MTX Tool\n\n[![npm version](https://img.shields.io/npm/v/@cap-js-community/mtx-tool)](https://www.npmjs.com/package/@cap-js-community/mtx-tool)\n[![monthly downloads](https://img.shields.io/npm/dm/@cap-js-community/mtx-tool)](https://www.npmjs.com/package/@cap-js-community/mtx-tool)\n[![REUSE status](https://api.reuse.software/badge/github.com/cap-js-community/mtx-tool)](https://api.reuse.software/info/github.com/cap-js-community/mtx-tool)\n[![Main CI](https://github.com/cap-js-community/mtx-tool/actions/workflows/main-ci.yml/badge.svg)](https://github.com/cap-js-community/mtx-tool/commits/main)\n\nMultitenancy and Extensibility Tool is a cli to reduce operational overhead for multitenant Cloud Foundry applications, particularly in the areas user authentication, tenant registration, CAP multitenancy, and HANA container management.\n\n## Getting Started\n\nPrerequisite is an installed [CF cli](https://github.com/cloudfoundry/cli) v8 or newer.\n\n**Prepare**\n\n```\nnpm install --global @cap-js-community/mtx-tool\nmtx --setup\n```\n\n**Use, for example**\n\n```\ncf target -o \u003cmy-org\u003e -s \u003cmy-space\u003e\nmtx regl\nmtx hdil\n```\n\n## Pipelines\n\nFor pipelines, we recommend committing the setup configuration to your project and running MTX Tool on the pipeline\nrunner in the corresponding directory through npx with a stable version:\n\n**In project**\n\n```\nmtx --setup-local\ngit add . \u0026\u0026 git commit -m \"mtx-tool config\"\n```\n\n**In pipeline, for example**\n\n```\nnpx @cap-js-community/mtx-tool@0.11.2 --svm-fresh-bindings all-services all-tenants\n...\nnpx @cap-js-community/mtx-tool@0.11.2 --svm-repair-bindings all-services\n...\nnpx @cap-js-community/mtx-tool@0.11.2 --cds-upgrade-all\n```\n\n## Features\n\nMTX Tool is organized into contextual sections, each with several commands.\n\n```\n   === user authentication (uaa) ===\n~  uaad   --uaa-decode TOKEN                                     decode JSON web token\n~  uaac   --uaa-client [TENANT]                                  obtain uaa token for generic client\n~  uaap   --uaa-passcode PASSCODE [TENANT]                       obtain uaa token for one-time passcode\n~  uaau   --uaa-user USERNAME PASSWORD [TENANT]                  obtain uaa token for username password\n~  uaasc  --uaa-service-client SERVICE [TENANT]                  obtain service token for generic client\n~  uaasp  --uaa-service-passcode SERVICE PASSCODE [TENANT]       obtain service token for one-time passcode\n~  uaasu  --uaa-service-user SERVICE USERNAME PASSWORD [TENANT]  obtain service token for username password\n          ...    [TENANT]                                        obtain token for tenant, fallback to paas tenant\n          ...    --json                                          output in json\n          ...    --decode                                        decode result token\n          ...    --userinfo                                      add detailed user info for passcode or username\n\n   === tenant registry (reg) ===\n~  regl   --registry-list [TENANT]                      list all subscribed subaccount names\n~  regll  --registry-long-list [TENANT]                 long list all subscribed subaccounts\n~  regs   --registry-service-config                     show registry service config\n          --registry-update TENANT_ID                   update tenant dependencies\n          --registry-update-all                         update dependencies for all subscribed tenants\n          --registry-update-url [TENANT_ID]             update all subscribed application URL\n*         --registry-migrate TENANT_ID                  migrate tenant to subscription manager\n*         --registry-offboard TENANT_ID                 offboard tenant subscription\n*         --registry-offboard-skip TENANT_ID SKIP_APPS  offboard tenant subscription skipping apps\n          ...    [TENANT]                               filter list for tenant id or subdomain\n          ...    --json                                 list in json\n          ...    --time                                 list includes timestamps\n          ...    --skip-unchanged                       skip update for unchanged dependencies\n          ...    --only-stale                           only update subscriptions that have not changed today\n          ...    --only-failed                          only update subscriptions with UPDATE_FAILED state\n\n   === cap multitenancy (cds) ===\n~  cdsl   --cds-list [TENANT]                        list all cds-mtx tenant names\n~  cdsll  --cds-long-list [TENANT]                   long list all cds-mtx tenants\n   cdsot  --cds-onboard-tenant TENANT_ID [METADATA]  onboard specific tenant\n   cdsut  --cds-upgrade-tenant TENANT_ID             upgrade specific tenant\n   cdsua  --cds-upgrade-all                          upgrade all tenants\n*         --cds-offboard-tenant TENANT_ID            offboard specific tenant\n*         --cds-offboard-all                         offboard all tenants\n          ...    [METADATA]                          onboard subscription metadata\n          ...    [TENANT]                            filter list for tenant id or subdomain\n          ...    --json                              list in json\n          ...    --time                              list includes timestamps\n          ...    --auto-undeploy                     upgrade with auto undeploy\n          ...    --first-instance                    upgrade only through first app instance\n\n   === hana management (hdi) ===\n~  hdil   --hdi-list [TENANT_ID]         list all hdi container instances\n~  hdill  --hdi-long-list [TENANT_ID]    long list all hdi container instances and bindings\n~  hditt  --hdi-tunnel-tenant TENANT_ID  open ssh tunnel to tenant db\n          ...    [TENANT_ID]             filter for tenant id\n          ...    --json                  list in json\n          ...    --time                  list includes timestamps\n          ...    --reveal                show sensitive information\n\n   === service manager (svm) ===\n~  svml   --svm-list [TENANT_ID]                                  list all managed service instances and binding\n~  svmll  --svm-long-list [TENANT_ID]                             long list all managed service instances and bindings\n          --svm-repair-bindings SERVICE_PLAN [PARAMS]             repair missing and ambivalent service bindings\n          --svm-fresh-bindings SERVICE_PLAN TENANT_ID [PARAMS]    create new service bindings\n          --svm-refresh-bindings SERVICE_PLAN TENANT_ID [PARAMS]  delete and recreate service bindings\n*         --svm-delete-bindings SERVICE_PLAN TENANT_ID            delete service bindings\n*         --svm-delete SERVICE_PLAN TENANT_ID                     delete service instances and bindings\n          ...    SERVICE_PLAN                                     filter for service plan with \"offering:plan\"\n                                                                    or \"all-services\" for all\n          ...    TENANT_ID                                        filter for tenant id or \"all-tenants\" for all\n          ...    [PARAMS]                                         create binding with custom parameters\n          ...    --json                                           list in json\n          ...    --time                                           list includes timestamps\n          ...    --reveal                                         show sensitive information\n\n   === server diagnostic (srv) ===\n~  srvenv  --server-env [APP_NAME]                            dump system environment\n~  srvcrt  --server-certificates [APP_NAME] [APP_INSTANCE]    dump instance certificates\n   srvd    --server-debug [APP_NAME] [APP_INSTANCE]           open ssh tunnel to debug port\n           ...    [APP_NAME]                                  run server commands for a specific app\n           ...    [APP_INSTANCE]                              tunnel to specific app instance, fallback to 0\n\n~  are read-only commands\n*  are potentially _dangerous_ commands\n```\n\nAdding `--force` to any _dangerous_ command will override the safeguard, use at your own risk.\n\n## Peers\n\n- [SAP BTP Command Line Interface](https://help.sap.com/docs/btp/btp-cli-command-reference/btp-cli-command-reference), [download](https://tools.hana.ondemand.com/#cloud-btpcli)\n- [Service Manager Control command line tool](https://github.com/Peripli/service-manager-cli), will be archived Aug 2025\n\n## Documentation\n\nHead over to our [Documentation](https://cap-js-community.github.io/mtx-tool/) to learn more.\n\n## Support, Feedback, Contributing\n\nThis project is open to feature requests/suggestions, bug reports etc. via [GitHub issues](https://github.com/cap-js-community/mtx-tool/issues). Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our [Contribution Guidelines](CONTRIBUTING.md).\n\n## Code of Conduct\n\nWe as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its [Code of Conduct](CODE_OF_CONDUCT.md) at all times.\n\n## Licensing\n\nCopyright 2023 SAP SE or an SAP affiliate company and mtx-tool contributors. Please see our [LICENSE](LICENSE) for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available [via the REUSE tool](https://api.reuse.software/info/github.com/cap-js-community/mtx-tool).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-js-community%2Fmtx-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcap-js-community%2Fmtx-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcap-js-community%2Fmtx-tool/lists"}