srift 4.3.0__tar.gz → 4.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {srift-4.3.0 → srift-4.3.2}/PKG-INFO +28 -5
- {srift-4.3.0 → srift-4.3.2}/README.md +23 -1
- {srift-4.3.0 → srift-4.3.2}/pyproject.toml +12 -23
- {srift-4.3.0 → srift-4.3.2}/src/srift.py +1 -1
- {srift-4.3.0 → srift-4.3.2}/src/srift_cli/__init__.py +1 -1
- {srift-4.3.0 → srift-4.3.2}/src/srift_cli/_vendor/daemon.js +365 -218
- {srift-4.3.0 → srift-4.3.2}/src/srift_cli/_vendor/index.js +401 -221
- {srift-4.3.0 → srift-4.3.2}/.gitignore +0 -0
- {srift-4.3.0 → srift-4.3.2}/LICENSE +0 -0
- {srift-4.3.0 → srift-4.3.2}/build.py +0 -0
- {srift-4.3.0 → srift-4.3.2}/scripts/bundle.mjs +0 -0
- {srift-4.3.0 → srift-4.3.2}/src/srift_cli/__main__.py +0 -0
- {srift-4.3.0 → srift-4.3.2}/src/srift_cli/_vendor/package.json +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: srift
|
|
3
|
-
Version: 4.3.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 4.3.2
|
|
4
|
+
Summary: Send any file as a download link from the CLI, Python or an AI agent (MCP server). Encrypted P2P file transfer and chat. No account. Bundles the SRIFT CLI.
|
|
5
5
|
Project-URL: Homepage, https://srift.app
|
|
6
6
|
Project-URL: Repository, https://github.com/srivardhan113/SRIFT-Open_Source
|
|
7
7
|
Project-URL: Issues, https://github.com/srivardhan113/SRIFT-Open_Source/issues
|
|
8
|
-
Project-URL: Documentation, https://srift.app/
|
|
8
|
+
Project-URL: Documentation, https://srift.app/AGENTS.md
|
|
9
|
+
Project-URL: Changelog, https://srift.app/CHANGELOG.md
|
|
9
10
|
Author: SRIFT
|
|
10
11
|
License: MIT License
|
|
11
12
|
|
|
@@ -30,7 +31,7 @@ License: MIT License
|
|
|
30
31
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
32
|
SOFTWARE.
|
|
32
33
|
License-File: LICENSE
|
|
33
|
-
Keywords:
|
|
34
|
+
Keywords: agent-to-agent,ai-agents,claude,cli,cursor,e2ee,encryption,file-sharing,file-transfer,mcp,mcp-server,model-context-protocol,p2p,sdk,send-files,webrtc
|
|
34
35
|
Classifier: Development Status :: 5 - Production/Stable
|
|
35
36
|
Classifier: Environment :: Console
|
|
36
37
|
Classifier: Intended Audience :: Developers
|
|
@@ -68,6 +69,28 @@ Deliver any file from an AI agent sandbox (Claude, Cursor, Windsurf, Continue, Z
|
|
|
68
69
|
📦 **GitHub Repository:** [https://github.com/srivardhan113/SRIFT-Open_Source](https://github.com/srivardhan113/SRIFT-Open_Source)
|
|
69
70
|
🤖 **AI Agent Hub:** [https://srift.app/ai-agents](https://srift.app/ai-agents)
|
|
70
71
|
|
|
72
|
+
## Quick start
|
|
73
|
+
|
|
74
|
+
Send a file as a link (nothing to install, the recipient just opens it):
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npx -y srift-transfer quick-share ./report.pdf
|
|
78
|
+
# ↳ https://srift.app/d/7k3m9xq
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Give an AI agent file transfer. Add to any MCP client (Claude Desktop, Cursor, Windsurf, Cline, VS Code):
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{ "mcpServers": { "srift": { "command": "npx", "args": ["-y", "srift-transfer", "mcp"] } } }
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
claude mcp add srift -- npx -y srift-transfer mcp # Claude Code, local (15 tools)
|
|
89
|
+
claude mcp add --transport http srift-hosted https://srift.app/mcp # hosted, no install (9 session tools)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Then ask: "send me the build as a link". The agent calls `srift_quick_share` and replies with the URL.
|
|
93
|
+
|
|
71
94
|
---
|
|
72
95
|
|
|
73
96
|
## ⚡ Why SRIFT for AI Agents?
|
|
@@ -485,7 +508,7 @@ Events emitted: `connection_state`, `join_request`, `participants`, `file_offer`
|
|
|
485
508
|
- **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).
|
|
486
509
|
- **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.
|
|
487
510
|
- **Adaptive Transport Stack** (every rung works over outbound 443 when needed):
|
|
488
|
-
1. **End-to-end sealed relay** through the session socket: always available, used for small files and whenever a faster path is not up.
|
|
511
|
+
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).
|
|
489
512
|
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).
|
|
490
513
|
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.
|
|
491
514
|
- **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.
|
|
@@ -18,6 +18,28 @@ Deliver any file from an AI agent sandbox (Claude, Cursor, Windsurf, Continue, Z
|
|
|
18
18
|
📦 **GitHub Repository:** [https://github.com/srivardhan113/SRIFT-Open_Source](https://github.com/srivardhan113/SRIFT-Open_Source)
|
|
19
19
|
🤖 **AI Agent Hub:** [https://srift.app/ai-agents](https://srift.app/ai-agents)
|
|
20
20
|
|
|
21
|
+
## Quick start
|
|
22
|
+
|
|
23
|
+
Send a file as a link (nothing to install, the recipient just opens it):
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx -y srift-transfer quick-share ./report.pdf
|
|
27
|
+
# ↳ https://srift.app/d/7k3m9xq
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Give an AI agent file transfer. Add to any MCP client (Claude Desktop, Cursor, Windsurf, Cline, VS Code):
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{ "mcpServers": { "srift": { "command": "npx", "args": ["-y", "srift-transfer", "mcp"] } } }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
claude mcp add srift -- npx -y srift-transfer mcp # Claude Code, local (15 tools)
|
|
38
|
+
claude mcp add --transport http srift-hosted https://srift.app/mcp # hosted, no install (9 session tools)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then ask: "send me the build as a link". The agent calls `srift_quick_share` and replies with the URL.
|
|
42
|
+
|
|
21
43
|
---
|
|
22
44
|
|
|
23
45
|
## ⚡ Why SRIFT for AI Agents?
|
|
@@ -435,7 +457,7 @@ Events emitted: `connection_state`, `join_request`, `participants`, `file_offer`
|
|
|
435
457
|
- **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).
|
|
436
458
|
- **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.
|
|
437
459
|
- **Adaptive Transport Stack** (every rung works over outbound 443 when needed):
|
|
438
|
-
1. **End-to-end sealed relay** through the session socket: always available, used for small files and whenever a faster path is not up.
|
|
460
|
+
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).
|
|
439
461
|
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).
|
|
440
462
|
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.
|
|
441
463
|
- **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.
|
|
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "srift"
|
|
7
|
-
version = "4.3.
|
|
8
|
-
description = "
|
|
7
|
+
version = "4.3.2"
|
|
8
|
+
description = "Send any file as a download link from the CLI, Python or an AI agent (MCP server). Encrypted P2P file transfer and chat. No account. Bundles the SRIFT CLI."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
11
11
|
requires-python = ">=3.9"
|
|
@@ -14,31 +14,19 @@ keywords = [
|
|
|
14
14
|
"mcp",
|
|
15
15
|
"mcp-server",
|
|
16
16
|
"model-context-protocol",
|
|
17
|
-
"ai-agent",
|
|
18
|
-
"ai-agents",
|
|
19
|
-
"claude",
|
|
20
|
-
"cursor",
|
|
21
|
-
"windsurf",
|
|
22
17
|
"file-transfer",
|
|
18
|
+
"file-sharing",
|
|
19
|
+
"send-files",
|
|
23
20
|
"p2p",
|
|
24
|
-
"
|
|
21
|
+
"e2ee",
|
|
25
22
|
"encryption",
|
|
26
|
-
"aes-256-gcm",
|
|
27
23
|
"cli",
|
|
28
|
-
"
|
|
29
|
-
"sdk",
|
|
30
|
-
"end-to-end-encryption",
|
|
31
|
-
"e2ee",
|
|
32
|
-
"webrtc",
|
|
24
|
+
"ai-agents",
|
|
33
25
|
"agent-to-agent",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"autogen",
|
|
39
|
-
"secure-file-transfer",
|
|
40
|
-
"encrypted-chat",
|
|
41
|
-
"wetransfer-alternative",
|
|
26
|
+
"claude",
|
|
27
|
+
"cursor",
|
|
28
|
+
"webrtc",
|
|
29
|
+
"sdk",
|
|
42
30
|
]
|
|
43
31
|
classifiers = [
|
|
44
32
|
"Development Status :: 5 - Production/Stable",
|
|
@@ -65,7 +53,8 @@ dependencies = ["nodejs-wheel-binaries>=24.19.0"]
|
|
|
65
53
|
Homepage = "https://srift.app"
|
|
66
54
|
Repository = "https://github.com/srivardhan113/SRIFT-Open_Source"
|
|
67
55
|
Issues = "https://github.com/srivardhan113/SRIFT-Open_Source/issues"
|
|
68
|
-
Documentation = "https://srift.app/
|
|
56
|
+
Documentation = "https://srift.app/AGENTS.md"
|
|
57
|
+
Changelog = "https://srift.app/CHANGELOG.md"
|
|
69
58
|
|
|
70
59
|
[project.scripts]
|
|
71
60
|
srift = "srift_cli.__main__:main"
|
|
@@ -27,7 +27,7 @@ import urllib.error
|
|
|
27
27
|
from typing import Any, Dict, List, Optional
|
|
28
28
|
|
|
29
29
|
__all__ = ["Srift", "AsyncSrift", "SriftError"]
|
|
30
|
-
__version__ = "4.3.
|
|
30
|
+
__version__ = "4.3.2"
|
|
31
31
|
# Python-urllib's default User-Agent is refused by some CDNs/WAFs (srift.app included).
|
|
32
32
|
_UA = f"srift-python-sdk/{__version__}"
|
|
33
33
|
|