{"_id":"srift-transfer","_rev":"10-4d58b945cb0c0c338b817438680f0a73","name":"srift-transfer","dist-tags":{"latest":"4.4.0"},"versions":{"2.2.12":{"name":"srift-transfer","version":"2.2.12","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","encrypted","secure-file-transfer","send-files","cli","agent-tools","llm-tools"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@2.2.12","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/srift/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"14d895ec811974447f1282abd3f934bdddbdc9e4","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-2.2.12.tgz","fileCount":5,"integrity":"sha512-4UI9rIDWlBUAzMNwRlybTGI6PWY6KUfLZXMvuAB38BcPmsRxLbvRVeQ6xI9ihODVQ0DkKEsgD/8tK6EDH6FBAg==","signatures":[{"sig":"MEYCIQDkc4vZLIiQAZwtieK4wUDj2K/GAPNqMdjwsZW5G4THrAIhAI9syjH9qX1C2Z84oAngWKnar1mNP0mQ1CjR5v1d1pH+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":264056},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"e422d4f126ffcb5b3eea67b269b2d8887ecab9c9","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/srift.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Secure P2P file transfer, encrypted chat and MCP server for AI coding agents. Zero accounts, zero tokens, end-to-end encrypted. Works with Claude, Cursor, Continue, Zed, Codex and any MCP client.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_2.2.12_1788860883348_0.824889733293406","host":"s3://npm-registry-packages-npm-production"}},"2.2.13":{"name":"srift-transfer","version":"2.2.13","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@2.2.13","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"28e6bfa4051ac0e7400463b112dbdfa233b6388a","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-2.2.13.tgz","fileCount":5,"integrity":"sha512-kTYn3jhAEB7fqWXt7PweSQX+X7Q4y1r6iXL9AmMn4y6H0JwNtxiG1Sh9vXnKrqZdyIZW0o/hBW8Trtmbdlhg5w==","signatures":[{"sig":"MEQCIAGKq6hhKkKhjw2W8llAXDFcdeMJvGYcnOJBzz9B1n2oAiAhEDa2MyVmYK15KfktfecK/1VMfIUvOT1osEuK8msRhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275110},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"e422d4f126ffcb5b3eea67b269b2d8887ecab9c9","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_2.2.13_1788870952729_0.17941688814107448","host":"s3://npm-registry-packages-npm-production"}},"2.2.14":{"name":"srift-transfer","version":"2.2.14","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@2.2.14","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"3b27a87502d2cde3384523442ff5bd998e82031d","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-2.2.14.tgz","fileCount":5,"integrity":"sha512-VW48xtzTRWuHjsHUSs3747u9JzaDfXU/ETHvjo+YLnp+V14N2BhGQE3IXkwGvUb8DG6fV8xFdzC5hFibdmIsDw==","signatures":[{"sig":"MEUCIH4CefYsk/4v0oUxtFlqqFdygxXc7SBZZ4bdkqAfS8CNAiEAtYITxCUiWaNdAKcQ6q5vPvL5uT+dZ6jd1iGBBVa1UkE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277424},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"4659033755f14a78d58407cbb48f1c447c046ec2","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_2.2.14_1788881844898_0.04817734930610129","host":"s3://npm-registry-packages-npm-production"}},"2.2.15":{"name":"srift-transfer","version":"2.2.15","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@2.2.15","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"b0429d2f070f9cd7b10699dc56d03a417a0e39af","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-2.2.15.tgz","fileCount":5,"integrity":"sha512-JtD+6XhALXlMzter61dZcBlUinKJqY3SrUh4OY/Qu1GEs8p+nwTS0ITqK8b5Swcci6LDk1B9wd7e/sv3vJEdww==","signatures":[{"sig":"MEUCIG4dNyBVsLkTmg35wjnl0zDo5gMj7DNEB4AbR8AOzB8nAiEAnqxUkzmIjkKgOIVKHlmEAGQFlWIezx/mHWv5KRSQMtg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295591},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"699351d86dc8c1901814f6ae0c374931ab8d41df","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_2.2.15_1788888612376_0.873257906905968","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"srift-transfer","version":"3.0.0","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@3.0.0","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"c2f6cda618bd4189a65e0af576d548e025adba98","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-3.0.0.tgz","fileCount":5,"integrity":"sha512-EYWVTtvhDtM9VFYwbcNePjBWotbaHR99QWeN7IZhq7QcrwSe2qgFsnYGc6kWpOHTi54CXIKWJ3dz2o5qz11zPA==","signatures":[{"sig":"MEUCIHJMhQa8WVw+l1SBXYtp29Oh43K+m2x+rKeflpZLib81AiEAwuX40OlOx1logmtJuS9Kpvn6KQvP21/iOnf4XFxbrWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296440},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"78787773d912c91da3ac3dbecb73ee84f6037eb0","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_3.0.0_1789126777164_0.9743018472381486","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"srift-transfer","version":"4.0.0","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention","wetransfer-alternative","send-large-files","airdrop-alternative","smithery","glama","gemini-mcp","claude-mcp","cursor-mcp","windsurf-mcp","open-source-file-transfer"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@4.0.0","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"45334b5663db6e90e161fd341a4437d18ae740d9","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-4.0.0.tgz","fileCount":5,"integrity":"sha512-TA0tFhB0axTWV5tmPh90UgIA7DJJoe4K41YZ+twhgRHLWX1RwrRHzb05cUoqBOEOBWxnZtVq6Yt9p4HBQ7wD1Q==","signatures":[{"sig":"MEQCIBbPDCVcP7VB1hNGoIfnqcxR02adYN6sgXlf7yZsRD/0AiBcQ5cAoG655SxpysXKaIppqnvTA4IYWfGP8rQt2BNjRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCtOQ8+WhG0YP/askW9yBUQvXNa0NUfYiFg1Jm5GXjgsgIgbkI3IsK3kNb1uZmndw6j+/iiyY8eDO2w7iViN6B4/Go=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":888529},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"df2903a73a90721a0639f4c16bb57817b4507f79","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_4.0.0_1790326085595_0.6376693460365004","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"srift-transfer","version":"4.1.0","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention","wetransfer-alternative","send-large-files","airdrop-alternative","smithery","glama","gemini-mcp","claude-mcp","cursor-mcp","windsurf-mcp","open-source-file-transfer"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@4.1.0","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"ed7968cc9a0a160a88c6a68b9ce63211c797598e","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-4.1.0.tgz","fileCount":5,"integrity":"sha512-iuus3JmFpwSSfZDuxpaK5oMHMZkcAIxWhD9TRyj4SGMaZC1Q8xUJnizJd72v9En61lIMx4rzV7c5jWkYd2JnUg==","signatures":[{"sig":"MEYCIQC4ZbQrzrjZ5amN4nRjgzy/3FzRRD5RqbaL/veyDo+RggIhAJx40Aag64iVHwvibny2hgc81MC4sUrL8nGwPtcPWooC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDDE9uVXgfT6zGH/kizTs95MdyfUdR3cA69qm4YIgFpXwIgYu/QnwTS4VocyJ0XUjoZotBM1NFpGlvS/sYtXePcyBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":915260},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"09c59e78a218bd88a4339648307f06b97f3d1ac8","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Zero-config, zero-token peer-to-peer secure file transfer, encrypted chat, and Model Context Protocol (MCP) server for AI coding agents (Claude, Cursor, Windsurf, Continue, Zed) and developers. End-to-end AES-256-GCM encrypted.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.3","cors":"^2.8.5","uuid":"^14.0.0","dotenv":"^17.2.3","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_4.1.0_1790372865562_0.44556752624419826","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"srift-transfer","version":"4.3.0","keywords":["mcp","mcp-server","model-context-protocol","ai-agent","ai-agents","claude","cursor","windsurf","continue-dev","cline","roo-code","zed","codex","aider","file-transfer","p2p","peer-to-peer","webrtc","webtorrent","end-to-end-encryption","e2ee","aes-256-gcm","encrypted","secure-file-transfer","send-files","cli","quick-share","agent-tools","llm-tools","developer-tools","zero-retention","wetransfer-alternative","send-large-files","airdrop-alternative","smithery","glama","gemini-mcp","claude-mcp","cursor-mcp","windsurf-mcp","open-source-file-transfer","agent-to-agent","multi-agent","agentnet","a2a","encrypted-chat","no-database"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@4.3.0","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"ad32edb13a8878d0883c85b0acf5d8085eee4c64","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-4.3.0.tgz","fileCount":5,"integrity":"sha512-wN2g/HGq+mtcxYKe5Ntz0+QI2Z6ceCINUYuofyVelHVCWPwRvPuOh32Tl3P9iJMCyiByPxNctDRJABSS4qKi+A==","signatures":[{"sig":"MEYCIQDNYWOtGZucmYwdTlwbu0q3kefblhBb+ahJkRgZtZGzrgIhAIsvyHhspZwyjPdX2zDJKUc1nzU0JnFBxtbq7eBppLHh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE7VxhhlSdmrjRWhgUGBOMIOKg3hZoEd3sRMu2qPaIE/AiEAueSwuRrtbcexzE2oubS0CvC34b9zHTtHGLF5vYr/XI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1068589},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"2a21fc336a620cf69879401d24f0fb0ceb5efc48","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Decentralized, zero-config peer-to-peer file transfer and chat with military-grade AES-256-GCM end-to-end encryption, an agent-to-agent network (AgentNet) and a Model Context Protocol (MCP) server for AI agents (Claude, Cursor, Windsurf, Continue, Zed) an","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.22.0","cors":"^2.8.6","uuid":"^14.0.2","dotenv":"^17.4.2","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_4.3.0_1790752095569_0.4393252811751027","host":"s3://npm-registry-packages-npm-production"}},"4.3.2":{"name":"srift-transfer","version":"4.3.2","keywords":["mcp","mcp-server","model-context-protocol","file-transfer","file-sharing","send-files","p2p","e2ee","encryption","cli","ai-agents","agent-to-agent","claude","cursor","webrtc"],"author":{"name":"SRIFT"},"license":"MIT","_id":"srift-transfer@4.3.2","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"homepage":"https://srift.app","bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"bin":{"srift":"dist/index.js"},"dist":{"shasum":"f781ea86e4ec0394521351bbe91dcc75c0fbd62c","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-4.3.2.tgz","fileCount":5,"integrity":"sha512-nxz+S09PbWE9r9JRFcQqZ3LjF1M/rdvejG5piyxV4prLzdzbqyhsAqDh/Es2PGGvaHrz1wJ94PoTvmqV8YEazg==","signatures":[{"sig":"MEQCIHnpAj4oMwgrSN09LcJGPiCXVS1oBNDvfaajxRBt7ERrAiBYoI3Pmv1g5dCFqAhp106B/wfLplTUx+Y0HEX98GAqGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDlnz+lVNJDBoE3ySpWYsoVq8pw7ZCmmE7bwqYFsq741QIhANGX1GRF69OXFigi8FAzdGRPF3fAtm2SeAn0i3jntXhI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1087100},"main":"./dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"74766703b563e8f958ae9a640f64d5a408a504f5","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Send any file as a download link from the CLI or an AI agent (MCP server). Encrypted P2P file transfer and chat, AgentNet for agent-to-agent. No account.","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.22.0","cors":"^2.8.6","uuid":"^14.0.2","dotenv":"^17.4.2","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"tmp":"tmp/srift-transfer_4.3.2_1791235257303_0.04129789851724319","host":"s3://npm-registry-packages-npm-production"}},"4.4.0":{"_id":"srift-transfer@4.4.0","bin":{"srift":"dist/index.js"},"bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"dist":{"shasum":"87b343c632b2f648af6a0eee1f097a275727f49d","tarball":"https://registry.npmjs.org/srift-transfer/-/srift-transfer-4.4.0.tgz","fileCount":5,"integrity":"sha512-hZideLIcBcKWs0Xw+6QjtJ025fvOWhBZbaIn6S2T2dIjU6K/F7JFpCCr+7XdDbID2csXpJAjRrrnGVUButHo0Q==","signatures":[{"sig":"MEUCIQDt0kNxdKKU6zfa33/leqHbkwgFSnT8PqVg8Fiu7wusxAIge/q8IgfCldKmxENgjzoYy3ejwhpbMB/tS39zvSM/+28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFog1K9SrT7D2cCUoSm020wuY6lm6DZ2NW3l6l9uc3H0AiBZtzCYMmfkfBZcKlHg6ftV78PLGLJ0LjtdhM2mUzZDvQ=="}],"unpackedSize":1094463},"main":"./dist/index.js","name":"srift-transfer","type":"module","author":{"name":"SRIFT"},"engines":{"node":">=20.0.0"},"gitHead":"22f616f38656324b3e2af9950658b51e9c04c14a","license":"MIT","mcpName":"app.srift/srift","scripts":{"build":"node build.mjs","prepublishOnly":"npm run build"},"version":"4.4.0","_npmUser":{"name":"srivardhan113","email":"srivardhan@sripto.tech"},"homepage":"https://srift.app","keywords":["mcp","mcp-server","model-context-protocol","file-transfer","file-sharing","send-files","p2p","e2ee","encryption","cli","ai-agents","agent-to-agent","claude","cursor","webrtc"],"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"_npmVersion":"11.12.1","description":"Decentralized, end-to-end encrypted P2P file transfer, chat and calls: human to human, human to AI agent, and AI agent to AI agent. Send any file as a download link from the CLI or an MCP server; Peerknock for agent-to-agent. No account, no database.","directories":{},"maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.22.0","cors":"^2.8.6","uuid":"^14.0.2","dotenv":"^17.4.2","express":"^5.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"webtorrent":"^2.8.5"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/srift-transfer_4.4.0_1792245032289_0.486474077225717"}}},"time":{"created":"2026-09-08T09:48:03.202Z","modified":"2026-10-17T13:50:32.778Z","2.2.12":"2026-09-08T09:48:03.493Z","2.2.13":"2026-09-08T12:35:52.855Z","2.2.14":"2026-09-08T15:37:25.084Z","2.2.15":"2026-09-08T17:30:12.522Z","3.0.0":"2026-09-11T11:39:37.293Z","4.0.0":"2026-09-25T08:48:05.706Z","4.1.0":"2026-09-25T21:47:45.650Z","4.3.0":"2026-09-30T07:08:15.659Z","4.3.2":"2026-10-05T21:20:57.401Z","4.4.0":"2026-10-17T13:50:32.397Z"},"bugs":{"url":"https://github.com/srivardhan113/SRIFT-Open_Source/issues"},"author":{"name":"SRIFT"},"license":"MIT","homepage":"https://srift.app","keywords":["mcp","mcp-server","model-context-protocol","file-transfer","file-sharing","send-files","p2p","e2ee","encryption","cli","ai-agents","agent-to-agent","claude","cursor","webrtc"],"repository":{"url":"git+https://github.com/srivardhan113/SRIFT-Open_Source.git","type":"git","directory":"packages/cli"},"description":"Decentralized, end-to-end encrypted P2P file transfer, chat and calls: human to human, human to AI agent, and AI agent to AI agent. Send any file as a download link from the CLI or an MCP server; Peerknock for agent-to-agent. No account, no database.","maintainers":[{"name":"srivardhan113","email":"srivardhan@sripto.tech"}],"readme":"# srift-transfer\n\n[![npm version](https://img.shields.io/npm/v/srift-transfer.svg?color=blue)](https://www.npmjs.com/package/srift-transfer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)\n[![MCP Protocol](https://img.shields.io/badge/MCP-2026--07--28-purple.svg)](https://modelcontextprotocol.io)\n[![Smithery](https://img.shields.io/badge/Smithery-srift%2Fsrift-7c3aed)](https://smithery.ai/servers/srift/srift)\n[![Glama](https://img.shields.io/badge/Glama-app.srift%2Fsrift-blueviolet.svg)](https://glama.ai/mcp/connectors/app.srift/srift)\n[![Encryption: AES-256-GCM](https://img.shields.io/badge/Encryption-AES--256--GCM-green.svg)](https://srift.app)\n[![Zero Telemetry](https://img.shields.io/badge/telemetry-zero-success.svg)](https://srift.app/privacy)\n\n> **Decentralized, zero-config, zero-token, end-to-end encrypted peer-to-peer file transfer, chat and calls: human to human, human to AI agent, and AI agent to AI agent. Military-grade AES-256-GCM with keys generated on the devices, no database, no account, plus a Model Context Protocol (MCP) server for AI coding agents and Peerknock for agent-to-agent messaging.**\n\nDeliver any file from an AI agent sandbox (Claude, Cursor, Windsurf, Continue, Zed, Codex, Cline, Roo-Code, Devin) directly to a user in one tool call. AES-256-GCM end-to-end encryption for sessions and `--encrypt` links. No cloud storage, no account signups, no API keys.\n\n🌐 **Web Platform:** [https://srift.app](https://srift.app)  \n📦 **GitHub Repository:** [https://github.com/srivardhan113/SRIFT-Open_Source](https://github.com/srivardhan113/SRIFT-Open_Source)  \n🤖 **AI Agent Hub:** [https://srift.app/ai-agents](https://srift.app/ai-agents)  \n\n## Quick start\n\nSend a file as a link (nothing to install, the recipient just opens it):\n\n```bash\nnpx -y srift-transfer quick-share ./report.pdf\n# ↳ https://srift.app/d/7k3m9xq\n```\n\nGive an AI agent file transfer. Add to any MCP client (Claude Desktop, Cursor, Windsurf, Cline, VS Code):\n\n```json\n{ \"mcpServers\": { \"srift\": { \"command\": \"npx\", \"args\": [\"-y\", \"srift-transfer\", \"mcp\"] } } }\n```\n\n```bash\nclaude mcp add srift -- npx -y srift-transfer mcp                    # Claude Code, local (15 tools)\nclaude mcp add --transport http srift-hosted https://srift.app/mcp   # hosted, no install (9 session tools)\n```\n\nThen ask: \"send me the build as a link\". The agent calls `srift_quick_share` and replies with the URL.\n\n---\n\n## ⚡ Why SRIFT for AI Agents?\n\nAI coding agents run in sandboxed environments. While they can create build artifacts, PDFs, database dumps, logs, and zip files on disk, getting those files **to the human developer** has historically been broken:\n- ❌ **Base64 in chat**: Bloats prompt tokens, hits LLM output token limits, crashes browser windows.\n- ❌ **Manual disk search**: Tells users to dig through obscure temporary directories (`/tmp/...` or `~/.cache/...`).\n- ❌ **Cloud upload services**: Require configuring API keys, tokens, or third-party cloud accounts.\n\n> **New: Peerknock.** And agents can reach other agents: permanent addresses, live search of agents online right now, knocks, E2EE chat, file transfer, calls and group chats. See [Peerknock](#-peerknock-ai-agents-talking-to-ai-agents).\n\n### The SRIFT Solution: One Command, Instant Delivery\n\nSRIFT gives your agent a local headless daemon and toolset to serve files locally and generate a direct download link (add `--encrypt` for end-to-end encryption):\n\n```bash\nsrift quick-share ./dist/release-bundle.zip\n# ↳ https://srift.app/d/7k3m9xq\n```\n\nThe user opens the link in any web browser or runs `srift get https://srift.app/d/7k3m9xq` or `wget --content-disposition https://srift.app/d/7k3m9xq` or `curl -fLOJ https://srift.app/d/7k3m9xq`. **The recipient needs nothing installed.**\n\n**Session** chat and transfers are end-to-end encrypted with **AES-256-GCM** under ECDH P-256 keys generated on each device (4.2+), so the relay only ever forwards ciphertext and never holds a key.\n\n> **⚠️ The sender's daemon must be alive for the link to work.**\n> SRIFT keeps no server-side copy — the daemon streams the file from your disk\n> through the srift.app relay on demand (pass-through, nothing stored). It runs\n> in the background and survives your command exiting, so the link stays live\n> afterwards. But if the daemon stops (machine sleeps or reboots, or\n> `srift daemon stop`) the link returns `503 sender is offline` for ~15 s, then\n> `404` once the link is released. In CI, keep\n> the job alive until the recipient has downloaded (`--wait` blocks until then).\n> If you need a link that outlives your machine, use storage — SRIFT is a relay.\n>\n> **Sandboxes and datacenter agents:** when a local server or background process\n> is not allowed (bind `EPERM`, blocked spawn, blocked loopback), `quick-share`\n> and `srift mcp` host the daemon inside their own process — no port, only\n> outbound HTTPS/WSS on 443. quick-share then keeps running until the download\n> completes and exits, so run it in the background or add `--wait`; force it\n> with `--foreground`. The MCP server switches automatically. `srift doctor`\n> diagnoses connectivity; `srift get` downloads where curl is broken.\n\nPublic `quick-share` links are end-to-end encrypted when created with `--encrypt` (or `--password`). The key is carried in the URL fragment (`#k=...`), which browsers and HTTP clients never send in requests, so the relay only handles ciphertext and the browser decrypts locally. Without `--encrypt`, SRIFT guarantees **zero retention**: bytes stream from the sender straight to the open HTTP response, are never written to SRIFT storage, and are served `Cache-Control: no-store`.\n\n### 🤖 Autonomous Agent-to-Agent (A2A) Communication & Multi-Agent Swarms\n\nAI agents can communicate directly among themselves without human intervention. In multi-agent systems (CrewAI, AutoGen, LangGraph, OpenAI Swarm):\n- Agent 1 initializes a secure room: `srift session start --name \"Swarm-Sync\"`\n- Agent 2 joins the room: `srift session join <sessionId>`\n- Agents exchange end-to-end encrypted messages and state updates: `srift chat send \"{\\\"task\\\":\\\"analysis_complete\\\",\\\"status\\\":\\\"ready\\\"}\"`\n- Agents transfer intermediate state files, memory checkpoints, or embeddings over the encrypted relay: `srift send ./agent_state.bin`\n\n### 🖥️ Headless Server & Cloud Container File Delivery via npm / npx\n\nIn headless cloud environments, Docker containers, Kubernetes pods, and CI/CD pipelines (GitHub Actions, GitLab CI), getting files out to developers typically requires S3 credentials or open SSH ports. With SRIFT, servers can instantly emit public download links:\n\n```bash\n# In any CI/CD job, Docker container, or remote GPU server (RunPod, Lambda Labs, EC2):\nnpx -y srift-transfer quick-share ./build/app-release.tar.gz --once --ttl 1h --wait\n# ↳ https://srift.app/d/9x2m4kp   (blocks until downloaded; the link is served from this job)\n```\n- **Zero inbound firewall ports required** (connects out over the WebSocket relay on port 443).\n- **Zero cloud storage costs** (streams live from disk with zero server retention).\n- **Supports auto-expiry** (`--ttl 1h`) and single-use self-destruct (`--once`).\n\n### 🌐 Universal Environment Deployment: npm or Hosted /mcp\n\nSRIFT runs across all server operating systems and deployment targets:\n- **Local & Server Environments (Linux, macOS, Windows, Docker, Kubernetes)**:\n  Install via npm (`npm install -g srift-transfer` or `npx`) or standalone binary (`curl -fsSL https://srift.app/install.sh | sh`). Exposes all 15 MCP tools, CLI commands, and local HTTP REST daemon.\n- **Serverless & Browser Environments (Cloudflare Workers, Vercel Edge, AWS Lambda, Claude.ai, ChatGPT)**:\n  Use the hosted zero-install MCP endpoint: `POST https://srift.app/mcp` (Streamable HTTP, MCP 2026-07-28; older clients such as 2025-06-18 accepted) with zero dependencies required. It exposes 9 session/control tools.\n\n\n## 🚀 Installation\n\n### Global Install via npm (Node.js 20+)\n```bash\nnpm install -g srift-transfer\n```\n\n### Standalone Binary (Zero Node.js dependency)\n- **macOS / Linux / WSL / Termux (POSIX sh):**\n  ```bash\n  curl -fsSL https://srift.app/install.sh | sh\n  ```\n- **Windows PowerShell:**\n  ```powershell\n  irm https://srift.app/install.ps1 | iex\n  ```\n- **Windows Command Prompt:**\n  ```cmd\n  powershell -NoProfile -ExecutionPolicy Bypass -Command \"irm https://srift.app/install.ps1 | iex\"\n  ```\n\n### On-Demand via npx\n```bash\nnpx -y srift-transfer quick-share ./build/output.zip\n```\n\n---\n\n## 🛠 Model Context Protocol (MCP) Setup\n\nSRIFT ships a native Model Context Protocol server exposing **15 agent tools**, resources, and prompt templates over the local stdio/HTTP transports. The hosted endpoint exposes 9 of them (see below).\n\n### Automatic One-Command Setup\nRun the auto-installer to print or register config into supported IDEs:\n```bash\nsrift install-mcp          # prints copy-paste config for all major clients\nsrift install-mcp --auto   # writes directly into Claude Desktop config\n```\n\n### Manual Client Configuration\n\n#### Claude Desktop\nAdd to your `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n```json\n{\n  \"mcpServers\": {\n    \"srift\": {\n      \"command\": \"srift\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n#### Cursor\nAdd to `~/.cursor/mcp.json` or workspace configuration:\n```json\n{\n  \"mcpServers\": {\n    \"srift\": {\n      \"command\": \"srift\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n#### Windsurf\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n```json\n{\n  \"mcpServers\": {\n    \"srift\": {\n      \"command\": \"srift\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n#### Continue.dev\nAdd to `~/.continue/config.yaml`:\n```yaml\nmcpServers:\n  - name: srift\n    command: srift\n    args: [\"mcp\"]\n```\n\n#### Zed\nAdd to `~/.config/zed/settings.json`:\n```json\n{\n  \"context_servers\": {\n    \"srift\": {\n      \"command\": { \"path\": \"srift\", \"args\": [\"mcp\"] }\n    }\n  }\n}\n```\n\n#### Cline & Roo Code\nAdd to `cline_mcp_settings.json` (or Roo Code MCP settings):\n```json\n{\n  \"mcpServers\": {\n    \"srift\": {\n      \"command\": \"srift\",\n      \"args\": [\"mcp\"]\n    }\n  }\n}\n```\n\n#### Smithery Registry (One-Click CLI Install)\nInstall automatically for Claude Desktop or Cursor via Smithery:\n```bash\nnpx -y @smithery/cli install srift/srift --client claude\nnpx -y @smithery/cli install srift/srift --client cursor\n```\n\n#### Glama Registry\nConnect using the Glama connector: `app.srift/srift` or add streamable HTTP `https://srift.app/mcp`.\n\n\n#### Cloud & Browser-Based Agents (Zero-Install MCP)\nFor web-based agents (ChatGPT, Claude.ai, Gemini, Perplexity) that cannot run local binaries.\n\n> **The hosted endpoint exposes 9 of the 15 tools** — session and peer orchestration only\n> (`start_session`, `join_session`, `session_status`, `close_session`, `approve_join`,\n> `reject_join`, `kick_user`, `list_transfers`, `net_diagnose`).\n> `quick_share`, `send_file`, `accept_transfer`, `send_chat`, `chat_history` and `read_state`\n> are **local-only**: the first three need access to your disk, and the chat tools would\n> require deriving session keys server-side. Install the CLI if you need those.\n```json\n{\n  \"mcpServers\": {\n    \"srift\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://srift.app/mcp\"\n    }\n  }\n}\n```\n\n---\n\n## 🧰 MCP Tools Reference (15 Tools)\n\n| Tool | Parameters | Description |\n|---|---|---|\n| `srift_quick_share` | `filePath` \\| `filePaths[]` (up to 500), `bundle?` (boolean, default: true), `bundleName?` (string), `exclude?` (string[]), `sessionName?` (string), `maxDownloads?` (number), `ttlMs?` (number), `encrypt?` (boolean), `password?` (string) | **Primary tool.** Returns a public `https://srift.app/d/<token>` relay link; bytes stream from this machine on demand and nothing is stored on a server. `bundle: true` (default) creates one `.tar.gz` link; `bundle: false` creates one link per path (parallel). Returns `{ downloadUrl, fileName, fileSize, ... }` (bundled) or `{ links: [], errors: [] }` (separate). |\n| `srift_start_session` | `sessionName?` (string), `roomSecret?` (string) | Starts a new peer session with host role; returns room code & URL. |\n| `srift_join_session` | `sessionId` (string), `username?` (string), `roomSecret?` (string) | Requests to join an existing session as a peer. |\n| `srift_session_status` | _none_ | Retrieves active session state, role, connected peers, and pending joins. |\n| `srift_close_session` | _none_ | Closes active room, terminates peer channels, and securely flushes encryption keys. |\n| `srift_approve_join` | `tempUserId` (string) | Host control: approves a pending user join request. |\n| `srift_reject_join` | `tempUserId` (string), `reason?` (string) | Host control: rejects a pending user join request. |\n| `srift_kick_user` | `userId` (string) | Host control: kicks an active user from the session room. |\n| `srift_send_file` | `filePath` (string) | Offers a file to the peers in the session (end-to-end encrypted relay, or WebRTC between browsers). |\n| `srift_accept_transfer` | `fileId` (string), `saveDir?` (string) | Accepts an inbound file offer and streams it to local disk. |\n| `srift_list_transfers` | _none_ | Lists active transfers with progress percentage, speed (KB/s), and ETA. |\n| `srift_send_chat` | `message` (string) | Sends an end-to-end encrypted chat message to the active session. |\n| `srift_chat_history` | _none_ | Returns decrypted chat message history for the active session. |\n| `srift_read_state` | _none_ | Returns atomic snapshot of `.srift-state.json` (transfers, session, peers). |\n| `srift_net_diagnose` | `fresh?`, `deep?` | Connectivity report (HTTPS, WebSocket, UDP, proxy, sandbox detection) with the exact fix — same checks as `srift doctor`. |\n\n### MCP Resources & Prompts\n- **Resources**: `srift://session/status`, `srift://transfers/active`, `srift://chat/messages`, `srift://workspace/state`, `srift://docs/quickstart`\n- **Prompts**: `send_file_to_user`, `receive_file_from_user`, `start_collab_session`\n\n---\n\n## 🤝 Peerknock: AI Agents Talking to AI Agents\n\nPeerknock gives every agent a permanent address and lets agents **find each other live, knock, chat, send files, call, and form group chats**, end-to-end encrypted, from any machine (outbound 443 only; long-poll fallback for sandboxes and corporate proxies). There is no central database: relays keep only what is live, in RAM, and forward messages only to agents that are online.\n\n```bash\nsrift pk id --name \"Travel AGI\" --skills \"flights,hotels\"     # your permanent address + @name~xxxxxxxx tag\nsrift pk host \"I book flights and hotels anywhere\"            # go online and discoverable (datacenter / VM / sandbox)\n\nsrift pk search \"book a flight to Tokyo\"          # live search: only agents online right now, with their own one-liners\nsrift pk search \"hindi pdf translator\" --watch    # get notified the moment a matching agent comes online\nsrift pk find @ravi~dxobfafe | @ravi/support | support@acme.com | <invite link>\n\nsrift pk connect \"book a flight to Tokyo\"         # search → knock → accepted? conversation starts; rejected? next agent\nsrift pk knock <agent> --need \"review my NDA\" \"hey, can we connect?\"   # your username + description go with it\nsrift pk chat <agent|group>                       # interactive E2EE chat (/file <path> to send a file)\nsrift pk file <agent> ./report.pdf                # native encrypted transfer, SHA-256 verified\nsrift pk call <agent> [<agent> …]                 # live E2EE call (several = a conference); --session opens a SRIFT session\n\nsrift pk group create \"Launch team\" <agent> <agent>   # admin-signed group chat, no server state\nsrift pk group send|file|call <group> …\n```\n\n| Topic | How it works |\n|---|---|\n| Identity | `srift:XXXX-XXXX-XXXX-XXXX-XXXX` = hash of the agent's own Ed25519 key; tag `@name~xxxxxxxx` (the key-derived suffix can't be faked; a bare `@handle` has one live holder network-wide). No registry, no email. |\n| Discovery | Live search over self-written one-line descriptions of agents online now, handle tags, `@owner/agent` (owner-signed), `name@domain` (`/.well-known/srift`), invite links, `--watch` notifications. Relays federate (`--peers`). |\n| Handshake | Knock = who I am (username + description) + what I need + a note. Answer = accepted / rejected / busy with the answering agent's own reason (+ when to retry), plus its username and description. Policies: ask (the agent's own AI decides), accept, reject, or a decision hook. |\n| Delivery | Messages go only to online recipients; relays store nothing. `--queue` keeps a message on your own machine until the recipient comes online. |\n| Encryption | X25519 + HKDF-SHA256 + AES-256-GCM per message and per file chunk, Ed25519-signed. Relays see only ciphertext. |\n| Groups | Admin-signed membership held only by members; add, remove, promote, leave; messages and files encrypted per member; group calls. |\n| Local data | History kept 30 days by default (`srift pk retention`, `prune`, `wipe`); `--ephemeral` keeps conversations in RAM only; logs never contain message text by default. |\n| Self-hosting | `srift pk relay serve --port 8787 --peers https://other-relay`; agents choose relays with `SRIFT_PK_RELAY`. |\n\nPeerknock runs as a **separate MCP server** with 25 `srift_pk_*` tools (the core `srift mcp` above keeps its 15 tools):\n\n```json\n{ \"mcpServers\": { \"srift-peerknock\": { \"command\": \"srift\", \"args\": [\"peerknock\", \"mcp\"] } } }\n```\n\nFull design and security notes: [the Peerknock design](https://github.com/srivardhan113/SRIFT-Open_Source/blob/main/A2A%20Plan.md). Command reference: `srift pk help`.\n\n## 💻 CLI Command Reference\n\nAll CLI commands support `--json` for machine-readable JSON output suitable for subagents and CI/CD pipelines.\n\n### Public File Sharing (Recipient needs nothing installed)\n```bash\n# Generate public link with unlimited downloads and no expiration\nsrift quick-share /path/to/archive.zip\n\n# Single-use link (invalidates immediately after first completed download)\nsrift quick-share /path/to/database.sql --once\n\n# Time-limited link with automatic expiration\nsrift quick-share /path/to/report.pdf --ttl 15m    # supports: 30s, 15m, 2h, 1d\n\n# Download cap limit\nsrift quick-share /path/to/installer.exe --max-downloads 5\n\n# End-to-end encrypt (key in the #k= fragment; --password adds a second factor)\nsrift quick-share /path/to/secrets.tar --encrypt\n\n# CI, sandboxes, ephemeral agents\nsrift quick-share ./dist.zip --wait --wait-timeout 30m   # block until downloaded (exit 3 on timeout)\nsrift quick-share ./dist.zip --keep-alive                # serve until expiry / Ctrl-C\nsrift quick-share ./dist.zip --foreground                # serve from this process, no background daemon\n\n# Download any link (proxy-aware, resumable, decrypts #k= links)\nsrift get \"https://srift.app/d/<token>\" -o ./downloads/\n\n# Manage active links\nsrift links list                        # list all active public links and counters\nsrift links revoke <token>              # immediately revoke an active link\n```\n\n#### Sharing Several Files at Once\n```bash\n# Bundle multiple files/folders into one .tar.gz link (default behavior)\nsrift quick-share report.pdf data.csv photos/\n\n# One link per file instead, created in parallel\nsrift quick-share *.zip docs/ --separate\n\n# Customize bundle name, exclude patterns, use --encrypt on all links\nsrift quick-share file1.txt file2.json --bundle-name \"my-archive\" --exclude \"*.log\" --encrypt\nsrift quick-share report.pdf backup.sql --separate --ttl 1h --once\n\n# Download multiple links in parallel (default: concurrency 4, max 16)\nsrift get \"https://srift.app/d/<token1>\" \"https://srift.app/d/<token2>\" -o ./downloads/ --concurrency 8\n```\n\n### Collaborative Sessions & P2P Rooms\n```bash\nsrift session start [--name \"Project Review\"]   # create session as host\nsrift session join <session-id>                 # join existing room\nsrift session status                            # view peers and role\nsrift session close                             # teardown room & clear keys\n```\n\n### P2P File Transfers\n```bash\nsrift send <file-path>                          # offer file to peers in room\nsrift receive <file-id> [--save-dir ./downloads] # accept incoming file transfer\nsrift list                                      # list active transfers\nsrift monitor <file-id> [--json-stream]         # live transfer progress stream\n```\n\n### Moderation & Encrypted Chat\n```bash\nsrift approve <temp-user-id>                    # host: approve join request\nsrift reject <temp-user-id> [--reason <msg>]    # host: reject join request\nsrift kick <user-id>                            # host: kick participant\nsrift chat send \"Analysis complete.\"           # send encrypted message\nsrift chat history                              # view decrypted room history\n```\n\n### Daemon & Diagnostics\n```bash\nsrift daemon start                              # run daemon in foreground\nsrift daemon status                             # daemon status and port\nsrift daemon restart                            # restart daemon process\nsrift doctor [--deep] [--json] [--fresh]        # connectivity diagnosis with exact fixes\nsrift logs [--tail 100]                         # inspect daemon activity logs\nsrift reset                                     # flush session state & keys\nsrift self-update                               # update to latest version\n```\n\n---\n\n## 🌐 Headless Daemon & REST API\n\nThe SRIFT daemon auto-starts on port `3822` (default) on the local loopback interface (`127.0.0.1`). Any language, framework, or automation tool (Python, Go, Rust, LangChain, LlamaIndex, n8n, Zapier) can call it directly:\n\n```bash\n# Deliver file via REST API\ncurl -X POST http://127.0.0.1:3822/quick-share \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"filePath\": \"/abs/path/to/file.zip\"}'\n\n# Response:\n# {\n#   \"sessionId\": \"ABC1234\",\n#   \"fileId\": \"file_xyz789\",\n#   \"downloadUrl\": \"https://srift.app/d/7k3m9xq\",\n#   \"fileName\": \"file.zip\",\n#   \"fileSize\": 10485760\n# }\n```\n\n### Server-Sent Events (SSE) Stream\nSubscribe to real-time events without polling:\n```bash\ncurl -N http://127.0.0.1:3822/api/v1/monitor/events\n```\nEvents emitted: `connection_state`, `join_request`, `participants`, `file_offer`, `transfer_progress`, `chat_received`, `pubshare_download`, `session_terminated`.\n\n---\n\n## 🔐 Architecture & Security\n\n- **Cryptography**: Session chat copies (`pk1`) and relayed file chunks (`pgcm1`) are sealed with **AES-256-GCM** under ECDH P-256 + HKDF-SHA256 keys generated on the devices (a fresh key pair per file transfer); the optional `--room-secret` is mixed into every key. Peers older than 4.2 fall back to the previous session key (PBKDF2-SHA256, 100,000 iterations, from the session ID plus the optional room secret), which the server could derive without a room secret. `--encrypt` quick-share links carry their key in the URL fragment; plain quick-share links are TLS-only in transit (zero retention).\n- **No database**: the server keeps sessions in RAM only, and any number of instances behave as one; a crashed instance's sessions resume on a sibling's RAM copy within seconds.\n- **Adaptive Transport Stack** (every rung works over outbound 443 when needed):\n  1. **End-to-end sealed relay** through the session socket: always available, used for small files and whenever a faster path is not up. The CLI sends to each recipient independently, in 256 KB chunks with a sliding window of acknowledgments (older clients keep the 64 KB format).\n  2. **WebTorrent**: optional and off by default; SRIFT's own tracker, which only serves the session's members (public trackers are opt-in with `SRIFT_PUBLIC_TRACKERS=1`, because seeded bytes are not encrypted).\n  3. Browsers additionally use **direct WebRTC** (public STUN from four operators, short-lived TURN from `GET /v1/ice`) and switch to an **HTTPS session stream** on networks that block WebSockets.\n- **Privacy First**: The daemon binds to `127.0.0.1` only. The relay stores nothing; for sessions and `--encrypt` links it only ever forwards ciphertext and never receives the key.\n\n---\n\n## ⚙️ Configuration\n\nSet custom configuration options via environment variables or `~/.srift/config.json`:\n\n| Environment Variable | Default | Description |\n|---|---|---|\n| `SRIFT_DAEMON_PORT` | `3822` | Port for the local background daemon |\n| `SRIFT_BASE_URL` | `http://127.0.0.1:3822` | Base URL used by SDK clients to reach daemon |\n| `SRIFT_NO_UPDATE_CHECK` | `0` | Set to `1` to disable automatic update checks |\n| `SRIFT_LINK_PASSWORD` | — | Password for `quick-share --encrypt` / `get` without putting it in shell history |\n| `SRIFT_NO_HISTORY` | `0` | Set to `1` to stop recording created links in `~/.srift/history.jsonl` |\n| `SRIFT_NO_EMBEDDED` | `0` | Set to `1` to disable the in-process daemon fallback (sandboxes) |\n| `HTTPS_PROXY` / `NO_PROXY` | — | Proxy (`http://`, `https://`, `socks5://`), honored everywhere |\n| `NODE_EXTRA_CA_CERTS` | — | Trust a TLS-inspecting proxy's root CA |\n| `SRIFT_PK_HOME` | `~/.srift/peerknock` | Peerknock identity and data directory |\n| `SRIFT_PK_RELAY` | `https://srift.app` | Peerknock relay(s), comma-separated |\n| `SRIFT_PK_EPHEMERAL` | `0` | `1` keeps Peerknock conversations in RAM only |\n| `SRIFT_PK_PASSPHRASE` | — | Encrypts the Peerknock identity file (PBKDF2-SHA256 + AES-256-GCM) |\n| `SRIFT_PK_TRANSPORT` | `ws` | `poll` forces HTTP long-poll (networks that block WebSockets) |\n\n---\n\n## 📚 Ecosystem & Official SDKs\n\nFirst-party, zero-dependency SDKs for accessing SRIFT from any programming language:\n\n- **Node.js**: [`sdk/node`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/node) (`curl -O https://srift.app/sdk/node/srift.mjs` — not on npm yet)\n- **Python**: `pip install srift` (includes the CLI) — [`sdk/python`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/python) (`pip install srift` needs Python 3.9+; the single-file `srift.py` works on CPython 3.8+ and PyPy)\n- **Go**: [`sdk/go`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/go) (Go 1.21+)\n- **Rust**: [`sdk/rust`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/rust) (sync/async)\n- **Java**: [`sdk/java`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/java) (Java 11+)\n- **C# / .NET**: [`sdk/dotnet`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/dotnet) (.NET 6+)\n- **PHP**: [`sdk/php`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/php) (PHP 7.4+)\n- **Ruby**: [`sdk/ruby`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/ruby) (Ruby 2.7+)\n- **Shell / Bash / PowerShell**: [`sdk/shell`](https://github.com/srivardhan113/SRIFT-Open_Source/tree/main/sdk/shell)\n\n---\n\n## 🔗 Links & Resources\n\n- **Web Application**: [https://srift.app](https://srift.app)\n- **GitHub Repository**: [https://github.com/srivardhan113/SRIFT-Open_Source](https://github.com/srivardhan113/SRIFT-Open_Source)\n- **AI Agent Manual (AGENTS.md)**: [https://srift.app/AGENTS.md](https://srift.app/AGENTS.md)\n- **OpenAPI Specification**: [https://srift.app/openapi.json](https://srift.app/openapi.json)\n- **LLM Context (`llms.txt`)**: [https://srift.app/llms.txt](https://srift.app/llms.txt)\n- **Bug Tracker & Issues**: [https://github.com/srivardhan113/SRIFT-Open_Source/issues](https://github.com/srivardhan113/SRIFT-Open_Source/issues)\n\n### Official Listings\n\n| Surface | Link |\n|---|---|\n| npm | [`srift-transfer`](https://www.npmjs.com/package/srift-transfer) |\n| MCP Registry | [`app.srift/srift`](https://registry.modelcontextprotocol.io/v0/servers?search=srift) |\n| Smithery | [`srift/srift`](https://smithery.ai/servers/srift/srift) |\n| Glama (connector) | [`app.srift/srift`](https://glama.ai/mcp/connectors/app.srift/srift) |\n| Glama (server) | [`SRIFT-Open_Source`](https://glama.ai/mcp/servers/srivardhan113/SRIFT-Open_Source) |\n| GitHub | [`SRIFT-Open_Source`](https://github.com/srivardhan113/SRIFT-Open_Source) |\n\nAll resolve to the same product. Install `srift-transfer`; the command is `srift`.\n\n### ⚡ One-click install links\n\n| Client | Link / command |\n|---|---|\n| Cursor (local, 15 tools) | [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=srift&config=eyJjb21tYW5kIjoic3JpZnQiLCJhcmdzIjpbIm1jcCJdfQ==) |\n| Cursor (Peerknock, 25 tools) | [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=srift-peerknock&config=eyJjb21tYW5kIjoic3JpZnQiLCJhcmdzIjpbInBlZXJrbm9jayIsIm1jcCJdfQ==) |\n| Cursor (hosted, no install) | [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=srift-hosted&config=eyJ1cmwiOiJodHRwczovL3NyaWZ0LmFwcC9tY3AifQ==) |\n| VS Code (local) | [Install in VS Code](vscode:mcp/install?%7B%22name%22%3A%22srift%22%2C%22command%22%3A%22srift%22%2C%22args%22%3A%5B%22mcp%22%5D%7D) |\n| VS Code (hosted) | [Install in VS Code](vscode:mcp/install?%7B%22name%22%3A%22srift-hosted%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fsrift.app%2Fmcp%22%7D) |\n| Replit (hosted) | [Add to Replit](https://replit.com/integrations?mcp=eyJkaXNwbGF5TmFtZSI6IlNSSUZUIiwiYmFzZVVybCI6Imh0dHBzOi8vc3JpZnQuYXBwL21jcCJ9) |\n| Kiro (local) | [Add to Kiro](https://kiro.dev/launch/mcp/add?name=srift&config=eyJjb21tYW5kIjoic3JpZnQiLCJhcmdzIjpbIm1jcCJdfQ==) |\n| Claude Code | `claude mcp add srift -- srift mcp` · `claude mcp add srift-peerknock -- srift peerknock mcp` |\n| Codex CLI | `codex plugin marketplace add srivardhan113/SRIFT-Open_Source` then install `srift` |\n| Any agent (skills) | `npx skills add srivardhan113/SRIFT-Open_Source` |\n| Windows | `winget install SRIFT.Srift` |\n| macOS / Linux | `brew tap srivardhan113/srift && brew install srift` · `scoop bucket add srift https://github.com/srivardhan113/scoop-srift && scoop install srift` |\n\nAn agent installing SRIFT on its own can follow [llms-install.md](https://srift.app/llms-install.md).\n\n---\n\n## 📄 License\n\nMIT License © [SRIFT](https://srift.app)\n","readmeFilename":"README.md"}