{"_id":"bfs-vault","_rev":"28-d9084b3868d0c7fdb6f8b5f391281858","name":"bfs-vault","dist-tags":{"beta":"0.7.0-beta.3","rc":"0.12.0-rc.1","latest":"0.14.4"},"versions":{"0.1.0":{"name":"bfs-vault","version":"0.1.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.1.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://github.com/pfranczyk/bfs#readme","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"829920986d4a9defc13fc3416bdb049d19a30229","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.1.0.tgz","fileCount":6,"integrity":"sha512-ptOEBt0k0pYvECxRZahtQwp2Bin0nUIeqfYoyes23/9zg6z//RfMv9m3P4MK2FvKs9f+kmI/N5AH3KHyu9Luvw==","signatures":[{"sig":"MEUCIHTNyflYT8rFZ9zxJVwoR9+URK8CJcO/wKDnMB10KQ6FAiEAn6DXcB8KxfV9MwjnDxmYzH3C1/hYVR8dBwn/HzahPec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209148},"type":"module","engines":{"node":">=23"},"gitHead":"90e5769fc0516157e8d79fb12351813d9791d587","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","sync":"tsx scripts/sync-public.ts","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","typecheck":"tsc --noEmit","smoke:dist":"tsx scripts/smoke.ts --bin=dist/index.js"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.3.2","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.0","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.8"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.1.0_1774291998230_0.9167239659563806","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"bfs-vault","version":"0.2.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.2.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"cb1ce2e3282a276c3dd6872b7a821fd0e8623bfa","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.2.0.tgz","fileCount":6,"integrity":"sha512-bQezl9uxvFGRKHgxqpeqYwiVsSR7mh5+yssKLmfhr7pDSsdjdRcg3/Q14U+/ymglkvQ8Ie2wAGf/KzuZ8lVmgg==","signatures":[{"sig":"MEQCIGy6VshXc5hCs/Yw1G5zcl1l3DW39yq4ZBxuQS6Cea3AAiARcEvHYPUcjt0ZEAPmUIzx6oxAHR/yUh/Uj3Z2raeIyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224278},"type":"module","engines":{"node":">=23"},"gitHead":"49359b62886abacec1497292649ea76c66b0ce62","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.3.2","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.1","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.8"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.2.0_1774638486443_0.011650321775997119","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"bfs-vault","version":"0.3.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.3.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"a2c39cd86f9c11ab91d818eb8887fbbf3acf5d6f","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.3.0.tgz","fileCount":6,"integrity":"sha512-nxuPKNGbvJf6EH8YC7C4WZyUK3lhUJQ7xZUvRxh321gFkXKMBAVOm+vR54/BUN0G+sfAjcNof1tdvwNDxNN3zg==","signatures":[{"sig":"MEUCIAXFYOaBaBN3R/RXFZBHDNrzj/12x4jsJV2FtrB9wm1qAiEAkZqaWO4SMvAptlaLCLg9sPRYCHrZs3MdPO/PxmUogKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278566},"type":"module","engines":{"node":">=23"},"gitHead":"aeb467248be9e45058998b46e192ca0d9dd38dfc","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.3.2","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.1","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.8"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.3.0_1775238301378_0.221788351058664","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"bfs-vault","version":"0.4.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.4.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"75253861c72efcdf848eb421d68a5a6451d84b3b","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.4.0.tgz","fileCount":6,"integrity":"sha512-5FFj2YFt9fsSvP39PmRJL8P0bULPrjJswbWo25e/oW2348X+AOKqYSXXdRXl20oT5+QgQRzsl6dTXsaJa9Pw3g==","signatures":[{"sig":"MEUCICe35dgF9FYKyrvKd5gu2MeTlBwusHSp/kUM7sDYzyp1AiEA54Yh4pUzuIePUIYTu08KU3WMiaui+/arlMP5tb19CCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":309347},"type":"module","engines":{"node":">=23"},"gitHead":"a5a4a3591c237a92f8e81eda04c36c46afb720bb","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","prepare":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^5.9.3","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.4.0_1776017996160_0.5023872075603191","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"bfs-vault","version":"0.5.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.5.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"3b96c79ebda198827d714fc96ff90c5358ee2170","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.5.0.tgz","fileCount":9,"integrity":"sha512-KtuBA6W/xNKhuC/HqeTRdEZP3LI4k7t1obrPFP7XBOMzTCZHLsHFk5mXzewkvYw/A7672bYYDxLsW9vSrY9woQ==","signatures":[{"sig":"MEUCICUehcAVys65EZWvhUDXQMbKWWodfO/e3IIJzSwpw1F8AiEA0ibw/13K2twwTftmzb/jbAh7RWkhhZ9JEpLVcsee/VU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439807},"type":"module","engines":{"node":">=23"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"4c53612d42aee23fd80646736f5335a67b8e1e25","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.1","basic-ftp":"^5.3.0","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^5.9.3","@types/node":"^25.6.0","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.5.0_1778314056727_0.7441735386948929","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"bfs-vault","version":"0.6.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.6.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"eea76a4c90827788a3ea8a40cb8020cbe22d8b79","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.6.0.tgz","fileCount":9,"integrity":"sha512-ArbI3FH5r1CFU5SHgzybjjJS3OjdFYt5G/DIVKI32tBs2LEAeT6fVlnbN3Do3O7AHy7KryDRVJDFcKT2gStfcA==","signatures":[{"sig":"MEQCIFpYCMA0Rfl5ZDuAblmu2MRFHarxDNfy0P2N+YVo7hHDAiA9gjyX75A69T8R1FN411CiwgVcRjkBr53m22KOca263Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":453009},"type":"module","engines":{"node":">=23"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"14d2490e903949df191d070327f64f0d499e6f3b","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.3.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.1","basic-ftp":"^5.3.0","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.1","vitest":"^4.1.4","typescript":"^5.9.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.11"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.6.0_1779983301158_0.01580761892084781","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"bfs-vault","version":"0.6.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.6.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"4c104ecb5e8c0785f7f8eba34381c8a9de7a355a","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.6.1.tgz","fileCount":9,"integrity":"sha512-S9toBuBjSnCcyHBNRqLGfcqkRG/MdD3A9bmH8ghCOtUDPiOHKsZnGsDVfehbBa39nJoddD294Df4HIqpy6pvBg==","signatures":[{"sig":"MEQCIAUyfjDrbitFjGDor5PJH55hassarXebhHtDCK+h/mFCAiAbLBA/04oZhDqJJisi2qq+i8N8R1bnzmWINQOrtb3emA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457143},"type":"module","engines":{"node":">=23"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"de344cdbd8c19cbfbeb883f1ac5c2d70af494e46","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^5.9.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.6.1_1780246622213_0.5344949155089527","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"bfs-vault","version":"0.6.2","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.6.2","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"709edc1ef519f450d758d45520f6363a19ea1367","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.6.2.tgz","fileCount":9,"integrity":"sha512-Lf75NcOgM8YDWNQBVsMCJildnaup5kMkwfK9gdnteQxSs1KEqIroVQ9O259OMk3sFFuFwRe0pu1B4ElU7AAmTg==","signatures":[{"sig":"MEUCIA5uUrWwW63pPSRxg8VTcEgJdx3ZQJhJmlGJz2IhgtpxAiEA7myXB8gLn6WOrYsCortHwLK0boCBXMZVcyB+RST8PSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459635},"type":"module","engines":{"node":">=23"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"e59aca0cb2262658f67dfa01dee52dc5afd22a5b","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"10.9.2","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"23.11.1","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.7","typescript":"^5.9.3","@types/node":"^25.9.1","@biomejs/biome":"^2.4.16"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.6.2_1780841946650_0.7089889748634721","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.1":{"name":"bfs-vault","version":"0.7.0-beta.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.7.0-beta.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"fbeb7e7038294dafb0e283b9acb466fc1c9de5c2","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.7.0-beta.1.tgz","fileCount":9,"integrity":"sha512-hPiFRIU7RsVtDRaE38KpUZ1eifemP28H1rMYEWzJPrh+KVPP9ls95rI2JIvXtpOKeRs6+MiRBdVnkg3lulJNZw==","signatures":[{"sig":"MEYCIQDr5w0V3TiL1m12e0ciYBpJaYV3rprLBDwj4Ujyx+tn4AIhALDHXKMZYzRhLET0TKuCekHG/+WO8GCT3XMIUsLIOTPt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560293},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"2b396724261c6160532644c65614041ba7eb7ca1","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.8","typescript":"^5.9.3","@types/node":"^25.9.2","@biomejs/biome":"^2.4.16","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.7.0-beta.1_1780854171864_0.27442863438035303","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.2":{"name":"bfs-vault","version":"0.7.0-beta.2","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.7.0-beta.2","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"4cb9adaeafca32a7b3d1b61d2aedcfe2a3da32c7","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.7.0-beta.2.tgz","fileCount":9,"integrity":"sha512-Lqv2Oqp1DJ283OcWP/6w3Z8EMTGg3pVUXnj49pGAo1j8uLyDNGZC3hClKpk4Wy7ll04GrX5kYlSgePn7soP2Fw==","signatures":[{"sig":"MEQCIAeKtit4+bDCV9SarlOOT5n245XzV2Bc3xw3378J9n0rAiBAL1hlOR6pybRfzShbky21Wb3BzEy+VVNcuFXRrUJMvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573030},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"d4bb99ad3eeefff56a42f83261fc6cf45790a454","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.8","typescript":"^5.9.3","@types/node":"^25.9.2","@biomejs/biome":"^2.4.16","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.7.0-beta.2_1781286044993_0.7308778085126708","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-beta.3":{"name":"bfs-vault","version":"0.7.0-beta.3","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.7.0-beta.3","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"f48cff0960d35065b95167712ade5b6451483b1c","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.7.0-beta.3.tgz","fileCount":9,"integrity":"sha512-rhLJjX1+Fz/EDhU78DWpNuIaoxT+m9S03+R/8W2QYeYPjZFn5351b4o1HFmfTa0/alGNclGK+lZzK5YaR6AWuA==","signatures":[{"sig":"MEQCICmZ50kf4mIZbeHncW50AKWg8FUkvz+u62gh2gvorOn2AiBsSwRS+BdaMvrJVWeYQ6NBj6v+pvSwoPn7Wwd8TOgX1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":577672},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"79dfbabacb8e0bffe76bcc50e1cbe456234dc17b","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^5.9.3","@types/node":"^25.9.3","@biomejs/biome":"^2.5.0","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.7.0-beta.3_1781526314205_0.8273637113659966","host":"s3://npm-registry-packages-npm-production"}},"0.7.0-rc.1":{"name":"bfs-vault","version":"0.7.0-rc.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.7.0-rc.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"a124351764a0dd550c3d659499fd9e7be21f1ebf","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.7.0-rc.1.tgz","fileCount":9,"integrity":"sha512-SNxjlMvrePT1oguVwor5rCZveHB+2+Pu42fh2ce1T3wIyUPICVaVmUpsEKipbONkbIvvmVz+SmksKw5iBLaREg==","signatures":[{"sig":"MEQCIC3Bm0zSbKtF2z0FnbebkLCbiJrGLVxgv+UzsRGNsi8MAiAk4xSGpZDVVbrC98o8Yg3ouQl6sgEzHt4Ljqju3zGKJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593956},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"c405d3a0c733ceb7385480e95af6d35ccf225ce0","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^5.9.3","@types/node":"^25.9.3","@biomejs/biome":"^2.5.0","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.7.0-rc.1_1781846157652_0.7224813764042326","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"bfs-vault","version":"0.7.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.7.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"34b9dddd10eec5b3bf69df0744538af70450c9e7","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.7.0.tgz","fileCount":9,"integrity":"sha512-AWKLEWO27T+1E8oJosPa0cq3R0LV1xDLizG8HjQm9/LyI8fP405wB2G8ZwFQWtDOeni/BVSNiatInJoHDp8PJA==","signatures":[{"sig":"MEUCIQCYtVX+waSd3hSiS/UvTWSsv68uBRA71XFWZVisdNAJugIgTJJcgbTrs6NCy5fgCOtsLfKjth3R6CB2kK1IrYEcSSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593466},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"88c6b9bd783e0a923b0795241b447f77fa10c03c","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ora":"^9.4.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^13.4.3","basic-ftp":"^5.3.1","commander":"^14.0.3","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^5.9.3","@types/node":"^25.9.3","@biomejs/biome":"^2.5.0","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.7.0_1782147446072_0.6468363675199378","host":"s3://npm-registry-packages-npm-production"}},"0.8.0-rc.1":{"name":"bfs-vault","version":"0.8.0-rc.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.8.0-rc.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"7d8690ecfe2ab92a4c71e03e6b20c6dd17b2af96","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.8.0-rc.1.tgz","fileCount":9,"integrity":"sha512-FBzBaOMqjL4AiM2/mEjOgjJ5t9AhH6Om5u2Stl+kJLTtmmosXegr0A64PfDVJ+fcCbftip3yJERfsB3VoocWOw==","signatures":[{"sig":"MEUCIEO9htde6MRmQA8TwPlVk1Vf7TVyySq14g5Z+pg8DJlhAiEAiZhEgnVVTV4dqVVlhSTsHF4acWsO1DOaeSmA4lVZbWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.8.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":605420},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"2cb45572057401678076ba6913e0f84d6cda6b3a","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.8.0-rc.1_1782403445278_0.9221293273793205","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"bfs-vault","version":"0.8.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.8.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"844fb764ae63a7621ef0c9837b46df283fe6b296","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.8.0.tgz","fileCount":9,"integrity":"sha512-3W7OMmTYOYecHGB7qETV8LpAoovdNuVQ4F9RfrOYFvH78zTuMfPaAz+sJGGx1Wlu41Uo9mHBFL5jab87AYHrew==","signatures":[{"sig":"MEYCIQD0u1eEgdSO8OcvA664lcJr5iNsSJTR0cRdk4zDA0wzaAIhAIb0BzU1sIVY2QlHBviTmgRv8A4SpIMnEPIoaegqfznH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":605087},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"dc343975a38d581e4824536cd89d48f0f9571aa5","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.8.0_1782670252089_0.814682969218117","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"bfs-vault","version":"0.8.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.8.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"bfaea9606ad2ed3ae57e0bea838c036a2790f8b3","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.8.1.tgz","fileCount":9,"integrity":"sha512-qzyKpCCVKGPhMrz3tsv0s28cF2/mve/NTWi+inNEP+/z4iGsgKxOkcxT1/wmnA5NXSzLHrXAxBPPSoTZdCw6eA==","signatures":[{"sig":"MEUCIQCRzDgdB3qSNQaSVGrJSV14fWulsTQhQItfgSKI4oulrQIgHJyx2TAx4yqffX4TZ2c+hkK9UIX4oCO3h/n8Bz9jOaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":602638},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"31ac555a707b88b4bc0c2c9afe646617b29a1db8","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.13.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.8.1_1782923491643_0.7616604084810226","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"bfs-vault","version":"0.9.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.9.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"fe8064f9cfa5bc206c60d4f1a2dff4accb1c027c","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.9.0.tgz","fileCount":9,"integrity":"sha512-xjU1EtGpYAc1xaxScv4dxGrPqOB7TcD2JaiSDYBNDkCFv6ZRy6beVe98Q6Euz9QZm+tB+KRn0DCCgHlQG6rcIg==","signatures":[{"sig":"MEUCICiw7EZMdyRwqiox78MMIsvIvlblmoQvY7HyEBFHfmd2AiEAtdKpkwgCsru/9snudwRPRb87XZOrSEgmY9SkkKMeIFg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":610278},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"bf6e0796d5f03eaed88f364f96471464c83a846e","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.9.0_1783022163326_0.7944139769562146","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"bfs-vault","version":"0.9.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.9.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"aec73658a371a5d9336a6a4570b1ca08644c0442","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.9.1.tgz","fileCount":9,"integrity":"sha512-L5s58WgVrNgSFyx9bKXo4QOYC7Qek+IO1FcOENA3F9r+qVYBCIU406WMReN5NxiIZ+Lqx+KMJ0fZUeXsiu50cw==","signatures":[{"sig":"MEUCIFTmLq3OjxRQXUl7CSVkviCdoHGx5Jb+wu/DCltLbL2SAiEAju1gqfxklPRt+6+OXK5bbtkqBwMLKnptoMBX+bUodmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":612503},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"63ff9bfa9cf07baa53db56a973b37b91eeeafbfc","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.9.1_1783084515071_0.7973390057708616","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"bfs-vault","version":"0.10.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.10.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"5f27081f1ede60e96551cc08d18ec8babbd90e10","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.10.0.tgz","fileCount":9,"integrity":"sha512-+OaBkfsfgNCri3vjKDJp6ldbx7grPeHBtMEkcGrfqKt3QEkjUWK0m+R7lppubLwCW6ibj/xeOjzWEgPyEXirKw==","signatures":[{"sig":"MEYCIQD53GpZz+eND+WJDqyHc3sHBEMI9M+x5xDekxAPB8OMZwIhAJhiDdpD61Iva6JXYuc70LYCbIWP7KS5noaiVK0BEW6h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":655136},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"55d5f8310fbb970cd9dfc80953801ad63167476c","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.10.0_1783421371773_0.3283097185738668","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"bfs-vault","version":"0.11.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.11.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"48448ca5b3116630eee70f45449c731481aad8f9","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.11.0.tgz","fileCount":9,"integrity":"sha512-JQNW2kBQdjzdvkqsXulhFjDR324Qaybw4SB5Bb4urgtvLPD+5dxO38O7oR0PG3KnRONOLTaj8TUyvi4hcG2f/A==","signatures":[{"sig":"MEUCIQDJ9JSE4ijIW+VfZIjoaEjDTaqLfqjqSSC/pKpf7CcdXwIgNRwNuATf5Fuyxp5EzOHLb/3P1++dVlcrL+8AeRDWm4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":657720},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"7c80bcb4611a2df9d962a51efd24963e72591d95","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.11.0_1783584377790_0.027488461366734995","host":"s3://npm-registry-packages-npm-production"}},"0.12.0-rc.1":{"name":"bfs-vault","version":"0.12.0-rc.1","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.12.0-rc.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"cd4a18dfdd964f38174becab669196cbc578e095","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.12.0-rc.1.tgz","fileCount":9,"integrity":"sha512-lfzmoME84pZ/CFeXShyq5oXBrdZbCYfo/dZQIVPrvchoG/uedf7wKXhRRa+Co0lL4FZJligKq9ycpJonvTntlw==","signatures":[{"sig":"MEYCIQCDVJL6WKkDLftA6oovL35b7nolT1y75RNpFKCfPZR5igIhAMbZoW3g1BEbnlYReVAenpdQ0PRBjNx1zMjNZlLbr1IL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.12.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":756309},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"5644e7ffb8aac864fde13e1c9c0f757358b5bd0d","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.12.0-rc.1_1784379825221_0.331946182631476","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"bfs-vault","version":"0.12.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.12.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"b0664fab776faabf95aa75bca44213bd1da48f24","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.12.0.tgz","fileCount":9,"integrity":"sha512-qL8z4TGufEeYetkwPcef12E0Nsf8Y+Hpooqjtgnu1IxabLuFbuxv6A16cYHyl9Q5aEIMHbFydVXAykuEzlepBg==","signatures":[{"sig":"MEQCIHw3C9LzUwAqvJt2meEczBWs0Lw7oz10Jtbd+3qdtuVFAiB4OAl/aTY/XAhPySeSwasUJBxrq/9t3cFlVfNuRNLoMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":755975},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"ff48a662ad69b15cb1e7e5a85bd7575bf54fa97a","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsup":"^8.5.1","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.1","@lydell/node-pty":"^1.2.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.12.0_1784571210783_0.10455460918675463","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"bfs-vault","version":"0.13.0","keywords":["backup","reed-solomon","erasure-coding","cli","encryption","distributed","aes-256-gcm","disaster-recovery"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.13.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"40e776bded769bf4832f6e92ccc3e10b413648dc","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.13.0.tgz","fileCount":9,"integrity":"sha512-7OKEmy2quhDR+7NJRQpjRJSI+3yrszyeFc3a0BOpC8SJoKCJa+QHacVgd3+kcMnlNDG7tgbi0AblP1n0EK8e5g==","signatures":[{"sig":"MEUCIQD/CbA1WZKJZy780awUNSVHOK9dmqpDX0pEkKE/v/92eAIgOT3VQiznOQwHMLwrPzx/+B3pYbQK5wjGzl+byvO/E2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":819041},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"d29786ac6587c6596b187343d47b1639cc32147f","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.16.0","description":"Backup File System — distributed backup with Reed-Solomon erasure coding","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.13.0_1785780167307_0.36019026396601084","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"bfs-vault","version":"0.14.0","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.14.0","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"db69062e58734b3f5a8e7701a29bfd883e5ab782","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.14.0.tgz","fileCount":9,"integrity":"sha512-iSvOwUtWqdgUAq3xnBwKq1/W0ioEv+BFTnuZMpWDw2wHQJlkq6H/ygQg17s8pRWNBuy/6syiDEvCFld5+YzzBg==","signatures":[{"sig":"MEYCIQC9QkCT8VtLIInxMsGxGtrs3//qniARecCj/uAXOdGRLgIhAJ6UI646W7sG/P2pfW/4270MgWN8rTs6Ir2PCcWpKWUn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":876615},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"1786abecc1ebe051c351989b397b84f5f832c646","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit","clean:temp":"tsx scripts/clean-temp.ts"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.17.0","description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.14.0_1787557516813_0.7862616038734356","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"bfs-vault","version":"0.14.1","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.14.1","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"8a3647502a71af2ef3b699431ef78d3338ed7657","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.14.1.tgz","fileCount":9,"integrity":"sha512-Z422AAsD4jiRdwNenb70Bk9HL3e8MZP4fzvusb+Kdlfn/bm06V1zIKvXJS0QGUCS5udvZ5aBYrQk7Lr6vG/Vrw==","signatures":[{"sig":"MEYCIQDbbUEI80jZEC94GJ5fqEGcdjwRoNj6BfS/YbJuWemCggIhAOdgf7QHg8XTNkhOXhC+MbLfXHvAZkvtBuWr4iJPi2HD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":877300},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"e8b0e2f8875b159e1af56fd19fabd151e966765d","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit","clean:temp":"tsx scripts/clean-temp.ts"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.17.0","description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.14.1_1787771906824_0.9843031194137477","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"bfs-vault","version":"0.14.2","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.14.2","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"8ed7f70230877535f16c0c25fc9e92eb4c4f1252","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.14.2.tgz","fileCount":9,"integrity":"sha512-KYXQEjLLW2RwL0fXNxJKdhB5+Gw9orhJGvY7WpfhB8e+ufw5dR5UIFJOELxK7uHfUnpm1oSlMyNFf7aAE7uHrQ==","signatures":[{"sig":"MEYCIQDYSbeHqkPJRIhrQfJoEmDjxX2riY1MyZFecNBApXlBxQIhAKgSGF6LoZDXk/GG80ibLifPrFnTN0Hp3y2uHOPsi/9G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":892421},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"a9514f5edc816758a9fb5994e6ee9487da545405","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit","clean:temp":"tsx scripts/clean-temp.ts"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.17.0","description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.14.2_1787894615307_0.23586131764795426","host":"s3://npm-registry-packages-npm-production"}},"0.14.3":{"name":"bfs-vault","version":"0.14.3","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","_id":"bfs-vault@0.14.3","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"homepage":"https://pfranczyk.github.io/bfs/","bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"bin":{"bfs":"dist/index.js"},"dist":{"shasum":"b1dec774d19fff40e403fcafa889eb51fcaba275","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.14.3.tgz","fileCount":9,"integrity":"sha512-hv/Ro2tRVaAB14B3GIXpzGPxdaDaebV/vB3usB/B7p24+3l+7hy9JDxnIXokRP3tdaPPoxE9aXKtbgCtJf2T3g==","signatures":[{"sig":"MEUCIHnkLIBiTJ1v1ISlRgzRlAfkz3P4QpgSgax3I1dnWlJpAiEAtuE6puRuC7BrpIiJVkVDjBHB7O9Sv36ONjBWx1rZeZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHtBWFJJ1VUnLASgCz94EWrHslcg/aR0kKFxdim3E86OAiBKTCpqdFeI4sDVJYqghVBebTqsUBG3jCVDmnjshJ3d5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.14.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":900966},"type":"module","engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"407770e25da0ffcbe4db0a19b98e287635cb4650","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit","clean:temp":"tsx scripts/clean-temp.ts"},"_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.19.0","description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/bfs-vault_0.14.3_1788549871646_0.04469987050254076","host":"s3://npm-registry-packages-npm-production"}},"0.14.4":{"_id":"bfs-vault@0.14.4","bin":{"bfs":"dist/index.js"},"bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"dist":{"shasum":"1ec9c717e3170f1fa67bec655fa08b4243d0d323","tarball":"https://registry.npmjs.org/bfs-vault/-/bfs-vault-0.14.4.tgz","fileCount":9,"integrity":"sha512-NBaieW/kBiEp/0Bbe6C4SG8E6vouO+qDrHEUWDqdNLr3AkiYwHSgiUoWna8vubKMhRbgUWQKE2CROtS0R0YHqw==","signatures":[{"sig":"MEQCIEezbAN6NHQzkBDKOHgmdRy45k77frKm8rdsybOUGpdCAiBS45lkAGzmcjFNaWQ0vNo6D4LNtrK0wA/ewzzSNYkS8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDroOqA5oCdRF7De7MxXytwTBjPeH/u4hvE9ffS30yHowIgHJpMiN27414Q9gvHolyzeburC+w+5aWRtwViPwQdtUw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bfs-vault@0.14.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":903418},"name":"bfs-vault","type":"module","author":{"name":"Paweł Franczyk"},"engines":{"node":">=24"},"exports":{"./provider":{"types":"./dist/lib.d.ts","import":"./dist/lib.js"}},"gitHead":"f20767a812ce399a8fd94d1e95048f74f6cb2691","license":"AGPL-3.0-or-later","scripts":{"dev":"tsx src/index.ts","lint":"biome check .","test":"vitest run","build":"tsup","smoke":"tsx scripts/smoke.ts","prepare":"npm run build","smoke:ftp":"tsx scripts/ftp-test-server.ts","smoke:ssh":"tsx scripts/ssh-test-server.ts","typecheck":"tsc --noEmit","clean:temp":"tsx scripts/clean-temp.ts"},"version":"0.14.4","_npmUser":{"name":"logrox","email":"logrox1@gmail.com"},"homepage":"https://pfranczyk.github.io/bfs/","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"_npmVersion":"11.19.0","description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","directories":{},"maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"ora":"^9.4.1","ssh2":"^1.17.0","chalk":"^5.6.2","ignore":"^7.0.5","inquirer":"^14.0.2","basic-ftp":"^6.0.1","commander":"^15.0.0","@node-rs/argon2":"^2.0.2","@subspace/reed-solomon-erasure.wasm":"^0.2.5"},"preferGlobal":true,"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","tsup":"^8.5.1","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.2","@types/ssh2":"^1.15.5","@biomejs/biome":"^2.5.6","@lydell/node-pty":"^1.2.0-beta.14"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bfs-vault_0.14.4_1789208923612_0.15633311296431684"}}},"time":{"created":"2026-03-23T18:53:18.097Z","modified":"2026-09-12T10:28:44.002Z","0.1.0":"2026-03-23T18:53:18.366Z","0.2.0":"2026-03-27T19:08:06.598Z","0.3.0":"2026-04-03T17:45:01.506Z","0.4.0":"2026-04-12T18:19:56.309Z","0.5.0":"2026-05-09T08:07:36.874Z","0.6.0":"2026-05-28T15:48:21.304Z","0.6.1":"2026-05-31T16:57:02.357Z","0.6.2":"2026-06-07T14:19:06.845Z","0.7.0-beta.1":"2026-06-07T17:42:52.063Z","0.7.0-beta.2":"2026-06-12T17:40:45.170Z","0.7.0-beta.3":"2026-06-15T12:25:14.401Z","0.7.0-rc.1":"2026-06-19T05:15:57.827Z","0.7.0":"2026-06-22T16:57:26.252Z","0.8.0-rc.1":"2026-06-25T16:04:05.482Z","0.8.0":"2026-06-28T18:10:52.281Z","0.8.1":"2026-07-01T16:31:31.809Z","0.9.0":"2026-07-02T19:56:03.483Z","0.9.1":"2026-07-03T13:15:15.235Z","0.10.0":"2026-07-07T10:49:31.908Z","0.11.0":"2026-07-09T08:06:18.019Z","0.12.0-rc.1":"2026-07-18T13:03:45.425Z","0.12.0":"2026-07-20T18:13:30.990Z","0.13.0":"2026-08-03T18:02:47.477Z","0.14.0":"2026-08-24T07:45:16.944Z","0.14.1":"2026-08-26T19:18:27.007Z","0.14.2":"2026-08-28T05:23:35.481Z","0.14.3":"2026-09-04T19:24:31.734Z","0.14.4":"2026-09-12T10:28:43.699Z"},"bugs":{"url":"https://github.com/pfranczyk/bfs/issues"},"author":{"name":"Paweł Franczyk"},"license":"AGPL-3.0-or-later","homepage":"https://pfranczyk.github.io/bfs/","keywords":["backup","backup-tool","backup-cli","restore","disaster-recovery","offsite-backup","self-hosted","cli","reed-solomon","erasure-coding","redundancy","fault-tolerance","distributed","encryption","client-side-encryption","aes-256-gcm","argon2","ftp","sftp","ssh","data-integrity","bit-rot","versioning"],"repository":{"url":"git+https://github.com/pfranczyk/bfs.git","type":"git"},"description":"Encrypted CLI backup split across local, FTP and SSH storages with Reed-Solomon parity - any N of N+K parts restore everything","maintainers":[{"name":"logrox","email":"logrox1@gmail.com"}],"readme":"# BFS - Backup File System\n\nDistributed backup CLI tool for Node.js. Packs a directory into a binary blob,\ncompresses it with deflate, splits using Reed-Solomon erasure coding, encrypts\nevery shard with AES-256-GCM (on by default), and distributes the shards across\nmultiple storage providers. Any N of N+K\nshards can reconstruct the original data - losing up to K providers does not\ncause data loss.\n\nThe flip side is worth knowing before you commit: **a restore needs N providers\nreachable at the same time.** Tools that replicate a whole repository (restic,\nborg, kopia) need just one working copy, so they fare better when the question is\n\"my disk died\". BFS trades that for a different property - no single storage ever\nholds enough to read your data, so it fares better when the question is \"I don't\ntrust any one place with all of it\". See\n[When BFS fits](#when-bfs-fits) before choosing it as your only backup.\n\n```\nbfs init photos\nbfs push\nbfs pull\n```\n\n## Features\n\n- **Reed-Solomon erasure coding** - configurable N data + K parity shards\n- **Deflate compression** - the whole backup is packed into a single deflate-compressed ZIP. No fixed default: at `bfs init` a directory scan settles it per backup, proposing off when the data is mostly already-compressed (images, video, archives), while `bfs init --compress` / `--no-compress` decide it outright. Override per push with `--compress` / `--no-compress`\n- **AES-256-GCM encryption** - on by default (opt out with `bfs init --no-enc`), Argon2id key derivation\n- **Provider-agnostic** - local disk, USB drives, network mounts, FTP/FTPS, SSH/SFTP (WebDAV and SMB coming soon; cloud storage via external adapters)\n- **Versioned backups** - by default every push creates a new numbered version; can be configured to overwrite the current version instead\n- **Self-describing shards** - each shard contains the full location map, so one shard is enough to *find* the others (reading the data still needs N of them)\n- **Resilient pushes** - when a provider fails mid-push, BFS finishes with the rest and records which targets failed; retry just those without re-uploading the whole backup\n- **Disaster recovery** - rebuild the `.bfs/` configuration from a single shard when everything else is lost, then restore once N providers are reachable. A version whose password you did not have at hand is recorded rather than skipped: `bfs versions` lists it as present but not recovered, and `bfs pull --version <n> --password <its password>` fetches it later without a second recovery run\n- **Interactive REPL** - run `bfs` without arguments for a guided prompt\n- **CI/cron support** - all commands support non-interactive flags\n\n## Requirements\n\n- Node.js >= 24 - newer than what Debian stable and Ubuntu LTS ship, so install it\n  from [NodeSource](https://github.com/nodesource/distributions) or a version\n  manager (nvm, fnm) rather than your distribution's package manager\n- Minimum 4 GB RAM (BFS uses ~25% of system memory for Reed-Solomon encoding)\n- **Windows only:** [Microsoft Visual C++ Redistributable 2015-2022 (x64)](https://aka.ms/vs/17/release/vc_redist.x64.exe) - required by the Argon2 native binding (Windows 11 desktop typically has this pre-installed; Windows Server usually does not)\n\n## Installation\n\n```bash\nnpm install -g bfs-vault\n```\n\n## Quick start\n\n```bash\n# 1. Go to the directory you want to back up\ncd ~/documents\n\n# 2. Initialize vault (interactive - asks for providers, scheme, encryption, compression, and RAM limit)\nbfs init documents\n\n# 3. Back up\nbfs push\n\n# 4. Restore\nbfs pull\n```\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `bfs init [<name>]` | Initialize a new vault in the current directory (name is the subfolder created on each provider) |\n| `bfs push` | Back up (new version or overwrite, based on config) |\n| `bfs pull [--version N] [-y]` | Restore files from backup (default: latest version); `-y/--yes` auto-confirms overwrite |\n| `bfs status` | Show vault status |\n| `bfs versions` | List all backup versions with health status |\n| `bfs verify [--deep]` | Check part availability and health across providers; flag missing or damaged header files. Exits **0** healthy, **4** degraded, **5** damaged (**1** = the check itself could not run). `--deep` additionally downloads every part and re-checks its checksum, catching silent bit-rot the header check cannot see |\n| `bfs prune [range] [--keep-last N]` | Delete old backup versions - pass an explicit range (`5`, `1-10`, `1,3,5`) or `--keep-last N` to keep the newest N |\n| `bfs recovery` | Rebuild `.bfs/` from providers (disaster recovery) |\n| `bfs repair` | Fix a backup's storage locations without re-uploading - repoint a moved device, rebuild a lost part, or restore missing/damaged header files (`--restore-headers`) |\n| `bfs clear` | Delete pending cache and stale lock files from an interrupted push or pull |\n| `bfs scheme set <N> <K>` | Change the Reed-Solomon N/K scheme (minimum 2/1) |\n| `bfs config [--cache-dir <path>] [--temp-dir <path>] [--max-ram <MB>] [--on <feature>] [--off <feature>]` | View or change per-backup settings (cache dir, temp dir, RAM limit, toggle compression/encryption) |\n| `bfs provider add` | Add a new provider to the vault |\n| `bfs provider list` | List configured providers |\n| `bfs provider edit [name]` | Edit a provider's connection settings - writes only local config, never the backup |\n| `bfs provider remove [name]` | Remove or replace a provider (with heal option) |\n\nGlobal options:\n- `--cwd <dir>` - vault working directory (overrides current directory)\n- `--lang <code>` - set UI language permanently (`en`, `pl`)\n\n## How it works\n\n```\npush:  scan dir -> pack blob [+compress] -> Reed-Solomon encode -> [encrypt each shard] -> upload x (N+K)\npull:  read manifest -> download N shards -> [decrypt each shard] -> Reed-Solomon decode -> [decompress] -> write files\n```\n\nEach provider holds exactly one shard per version. No single provider has\nenough data to reconstruct the backup. The location map of all shards is\nembedded in each shard header - one surviving shard is sufficient to locate\nand download the rest.\n\nSymbolic links and special files (sockets, FIFOs, devices) are never stored in a\nbackup - a link may point outside the directory or form a loop, and a device is\nnot a file. `bfs push` does not drop them silently: it lists them and stops, so\nyou can add them to `.bfsignore` (interactively it offers to do this and retry)\nor re-run with `--allow-excluded` to back up everything else. A scripted push\nexits with code **3** when it finds such entries and `--allow-excluded` was not\ngiven.\n\n## Reed-Solomon scheme\n\nConfigure N (data shards) and K (parity shards) during `bfs init`:\n\n| Scheme | Providers needed | Can lose up to | Needed to restore |\n|---|---|---|---|\n| 3+1 | 4 | 1 provider | 3 reachable at once |\n| 3+2 | 5 | 2 providers | 3 reachable at once |\n| 5+3 | 8 | 3 providers | 5 reachable at once |\n\nMinimum scheme is **2 data + 1 parity**. Anything lower is refused by `bfs init` / `bfs scheme set`, and `bfs status` warns when the live scheme drops below the floor (e.g. after a manual config edit) - further pushes are disabled until the scheme is restored.\n\n## When BFS fits\n\nBFS is not a replacement for a conventional backup tool; it answers a different\nquestion. Deciding which question is yours matters more than any feature list.\n\n**It fits when no single storage should hold a complete copy.** Every provider\nkeeps one shard - never a whole backup. With encryption on (the default), a\nshard is unreadable without your password. That is the property restic, borg,\nkopia and duplicati do not have: they replicate a whole repository, so anyone who\nobtains one copy obtains everything in it. If your worry is an untrusted cloud, a\nborrowed server or a drive that may leave your control, this is the trade you\nwant. Note that **without encryption a single shard is not opaque** - it holds\nverbatim slices of the packed data and the file list; see\n[SECURITY.md](SECURITY.md#what-a-single-storage-provider-can-see) for exactly\nwhat one provider can read in each mode.\n\n**It fits poorly when data changes often, or when there is a lot of it.** Every\npush writes a full new snapshot - there is no incremental mode and no\ndeduplication, so changing a few bytes in one file re-uploads everything. The\nspace each version occupies is roughly `packed size x (N+K)/N`, and versions\naccumulate until you `bfs prune` them. For tens of gigabytes that change daily,\nan incremental tool will cost far less time and space. For data that rarely\nchanges - documents, photo archives, keys, configuration - the difference is\nacademic.\n\n**Restoring needs N providers at once**, as the table above shows. A tool holding\ncomplete copies needs one of them alive; BFS needs a quorum. Weigh that against\nwhat it buys you, rather than discovering it during a restore.\n\n**Prior art.** Splitting data across independent storages with erasure coding is\na well-established idea - Tahoe-LAFS (2007), RACS, Cleversafe, and later Storj\nand Sia all build on it. What BFS does differently is scope, not mathematics: it\napplies that model to storage you already own, from a single-user CLI, with no\ngrid to deploy and no provider network to join.\n\n## CI / cron usage\n\nAll modifying commands support non-interactive flags.\n\n**Initialize** - keep credentials in config files so they never appear on the command line:\n\n`ftp-remote1.json` (secure with `chmod 600`):\n```json\n{ \"host\": \"192.168.1.10\", \"user\": \"backup\", \"password\": \"secret\", \"path\": \"/bfs\", \"accept_new_cert\": true }\n```\n\nFTPS is on by default, and a scripted run has nobody to ask about an unknown\ncertificate - so it must say up front which certificate to trust: pin it with\n`\"cert_fingerprint\": \"AA:BB:...\"` (or `--cert-fingerprint`), or accept the one the\nserver presents on first connection with `\"accept_new_cert\": true` (or\n`--accept-new-cert`). Without either, BFS refuses instead of trusting silently.\nA server that offers only plain FTP needs `\"secure\": false`.\n\n`ssh-vps1.json` (key auth - the private key stays a path, never inline):\n```json\n{ \"host\": \"vps.example.com\", \"user\": \"backup\", \"private_key_path\": \"/home/me/.ssh/id_ed25519\", \"path\": \"/srv/bfs\", \"host_key_fingerprint\": \"SHA256:...\" }\n```\n\nMix local disks, FTP, and SSH/SFTP in one backup - each provider holds one part (3 data + 2 parity = 5 providers):\n\n```bash\nbfs init --ci docs --data-shards 3 --parity-shards 2 \\\n  --provider \"local:nas1 --path /mnt/nas1/backup\" \\\n  --provider \"local:usb --path /media/usb/backup\" \\\n  --provider \"ftp:remote1 --config-file ./ftp-remote1.json\" \\\n  --provider \"ssh:vps1 --config-file ./ssh-vps1.json\" \\\n  --provider \"ssh:pi --host 192.168.1.20 --user backup --private-key ~/.ssh/id_ed25519 --path /srv/bfs --accept-new-host-key\"\n```\n\n**Scheduled backup and maintenance (crontab):**\n\n```bash\n# Back up - new version\nbfs push --new --password-file /etc/bfs/vault.pass\n\n# Prune - keep last 14 versions\nbfs prune --keep-last 14 --yes\n```\n\nKeep the password in a file readable only by the account running the job\n(`chmod 600 /etc/bfs/vault.pass`) and pass `--password-file`. Do **not** use\n`--password \"$VAULT_PASS\"`: the shell expands the variable before starting the\ncommand, so the password ends up in the process arguments, where\n`/proc/<pid>/cmdline` exposes it to every local account for as long as the\nbackup runs. `--password-file` works the same way in `pull`, `recovery`,\n`repair` and `provider remove`.\n\nA scheduled `bfs push` exits with code **3** if the directory contains symbolic\nlinks or special files (they cannot be backed up) - so a cron job fails loudly\ninstead of quietly saving an incomplete backup. Add `--allow-excluded` to back up\neverything else without failing, or list the entries in `.bfsignore`.\n\n## Providers\n\nCurrently supported:\n\n| Type | Description |\n|---|---|\n| `local` | Local directory, USB drive, network mount |\n| `ftp` | FTP/FTPS server (uses `basic-ftp`) |\n| `ssh` | SSH/SFTP server (uses `ssh2`) |\n\nComing soon (built into BFS core): `webdav` (WebDAV -\nNextcloud, ownCloud, Apache/nginx), `smb` (SMB/CIFS network shares).\n\nCloud storage (Google Drive, OneDrive, Dropbox, S3/Backblaze B2, ...) ships as\n**external adapters**, not built-in - installed on demand and updated\nindependently of BFS, so a provider's API change never forces a BFS upgrade.\n\n### FTP provider\n\nProvider details can be given as inline flags, a JSON config file, or both - inline flags override file values.\n\n**Inline flags:**\n\n```bash\nbfs init --ci docs --data-shards 2 --parity-shards 1 \\\n  --provider \"ftp:nas1 --host ftp.example.com --user backup --password secret --path /backup --accept-new-cert\" \\\n  --provider \"ftp:nas2 --host ftp2.example.com --user backup --password secret --path /backup --accept-new-cert\" \\\n  --provider \"local:usb --path /media/usb\"\n```\n\nFTPS is on by default, so a scripted run has to say which certificate to trust -\n`--accept-new-cert` takes the one the server presents on first connection, and\n`--cert-fingerprint AA:BB:...` pins one you already know. Without either, `--ci`\nrefuses rather than trusting silently.\n\n**Config file** - recommended when credentials come from environment variables or a secrets manager:\n\n`nas.json` (secure with `chmod 600`):\n```json\n{\n  \"host\": \"ftp.example.com\",\n  \"port\": 21,\n  \"user\": \"backup\",\n  \"password\": \"secret\",\n  \"path\": \"/backup\",\n  \"accept_new_cert\": true\n}\n```\n\n```bash\nbfs init --ci docs --data-shards 2 --parity-shards 1 \\\n  --provider \"ftp:nas1 --config-file ./nas.json\" \\\n  --provider \"ftp:nas2 --config-file ./nas2.json\" \\\n  --provider \"local:usb --path /media/usb\"\n```\n\nFTP flag reference:\n\n| Flag | Default | Description |\n|---|---|---|\n| `--host <hostname>` | - | FTP server hostname or IP (required) |\n| `--port <number>` | `21` | FTP server port |\n| `--user <username>` | - | FTP login user |\n| `--password <password>` | - | FTP login password |\n| `--path </absolute/path>` | - | Absolute base path on server, must start with `/` (required) |\n| `--secure <bool>` | `true` | FTPS/TLS - on by default; pass `false` for a server that offers only plain FTP (accepts `true`/`false`/`yes`/`no`) |\n| `--cert-fingerprint <sha256>` | - | Pin the server's certificate up front (`AA:BB:...` form) |\n| `--accept-new-cert` | - | Trust the certificate presented on first connection without asking (pins nothing - see `--cert-fingerprint`) |\n| `--config-file <path>` | - | JSON file with any of the above fields; inline flags override file values |\n\n### SSH/SFTP provider\n\nStore parts on any SSH server (NAS, VPS, Raspberry Pi) over SFTP. Authenticate with a password **or** an SSH key - the private key is always given as a **file path**, never pasted into the terminal. With no password and no `--private-key`, BFS falls back to your default key in `~/.ssh` (`id_ed25519`, then `id_rsa`).\n\n**Inline flags (password auth):**\n\n```bash\nbfs init --ci docs --data-shards 2 --parity-shards 1 \\\n  --provider \"ssh:nas1 --host nas.example.com --user backup --password secret --path /backup\" \\\n  --provider \"ssh:nas2 --host nas2.example.com --user backup --password secret --path /backup\" \\\n  --provider \"local:usb --path /media/usb\"\n```\n\n**Key auth + config file** - recommended when credentials come from environment variables or a secrets manager:\n\n`nas.json` (secure with `chmod 600`):\n```json\n{\n  \"host\": \"nas.example.com\",\n  \"port\": 22,\n  \"user\": \"backup\",\n  \"private_key_path\": \"/home/backup/.ssh/id_ed25519\",\n  \"path\": \"/backup\",\n  \"host_key_fingerprint\": \"SHA256:...\"\n}\n```\n\n```bash\nbfs init --ci docs --data-shards 2 --parity-shards 1 \\\n  --provider \"ssh:nas1 --config-file ./nas.json\" \\\n  --provider \"ssh:nas2 --config-file ./nas2.json\" \\\n  --provider \"local:usb --path /media/usb\"\n```\n\nThe server's host key is verified on first connection: accepted interactively, pinned with `--known-host <fingerprint>` (or `host_key_fingerprint` in the config), or accepted up front with `--accept-new-host-key`, which trusts the key presented on first contact and pins its fingerprint without asking. A later host-key change is then flagged.\n\nSSH flag reference:\n\n| Flag | Default | Description |\n|---|---|---|\n| `--host <hostname>` | - | SSH server hostname or IP (required) |\n| `--port <number>` | `22` | SSH server port |\n| `--user <username>` | - | SSH login user |\n| `--password <password>` | - | Password auth (mutually exclusive with `--private-key`) |\n| `--private-key <path>` | - | Path to an SSH private key file for key auth |\n| `--passphrase <passphrase>` | - | Passphrase for the private key, if it is encrypted |\n| `--path </absolute/path>` | - | Absolute base path on server, must start with `/` (required) |\n| `--known-host <fingerprint>` | - | Pin the server's host key (`SHA256:...`) |\n| `--accept-new-host-key` | - | Trust a new host key on first contact and pin its fingerprint, without prompting |\n| `--config-file <path>` | - | JSON file with any of the above fields; inline flags override file values |\n\n**Adding a provider to an existing vault:**\n\n```bash\n# Interactive\nbfs provider add\n\n# Non-interactive - inline\nbfs provider add --ci --name nas --type ftp \\\n  --host ftp.example.com --user backup --password secret --path /backup\n\n# Non-interactive - config file\nbfs provider add --ci --name nas --type ftp \\\n  --config-file ./nas.json\n```\n\n## Platform notes\n\nBFS runs on Linux, macOS, and Windows, and a backup created on one platform\nrestores on any other - shards and the on-disk format are byte-identical across\noperating systems.\n\n**Windows - protection of local credentials.** On Linux and macOS, BFS creates\n`.bfs/` as `0700` and files holding provider secrets as `0600`, so other local\nusers cannot read them. On Windows these POSIX mode bits are a **no-op** - NTFS\nuses ACLs, not Unix permissions - so BFS cannot restrict `.bfs/` that way. The\npractical protection on Windows is the access control of the directory that\nholds `.bfs/`: keep your vault under a per-user profile path (e.g. inside your\nown `C:\\Users\\<you>\\...`) rather than a world-readable shared location. See\n[SECURITY.md](SECURITY.md) for the full threat model.\n\n## Versioning\n\nBFS uses [Semantic Versioning](https://semver.org).\n\n## License\n\n[AGPL-3.0-or-later](LICENSE) (c) Paweł Franczyk\n","readmeFilename":"README.md"}