{"ref":"artifact:saptools-cf-sync","page":"/artifacts/saptools-cf-sync","json":"/artifacts/saptools-cf-sync.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"saptools-cf-sync","name":"@saptools/cf-sync","artifact_type":"cli","ecosystem":"btp","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"A command line and [Node.js](external:nodejs) API that logs into [Cloud Foundry](artifact:btp-cloud-foundry-runtime) once, walks every region, org, space and app the user can reach, and caches that topology as JSON for the other @saptools packages to read.","short":"Cloud Foundry topology cache for the other @saptools packages","what_it_solves":"`cf orgs` and `cf spaces` answer only for the region and org currently targeted, so finding where an app runs across a landscape means retargeting by hand. `cf-sync sync` walks region, org, space and app across every region in one pass and writes the snapshot to `~/.saptools/cf-structure.json`, with the requested state, instance count and routes of each app; `--only` and the `region`, `orgs`, `org` and `space` commands refresh part of it without walking the rest. A separate `db-sync` collects each app's `VCAP_SERVICES.hana` credentials in a background worker into `~/.saptools/cf-db-bindings.json`, a file the README says to treat as a secret. SAP_EMAIL and SAP_PASSWORD are read only while syncing, and the read commands work offline from the cache. The README names [@saptools/cf-xsuaa](artifact:saptools-cf-xsuaa) as one of the packages that read its output."},"links":{"npm":"https://www.npmjs.com/package/@saptools/cf-sync","repo":"https://github.com/dongitran/saptools","docs":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/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-sync — README","checked":"2026-10-18","quote":"npm install -g @saptools/cf-sync"}]}},"requires":[{"ref":"artifact:btp-cloud-foundry-runtime","for":"The landscape it walks and caches: every region, org, space and app the signed-in user can reach, read through the cf CLI.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/README.md","title":"dongitran/saptools — packages/cf-sync/README.md","checked":"2026-10-15","quote":"logs into CF once, walks **region → org → space → app** across every region you can reach"}]},{"ref":"external:nodejs","for":"It is a Node command line and library, and the README names the Node version it needs beside the cf CLI on the PATH.","requirement":"required","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/README.md","title":"dongitran/saptools — packages/cf-sync/README.md","checked":"2026-10-15","quote":"Requires **Node.js ≥ 20** and the official **`cf` CLI** on `PATH` (v8 recommended)."}]}],"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 12 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":23,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.5.0","majors":{"0.1":{"version":"0.1.0","date":"2026-04-17"},"0.2":{"version":"0.2.0","date":"2026-04-17"},"0.3":{"version":"0.3.0","date":"2026-04-18"},"0.4":{"version":"0.4.0","date":"2026-04-24"},"0.5":{"version":"0.5.0","date":"2026-09-02"}},"license":"MIT","first_release":"2026-04-17","last_release":"2026-09-02","releases":28,"cadence_days":3,"maintainers":1,"repository":"git+https://github.com/dongitran/saptools.git","repository_directory":"packages/cf-sync","peer_cds":null,"dependencies":2,"node_engine":">=20.0.0","test_script":false,"types":true,"downloads_weekly":23,"downloads_monthly":724,"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":12741,"docs_files":0,"changelog":false,"license_file":false,"dts_files":2,"first_commit":"2026-04-17","last_commit":"2026-09-02","commits":35,"contributors":2,"ci_status":"success","ci_run_at":"2026-09-18","ci_workflow":"CodeQL Security Scan","ci_event":"push","readme_path":"packages/cf-sync/README.md","readme_sha":"6180a8a9d471fae9344a546a7346890f8056c912","months_since_release":2,"dormant":false,"repo_read":"2026-10-26"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"0.5.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.5.0","date":"2026-09-02","date_source":"registry","heading":"0.5.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md#050","sections":[{"kind":"other","heading":null,"items":1}],"hash":"ad8e2ee5e3bc6cdf"},{"version":"0.4.12","date":"2026-05-22","date_source":"heading","heading":"0.4.12 - 2026-05-22","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md#0412---2026-05-22","sections":[{"kind":"other","heading":null,"items":3}],"hash":"bd0e2d2aaa6a7528"},{"version":"0.4.11","date":"2026-05-22","date_source":"heading","heading":"0.4.11 - 2026-05-22","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md#0411---2026-05-22","sections":[{"kind":"other","heading":null,"items":3}],"hash":"6f05715ae2b373f0"},{"version":"0.4.9","date":"2026-05-13","date_source":"heading","heading":"0.4.9 - 2026-05-13","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md#049---2026-05-13","sections":[{"kind":"other","heading":null,"items":3}],"hash":"e24bee34d31ea4ee"},{"version":"0.4.8","date":"2026-05-12","date_source":"heading","heading":"0.4.8 - 2026-05-12","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-sync/CHANGELOG.md#048---2026-05-12","sections":[{"kind":"other","heading":null,"items":3}],"hash":"9da7c1c388174f12"}],"versions":[{"version":"0.5.0","date":"2026-09-02"},{"version":"0.4.16","date":"2026-07-16"},{"version":"0.4.15","date":"2026-06-30"},{"version":"0.4.14","date":"2026-06-29"},{"version":"0.4.13","date":"2026-06-26"},{"version":"0.4.12","date":"2026-05-22"},{"version":"0.4.11","date":"2026-05-22"},{"version":"0.4.10","date":"2026-05-19"},{"version":"0.4.9","date":"2026-05-13"},{"version":"0.4.8","date":"2026-05-12"},{"version":"0.4.7","date":"2026-05-11"},{"version":"0.4.6","date":"2026-05-08"},{"version":"0.4.5","date":"2026-05-02"},{"version":"0.4.4","date":"2026-05-02"},{"version":"0.4.3","date":"2026-04-29"},{"version":"0.4.2","date":"2026-04-27"},{"version":"0.4.1","date":"2026-04-27"},{"version":"0.4.0","date":"2026-04-24"},{"version":"0.3.5","date":"2026-04-19"},{"version":"0.3.4","date":"2026-04-19"},{"version":"0.3.3","date":"2026-04-18"},{"version":"0.3.2","date":"2026-04-18"},{"version":"0.3.1","date":"2026-04-18"},{"version":"0.3.0","date":"2026-04-18"},{"version":"0.2.1","date":"2026-04-18"},{"version":"0.2.0","date":"2026-04-17"},{"version":"0.1.1","date":"2026-04-17"},{"version":"0.1.0","date":"2026-04-17"}],"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-bruno","name":"@saptools/bruno","json":"/artifacts/saptools-bruno.json","requirement":"required"},{"ref":"artifact:saptools-cf-xsuaa","name":"@saptools/cf-xsuaa","json":"/artifacts/saptools-cf-xsuaa.json","requirement":"required"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}