{"_id":"@ahmdrv/sshx","_rev":"12-eaddc94ad237e0a87d335c9bd63e89c2","name":"@ahmdrv/sshx","dist-tags":{"latest":"1.2.0"},"versions":{"0.2.0":{"name":"@ahmdrv/sshx","version":"0.2.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@0.2.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/cli/index.js"},"dist":{"shasum":"01fb62f27fff9cdac03b3e86d5f32ca8e29dd1e4","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-0.2.0.tgz","fileCount":36,"integrity":"sha512-sfUQeVyo6IhrX6mwVmYwr90Hhk6ccHwPv15qWTPj5KzLirIjGsj7xTEG/EVVtNqDRvthJIJW811Q9uiBZEZ38A==","signatures":[{"sig":"MEYCIQDRC59HinM33Vlx4WV48yrxvxOmHV1aPQzN6H5n0UaF6gIhAOZmD1Dk3uijMGddWi8+JGErMUSd4iHCgWKzPlIzzYh0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59633},"type":"module","engines":{"node":">=20"},"gitHead":"cf18c1df7deeff246ddd57a5d35323164d4fc29b","scripts":{"dev":"bun run build && node dist/cli/index.js","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_0.2.0_1783001086985_0.44520094160978685","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ahmdrv/sshx","version":"0.3.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@0.3.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"39fa4c751f74013c63d97a31df2f210264a678e1","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-0.3.0.tgz","fileCount":39,"integrity":"sha512-7DLcIriFQA8ttwO/aXXW8slnZMdbWDb6B9FtlWhJlw4Ej4gXq6wA+JkU7QLukYZFoodqY5p1UGS3pFgtrmJ4ug==","signatures":[{"sig":"MEUCIExLoBQfy4dE4TLIzdamRCtYC0Pe00tJy5Ra1Om1njwbAiEAhykfOe2r1JIAj7L1u2lmwXsln53qZIW/7Y2EXZcvygQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76101},"type":"module","engines":{"node":">=20"},"gitHead":"7c4d04b387cd1763578c811a9e1c76da70d7ab13","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_0.3.0_1783005519620_0.9617510878093372","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ahmdrv/sshx","version":"0.3.1","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@0.3.1","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"2d8e265d07b444fa55bf8d6f6f4e8711d659e124","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-0.3.1.tgz","fileCount":39,"integrity":"sha512-bFg64Us5I3FeBXuRmRGqd63duNxAJNvxBKMnultcqR7hfwp97LCRLeOi/Ls8P2OAiSGxvQCDk2RXY8aHQc9Zaw==","signatures":[{"sig":"MEYCIQCn0ZdSz4ncwAJ2rRrC2ZUcAkQSlRiveUp6Hv0V/l0W/wIhAI8+HCqc2Oyl/xYtlXlDzGTzEEcu8zPL23HB+VLzdl4w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76133},"type":"module","engines":{"node":">=20"},"gitHead":"6108c0e448109be7f3b776245822812665c2b1a7","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_0.3.1_1783006760243_0.9732794692164106","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ahmdrv/sshx","version":"0.4.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@0.4.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"6cc66f0610a565b95a1db5385d1e9caa49778da6","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-0.4.0.tgz","fileCount":42,"integrity":"sha512-5UzbNh+q0+JrE6Bn9gpyz3flUsNYkUGt15MwyCyJXSAjqSHbtrVnVgjyyKMJ1nq8RlCTLjzxjpM7U5TR6q9Z1Q==","signatures":[{"sig":"MEUCICcgE6NZPtsiHtuRh56vGGE5mq5iP8VHL2IcCgPJFq9SAiEAzAdk2SycjK6Y/XYgth6EvQGvLOGfVC5ncxsXlBQaoQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94486},"type":"module","engines":{"node":">=20"},"gitHead":"ba170407230b7072cc10a1b0340b284fe3435497","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_0.4.0_1785065880700_0.6003714736300576","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ahmdrv/sshx","version":"0.5.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@0.5.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"781c8eef0b477f7ae1b1f74c56eac524473ab954","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-0.5.0.tgz","fileCount":49,"integrity":"sha512-lKamy7ndHDqANw8iz0JrceF5IZk562TMeMhzp/vdim9orJvxas7fONLSF8Noes0K97OENTGsZkycVMTAWe0g6w==","signatures":[{"sig":"MEUCIQDhIx/gYK85FLr2TB5MiJND2BGBK68IZZo9iMVib32K9wIgPvQI5RkPyfiFCOsne1VpbCVunhWeG4UPITG03GkwRmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120765},"type":"module","engines":{"node":">=20"},"gitHead":"d2aca35009936c8b35929571df66a464c7c1c01c","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_0.5.0_1785070303053_0.46941734382091904","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@ahmdrv/sshx","version":"1.0.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@1.0.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"6e12748f792b3dd4ec3d2fdd91b4cc67ed193af1","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-1.0.0.tgz","fileCount":58,"integrity":"sha512-nSOs53LPRcU3wnuPGRk9ETlaEqEhQq4v654Ne63hwLGA+xihbv62gk3yzB6D0kVmmIWAOoh8tVbvvYgNYqPTAA==","signatures":[{"sig":"MEUCIAqBiQsvH4ZSOoNXSP3y4RyHkHJk+RCW4wrhr+tDqOX1AiEAhp+zW5cmil8HKAg1VbgAF2GM9pjnQo1jL16Gim5e04c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174859},"type":"module","engines":{"node":">=20"},"gitHead":"02bfe142f9f2a284a7b16ed399c8275c6a3e48e0","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js","prepublishOnly":"bun run verify:package","verify:package":"bun run build && node scripts/verify-package.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"_npmVersion":"11.5.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_1.0.0_1785074067717_0.8241686865309896","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@ahmdrv/sshx","version":"1.1.0","keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","_id":"@ahmdrv/sshx@1.1.0","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"homepage":"https://github.com/ahmadrivaldi-arv/sshx#readme","bugs":{"url":"https://github.com/ahmadrivaldi-arv/sshx/issues"},"bin":{"sshx":"dist/src/cli/index.js"},"dist":{"shasum":"3e2d1536850f4a9181eeab21cc4b15a8979a87fa","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-1.1.0.tgz","fileCount":67,"integrity":"sha512-5TWDhE8Ej4O+jQ6IvzIBPZNWBSQgrfb+8KI4Q1OY8RyHGTxYmkuBfGxyZfqjmg6eZv5+CkBOuM9ts2vuZdaudg==","signatures":[{"sig":"MEYCIQDw8Em61XOuMyi1oWgIX/hWyOp03KT0OZxmJACRyWTnUAIhANWMnCSKaKogN9LvO3E7ZirujRoLMYS0nv5GZuSpENGH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmdrv%2fsshx@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230398},"type":"module","engines":{"node":">=20"},"gitHead":"79a681d9debafa313981f6ae52e1beb626375a2a","scripts":{"dev":"bun run build && node dist/src/cli/index.js","lint":"eslint .","test":"vitest run","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","start":"node dist/src/cli/index.js","format":"prettier --write .","prepack":"bun run check","typecheck":"tsc --noEmit","postinstall":"node scripts/fix-node-pty-permissions.js","prepublishOnly":"bun run verify:package","verify:package":"bun run build && node scripts/verify-package.js"},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"repository":{"url":"git+https://github.com/ahmadrivaldi-arv/sshx.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ink":"^5.0.1","zod":"^3.23.8","yaml":"^2.5.1","chalk":"^5.4.1","react":"^18.3.1","fs-extra":"^11.2.0","node-pty":"^1.0.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.1","devDependencies":{"eslint":"^9.11.1","vitest":"^2.1.1","prettier":"^3.3.3","typescript":"^5.6.2","@types/node":"^22.7.4","@types/react":"^18.3.11","@types/fs-extra":"^11.0.4","eslint-config-prettier":"^9.1.0","@typescript-eslint/parser":"^8.8.1","@typescript-eslint/eslint-plugin":"^8.8.1"},"_npmOperationalInternal":{"tmp":"tmp/sshx_1.1.0_1785171038628_0.325516215559444","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@ahmdrv/sshx","version":"1.2.0","description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","repository":{"type":"git","url":"git+https://github.com/ahmadrivaldi-arv/sshx.git"},"type":"module","packageManager":"bun@1.3.1","bin":{"sshx":"dist/src/cli/index.js"},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"scripts":{"dev":"bun run build && node dist/src/cli/index.js","build":"node scripts/clean.js && tsc -p tsconfig.json","check":"bun run typecheck && bun run lint && bun run test && bun run build","prepack":"bun run check","prepublishOnly":"bun run verify:package","postinstall":"node scripts/fix-node-pty-permissions.js","start":"node dist/src/cli/index.js","test":"vitest run","lint":"eslint .","format":"prettier --write .","typecheck":"tsc --noEmit","verify:package":"bun run build && node scripts/verify-package.js"},"keywords":["ssh","terminal","tui","ink","cli"],"license":"MIT","dependencies":{"chalk":"^5.4.1","commander":"^12.1.0","fs-extra":"^11.2.0","ink":"^5.0.1","node-pty":"^1.0.0","react":"^18.3.1","yaml":"^2.5.1","zod":"^3.23.8"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.7.4","@types/react":"^18.3.11","@typescript-eslint/eslint-plugin":"^8.8.1","@typescript-eslint/parser":"^8.8.1","eslint":"^9.11.1","eslint-config-prettier":"^9.1.0","ink-testing-library":"4.0.0","prettier":"^3.3.3","typescript":"^5.6.2","vitest":"^2.1.1"},"_id":"@ahmdrv/sshx@1.2.0","gitHead":"a2db87bf59fd73ace1a468c8b6aca89e490869d4","bugs":{"url":"https://github.com/ahmadrivaldi-arv/sshx/issues"},"homepage":"https://github.com/ahmadrivaldi-arv/sshx#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-3UW7YIc+p9Fvu0OPEW4AyBLRfQbWfP4vGZx40eGa6TsgAW1IqwA5Izxr9kzaaDidHNtc2b2mooq320uAdIdfcg==","shasum":"66834934f8049555afbab90d96c54963a24b0556","tarball":"https://registry.npmjs.org/@ahmdrv/sshx/-/sshx-1.2.0.tgz","fileCount":75,"unpackedSize":268177,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahmdrv%2fsshx@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAj/XIjQHB6o8I82/VbjhTe9WqutQH4bPGGc/JBORRw8AiBRRWL9rHLkc/dh92IigokqJviVNil7wThrqt9n4jDMOw=="}]},"_npmUser":{"name":"ahmdrv","email":"rivaldi19122@gmail.com"},"directories":{},"maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sshx_1.2.0_1785223099380_0.02766325451228524"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T14:04:46.795Z","modified":"2026-07-28T07:18:19.828Z","0.1.0":"2026-07-02T13:57:11.863Z","0.2.0":"2026-07-02T14:04:47.178Z","0.3.0":"2026-07-02T15:18:39.746Z","0.3.1":"2026-07-02T15:39:20.365Z","0.4.0":"2026-07-26T11:38:00.850Z","0.5.0":"2026-07-26T12:51:43.234Z","1.0.0":"2026-07-26T13:54:27.836Z","1.1.0":"2026-07-27T16:50:38.854Z","1.2.0":"2026-07-28T07:18:19.524Z"},"bugs":{"url":"https://github.com/ahmadrivaldi-arv/sshx/issues"},"license":"MIT","homepage":"https://github.com/ahmadrivaldi-arv/sshx#readme","keywords":["ssh","terminal","tui","ink","cli"],"repository":{"type":"git","url":"git+https://github.com/ahmadrivaldi-arv/sshx.git"},"description":"A lightweight terminal SSH manager inspired by Termius, LazyGit, and modern AI CLIs.","maintainers":[{"name":"ahmdrv","email":"rivaldi19122@gmail.com"}],"readme":"# Sshx\n\nA modern terminal SSH manager for managing SSH vaults, hosts, and interactive sessions from a keyboard-driven TUI.\n\n[![npm version](https://img.shields.io/npm/v/%40ahmdrv%2Fsshx?color=%23f97316)](https://www.npmjs.com/package/@ahmdrv/sshx)\n[![npm downloads](https://img.shields.io/npm/dm/%40ahmdrv%2Fsshx)](https://www.npmjs.com/package/@ahmdrv/sshx)\n[![license](https://img.shields.io/npm/l/%40ahmdrv%2Fsshx)](LICENSE)\n[![node](https://img.shields.io/node/v/%40ahmdrv%2Fsshx)](package.json)\n[![typescript](https://img.shields.io/badge/TypeScript-strict-3178c6)](tsconfig.json)\n[![package](https://img.shields.io/badge/package-%40ahmdrv%2Fsshx-0f172a)](https://github.com/ahmadrivaldi-arv/sshx)\n\nSee released changes in [CHANGELOG.md](CHANGELOG.md), the complete\n[command reference](COMMANDS.md), the [custom theme guide](THEMES.md), and\nplanned work in [ROADMAP.md](ROADMAP.md).\n\n## Screenshot\n\n![Sshx terminal UI](screenshots/sshx.png)\n\n## Demo Video\n\n![Demo Video](screenshots/sshx-demo.gif)\n\n[View source video](screenshots/sshx-demo.mp4)\n\n## Features\n\n- Interactive terminal UI for browsing and connecting to SSH hosts.\n- Add, edit, delete, duplicate, rename, and favorite connections.\n- Realtime search from the TUI with `/`.\n- Recent connection tracking with outcome, duration, and session count metadata.\n- Import hosts from `~/.ssh/config`.\n- Preview and import connections from Sshx JSON/YAML files with duplicate strategies.\n- Multi-select connections for bulk delete, favorite, group, and tag actions.\n- SSH health checks with online, unreachable, timeout, and authentication-required status.\n- Fuzzy `:` command palette for connection and vault operations.\n- Grouped command palette with recent actions, descriptions, and shortcut hints.\n- Versioned full-configuration backup and restore without secret references.\n- Versioned configuration migration and cross-platform release verification.\n- Export connections to JSON or YAML.\n- Native full-screen SSH sessions through `node-pty`, with normal terminal cursor and input behavior.\n- Persistent TUI sessions: exiting SSH returns to the connection browser instead of closing Sshx.\n- Reusable command snippets with fuzzy search, tags, placeholders, and in-session preview.\n- A TUI snippet manager for searching, adding, editing, and deleting snippets.\n- Configurable snippet-manager and in-session picker keymaps.\n- Per-connection OpenSSH options, including optional weak-crypto warning suppression.\n- Responsive wide, medium, and narrow layouts with a single-panel small-terminal fallback.\n- Built-in and externally installed themes, custom accent colors, and persistent compact/ASCII preferences.\n- Native theme picker with live preview, restart confirmation, adaptive colors, and `NO_COLOR` support.\n- Contextual `?` help, first-run guidance, reusable key hints, and an About screen.\n- Secure password storage:\n  - macOS: Keychain\n  - Linux: Secret Service via `secret-tool`\n  - Windows: DPAPI for the current user\n- Log viewer for Sshx runtime logs.\n\n## Install\n\n```bash\nnpm install -g @ahmdrv/sshx\nsshx\n```\n\nFor a local production-style install from this repository:\n\n```bash\nbun install\nbun run build\nnpm pack\nnpm install -g ./ahmdrv-sshx-1.2.0.tgz\nsshx\n```\n\nDuring development:\n\n```bash\nbun install\nbun run dev\n```\n\n## Usage\n\nOpen the TUI:\n\n```bash\nsshx\n```\n\nShow help:\n\n```bash\nsshx --help\n```\n\nShow version:\n\n```bash\nsshx --version\n```\n\n## TUI Shortcuts\n\n```text\nEnter  connect to selected host\n/      search, or type /add to add from search mode\na      add connection\ne      edit selected connection\nCtrl+S save immediately while adding/editing\nd      delete selected connection with confirmation\nf      toggle favorite\nSpace  select connection for bulk actions\ng      assign a group to selected connections\nt      replace tags on selected connections\nh      check selected or multi-selected connection health\nH      check all visible connection health\n:      open the fuzzy command palette\ns      open the snippet manager (configurable)\nT      open the theme picker with live preview\n?      open contextual help\nTab    switch list/detail panels in narrow terminals\nc      toggle compact layout for the current session\nEsc    cancel current mode\nq      quit\n```\n\n## Commands\n\nThe main commands are listed below. See [COMMANDS.md](COMMANDS.md) for every\nargument, option, conflict mode, and palette command.\n\n```text\nsshx add [options] <name>       Add a new SSH connection\nsshx edit [options] <id>        Edit an SSH connection by id\nsshx list [options]             List configured SSH connections\nsshx delete <id>                Delete an SSH connection by id\nsshx duplicate <id>             Duplicate an SSH connection by id\nsshx rename <id> <name>         Rename an SSH connection by id\nsshx favorite <id>              Toggle favorite status by id\nsshx import [options]           Import connections from ~/.ssh/config or Sshx JSON/YAML export\nsshx export [options] <file>    Export connections to JSON or YAML\nsshx backup [options] <file>    Back up the full configuration without secrets\nsshx restore [options] <file>   Validate and restore an Sshx backup\nsshx snippet <command>          Add, edit, search, or delete command snippets\nsshx keymap <command>           Show, configure, or reset keyboard shortcuts\nsshx check [options] [target]   Check SSH reachability for one or all connections\nsshx connect <target>           Connect by id or exact name\nsshx ssh <target>               Alias for connect\nsshx logs [options]             Show Sshx log file\nsshx theme list                 List built-in and installed themes\nsshx theme set <name>           Set theme and display preferences\nsshx theme preview <name>       Preview a theme without applying it\nsshx theme install <file>       Install an external JSON theme\nsshx theme path                 Show the custom theme directory\n```\n\n## Examples\n\nAdd a password-based connection:\n\n```bash\nexport SSHX_PASSWORD='server-password'\nsshx add \"Production\" \\\n  --host 1.2.3.4 \\\n  --username root \\\n  --port 22 \\\n  --group Production \\\n  --tags Laravel,Ubuntu \\\n  --password-env SSHX_PASSWORD\nunset SSHX_PASSWORD\n```\n\nAdd a key-based connection:\n\n```bash\nsshx add \"Web-01\" \\\n  --host 1.2.3.4 \\\n  --username root \\\n  --identity-file ~/.ssh/id_ed25519 \\\n  --group Production\n```\n\nAdd OpenSSH options and suppress the weak-crypto warning:\n\n```bash\nsshx add \"Legacy Server\" \\\n  --host 1.2.3.4 \\\n  --username root \\\n  --ssh-option ServerAliveInterval=30 \\\n  --ssh-option StrictHostKeyChecking=accept-new \\\n  --suppress-weak-crypto-warning\n```\n\nList connections:\n\n```bash\nsshx list\n```\n\nSearch from the CLI:\n\n```bash\nsshx list --search prod\n```\n\nConnect:\n\n```bash\nsshx connect \"Production\"\n```\n\nCheck SSH health:\n\n```bash\nsshx check \"Production\"\nsshx check --all --timeout 3\n```\n\nImport from OpenSSH config:\n\n```bash\nsshx import\n```\n\nImport from Sshx export:\n\n```bash\nsshx import --file connections.json\nsshx import --file connections.json --strategy overwrite\nsshx import --file connections.yaml --strategy rename --apply\nsshx import --file backup.txt --format json --apply\n```\n\nImports are preview-only unless `--apply` is provided. Duplicate strategies are\n`skip` (default), `overwrite`, and `rename`.\n\nExport:\n\n```bash\nsshx export connections.json --format json\nsshx export connections.yaml --format yaml\n```\n\nBack up and restore:\n\n```bash\nsshx backup sshx-backup.json\nsshx restore sshx-backup.json --validate-only\nsshx restore sshx-backup.json --strategy skip\nsshx restore sshx-backup.json --strategy overwrite\nsshx restore sshx-backup.json --strategy rename\n```\n\nUse `--strategy replace` only when the backup should replace the entire current\nvault. Backups include connections, snippets, history, and theme preferences,\nbut never passwords or password secret references.\n\nManage command snippets:\n\n```bash\nsshx snippet add \"Docker logs\" \\\n  --command 'docker logs -f {{container}}' \\\n  --description \"Follow a container's logs\" \\\n  --tags docker,logs\nsshx snippet list\nsshx snippet list --search dlog\nsshx snippet show \"Docker logs\"\nsshx snippet edit \"Docker logs\" --command 'docker logs --tail 100 -f {{container}}'\nsshx snippet delete \"Docker logs\"\n```\n\nSnippets can also be managed entirely inside the TUI. Press `s` from the\nconnection browser, or run `:snippet` from the command palette. Inside the\nmanager, use `a` to add, `e` to edit, `d` to delete, and `/` to search.\n\nLike Nano or Vim, SSH temporarily takes over the native terminal while Sshx\nremains alive in the background. Press `F2` to open the local snippet picker.\n`Ctrl+B`, then `S` is enabled as a prefix alternative; `Ctrl+G`, then `S` and\n`Ctrl+]`, then `S` are available as configurable bindings. Search and select a snippet, fill any\n`{{placeholder}}` values, then press `I` to insert it without executing or\n`X`/`Enter` to insert and execute. Exiting the remote shell returns to the Sshx\nconnection list.\n\nConfigure keymaps:\n\n```bash\nsshx keymap\nsshx keymap set snippet-picker f2,ctrl-]-s\nsshx keymap set snippet-manager n\nsshx keymap reset\n```\n\nSupported picker bindings are `f2`, `ctrl-b-s`, `ctrl-g-s`, and `ctrl-]-s`.\nThe snippet-manager binding is one unreserved lowercase letter.\n\nView logs:\n\n```bash\nsshx logs\nsshx logs -n 200\nsshx logs --path\n```\n\nManage themes:\n\n```bash\nsshx theme list\nsshx theme preview dracula\nsshx theme set dracula\nsshx theme set nord --accent '#5e81ac' --compact\nsshx theme set mono --ascii\nsshx theme set default --clear-accent --expanded --unicode\nsshx theme install ~/Downloads/ocean.json\nsshx theme set ocean --clear-accent\n```\n\nInside the TUI, press `T` or run `:theme` to browse every installed theme.\n`Up`/`Down` previews without saving. `Enter` offers **Apply & restart**,\n**Apply next launch**, or **Cancel**; cancel restores the previous appearance.\nSet `NO_COLOR=1` to disable all TUI colors while retaining structure and text.\n\nUse the command palette:\n\n```text\n:add\n:edit\n:delete\n:import connections.json --strategy=rename --apply\n:export connections.yaml\n:logs\n:theme\n:theme dracula\n:snippet docker\n:help\n:about\n```\n\nAvailable themes are `default`, `minimal`, `mono`, `dracula`, `nord`, `catppuccin`,\nand `tokyo-night`, plus JSON themes installed in the user theme directory. Theme\npreviews do not modify your configuration. See [THEMES.md](THEMES.md) for the\nexternal theme format and sharing instructions.\n\n`default`, `minimal`, and `mono` inherit the terminal foreground/background, so\nthey work with both light and dark terminal appearances. Named palette themes\nsuch as Dracula and Nord intentionally target dark terminals.\n\n## Configuration\n\nConfiguration is stored at:\n\n```text\n~/.config/sshx/config.json\n```\n\nExample:\n\n```json\n{\n  \"configVersion\": 2,\n  \"connections\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Production\",\n      \"host\": \"1.2.3.4\",\n      \"port\": 22,\n      \"username\": \"root\",\n      \"identityFile\": \"~/.ssh/id_ed25519\",\n      \"group\": \"Production\",\n      \"tags\": [\"Laravel\", \"Ubuntu\"],\n      \"color\": \"red\",\n      \"favorite\": true,\n      \"sshOptions\": {\n        \"ServerAliveInterval\": \"30\"\n      },\n      \"suppressWeakCryptoWarning\": false,\n      \"createdAt\": \"2026-07-02T00:00:00.000Z\",\n      \"updatedAt\": \"2026-07-02T00:00:00.000Z\"\n    }\n  ],\n  \"recentConnectionIds\": [],\n  \"snippets\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Docker logs\",\n      \"command\": \"docker logs -f {{container}}\",\n      \"description\": \"Follow a container's logs\",\n      \"tags\": [\"docker\", \"logs\"],\n      \"createdAt\": \"2026-07-27T00:00:00.000Z\",\n      \"updatedAt\": \"2026-07-27T00:00:00.000Z\"\n    }\n  ],\n  \"keymap\": {\n    \"snippetPicker\": [\"f2\", \"ctrl-b-s\"],\n    \"snippetManager\": \"s\"\n  },\n  \"theme\": {\n    \"name\": \"dracula\",\n    \"accentColor\": \"#bd93f9\",\n    \"compact\": false,\n    \"ascii\": false\n  }\n}\n```\n\nPasswords are not stored in `config.json`. Sshx stores only a secret reference and keeps the password in the OS credential store.\n\n`accentColor` is optional and must use `#RRGGBB` format. Compact mode is also\nenabled automatically when the terminal is too small for the expanded layout.\n\n## Requirements\n\n- Node.js 20 or newer.\n- OpenSSH client available on `PATH`.\n- Bun is only required for development and release builds.\n\nOn Linux, install `secret-tool` first. For example, Debian/Ubuntu:\n\n```bash\nsudo apt install libsecret-tools\n```\n\n## Development\n\n```bash\nbun install\nbun run dev\nbun run check\nbun run verify:package\n```\n\n## Release\n\n```bash\nbun run check\nbun run verify:package\n```\n\nPushing a matching version tag runs the release workflow, repeats the checks,\nverifies the package contents, and publishes to npm:\n\n```bash\ngit tag -a v1.2.0 -m \"v1.2.0\"\ngit push origin main v1.2.0\n```\n\nThe published package includes only `dist`, `scripts`, `README.md`, `COMMANDS.md`,\n`CHANGELOG.md`, `ROADMAP.md`, `THEMES.md`, and `LICENSE`.\n","readmeFilename":"README.md"}