{"_id":"tunli","_rev":"60-8eaf295348e1d638c781d4c1fdeb6499","name":"tunli","dist-tags":{"latest":"0.8.3"},"versions":{"0.0.19":{"name":"tunli","version":"0.0.19","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.19","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"458026b5b185011f2e683c8c3b0a5a21c23c19a6","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.19.tgz","fileCount":63,"integrity":"sha512-I3beeilpqZnkn41TYjq20wOUBhzUcbrYUwmAGDwO0qVLyF3jGh8OOHhz57u3JHHrXXbLjhck63mKXwqFK+Nz/A==","signatures":[{"sig":"MEYCIQDig8Cs9a8gTvqLUz8/o1HEtIFdFrxRbeQ7D5AnSFCitQIhAOJgXVyYz8EkEgEt7iOanLJocI/MfkGiI9CXeorPGwyP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136229},"main":"bin/tunli","type":"module","gitHead":"586e31974e398bce6d198914b8d6bf4026dcdb52","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.19_1717708127649_0.14842961180359837","host":"s3://npm-registry-packages"}},"0.0.20":{"name":"tunli","version":"0.0.20","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.20","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"d27c8168d029f2ee60a284004b9c4083a18cd83e","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.20.tgz","fileCount":63,"integrity":"sha512-TXJPUzPuRVBKvCg7sRnnw1BLbXcfnL9UiOkTZp31BN3Zha6l8YyunFLwWgJG0byX8NzIU4ndfyG2pII/LqhDGA==","signatures":[{"sig":"MEUCIQC+1XBJI2j/rsDEuHJiKcIL24RB4se8A4vpQg6l23ZEDgIgepHlxr5zwpoHMHwHbenlR73C9Zmfc7OxvW+sDlwAGgY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136413},"main":"bin/tunli","type":"module","gitHead":"10e82b48aab6f8f8f6c978fa3ef621ab9f98293c","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.20_1717708890723_0.5472120212455147","host":"s3://npm-registry-packages"}},"0.0.21":{"name":"tunli","version":"0.0.21","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.21","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"55333fa6a6000de4e6838192cab8c1c3660a5b95","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.21.tgz","fileCount":65,"integrity":"sha512-sK2hVi8ELW6uHiD3txTPWA5FQIuXIz/tm2KSVH2EjLCDF2DBuv4oJiBKsNgr/IQy693cg+WvVtgK1Yq/PKuc3g==","signatures":[{"sig":"MEYCIQCvDmJmc25Lh7v7BVatNaFZuHSv6MwA2yjoIi5K24WOXgIhAPE5ZCRoykimlPS0miSgy/MQRvcKjC+dIlE0JOnvVWVZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140163},"main":"bin/tunli","type":"module","gitHead":"c6bab48924673be1193405a63d22fdc04f892dc1","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.21_1717713692288_0.06030495294218796","host":"s3://npm-registry-packages"}},"0.0.22":{"name":"tunli","version":"0.0.22","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.22","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"c555bba6ddd993feffbce2a58cc0032e830f7ec7","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.22.tgz","fileCount":66,"integrity":"sha512-J0wYaboBSQDHO/AFfLmuQPc3Xu8LVdYhYfvRnDOcyRTb54c+u+3IEkev9mxWdS74rEBJM+CD1Vmba1VNi3FtzA==","signatures":[{"sig":"MEUCIEMj6RiWuOqee4iboYrejiYYG4UPO46vRbMR9D0KIU6SAiEA41UZI/Cd7myh0w9tKbINt8UZVmQMtfOGOj+xvqSsDac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142857},"main":"bin/tunli","type":"module","gitHead":"79d199d3329fb858b3a9097968ca789a13876509","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.22_1717747342150_0.598422254022887","host":"s3://npm-registry-packages"}},"0.0.23":{"name":"tunli","version":"0.0.23","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.23","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"28f3fe9cee69f4a1166fb2276887cd828a572890","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.23.tgz","fileCount":66,"integrity":"sha512-IoRxTYL5Dbwf4SDzaJbnkMJMH7JkeP9Amgtub8G90uL2lz99oWRiWwej7zrzG8TMYoz2W0jimqKignce7ASvpA==","signatures":[{"sig":"MEQCIEMl2Ic4UHFJHyNOsHs29vX8kJNJXOgOUPs68aaDmX8rAiAIZbcrEMvlW+SvAEPxvKEpkYluCxWFfLajrvkUmugpuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142991},"main":"bin/tunli","type":"module","gitHead":"79d199d3329fb858b3a9097968ca789a13876509","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.23_1717771026144_0.9858109879954917","host":"s3://npm-registry-packages"}},"0.0.24":{"name":"tunli","version":"0.0.24","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.24","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"694e0c808a223a4a9833e8e9575d98e8620b979f","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.24.tgz","fileCount":66,"integrity":"sha512-KZYsPm/yYIjJfsp0AbwpCqM1ZIP0yv8pwB4gLlx+u6u/r/93hZAUohITqV6xovhaLn+/KIIygg4+RIsMpQT0/w==","signatures":[{"sig":"MEQCIFZ4hy3XfXjcZ/v8+sGlBdT5gyoN5hc+NYboxDIqRP9FAiBXez1dMgTRCq7OsPYA3kXDi12gErhlZwq9K34mzJwayw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143030},"main":"bin/tunli","type":"module","engines":{"node":">=18"},"gitHead":"79d199d3329fb858b3a9097968ca789a13876509","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.2.3","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5","https-proxy-agent":"^7.0.4"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.24_1717773071282_0.42702573564631874","host":"s3://npm-registry-packages"}},"0.0.25":{"name":"tunli","version":"0.0.25","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.25","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"68b4063adc27f3efdb8f45be57bb7e453c7b644e","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.25.tgz","fileCount":67,"integrity":"sha512-LPUXHy1gCQ7fi+k9uYb/+/ZtQasqhiVXvViqs97X5XUejR5ypQPXSJUGEihNeyJ3nbK7STEIVKWXl6kRDopHAQ==","signatures":[{"sig":"MEQCIHjA7RXRZEM7FcFKApoPhNe1DidK5hheGv6+p4KsFNWUAiAGy17u9AA36zPXnz2uDaQNbuneMnYx9fCxRfYyJGGS+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147318},"main":"bin/tunli","type":"module","engines":{"node":">=18"},"gitHead":"abcc55ed180d137baccaa8555d3daa5d590f717e","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.8.1","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"22.0.0","dependencies":{"axios":"^1.7.2","chalk":"^5.3.0","blessed":"^0.1.81","commander":"^12.1.0","socket.io-client":"^4.7.5"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.3"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.25_1718608612038_0.6893149573078312","host":"s3://npm-registry-packages"}},"0.0.26":{"name":"tunli","version":"0.0.26","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.26","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"8327cb812bacd0265785f7ed886efa1df36504cf","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.26.tgz","fileCount":67,"integrity":"sha512-RR7pusEciGDIp/fr2I95K7zizevGBYvfzauOHIMoiWd4rr3lW8WChXE4i7aT6xzeyh6ySSBpmFURgmR4Z/J8nA==","signatures":[{"sig":"MEUCIQCCu+hNfv0YabzxfBL6Mw2nliJKE/u+x++hrfLbw97bGAIgB7bQpc/UzQDZ2x4jmoewBXwW4SmCO8ACgnpBPvSvrpc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148507},"main":"bin/tunli","type":"module","engines":{"node":">=18"},"gitHead":"c936eead4747ea28a8f3cce516e4f5a44d99144d","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"23.5.0","dependencies":{"axios":"^1.11.0","chalk":"^5.5.0","blessed":"^0.1.81","commander":"^14.0.0","socket.io-client":"^4.8.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.10"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.26_1754892099896_0.28315358592839557","host":"s3://npm-registry-packages-npm-production"}},"0.0.27":{"name":"tunli","version":"0.0.27","keywords":["HTTP tunnel","reverse proxy","remote access","local development","Node.js"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.0.27","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"d0af035f93b11ac1f6c4b9faad5db225dcb30f7a","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.0.27.tgz","fileCount":68,"integrity":"sha512-mnfuN+NZgsr7yMAYXbuWNCDUwNGnZN8SbomfMGt9edpKiEksns/Q4wJZiDmFoU6r3a0rWQkYxg+538bjCW8uEw==","signatures":[{"sig":"MEYCIQDT+Bjvm0Ep2WzfE7TyTc8nNMZx8tcorZcRLVo4ejvqggIhANPLJ0pbQKuL6/x3iu9MTbcQWIAKgALOykCwHCpYdK5x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":150655},"main":"bin/tunli","type":"module","engines":{"node":">=18"},"gitHead":"c8ed33b8684f629b2bd711b5030a92703f8f01b8","imports":{"#lib/*":"./src/lib/*.js","#src/*":"./src/*.js","#commands/*":"./src/commands/*.js"},"scripts":{"dev":"nodemon client.js"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js application for creating HTTP tunnels to make local software projects accessible over the internet.","directories":{},"_nodeVersion":"23.5.0","dependencies":{"axios":"^1.11.0","chalk":"^5.5.0","qrcode":"^1.5.4","blessed":"^0.1.81","commander":"^14.0.0","socket.io-client":"^4.8.1"},"publishConfig":{"registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.10"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.0.27_1754894868549_0.3028254226561604","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"tunli","version":"0.1.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.1.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"f81a78bed326e421ea3f3426d8e8d099dfa0e8a0","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.1.0.tgz","fileCount":325,"integrity":"sha512-b07neEhdrEMcxebV+ZPuKnMFlWxq+j+KUc5Kn1svZPLVjUGS6Jqsb53htjJPP89ElaI3XKbu1ygmsNThZVYdvw==","signatures":[{"sig":"MEUCIG+oFgQmThQ5gg6YVkJnX71BLyTBiRJypXxAsRROlLJPAiEAsGQEM+mPHtFEr7o2Nx08dEoYxBPCkUtUGVMw97Sl5OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430736},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"ec3aecf52d5fd2ccfde9bb837021b806760aef45","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"11.11.0","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"25.8.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.1.0_1774298884728_0.1906641657722603","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"tunli","version":"0.2.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.2.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"cdac39a89ef227da054bbf1f803c6152f4a3bc7c","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.2.0.tgz","fileCount":325,"integrity":"sha512-myZgWBharDnFMUZmMz4PPhVlYs7fR7ss+AE53gacXL00m+XnQcelXLZambbHJxIi0LuwpwoYDkdM9A9uGq8I5Q==","signatures":[{"sig":"MEYCIQD7yy4tinIpgNffOnHVNHHRlqHez01lCIKx7WOAYC5ArQIhAKZmkLUz4DTpRMq1PPIAWlRYgbm61/m3F8Z4Uvm/xkOy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443534},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"7736ea09f95425e09f2676becd1cb1ad40ba8047","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.2.0_1774362878839_0.8124235675276004","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"tunli","version":"0.3.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.3.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"1168a075db63cdc0d004e835597343efb0b5c4c5","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.3.0.tgz","fileCount":349,"integrity":"sha512-asjd89nfm8AcUc8lQQrADvX/siIvl5rdONXTSEjbWc44xGrX/lzkTvTJVbfmraGi8Vrmqok2kENChLXiBewpAg==","signatures":[{"sig":"MEQCID6UmxPoyZo4TuoqD7WQd/ThRSVL36zzOCkuBQJyHKKzAiA91E3fVSGZkFLmYiAd92o/hT2qIMv/+9IwKnDuitZhWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487188},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"0108293a45cd01d234f406059df990bd0882a051","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.3.0_1774380813168_0.6191597162535365","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"tunli","version":"0.4.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.4.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"0461c5c210a91e9e901b598002dcfd3b1dd4aa68","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.4.0.tgz","fileCount":361,"integrity":"sha512-eUvNIgesNuSA8VaDg+BJ0bj3Wr6v1lUoWzJflZnnMsj52YBeS88XwScKrAOCjKn3Lnkh1hjYxVO855aLImvyNg==","signatures":[{"sig":"MEUCIErra9nZ4zfxwEVPQuJH2CJAXTVlZxRoDkeEk6FZpMMZAiEA2pq/G4JVMgu1U5Utn/InEKS5QP6rcYzyt1Xnh78haLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517827},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"cc8b7aa3ecacf871e05ef702cefbe5fecaa5b359","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.4.0_1774509304139_0.4782468482559541","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"tunli","version":"0.4.1","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.4.1","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"879fe3c2d23f91dce2b3eda50a7c01a907c3bdbb","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.4.1.tgz","fileCount":361,"integrity":"sha512-8AOOTFk7mOTXfnWftvH2jvjWyde9xmLYHI5wVdtBYIuehYc0kSejonaokOIYzlmImM+R9CDAlirkv88MIVbhTw==","signatures":[{"sig":"MEYCIQDcpR/clsdLPUjrvFhAebFvmxl+SUzsEubP3rfos3FwKgIhAIGuKJrdToGlBwXsOLZxbR/0A4l2oXdfrD7swTK7i2AZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520404},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"f0be9ba756e479d958e5a059bebdf40c05fd0021","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.4.1_1774517687693_0.21983235392346345","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"tunli","version":"0.4.2","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.4.2","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"6cdd78f4e7b42b48ece514d09bd6517c75ac5abe","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.4.2.tgz","fileCount":361,"integrity":"sha512-msKHLvrh2s2q6R2Vr4DKut4bfOOWqgUsyfb2zaugA8HfTYCb7nU5FatqgnLPyPSBQiKnor8BsAGUIERMCpF3BQ==","signatures":[{"sig":"MEYCIQD9EM04hEiUw5jOeEL7gMuGHTZ4cEwWEjBQkMdUEdpShgIhAJD9eiHupNtF1ZBKtK1o6Tb5wsA4t49TEPfxP7ae4j5c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520652},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"d5f2d226c3bd608446734ce4ca2056e1af78a35f","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.4.2_1774519212137_0.01935269223177216","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"tunli","version":"0.5.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.5.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"cd8c684f8b447a88c85c7d7c5c299450937722b2","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.5.0.tgz","fileCount":361,"integrity":"sha512-5CmL0FAAzSGINw+PiJfOttHfU+wxofi6Ty5G6o24m3cRayy/JbQamq+jWdLWAGHGqpNs/uW1D/8cyDc23Uqk8w==","signatures":[{"sig":"MEUCIQCULHie5jsl9gpgUH98D4rxaf8wyP79axlhcgbdd7JZ0QIgCkGxyVoImvl5JNP/6XdAROfLm4mMLACyYiB6k2vRzic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":526350},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"dedfccbaab1e56b4411d32e91fb8f1d68223cf68","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.5.0_1774546745483_0.11723684100700282","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"tunli","version":"0.5.1","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.5.1","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"90395009c23e1373f601cf62ee22b973d46803a1","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.5.1.tgz","fileCount":361,"integrity":"sha512-LAf9FabXoI9gZIokgaJZL9D1UAM1sQMF62ZFa8x+l7ZphTllbIBvEoRhxp4u5liiGrwpy0fmTwT1B1A8KyG+9w==","signatures":[{"sig":"MEUCIGrS5pOUdNldFE7iqQqc4Rjeo6ldB1l6R2HHO202X47PAiEA8AyEq3K3OnX/WNndoJJzx9UUrDgcoCA4OC7wayOPZtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527131},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"8fe3c2a117b756120b4490c32012cc5b421c3c5f","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.5.1_1774606663818_0.44245609023898114","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"tunli","version":"0.6.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.6.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"d72161d60c25461c4c831a65117dc9edac64d0f4","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.6.0.tgz","fileCount":369,"integrity":"sha512-QUBFqUTYuWQg/uy71Di3XAZ4W5ZZEAflu9AqYAXjBeB18KsP+bHzScqi0TTHBo+LBYTxw6Oq14NqnSWiKZYAyg==","signatures":[{"sig":"MEYCIQCoMYf5O28TnkYWO5oBQq67aEuv1PIrdhayKZ3u8Pa3WgIhAKCRu+m/cb0YJj/U1k1mokkT8pOB7InfMpwuM7yrQw7J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568025},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"0644c9ca055223f259ec6b6fc5b03271414e5e77","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.6.0_1774606829685_0.05929176978554551","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"tunli","version":"0.7.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.7.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"959718992521796d84f77cd719ba811169470fe3","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.7.0.tgz","fileCount":369,"integrity":"sha512-eWyzXNf0v+GCY+djWrnBHU4xbsRBqZ0TfPh6ZGu+1YAiQs0kci/VqC0dayD6xNEyJVYebFNG/QEhUq+NMKcnMw==","signatures":[{"sig":"MEUCIQDqJbCzbmoE2Cj8y6zzRdpRF8hN4ryU0jf0meE40ROAfgIgbt7PffagEu1zjw3mFBX1neB4YbuS3IAZ7pAYbxORsjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":571602},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"b49ca39d03e8b8ac910cfada215d17fea13d6818","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.4","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.7.0_1774621626093_0.3163933866950208","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"tunli","version":"0.7.1","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.7.1","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"282d18e23bee52e66cee32b18390fa8c7fc91eb9","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.7.1.tgz","fileCount":397,"integrity":"sha512-gscM86ahj7JTUvqXygESFaGWLUcgxjTj1FieS3lKGDG3dW5s8XZawFOo7IqstOEsI9MR5kyn9p4Ze38HB/T6xg==","signatures":[{"sig":"MEQCIFDJhgz7NLpiAdYe1yt7L49ZtM8gQBv4XC5ZtKnRzDx6AiBmOD9D/yYDxo0GYvlajyMzPqae8MUwESus9cZW/nP0qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDliLi1I8G96yE8ye3gEUzdFrFzlxIOxYsF2qHVyCv4xwIgEFV5f8qQ8lj3MoWrG+MUK0kZ3gbHv7XRMOGLYzG3f0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":618924},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"b383e46e5a7e0ce83b04cf9169e54affe9649449","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test test/**","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"11.16.0","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@tunli/daemon":"^1.0.0","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.7.1_1790247134859_0.9562945208240625","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"tunli","version":"0.8.0","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.8.0","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"352ff3765fb03c4073a77a7259ddca7daa4e5fe3","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.8.0.tgz","fileCount":397,"integrity":"sha512-vzZfK0d4oyV8TZcNCF+Ekf2nnuoxAe+8bhaULnkAQZ3GyBegDuZVSlGhpJbYttYutifBhb/uSXuAsWIej0F37A==","signatures":[{"sig":"MEUCIQCbvoB5Iyy8AcwNnKj0bpDg9nfgByXW5xscCsDtECtDOQIgbeGSwQtxdHUbViUyheb7o2ODD3OBCiNLOQ10WhRiqNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCVbkKZ13HTpoz7UIa9Aj8ncG+t7pC74g173q/oaRZ6DwIhAMtTiWHJgKQl9NJrhIVDpvAHRP83cvATAc2GMFDICnUB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619257},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"0f5c52c7ac7e3c5b7172136431fea7a23e7d5382","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test test/**","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"deprecated":"Crashes on startup (logger.debug is not a function). Please use 0.8.1 or later.","repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"11.16.0","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@tunli/daemon":"^1.0.0","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.8.0_1790248172293_0.9649866630632187","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"tunli","version":"0.8.1","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.8.1","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"4b7475d4b427685c0261b15b825115cfa3ddf87c","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.8.1.tgz","fileCount":397,"integrity":"sha512-jAHJ1hlsn1Ld1CxS4kWEYpYg1lL3X+ITJvlTItqmIouojtWU8P4tgds7SOaQAcsmJTitEmICzcGQsjo7Ie5q8g==","signatures":[{"sig":"MEQCIDzt4x+tSeOrwDx8m148BbnwYT2E1PabgzYUEWrqeChcAiBdzdfV7hQlUzhJfxk5+lMI2MQw6fg4DsSijNoIh74SdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGicYZA77aGfQk9CcNzVjbDR4agQVVMJW4KYG8vEr+ObAiBgekPMY57gW4JEjqjNAlQcinzsgzTUmdfB1n94XBX+Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619805},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"2f7f8f0c7266f015eff51d50bc83bfcea9f6f8d5","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test test/**","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"11.13.0","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@tunli/daemon":"^1.0.0","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.8.1_1790587255549_0.22151391777058316","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"tunli","version":"0.8.2","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","_id":"tunli@0.8.2","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"homepage":"https://tunli.app","bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"bin":{"tunli":"bin/tunli"},"dist":{"shasum":"3943f027a7b6678307a2c42f7c3353c3747c071e","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.8.2.tgz","fileCount":397,"integrity":"sha512-s1St2UMTsjegqkDpOmqeYRI9ey5RSJPYYyJMxOpuG5NMnnBJLPl6Td2J1eekepbaA7mp9DXFTidiPIPmdhHdRA==","signatures":[{"sig":"MEQCIGc63CKGpFNh591ryKSc9Vr8UtASju+74VSQsHJNdFrcAiB3fD6zyWr/Jn2Em7EkocGCE/wqY4ZEvpN5c/MN+a+wag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBtvv9vkZyUctucHOGm2GY3JmPwMTikBvs+Rrj/wNKmWAiBIB0NR+UvmhAqE8E8uB1k2vIrAvXXyjYTDLUJW1JcxtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621466},"main":"bin/tunli","type":"module","engines":{"node":">=22"},"gitHead":"572f238f372bc6a33bbf08f6f2769b876b7191da","imports":{"#*":"./dist/*.js"},"scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test test/**","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"11.13.0","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@tunli/daemon":"^1.0.0","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"tmp":"tmp/tunli_0.8.2_1790589306298_0.29615606076525225","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"_id":"tunli@0.8.3","bin":{"tunli":"bin/tunli"},"bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"dist":{"shasum":"ffaef2ec68f0ed1a1537b5da6331b18458460d60","tarball":"https://registry.npmjs.org/tunli/-/tunli-0.8.3.tgz","fileCount":397,"integrity":"sha512-yqL3GujZERxRKOUpZbUHTf9V2JRG288Mf94pvuXJ7fzolQhn5W0Ceju5GcXwLvZCAo7UwMyZiB0yfAz74LLdIQ==","signatures":[{"sig":"MEYCIQCEVrqVbiuv0rrqrcBPViogRehVS3iHk2PMYwJVkaOD/AIhAK0b61FBKxp+Xp8wr9QQpw2fePifBF1VHoJQ2WE2dK2f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHOgKobD0nfCD1n96YSbUdEtQtVAJv8qYKSdrIC8WsXSAiEA3B6Tt5nUsAEBsEy432W7h0qPq1Uf96Tref+MAPOB8/U="}],"unpackedSize":621776},"main":"bin/tunli","name":"tunli","type":"module","author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"engines":{"node":">=22"},"gitHead":"2ee9ad7a6c0781727db8f283a47e5aef572f8a07","imports":{"#*":"./dist/*.js"},"license":"GPL-3.0","scripts":{"test":"npm run build && node --test test/**","build":"npm run clean && tsc","clean":"rm -rf dist","build:sea":"npm run clean && tsc && scripts/build-main.sh && scripts/build-launcher.sh","build:main":"npm run clean && tsc && scripts/build-main.sh","dev:dashboard":"tsx --tsconfig tsconfig.json dev/dashboard-dev.ts","test:coverage":"npm run build && node --test --experimental-test-coverage --test-coverage-exclude='test/**'","build:launcher":"npm run clean && tsc && scripts/build-launcher.sh","prepublishOnly":"npm test","test:coverage:c8":"npm run build && npx c8 node --test test/**","test:coverage:lcov":"npm run build && npx c8 --src src node --enable-source-maps --test"},"version":"0.8.3","_npmUser":{"name":"something_with_code","email":"dev@tunli.app"},"homepage":"https://tunli.app","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"_npmVersion":"10.9.8","description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","directories":{},"maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"_nodeVersion":"22.22.3","dependencies":{"ink":"^6.8.0","chalk":"^5.5.0","react":"^19.2.4","qrcode":"^1.5.4","@tunli/daemon":"^1.0.0","@pfeiferio/ipv4":"^1.1.0","socket.io-client":"^4.8.1","@pfeiferio/string-interpolate":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","esbuild":"^0.27.4","nodemon":"^3.1.10","typescript":"^5.9.3","@types/react":"^19.0.0","@types/qrcode":"^1.5.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tunli_0.8.3_1790590512506_0.5685185894314619"}}},"time":{"created":"2024-06-03T14:47:11.209Z","modified":"2026-09-28T10:15:12.804Z","0.0.1":"2024-06-01T20:39:36.804Z","0.0.1-alpha":"2024-06-03T14:47:11.366Z","0.0.3-beta":"2024-06-05T11:14:53.306Z","0.0.4-beta":"2024-06-05T11:45:29.315Z","0.0.5-beta":"2024-06-05T11:49:21.797Z","0.0.6-beta":"2024-06-05T21:02:15.545Z","0.0.7":"2024-06-05T21:08:20.194Z","0.0.8":"2024-06-05T21:13:24.101Z","0.0.9":"2024-06-05T21:19:16.831Z","0.0.10":"2024-06-05T21:32:49.546Z","0.0.11":"2024-06-06T09:23:27.086Z","0.0.12":"2024-06-06T09:27:08.708Z","0.0.13":"2024-06-06T09:30:25.325Z","0.0.14":"2024-06-06T09:46:41.785Z","0.0.15":"2024-06-06T09:48:44.469Z","0.0.16":"2024-06-06T10:18:17.201Z","0.0.17":"2024-06-06T19:56:18.437Z","0.0.18":"2024-06-06T21:07:39.066Z","0.0.19":"2024-06-06T21:08:47.845Z","0.0.20":"2024-06-06T21:21:30.902Z","0.0.21":"2024-06-06T22:41:32.531Z","0.0.22":"2024-06-07T08:02:22.313Z","0.0.23":"2024-06-07T14:37:06.301Z","0.0.24":"2024-06-07T15:11:11.423Z","0.0.25":"2024-06-17T07:16:52.196Z","0.0.26":"2025-08-11T06:01:40.081Z","0.0.27":"2025-08-11T06:47:48.811Z","0.1.0":"2026-03-23T20:48:04.886Z","0.2.0":"2026-03-24T14:34:38.988Z","0.3.0":"2026-03-24T19:33:33.426Z","0.4.0":"2026-03-26T07:15:04.323Z","0.4.1":"2026-03-26T09:34:47.886Z","0.4.2":"2026-03-26T10:00:12.277Z","0.5.0":"2026-03-26T17:39:05.667Z","0.5.1":"2026-03-27T10:17:43.966Z","0.6.0":"2026-03-27T10:20:29.827Z","0.7.0":"2026-03-27T14:27:06.309Z","0.7.1":"2026-09-24T10:52:14.948Z","0.8.0":"2026-09-24T11:09:32.396Z","0.8.1":"2026-09-28T09:20:55.659Z","0.8.2":"2026-09-28T09:55:06.385Z","0.8.3":"2026-09-28T10:15:12.636Z"},"bugs":{"url":"https://github.com/tunlijs/tunli-client/issues","email":"dev@tunli.app"},"author":{"name":"Pascal Pfeifer","email":"pascal@tunli.app"},"license":"GPL-3.0","homepage":"https://tunli.app","keywords":["tunnel","http tunnel","reverse proxy","local development","websocket","daemon","self-hosted"],"repository":{"url":"git+https://github.com/tunlijs/tunli-client.git","type":"git"},"description":"Developer-first HTTP tunneling CLI with daemon-based tunnel management, profiles, and self-hosted server support.","maintainers":[{"name":"something_with_code","email":"dev@tunli.app"}],"readme":"# Tunli\n\nTunli is a developer-first tunneling tool that gives you full control — use the official server at [tunli.app](https://tunli.app) or run your own with [tunli-server](https://github.com/tunlijs/tunli-server).\n\n## Installation\n\n**Binary (no Node.js required):**\n\n```bash\n# Linux\ncurl -L https://github.com/tunlijs/tunli-client/releases/latest/download/tunli-linux.tar.gz | tar -xz -C /usr/local/bin\n\n# macOS\ncurl -L https://github.com/tunlijs/tunli-client/releases/latest/download/tunli-macos.tar.gz | tar -xz -C /usr/local/bin\n```\n\nOr download manually from the [releases page](https://github.com/tunlijs/tunli-client/releases).\n\n**via npm:**\n\n```bash\nnpm install -g tunli\n```\n\nRequires Node.js >= 22.\n\n## Features\n\n- Stable public URLs per profile\n- HTTP & WebSocket tunneling via a background daemon\n- Multiple simultaneous tunnels\n- Profiles & environments\n- Self-hosted relay servers\n- CIDR allow/deny access control\n- Private peer-to-peer tunnels (`tunli share` / `tunli connect`) — no public URL, access by key only\n\n## Quick Start\n\nBy default the client connects to the official server — no server setup required.\n\n```bash\n# 1. Register (once)\ntunli register\n\n# 2. Start a tunnel to your local port\ntunli http 3000\n\n# 3. Watch live output\ntunli logs\n```\n\n`tunli http` hands the tunnel off to the background daemon and exits immediately. Use `tunli logs` or `tunli dashboard` to observe traffic.\n\n## Commands\n\n### `tunli http <port> [host]`\n\nStart a tunnel to a local HTTP service. The daemon is started automatically if it isn't running yet.\n\n```bash\ntunli http 3000\ntunli http 3000 127.0.0.1\ntunli http 3000 --save myapp      # save as a named profile for later reuse\n```\n\n`tunli 3000` also works — `http` is the default command.\n\nUse `--save <name>` to persist the configuration as a profile. Start it again with `tunli start <profile>`.\n\n**Foreground mode** — run the tunnel directly in the CLI process without a background daemon:\n\n```bash\ntunli http 3000 --foreground      # alias: --fg\ntunli http 3000 --dashboard       # with live TUI dashboard (alias: --db)\ntunli http 3000 --logs            # with live log output to stdout\n```\n\n### `tunli start <profile>`\n\nStart a tunnel using a saved profile.\n\n```bash\ntunli start myapp\n```\n\n### `tunli up` / `tunli down`\n\nStart or stop all profiles defined in the local `.tunli/config.json`. Useful for projects with multiple services.\n\n```bash\ntunli up      # start all local profiles (skips already running)\ntunli down    # stop all tunnels belonging to local profiles\n```\n\n### `tunli list`\n\nShow all active tunnels managed by the daemon.\n\n```bash\ntunli list\n```\n\n### `tunli dashboard [profile]`\n\nAttach to a running tunnel and show the live TUI dashboard. If multiple tunnels are active and no profile is given, a picker is shown. Press Ctrl+T inside the dashboard to switch between tunnels.\n\n```bash\ntunli dashboard\ntunli dashboard myapp\n```\n\n### `tunli logs [profile]`\n\nAttach to a running tunnel and stream live log output to stdout.\n\n```bash\ntunli logs\ntunli logs myapp\n```\n\n### `tunli stop [profile...]`\n\nStop one or more running tunnels without stopping the daemon.\n\n```bash\ntunli stop myapp\ntunli stop api frontend worker\n```\n\n### `tunli daemon`\n\nManage the background daemon process.\n\n```bash\ntunli daemon start\ntunli daemon stop              # requires --force if tunnels are active\ntunli daemon stop --force      # stop immediately, tunnels are closed\ntunli daemon restart           # dump tunnels, restart, restore them\ntunli daemon status\n```\n\n`restart` preserves active tunnels — it dumps state, restarts the daemon, and restores all tunnels. Use `stop` + `start` for a clean restart.\n\n### `tunli register`\n\nRegister a new account and store the auth token.\n\n```bash\ntunli register\ntunli register --force                                        # renew existing token\ntunli register --relay https://api.myserver.com --name self   # self-hosted server\n```\n\n### `tunli auth <token>`\n\nManually store an auth token (e.g. received via invitation).\n\n```bash\ntunli auth <token>\n```\n\n### `tunli init`\n\nInitialize a local config file in the current directory. Local configs override the global config and are useful for per-project settings.\n\n```bash\ntunli init\ntunli init --force   # overwrite existing local config\n```\n\n### `tunli config`\n\nShow or modify the active configuration.\n\n```bash\ntunli config                               # show active config\ntunli config get host                      # read a single value\ntunli config set host 127.0.0.2            # set a value\ntunli config set port 3001 -p staging      # set in a named profile\ntunli config delete                        # remove the active config file\ntunli config dump                          # dump global + local config\ntunli config relays                        # list registered relay servers\n```\n\nScope flags (available on most config commands):\n\n```\n--global / -g     use the global config (~/.tunli/config.json)\n--local  / -l     use the local config  (./.tunli/config.json)\n--profile / -p    target a specific profile\n```\n\n### `tunli profile`\n\nManage tunnel profiles.\n\n```bash\ntunli profile list\ntunli profile use staging       # set staging as the default profile\ntunli profile delete staging    # remove a profile\n```\n\n### `tunli identity`\n\nShow your tunli identity (public key and fingerprint). The keypair is generated automatically on first `tunli register`.\n\n```bash\ntunli identity\n```\n\n### `tunli share <port> [host]`\n\nShare a local port privately via a peer-to-peer tunnel. No public URL is created — only someone with your public key can connect.\n\n```bash\ntunli share 8080\n# → Your public key: tunli1abc...\n# → Share this: tunli connect tunli1abc...\n```\n\n### `tunli connect <pubkey>`\n\nConnect to a remote share by the host's public key. Opens a local TCP port that proxies to the remote service.\n\n```bash\ntunli connect tunli1abc...\n# → Connected. Service available at localhost:52416\n# → For SSH: ssh -p 52416 user@localhost\n\ntunli connect tunli1abc... --port 2222   # fixed local port\n```\n\n### `tunli update`\n\nDownload and apply the latest binary release. If the daemon was running, you are prompted to restart it afterwards.\n\n```bash\ntunli update\ntunli update --restart     # restart daemon automatically without prompting\ntunli update --no-restart  # skip daemon restart\n```\n\n### `tunli relay`\n\nManage relay servers.\n\n```bash\ntunli relay list\ntunli relay use myserver        # switch the active relay server\n```\n\n## Architecture & internals\n\nFor a deeper look at the two-binary model, daemon protocol, update flow and build system see [docs/architecture.md](docs/architecture.md).\n\n## Configuration\n\nTunli stores its config in JSON files:\n\n| Scope  | Location                                               |\n|--------|--------------------------------------------------------|\n| Global | `~/.tunli/config.json`                                 |\n| Local  | `./.tunli/config.json` (per-project, takes precedence) |\n\nA profile holds the target `host`, `port`, `protocol`, saved `proxyURL`, and optional CIDR allow/deny lists.\n\n## License\n\nGPL-3.0\n","readmeFilename":"README.md"}