{"ref":"artifact:saptools-cf-debugger","page":"/artifacts/saptools-cf-debugger","json":"/artifacts/saptools-cf-debugger.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"saptools-cf-debugger","name":"@saptools/cf-debugger","artifact_type":"cli","ecosystem":"btp","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"Opens a verified [Node.js](external:nodejs) inspector tunnel over `cf ssh` to an app on SAP BTP Cloud Foundry from one command, with its own local port for each concurrent session.","short":"Node.js inspector tunnel over cf ssh to Cloud Foundry apps","what_it_solves":"Attaching an IDE debugger to a [Node.js](external:nodejs) app on [Cloud Foundry](artifact:btp-cloud-foundry-runtime) means finding the right process in the container, starting its inspector and forwarding a port by hand. `cf-debugger start` does those steps in one command: it picks the Node PID, sends `SIGUSR1`, spawns `cf ssh -N -L` and reports ready only once `GET /json/list` through the tunnel returns an attachable target. Each session gets a local port in the 20000–20999 range and an isolated `CF_HOME`, so several apps can be debugged at once, and `doctor` reports what an interrupted session left behind. It opens the tunnel and stops there: breakpoints are set in whatever attaches to the local port, and an app with SSH disabled is restarted only when `--allow-ssh-enable-restart` is passed."},"links":{"npm":"https://www.npmjs.com/package/@saptools/cf-debugger","repo":"https://github.com/dongitran/saptools","docs":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/README.md"},"identity":{"author":"dongitran","license":"MIT"},"compat":{"deployment":["cf"]},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/dongitran/saptools","title":"@saptools/cf-debugger — README","checked":"2026-10-18","quote":"npm install -g @saptools/cf-debugger"}]}},"provides":["capability:debugging"],"requires":[{"ref":"external:nodejs","for":"Runs on Node.js 20 or newer, beside the official cf CLI that it drives.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/README.md","title":"dongitran/saptools — packages/cf-debugger/README.md","checked":"2026-10-15","quote":"Node.js 20+ and the official `cf` CLI are required."}]},{"ref":"artifact:btp-cloud-foundry-runtime","for":"The target is a Node.js app running on SAP BTP Cloud Foundry, reached through cf ssh.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/README.md","title":"dongitran/saptools — packages/cf-debugger/README.md","checked":"2026-10-15","quote":"Open a verified Node.js inspector tunnel to an SAP BTP Cloud Foundry app from one command."}]}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-15"},"maintainers":["actor:dong-tran"],"contributors":["actor:dong-tran"],"drafted_with_ai":true},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"2 months since release"},{"label":"Continuity","tier":"fair","evidence":"2 contributors, 1 publisher"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"CodeQL Security Scan green, 2026-09-18"}],"practice":[{"label":"Tests","tier":"good","evidence":"679 test files"},{"label":"Docs","tier":"good","evidence":"docs site, README 20 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":11,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.3.0","majors":{"0.1":{"version":"0.1.0","date":"2026-04-18"},"0.2":{"version":"0.2.0","date":"2026-07-27"},"0.3":{"version":"0.3.0","date":"2026-09-02"}},"license":"MIT","first_release":"2026-04-18","last_release":"2026-09-02","releases":21,"cadence_days":2,"maintainers":1,"repository":"git+https://github.com/dongitran/saptools.git","repository_directory":"packages/cf-debugger","peer_cds":null,"dependencies":1,"node_engine":">=20.0.0","test_script":false,"types":true,"downloads_weekly":11,"downloads_monthly":132,"stars":3,"forks":0,"open_issues":1,"archived":false,"pushed_at":"2026-09-18","license_spdx":null,"org_owned":false,"default_branch":"main","created_at":"2026-04-03T14:04:40Z","open_prs":1,"tree_truncated":false,"test_files":679,"workflows":33,"other_ci":false,"readme_bytes":20755,"docs_files":0,"changelog":false,"license_file":false,"dts_files":2,"first_commit":"2026-04-18","last_commit":"2026-09-02","commits":33,"contributors":2,"ci_status":"success","ci_run_at":"2026-09-18","ci_workflow":"CodeQL Security Scan","ci_event":"push","readme_path":"packages/cf-debugger/README.md","readme_sha":"8e9232a7bf126f364364df32b1ecdf21bc59e782","months_since_release":2,"dormant":false,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"repo","path":"packages/cf-debugger/CHANGELOG.md","ref":"main","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.3.0","date":"2026-09-02","date_source":"registry","heading":"0.3.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/CHANGELOG.md#030","sections":[{"kind":"other","heading":null,"items":1}],"hash":"657ac1eb540af6d3"},{"version":"0.2.2","date":"2026-07-29","date_source":"heading","heading":"0.2.2 — 2026-07-29","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/CHANGELOG.md#022--2026-07-29","sections":[{"kind":"other","heading":"P0 — mutation, recovery, and credential safety","items":0},{"kind":"other","heading":"P1 — ownership and cross-version resilience","items":0},{"kind":"fix","heading":"P2 — platform and outcome correctness","items":0},{"kind":"other","heading":"P3 — maintainability and diagnostics","items":0}],"hash":"912c007291836ff8"},{"version":"0.2.1","date":"2026-07-27","date_source":"heading","heading":"0.2.1 — 2026-07-27","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/CHANGELOG.md#021--2026-07-27","sections":[{"kind":"other","heading":null,"items":1}],"hash":"f5272ecdca0aee20"},{"version":"0.2.0","date":"2026-07-27","date_source":"heading","heading":"0.2.0 — 2026-07-27","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-debugger/CHANGELOG.md#020--2026-07-27","sections":[],"hash":"f32242334efb9da5"}],"versions":[{"version":"0.3.0","date":"2026-09-02"},{"version":"0.2.2","date":"2026-07-29"},{"version":"0.2.1","date":"2026-07-27"},{"version":"0.2.0","date":"2026-07-27"},{"version":"0.1.16","date":"2026-07-20"},{"version":"0.1.15","date":"2026-07-19"},{"version":"0.1.14","date":"2026-07-02"},{"version":"0.1.13","date":"2026-06-30"},{"version":"0.1.12","date":"2026-06-30"},{"version":"0.1.11","date":"2026-06-29"},{"version":"0.1.10","date":"2026-06-27"},{"version":"0.1.9","date":"2026-06-26"},{"version":"0.1.8","date":"2026-06-24"},{"version":"0.1.7","date":"2026-05-07"},{"version":"0.1.6","date":"2026-05-02"},{"version":"0.1.5","date":"2026-05-02"},{"version":"0.1.4","date":"2026-04-29"},{"version":"0.1.3","date":"2026-04-29"},{"version":"0.1.2","date":"2026-04-18"},{"version":"0.1.1","date":"2026-04-18"},{"version":"0.1.0","date":"2026-04-18"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"contributors":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[{"ref":"artifact:saptools-cf-inspector","name":"@saptools/cf-inspector","json":"/artifacts/saptools-cf-inspector.json","requirement":"required"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}