{"_id":"@sysnee/pgs","_rev":"30-61ff8b999511e5deba809d40e467deac","name":"@sysnee/pgs","dist-tags":{"latest":"0.1.7-rc.15.0.2"},"versions":{"0.1.0":{"name":"@sysnee/pgs","version":"0.1.0","_id":"@sysnee/pgs@0.1.0","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"d4ea88b0f7a3ac0c0dfd507ee42e34a4e23ac647","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.0.tgz","fileCount":10,"integrity":"sha512-6KWabyR3VR1a+1iwd7wnK6m0XJ42M1hl5D3go7h5JFprmBq6O36rkLjT0GZAYO66M9to9S6gzE6o3d33nUZlrg==","signatures":[{"sig":"MEQCIAF/UN4QKsc1A9HlUncGV7DR+wWtS7Jpx4+/Xp9FFqQSAiBKhB9qXFQW1GNpgo93mURIxn2ePVdGKqcFmzXi1W6QMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75941},"type":"module","gitHead":"535f11ea95389c88e8edfc7d551ac1a597f786bc","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.0_1768498581283_0.24424246535229344","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@sysnee/pgs","version":"0.1.1","_id":"@sysnee/pgs@0.1.1","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"51b5b9d7adfbf0cf3603afc02cb56f07a7fb7196","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.1.tgz","fileCount":10,"integrity":"sha512-Vg9LfUt/0Ll8+gTHa8AIudl0J/S/OqzbQQPe1bnip8fvp7D2vRbHbnn2KrO9sNTGL+9gKwZhlRUkr01g3LTKHg==","signatures":[{"sig":"MEQCIBbBcRdjMW1fwEriSaHqk22PzQYZnj6kU2ioz73+v98IAiBVybFO/hxWx6vwG4ecAEcDEx+Bvz3J8z8hWWMX+GgPxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76081},"type":"module","gitHead":"535f11ea95389c88e8edfc7d551ac1a597f786bc","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.1_1768498760492_0.5760516453588396","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@sysnee/pgs","version":"0.1.2","_id":"@sysnee/pgs@0.1.2","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"c3d7a9d7a115d8a6a8e0b1ff4a8cb8d3b71b0edb","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.2.tgz","fileCount":10,"integrity":"sha512-Zf3I6Us8z3zKYVGQgRmD9Y5qYJehD+3uaNHPzXDwpMxCHVSPiBy81W3oR3txP1/m13Za7eryTg2x1MGy40fx+A==","signatures":[{"sig":"MEUCIQD8DOdeTEwrigKNwO55+7Sxi5IxyyFVEADpJgrG8+hSLgIgNBxfRMTkcz4wY1eeS5QilCvVNtHELVVH3LfsRyi3e0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76003},"type":"module","gitHead":"535f11ea95389c88e8edfc7d551ac1a597f786bc","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.2_1768498813662_0.35895600541680506","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@sysnee/pgs","version":"0.1.3","_id":"@sysnee/pgs@0.1.3","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"71037fe6125f8edfeb8d3c6205e05145cf457036","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.3.tgz","fileCount":10,"integrity":"sha512-dRQRf3manesf2zotMT+OxpL4SV+b9I/J4ycGa/tUbqxRKU53BIPkFWBbFUjEk5wMufYcskb9/701JGfmBBXsbA==","signatures":[{"sig":"MEYCIQC9Cxn2SUTWTpvI7leVTv0TeNCt85Nz8KDeEvbxOGnlAwIhANQuu7DQbQdF6Aw2UFydHvjnQ7EvYoeIMkzMK0mbF+Ug","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76005},"type":"module","gitHead":"fd207a0a8f20f922fe4748a579701ffd90b003a5","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.3_1768505304083_0.4468525032093482","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@sysnee/pgs","version":"0.1.4","_id":"@sysnee/pgs@0.1.4","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"25b10a52506dec187a814a3fa5f24df91adae835","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4.tgz","fileCount":10,"integrity":"sha512-dz17QGQ4sWLMkIU3OMZGKBGAfJnyf55w5yCtsCDzfaZfEhCpdQqICOdTgQFAWmQC6nj3HP9cSklHaFb5JM07Mg==","signatures":[{"sig":"MEYCIQDuq5pfMCX3YqLWgr9P8wUZa7ocA9K4Jn/PY9n5UOQtAgIhAMIn9S/HA0LRK1ed99t/tM0NX7EB6dUpgpfzDXhlKWwN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76801},"type":"module","gitHead":"8bedabceaaa85792f3a10e3fb701d5dbdbed829f","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4_1768602905659_0.9549988982167956","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@sysnee/pgs","version":"0.1.5","_id":"@sysnee/pgs@0.1.5","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"a6f97dd578be47a59100cee2cb877a3614dbdb20","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.5.tgz","fileCount":10,"integrity":"sha512-EFLKW1BlRWmhEDVjlo3U1aGFmP3mrdt5QACNGHBXYNPJx+58Zmnizq3idH0TN2cHjVlK9HpqVFPJsvAaZMwnuQ==","signatures":[{"sig":"MEQCIA7pm0t2utLLFnwVxTZAiNIBsfLI3wjocp0xJ0lWRJH/AiBAK3Hunae5yNbjSyL1rOWTxKG0mTUqqVbRnXfb0kCjqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76801},"type":"module","gitHead":"d4408a7f63a61a4488a5d4a3b9d2e6603070680b","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.5_1768604727921_0.5128634981811135","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc1":{"name":"@sysnee/pgs","version":"0.1.4-rc1","_id":"@sysnee/pgs@0.1.4-rc1","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"472831125fa577f6e51e14c2213cfbc6b8691983","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc1.tgz","fileCount":10,"integrity":"sha512-z6DPdZFg8neqEmb50SgB+G3CWJkc/xjcHPB8eIjCcUOcAI90V9hZ2192jrWhbuS/CANiPdkpZKh3RaFqAoJzpg==","signatures":[{"sig":"MEUCIAI1z7Pqcm6icPmMVa8GdDqlVYqaPuMKihnbhgXkVn4eAiEAwqugwx8JfC3KgSaF80PUkLbjkxaAiDeWsf83J4vM7fo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77304},"type":"module","gitHead":"706d4f565c36fbdb6501509d49165e270e1d6904","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc1_1768606339586_0.5875238746925724","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc2":{"name":"@sysnee/pgs","version":"0.1.4-rc2","_id":"@sysnee/pgs@0.1.4-rc2","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"ed2e1a170dca1ae41256b761fc8ce77f0ca3b482","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc2.tgz","fileCount":10,"integrity":"sha512-G/4l3R2HgP4ke0IJfaOtK+pCiKzWogU/mODzg9Y6SWoS6yAef37VVr4wTaZ0LY1byKSWHHkkm0QUJRS5Oao+YA==","signatures":[{"sig":"MEUCIQCfUhzYi7uPZOIQ6LYIlmgAZw4oHwT+NQbXt6y8RZawwgIgCmEBTQdpDBj9aRLZ49exFeFc950XL8glLa5RtvY3Vrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77491},"type":"module","gitHead":"f783add2b5282848702a5c4a9557173b4bce990e","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc2_1768606943094_0.39649756123698787","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc3":{"name":"@sysnee/pgs","version":"0.1.4-rc3","_id":"@sysnee/pgs@0.1.4-rc3","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"2f4d1c591ca2a17d00bcf58765ce4a38e4e415af","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc3.tgz","fileCount":10,"integrity":"sha512-LhPsXTGv+XrhLK9Eq0X+vFEvgq4Hurv1eJlVhIs/UxXtS0/+u48r4MM8V3tli04PX7kS+gPP/HVxH7hMdUZKgw==","signatures":[{"sig":"MEQCIALLp+y9de8GKnLyw2x5A0FVhI/WuxIwbo3MQIOispJoAiAp0hEcb4UkXkrpykj5u5XYthDQ9fe6swxW6p4h2VhPHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77520},"type":"module","gitHead":"8ce8dd742bbc5e184fdecb7ecf5b12b215927e81","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc3_1768698465110_0.012622494887406077","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc4":{"name":"@sysnee/pgs","version":"0.1.4-rc4","_id":"@sysnee/pgs@0.1.4-rc4","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"f245610895362dbdfbb80c7da092d40ee33a4b72","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc4.tgz","fileCount":10,"integrity":"sha512-fkD1D3grApnTK2UsGQusyMrfADXNrGEA2qXfQn5K7JtbLBM6r75020sq/FKxMvClgBJK2XcxH5Wuk710yhMcTw==","signatures":[{"sig":"MEYCIQCWkyOMhtuZN/QCBXD/30PuucM5t2bffZunvBSf4RJXkAIhAKaacZRuaFzS2wsBGDeWth9EGb1IIQ5+9doUi1G2VZLg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77700},"type":"module","gitHead":"b5675370207c3a8a71ce5d5aa0b5194a9ac8a923","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc4_1768699027933_0.548440153220777","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc5":{"name":"@sysnee/pgs","version":"0.1.4-rc5","_id":"@sysnee/pgs@0.1.4-rc5","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"eeb5257c3164881e5a1126a7c85c6192dd0c218d","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc5.tgz","fileCount":10,"integrity":"sha512-qMv6GWDkvLniolIaAPutZMPiLYC1ZkzKdCnR6WM8RxDv/yGsdfclPkGvmdYMr9Ckmy9Z7cMr8LmGf+F+goXJJQ==","signatures":[{"sig":"MEQCIFM3AtDh06F2QaRoQ18fEcOfqJaC0M/hDUCD8jik7OIUAiBqZC0gbH38Q9XnJro8OhNKUeKEM5jOj9z5CIrJ52a6wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77693},"type":"module","gitHead":"b5675370207c3a8a71ce5d5aa0b5194a9ac8a923","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc5_1768699106960_0.7173595608532779","host":"s3://npm-registry-packages-npm-production"}},"0.1.4-rc6":{"name":"@sysnee/pgs","version":"0.1.4-rc6","_id":"@sysnee/pgs@0.1.4-rc6","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"1de7a3019deee0e1e07406581d6e8cc5702c0d06","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.4-rc6.tgz","fileCount":10,"integrity":"sha512-SUpC+0UTd9x4Reoi5NbzB+YQ/KzgEvqaKD4g6U2D6bJEPYKtWrAgQ/wOy3eR5Qe+KxmhFXQQt+61a8sBu/AadQ==","signatures":[{"sig":"MEUCIBhteOq7i1Iynj9Xe418/nlyKkdQ22yXkeRWSTKlZ4ZoAiEAhcfblNsPr8Fh0Qm8tde5HvvZ01IHfD+l3QQYKBBGCNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77693},"type":"module","gitHead":"6819e6f0dd4abade3e5f80f11b02c33b2cf19871","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.4-rc6_1768699230209_0.9028912898986758","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@sysnee/pgs","version":"0.1.6","_id":"@sysnee/pgs@0.1.6","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"9d4bd319ba11c9b202572553715fc73b3478666d","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.6.tgz","fileCount":10,"integrity":"sha512-Vx2LnWWw1nZNjHX0WdM3pxZ7axelPpkH45UEzPl/kSQg3NskAafTdYUDDiME0kJ4gFsTP5WGF5/HrPuLqJGe6w==","signatures":[{"sig":"MEUCIQD/nj6Z4knkglaBqIBvHFvQSf9xbS6Ka493MmiXzUixhAIgHrBV/q5p8xq4RtnJ/hHPFIQi2uPAmYJOmgNmfQ9o8nM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77689},"type":"module","gitHead":"6819e6f0dd4abade3e5f80f11b02c33b2cf19871","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.6_1768699389590_0.18666002588682695","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.1":{"name":"@sysnee/pgs","version":"0.1.7-rc.1","_id":"@sysnee/pgs@0.1.7-rc.1","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"5ec97c391fada3bf275f3c5347644fce5ad624cc","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.1.tgz","fileCount":10,"integrity":"sha512-wCdaAVKChuo86todO2U/ngxpmex9D9ew2/AnCZa4o49NXhhK+Ant6VyyMn6+Q80eb9p9Uz6VLkNdHJSdFettyQ==","signatures":[{"sig":"MEQCIBeK5IFvn+GbCaKmXjl1mUrbXbDGlFSl0PKI8ytKwqJ5AiBK09ap56h/mL8Eel+NbCOOTs9x4tXnBHPxX3IlzSBANg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77913},"type":"module","gitHead":"c2884c153307bd115581034e7657aa18dbaf2bad","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.1_1769280591360_0.200909993390203","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.2":{"name":"@sysnee/pgs","version":"0.1.7-rc.2","_id":"@sysnee/pgs@0.1.7-rc.2","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"e3ef1d55db631be7b10330040ba3685b0673d17f","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.2.tgz","fileCount":10,"integrity":"sha512-+Iggf6xmq/FgZCAgveBzozvwN0a6oKuWxNN9wDM6ucVFKjI0FMXN9SJXQo3YmRCS644qNDSSz+V+pHhKe8JWxg==","signatures":[{"sig":"MEUCIAYgbhKtsik/lHSCeZt91sn4VOZlnW8CxhC/eHXMqfOgAiEAkXGVQipbZaqr4vRSXCNhDoRfg3XOCISjHfc+uism2lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78380},"type":"module","gitHead":"a213732aad7c1f60741b1f810454b40e05f49e53","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.2_1769281979927_0.39500413249205035","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.3":{"name":"@sysnee/pgs","version":"0.1.7-rc.3","_id":"@sysnee/pgs@0.1.7-rc.3","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"af1a953d471a5047162d04061538fc9789e4dd0b","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.3.tgz","fileCount":10,"integrity":"sha512-ZfN2x5jzaHzM9eTO0n+Rczf5j2pqRHjB6PGGkMiyJ48kMdmoVEc13n6K5+U+1mIdlV5BaaMdh9QKJJAtIb6bVA==","signatures":[{"sig":"MEYCIQDDXuRy7tAjC+DFbJAZgatYLUjsMYLZKOTSA5E6PRHjNgIhAM+20Q0IFuSy2j1XfQ+Rpoa9O+rFyaludjPk0OVJakXG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75177},"type":"module","gitHead":"63e33df9de9353297ea86a6443180be58888d8c3","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.3_1769288982175_0.3185064241512783","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.4":{"name":"@sysnee/pgs","version":"0.1.7-rc.4","_id":"@sysnee/pgs@0.1.7-rc.4","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"e2b5949815fe88087b44b6a33765de701a8e0cb8","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.4.tgz","fileCount":9,"integrity":"sha512-4rGm+ORr8kMXBpP2aW/DVUBQjkonOm0+PPHVcbb97bbCQdaRVVLcAxyzpesnuE2X5/ZhmG0Y2VWn9H8Z+2umfQ==","signatures":[{"sig":"MEUCIQC7YwaPPGnRpKJXWZrePBym0qf3NiWc1s5icH1AopEb3wIgMVKcCYD+NQW6KykLqMExebB025Rb4HIL+KuI2DPeQrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73082},"type":"module","gitHead":"c225a30f5890ded4dc6c788076d342234d698f94","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.4_1769292900485_0.28991976639906847","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.5":{"name":"@sysnee/pgs","version":"0.1.7-rc.5","_id":"@sysnee/pgs@0.1.7-rc.5","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"d5f0ba91592a862c6aba1ebf88ee9398a20ac3f9","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.5.tgz","fileCount":9,"integrity":"sha512-fDTuX146gAM8B82ZKJNgtvz0j8LPuLjnq9NWsp8WBIhPSHXcIiK5V7157elASMxGnq8vShhZYIPzqlXdWWGMVA==","signatures":[{"sig":"MEYCIQCQzV/GsFGchW9/VRPqWaThhAHCeOitm2UHnQ8VP0/L5AIhAPQT4mj+QONGFhlx6nyOdb/HpeFHeqrzUR+ZH5LwoduE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73082},"type":"module","gitHead":"8a02bc6d1dcc8f0aa17d4735aaaa7441357b553d","scripts":{"list":"node manager.js list","stop":"node manager.js stop","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access","reload-haproxy":"node manager.js reload-haproxy"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.5_1769293559147_0.1958009012295434","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.6":{"name":"@sysnee/pgs","version":"0.1.7-rc.6","_id":"@sysnee/pgs@0.1.7-rc.6","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"1aedfd0130f6ea8addc8487958e7f6e5d8473dac","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.6.tgz","fileCount":9,"integrity":"sha512-AbCAmSqbt2o20WvCmj8Th7rcs/x1dcKJhYvWWToDsguNIAtEMG3GRhCz7+b1nbBo/Ky0FFUhSz+1xquNFldInA==","signatures":[{"sig":"MEUCIBgydEokao62CI/MN8OC//Rf6c4qM9ZPUwpi0TC9i0OuAiEA+2bEgU0tUdZTHdG0eswXTc+hKrUBgn+VwkmLNY0hcIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75997},"type":"module","gitHead":"93bc45a7aa27caa5b6c1f344c111f2670e96e94c","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.6_1769948347779_0.7074593971957723","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.7":{"name":"@sysnee/pgs","version":"0.1.7-rc.7","_id":"@sysnee/pgs@0.1.7-rc.7","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"4f8863f64279af669020fa1165b03853bb9adb62","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.7.tgz","fileCount":9,"integrity":"sha512-KX045HmSf2v+HdbUysRWeNlWAn/hXrh384yXUx5QAYJ2kzb+D/jufA4yR2HH8u066BjJLaRU1pRfiwM2BfsQEQ==","signatures":[{"sig":"MEQCIA6yvHcbhVGD3KNjXziNyzSn/O/kH2z4exAh1dPrDYAVAiAY74kKTyTl5+fyV7nQWhMRA/DHngYgVNwS4deER9NJlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76476},"type":"module","gitHead":"ecd1425767fb586927c075706ff0bfcac589182c","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.7_1772767627584_0.22665830041395285","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.8":{"name":"@sysnee/pgs","version":"0.1.7-rc.8","_id":"@sysnee/pgs@0.1.7-rc.8","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"899c48a2963c14bd32bb39d1b6f61226f2bde29d","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.8.tgz","fileCount":9,"integrity":"sha512-mL51F24IjdhOvktrjo+lTGLPj+d+AJksVf5FU7ryM2mIw51Dw9glcojAtdmiI0XgbJ5DqZayne02oYWDamSk5w==","signatures":[{"sig":"MEYCIQCYJfmCLnQ9kUPF9oE3EcZK8J1W50umJQffGXWtkqufYgIhALghnJy7Df3xEoiBSSX/bx94VqFFGEqZ52quMlKfa6Pp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76633},"type":"module","gitHead":"feae80eaa7802a9fa21a162956ead2031723edde","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.8_1772801823753_0.8785564403170503","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.9":{"name":"@sysnee/pgs","version":"0.1.7-rc.9","_id":"@sysnee/pgs@0.1.7-rc.9","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"aa1f628eec6acaef0697e02cf02e5106c7ece601","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.9.tgz","fileCount":9,"integrity":"sha512-booE/nWDU7/dPjimVjR5Dm9NNWE1pTCy6ckY8F2GaTYIqCpSbfMfi1kYGg3HcuJrwcqfXuwFt+v/B+oO1i1ZxQ==","signatures":[{"sig":"MEUCIA5x+QCkGdbONk1kI1WPhspaP+ZtiP6P8gMMG4dsOj6OAiEAiABAaiHxzpG1HT8NguU56D+STFd9B/iZgMMCQUiT8SI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76621},"type":"module","gitHead":"feae80eaa7802a9fa21a162956ead2031723edde","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.9_1772801996704_0.19950703135104852","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.10":{"name":"@sysnee/pgs","version":"0.1.7-rc.10","_id":"@sysnee/pgs@0.1.7-rc.10","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"2ed8c787d4af5948a5e00566b205bb83088f9f97","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.10.tgz","fileCount":9,"integrity":"sha512-h4XbzzMtS/IB9p2A/zD4Er/J0SLmibuQT99ME+eguJKkTzW0gdHHXJZpyAjFsSHmO3D71jdn0jeiwrZnSoqmuQ==","signatures":[{"sig":"MEQCIGiet/Gvv4EvNwkkM6n79/NT49MwWD8Q561UmzlPTbl5AiAc+OsY/hOE7VyGZaVzGDuMSPrss3rnruxDUtvHM3SfZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76622},"type":"module","gitHead":"1502b7393a80b73dec1db1de97b513c52319dcdd","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.10_1772802177039_0.8945955901977123","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.11":{"name":"@sysnee/pgs","version":"0.1.7-rc.11","_id":"@sysnee/pgs@0.1.7-rc.11","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"f1ce9e2b6d148c550db34dd0d5b36a61dce14e03","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.11.tgz","fileCount":9,"integrity":"sha512-t79ws8Bkj53uFF2ff+3RSHp+PHQczyXG4Jh2zKSVw023UYYgqIy6wz4fPPiEm84v1Xj+IDz667NBdMgH6kgQUw==","signatures":[{"sig":"MEYCIQC7EMoCHZv10ek04D3N75CuFG7WqGUbeYg1UTjgOj/rqwIhAONo+DCGTCEPdHsE214jI6OBvTi0kcXmDFiWEV7xKM1W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76593},"type":"module","gitHead":"1502b7393a80b73dec1db1de97b513c52319dcdd","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.11_1772803598135_0.5001925994371732","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.12":{"name":"@sysnee/pgs","version":"0.1.7-rc.12","_id":"@sysnee/pgs@0.1.7-rc.12","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"2cac7a73686439727a5c93b55dc4072d19d7a91d","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.12.tgz","fileCount":10,"integrity":"sha512-KPzau5SnBc0fknw4YMCLYpYsODeQjGS6q0yJ5xMjP9Fy9HcmMFTOPWH8lyJPl/sQdklIraT0q8IXfsZ7WkDkfw==","signatures":[{"sig":"MEQCIGxLoipJ7d0iR1xqddPdnKWJ6NJtc3VxqTr9wrAYOyj9AiA9oSGnhETYeWFq1TUofaR3bG5YSXUJZyGXfbEq5K44wQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92507},"type":"module","gitHead":"024fdbd0c4a67f3151d1e15f29ebfecd6c085ea5","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.12_1778552022855_0.5702227544705172","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.13":{"name":"@sysnee/pgs","version":"0.1.7-rc.13","_id":"@sysnee/pgs@0.1.7-rc.13","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"2c73ff6b98e19d62f1ce4664469c8895eaaaf863","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.13.tgz","fileCount":10,"integrity":"sha512-7gIEYHqXLbWrJ+uzwKC33evh0xwAUBz9S/gUnq4SuEdAYA2dprso9C/h21gg9EEQDIdB0Dpek9gM5+0uPpv//w==","signatures":[{"sig":"MEUCIQCaX1NU1WrFYZqiO4X2GHELUmkyUR6x+L3o5audTIWj3wIgYSakvDE8x9ci42BjfGx5dPbq7rN0Gh0Nn9IQm0t4X0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92433},"type":"module","gitHead":"69ede89132599312d2f22143908b62a6e8ba3de7","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.13_1778553975208_0.8084920083407385","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.14":{"name":"@sysnee/pgs","version":"0.1.7-rc.14","_id":"@sysnee/pgs@0.1.7-rc.14","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"dfe757bea642509c85a1b6ab5b35ef49e9ca4aa6","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.14.tgz","fileCount":10,"integrity":"sha512-g2SNk0/AgCUQxKeIoLK/SQD5RQeSRwMTsNlAHiDiJhNzxpMyR3LkqGB71L3elRcQBGTdRACmIsT/EMiylHnHpg==","signatures":[{"sig":"MEYCIQCehOrRSnL11ONpqFGrtdsxE2XV9Nly9/D4H62wNNDH1AIhAJCpvvWxub1f+Ul7a4vkq8yXaSm0ReNtpqhdNgvzdGAr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92713},"type":"module","gitHead":"09d8870c24bade3caf84e1c099a072df387d9180","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.14_1778555348104_0.38055173404557796","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.15":{"name":"@sysnee/pgs","version":"0.1.7-rc.15","_id":"@sysnee/pgs@0.1.7-rc.15","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"8c171fa09c33207cf28f6e68b7529f9a5ce717bc","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.15.tgz","fileCount":10,"integrity":"sha512-d90n5SHNJBQxWURa1qGJGRg8v5K+8KN0dCV/MwIEfzJGFkFUmtgY8wrTE8kur6pbaqCcY9Xf5tqjXlxj06OdRw==","signatures":[{"sig":"MEQCIFVPNUQlpAY+GRZ2kxh92hI2xXxJNeHdIqOiU77GIKeoAiApT2d4n6Geswb1/D1GLKaA8WL5Fhu5R41AgwGOivkRsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97821},"type":"module","gitHead":"5646bcae2220f6a3b67bc71b8d00ba54527dc9fb","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.15_1783988199799_0.5158735113926012","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.15.0.1":{"name":"@sysnee/pgs","version":"0.1.7-rc.15.0.1","_id":"@sysnee/pgs@0.1.7-rc.15.0.1","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"bin":{"pgs":"manager.js"},"dist":{"shasum":"4b61a239d482b6003d263e8dcbeaa321bdc4c09b","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.15.0.1.tgz","fileCount":10,"integrity":"sha512-9WIcPKQC1664JqE+cpA/jE1/0n1U6wyabGQJmp7mzCx6lKfh+ermQ6TprhxMuzM+u9dElY4l+Ar0/JP6mFU+KA==","signatures":[{"sig":"MEQCIGUJqu2tf0n+e+3ahDx3kCq2VxancJOo1X1iYTqI8OyBAiAbF47JALcBA6OTuP1kcO4kGPFaj2lRqa/C2GfObqpvKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97981},"type":"module","gitHead":"2ac6ae1005486d0ed0cbe7a9ee85186b6fc2bf9e","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.9.3","description":"Dynamic PostgreSQL service instance manager","directories":{},"_nodeVersion":"22.20.0","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pgs_0.1.7-rc.15.0.1_1783989343769_0.07657933687117091","host":"s3://npm-registry-packages-npm-production"}},"0.1.7-rc.15.0.2":{"_id":"@sysnee/pgs@0.1.7-rc.15.0.2","bin":{"pgs":"manager.js"},"dist":{"shasum":"7605bf750ab85cda11ad7ce74190088da7b1b2ab","tarball":"https://registry.npmjs.org/@sysnee/pgs/-/pgs-0.1.7-rc.15.0.2.tgz","fileCount":10,"integrity":"sha512-63acNxubVAup/wwBG0rVe77IWmwhvACI6SfjdeNDkd7Y0+Yh9ZUBEhXLXtAvch4p+3eB8I2CRlahiJZ+sFutoA==","signatures":[{"sig":"MEUCIGlbaQ32cXbHlDCeaQ4rI54q4xwfwg2gZlFHz4IFBi20AiEAuIRNQDswTYacqsfzYulvyEmjuNxDfIN9E6N0rJJOy8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDjLBIonkqDwt9P9hQ8Eidtcs69Xel9dP8pYDvKa7MjewIgQHf96B25H0ZSudEEJY0n9xLrwVoF+GF8N6IJ8KTz0ck="}],"unpackedSize":105310},"name":"@sysnee/pgs","type":"module","gitHead":"78b3b887c7ccb80f23770f1cede7a72b01a155a4","scripts":{"list":"node manager.js list","stop":"node manager.js stop","setup":"node manager.js setup","start":"node manager.js start","create":"node manager.js create","remove":"node manager.js remove","enable-access":"node manager.js enable-access","disable-access":"node manager.js disable-access"},"version":"0.1.7-rc.15.0.2","_npmUser":{"name":"sysnee","email":"vilmacio@sysnee.com"},"_npmVersion":"10.8.2","description":"Dynamic PostgreSQL service instance manager","directories":{},"maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"_nodeVersion":"20.20.2","dependencies":{"js-yaml":"^4.1.0","commander":"^11.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pgs_0.1.7-rc.15.0.2_1789842576160_0.1979101610598415"}}},"time":{"created":"2026-01-15T17:36:21.151Z","modified":"2026-09-19T18:29:36.383Z","0.1.0":"2026-01-15T17:36:21.417Z","0.1.1":"2026-01-15T17:39:20.676Z","0.1.2":"2026-01-15T17:40:13.820Z","0.1.3":"2026-01-15T19:28:24.226Z","0.1.4":"2026-01-16T22:35:05.829Z","0.1.5":"2026-01-16T23:05:28.072Z","0.1.4-rc1":"2026-01-16T23:32:19.745Z","0.1.4-rc2":"2026-01-16T23:42:23.264Z","0.1.4-rc3":"2026-01-18T01:07:45.263Z","0.1.4-rc4":"2026-01-18T01:17:08.096Z","0.1.4-rc5":"2026-01-18T01:18:27.123Z","0.1.4-rc6":"2026-01-18T01:20:30.360Z","0.1.6":"2026-01-18T01:23:09.742Z","0.1.7-rc.1":"2026-01-24T18:49:51.756Z","0.1.7-rc.2":"2026-01-24T19:13:00.078Z","0.1.7-rc.3":"2026-01-24T21:09:42.313Z","0.1.7-rc.4":"2026-01-24T22:15:00.628Z","0.1.7-rc.5":"2026-01-24T22:25:59.309Z","0.1.7-rc.6":"2026-02-01T12:19:07.924Z","0.1.7-rc.7":"2026-03-06T03:27:07.722Z","0.1.7-rc.8":"2026-03-06T12:57:03.917Z","0.1.7-rc.9":"2026-03-06T12:59:56.883Z","0.1.7-rc.10":"2026-03-06T13:02:57.188Z","0.1.7-rc.11":"2026-03-06T13:26:38.295Z","0.1.7-rc.12":"2026-05-12T02:13:43.001Z","0.1.7-rc.13":"2026-05-12T02:46:15.356Z","0.1.7-rc.14":"2026-05-12T03:09:08.252Z","0.1.7-rc.15":"2026-07-14T00:16:39.961Z","0.1.7-rc.15.0.1":"2026-07-14T00:35:43.922Z","0.1.7-rc.15.0.2":"2026-09-19T18:29:36.252Z"},"description":"Dynamic PostgreSQL service instance manager","maintainers":[{"name":"sysnee","email":"vilmacio@sysnee.com"}],"readme":"# PostgreSQL Multi-Tenant Instance Manager\n\nDynamic PostgreSQL multi-tenant management system providing complete database isolation by creating dedicated PostgreSQL instances per tenant, with intelligent SNI-based routing via Traefik v3.\n\n> 📖 **For detailed project definition, architecture, and comparison with similar solutions, see [docs/PROJECT.md](./docs/PROJECT.md)**\n\n## Quick Start\n\n### Initial Setup\n\n```bash\npgs setup --region br-sp-1\n```\n\nThe region identifies the host and is what every tenant hostname is derived from\n(`<tenant-id>.pgs.<region>.sysnee.com`). It is **not** hardcoded in the CLI: `setup`\npersists it on the host and prompts for it when `--region` is omitted. The `sysnee.com`\nbase domain is the default; `--base-domain` sets a different one for the host:\n\n```bash\npgs setup --region br-sp-1 --base-domain example.com\n```\n\nThis creates the configuration directory at `~/.sysnee-config/` with:\n- `config.json` - Host configuration (region, base domain)\n- `docker-compose.yml` - Container orchestration\n- `traefik.yml` - Traefik static configuration\n- `dynamic.yml` - Traefik dynamic routing configuration\n- `tenant-access.json` - Access control\n- `certs/` - SSL certificates directory\n\n### Region and domain\n\n```bash\npgs region                    # show the region and domain of this host\npgs region set br-sp-1        # set the region of this host\n\npgs domain                    # show the domain and where each part comes from\npgs domain set example.com    # set the base domain of this host\npgs domain reset              # drop it and fall back to sysnee.com\n```\n\nEvery tenant hostname is `<tenant-id>.pgs.<region>.<base-domain>`. The region has no\ndefault and must be set; the base domain defaults to `sysnee.com`, so a normal host\nneeds nothing. Both are persisted in `~/.sysnee-config/config.json` and resolved in\nthis order:\n\n| Source | Purpose |\n|---|---|\n| `PGS_DOMAIN` env var | Full domain override, for local dev (e.g. `pgs.local`); bypasses the region and the base domain |\n| `PGS_REGION` env var | Overrides the persisted region |\n| `~/.sysnee-config/config.json` | The region persisted on this host by `pgs setup` or `pgs region set` |\n| `PGS_BASE_DOMAIN` env var | Overrides the persisted base domain |\n| `~/.sysnee-config/config.json` | The base domain persisted on this host by `pgs domain set` |\n| `sysnee.com` | Default base domain when none of the above is set |\n\n`pgs domain` prints which source is in effect for each part, which is the quick way to\ncatch a host that has silently fallen back to the default.\n\nChanging the region or the base domain on a host that already has tenants does not\nrewrite their Traefik routes or certificates — reissue the wildcard cert for the new\ndomain (`pgs setup`) and re-run `pgs enable-access <tenant-id>` for each tenant. Tenant\nconnection strings change with it.\n\n### SSL Certificate Setup\n\nPlace your wildcard SSL certificate in the certs directory:\n\n```bash\n# Using Let's Encrypt\nsudo cp /etc/letsencrypt/live/pgs.YOUR-DOMAIN.com/fullchain.pem ~/.sysnee-config/certs/\nsudo cp /etc/letsencrypt/live/pgs.YOUR-DOMAIN.com/privkey.pem ~/.sysnee-config/certs/\nsudo chown $USER:$USER ~/.sysnee-config/certs/*\n```\n\n### DNS Configuration\n\nAdd a wildcard DNS record pointing to your server:\n\n```\n*.pgs.YOUR-DOMAIN.com → YOUR_SERVER_IP\n```\n\n## Usage\n\n### Create a new tenant instance\n\n```bash\npgs create <tenant-id> [--password <password>]\n```\n\nExample:\n```bash\npgs create tenant1\npgs create tenant2 --password mycustompass\n```\n\nNew tenants are created with external access **enabled** by default.\n\n### List all tenants\n\n```bash\npgs list\n```\n\nShows all tenants with their hostnames and external access status.\n\n### Remove a tenant\n\n```bash\npgs remove <tenant-id>\n```\n\n### Start services\n\n```bash\npgs start                 # Start all services (including Traefik)\npgs start <tenant-id>     # Start specific tenant\n```\n\n### Stop services\n\n```bash\npgs stop                  # Stop all services\npgs stop <tenant-id>      # Stop specific tenant\n```\n\n### Access Control\n\n```bash\npgs enable-access <tenant-id>   # Enable external access\npgs disable-access <tenant-id>  # Disable external access\n```\n\n## How it works\n\n- **Traefik v3** listens on port 5432 with TLS/SSL enabled\n- Routes connections based on **SNI (Server Name Indication)** hostname\n- Each tenant connects using their unique hostname (e.g., `tenant1-abc123.pgs.domain.com`)\n- External access is controlled via `tenant-access.json`\n- Tenants are isolated in their own PostgreSQL containers on a Docker bridge network\n- Only Traefik has external port mapping; PostgreSQL containers are internal only\n\n## Connection\n\nAfter creating a tenant:\n\n```bash\n# Using psql\npsql \"postgresql://postgres:PASSWORD@TENANT-ID.pgs.YOUR-DOMAIN.com:5432/DATABASE?sslmode=require\"\n\n# Example\npsql \"postgresql://postgres:mypass@tenant1-abc123.pgs.us-central-1.sysnee.com:5432/tenant1-abc123?sslmode=require\"\n```\n\n### DBeaver / GUI Clients\n\n1. **Host**: `tenant-id.pgs.your-domain.com`\n2. **Port**: `5432`\n3. **Database**: `tenant-id`\n4. **Username**: `postgres`\n5. **Password**: (your password)\n6. **SSL**: Enable SSL, set mode to `require`\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                       External Access                            │\n│           (tenant-id.pgs.domain.com:5432 + TLS/SNI)             │\n└───────────────────────────┬─────────────────────────────────────┘\n                            │\n                            ▼\n┌─────────────────────────────────────────────────────────────────┐\n│                      Traefik v3 Proxy                            │\n│  ┌───────────────────────────────────────────────────────────┐  │\n│  │  EntryPoint: postgres (port 5432)                         │  │\n│  │  - TLS termination with wildcard certificate              │  │\n│  │  - PostgreSQL STARTTLS protocol support                   │  │\n│  │  - SNI-based routing (HostSNI rule)                       │  │\n│  │  - Dynamic configuration via dynamic.yml                  │  │\n│  └───────────────────────────────────────────────────────────┘  │\n└───────────────────────────┬─────────────────────────────────────┘\n                            │\n         ┌──────────────────┼──────────────────┐\n         │                  │                  │\n         ▼                  ▼                  ▼\n┌──────────────┐   ┌──────────────┐   ┌──────────────┐\n│  TCP Router  │   │  TCP Router  │   │  TCP Router  │\n│  tenant1     │   │  tenant2     │   │  tenant3     │\n│  HostSNI()   │   │  HostSNI()   │   │  HostSNI()   │\n└──────┬───────┘   └──────┬───────┘   └──────┬───────┘\n       │                  │                  │\n       ▼                  ▼                  ▼\n┌──────────────┐   ┌──────────────┐   ┌──────────────┐\n│ PostgreSQL   │   │ PostgreSQL   │   │ PostgreSQL   │\n│ Container 1  │   │ Container 2  │   │ Container 3  │\n│              │   │              │   │              │\n│ Port: 5432   │   │ Port: 5432   │   │ Port: 5432   │\n│ (internal)   │   │ (internal)   │   │ (internal)   │\n│              │   │              │   │              │\n│ Volume:      │   │ Volume:      │   │ Volume:      │\n│ pgdata_1     │   │ pgdata_2     │   │ pgdata_3     │\n└──────────────┘   └──────────────┘   └──────────────┘\n```\n\n## Technical Implementation\n\n### Components\n\n1. **Manager Script (manager.js)**\n   - Node.js CLI tool for tenant lifecycle management\n   - Dynamically generates docker-compose.yml entries\n   - Manages Traefik dynamic configuration\n   - Controls tenant access permissions\n\n2. **Traefik v3 Reverse Proxy**\n   - TCP-level routing with TLS termination\n   - Native PostgreSQL STARTTLS protocol support\n   - SNI-based tenant routing\n   - Dynamic configuration without restarts\n\n3. **Docker Infrastructure**\n   - Separate container per tenant\n   - Bridge network for internal communication\n   - Persistent volumes for data\n   - Isolated execution environments\n\n### Connection Flow\n\n1. Client connects to `tenant-id.pgs.domain.com:5432` with `sslmode=require`\n2. Traefik receives connection and initiates PostgreSQL STARTTLS handshake\n3. Client sends TLS ClientHello with SNI (hostname)\n4. Traefik extracts SNI and matches against configured routers\n5. If tenant has access enabled, routes to backend `pgs_{tenant_id}:5432`\n6. Connection established with complete isolation\n\n### Why Traefik v3?\n\nPostgreSQL uses a non-standard TLS negotiation (STARTTLS):\n1. Client sends PostgreSQL SSLRequest packet\n2. Server responds 'S' (SSL supported)\n3. Client sends TLS ClientHello with SNI\n4. TLS handshake completes\n\n**Traefik v3** is one of the few proxies that natively understands this PostgreSQL-specific flow, allowing SNI-based routing for PostgreSQL connections.\n\n## Comparison with Similar Solutions\n\n### Shared Database Architecture\n\n**Traditional Multi-Tenant PostgreSQL:**\n- Single PostgreSQL instance\n- Multiple databases/schemas per instance\n- Shared processes and memory\n- Risk of cross-tenant data access\n\n**This Solution:**\n- Multiple PostgreSQL instances\n- One instance per tenant\n- Complete process isolation\n- Zero risk of cross-tenant access\n\n### Similar Open Source Solutions\n\n| Solution | Purpose | Difference |\n|----------|---------|------------|\n| **PgBouncer** | Connection pooling | Pools to single instance; this creates separate instances |\n| **Citus** | Distributed PostgreSQL | Shards data; this isolates tenants completely |\n| **Patroni** | High availability | Replicates single DB; this creates isolated instances |\n| **RLS** | Row-level security | Logic-based separation; this uses infrastructure isolation |\n\n### Unique Aspects\n\n1. **Instance-per-tenant** - Complete process and memory isolation\n2. **SNI-based routing** - Single port, automatic hostname-based routing\n3. **TLS by default** - Secure connections required\n4. **Dynamic provisioning** - Create tenants on-demand via CLI\n5. **Docker-native** - Simple deployment and resource limits per tenant\n\n## Use Cases\n\n### Ideal For\n\n- **SaaS Applications** requiring strict tenant data isolation\n- **Healthcare/Finance** applications with compliance requirements\n- **Multi-tenant platforms** needing independent scaling\n- **Development/Testing** environments with isolated databases\n\n### Not Ideal For\n\n- Thousands of tenants (resource overhead)\n- Simple multi-tenant applications without strict isolation needs\n- Environments requiring minimal resource usage\n\n## Technology Stack\n\n- **Runtime**: Node.js (ES Modules)\n- **Container Orchestration**: Docker Compose\n- **Reverse Proxy**: Traefik v3 (PostgreSQL STARTTLS + SNI routing)\n- **Database**: PostgreSQL 18+\n- **TLS**: Wildcard SSL certificate\n- **Configuration**: YAML (docker-compose.yml, traefik.yml, dynamic.yml), JSON (tenant-access.json)\n\n## Requirements\n\n- Docker & Docker Compose\n- Node.js 18+\n- Wildcard SSL certificate for your domain\n- Wildcard DNS record pointing to your server\n\n## Future Enhancements\n\n- [ ] Health checks and automatic failover\n- [ ] Backup/restore automation per tenant\n- [ ] Monitoring and metrics collection\n- [ ] Tenant migration tools\n- [ ] Kubernetes support\n- [ ] Connection pooling per tenant\n- [ ] Web dashboard\n\n## License & Status\n\nThis is a custom solution built for specific multi-tenant requirements. It combines open-source tools (Traefik, PostgreSQL, Docker) with SNI-based routing to achieve instance-per-tenant isolation with intelligent connection routing.\n","readmeFilename":"README.md"}