# फ़ाइल भेजें: पासवर्ड स्वतः उत्पन्न होता है, लिंक + पासवर्ड प्रिंट होता है $ ttl send secret.pdf No password provided. Generate one? [Y/n]: Generated password: aB3kL9mXq7Rt ·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB) IMPORTANT! Save your password — required to download and decrypt the file. Password: aB3kL9mXq7Rt https://ttl.space/aBcDeFgHiJ # डाउनलोड करें: पासवर्ड इंटरैक्टिव रूप से पूछा जाता है $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI एन्क्रिप्शन, अपलोड, डाउनलोड और डिक्रिप्शन को स्वचालित रूप से संभालता है। सर्वर कभी भी आपका पासवर्ड या सादा डेटा नहीं देखता।
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# अपने प्लेटफ़ॉर्म के लिए रिलीज़ से डाउनलोड करें $ curl -Lo ttl.tar.gz \ https://github.com/tweenietomatoes/ttl/releases/download/v1.6.0/ttl_1.6.0_linux_amd64.tar.gz $ tar xzf ttl.tar.gz && sudo mv ttl /usr/local/bin/
$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest
$ git clone https://github.com/tweenietomatoes/ttl $ cd ttl && go build -o ttl ./cmd/ttl/ $ sudo mv ttl /usr/local/bin/
$ ttl version ttl 1.6.0
# पासवर्ड स्वतः उत्पन्न, डिफ़ॉल्ट 7 दिन TTL $ ttl send report.xlsx
जब टर्मिनल में कोई पासवर्ड नहीं दिया जाता, तो CLI पूछता है:
No password provided. Generate one? [Y/n]:
स्वतः उत्पन्न करने के लिए Enter दबाएँ या y टाइप करें।
$ ttl send -p mySecretPass -t 1h document.pdf
# पहला डाउनलोड शुरू होते ही फ़ाइल इस्तेमाल हो जाती है; रुकावट के बाद सिर्फ़ वही डाउनलोड फिर से जारी हो सकता है $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # 5 मिनट में समाप्त $ ttl send -t 30m meeting-link.txt # 30 मिनट में समाप्त $ ttl send -t 6h backup.tar.gz # 6 घंटे में समाप्त $ ttl send -t 1d daily-report.pdf # 1 दिन में समाप्त $ ttl send -t 3d project-archive.zip # 3 दिन में समाप्त $ ttl send -t 5d design-assets.zip # 5 दिन में समाप्त $ ttl send report.xlsx # 7 दिन में समाप्त (डिफ़ॉल्ट)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
पासवर्ड सुरक्षित रूप से पढ़ा जाता है, टर्मिनल पर नहीं दिखाया जाता। मूल फ़ाइल नाम संरक्षित रहता है; यदि आउटपुट डायरेक्टरी में उसी नाम की फ़ाइल पहले से मौजूद है, तो उस पर ओवरराइट करने के बजाय फ़ाइल name (1).ext के रूप में सहेजी जाती है।
# पूर्ण URL के बजाय केवल 10 अक्षर का टोकन उपयोग कर सकते हैं $ ttl get aBcDeFgHiJ
$ ttl get -o ~/Downloads aBcDeFgHiJ
डिफ़ॉल्ट रूप से फ़ाइलें वर्तमान डायरेक्टरी में सहेजी जाती हैं। अलग डायरेक्टरी निर्दिष्ट करने के लिए -o / --output का उपयोग करें।
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
आप लिंक पर सीधे जाकर अपने ब्राउज़र में भी फ़ाइलें डाउनलोड और डिक्रिप्ट कर सकते हैं। वेब इंटरफ़ेस उसी फ़ाइल फ़ॉर्मेट और एल्गोरिथ्म (Argon2id, XChaCha20-Poly1305) का उपयोग करता है और आपसे पासवर्ड पूछता है। किसी सॉफ़्टवेयर की इंस्टॉलेशन आवश्यक नहीं है।
पासवर्ड एन्क्रिप्शन कुंजी का आधार है। यह कभी भी आपके उपकरण से बाहर नहीं जाता और सर्वर को कभी नहीं भेजा जाता। इसे प्रदान करने के छह तरीके हैं:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mXq7Rt
[0-9A-Za-z] वर्ण सेट से क्रिप्टोग्राफ़िक रूप से यादृच्छिक 12 अक्षरों का पासवर्ड उत्पन्न करता है। केवल send के दौरान उपलब्ध है (इंटरैक्टिव रूप से, या --json मोड में स्वचालित रूप से)।
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
पासवर्ड स्क्रीन पर नहीं दिखाया जाता। send के दौरान पहले स्वतः उत्पन्न करने का विकल्प दिया जाता है; यदि आप अपना पासवर्ड टाइप करते हैं, तो सत्यापन के लिए दोबारा दर्ज करना होता है। get के दौरान सीधे पूछा जाता है।
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password ps aux आउटपुट में दिखाई देता है और शेल इतिहास (~/.bash_history) में सहेजा जा सकता है। साझा वातावरण और स्क्रिप्ट में उपयोग से बचें। इसके बजाय --password-stdin या --password-file का उपयोग करें।--password-stdin# echo से पाइप $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # पासवर्ड मैनेजर से पाइप $ pass show ttl/key | ttl send --password-stdin data.zip # एनवायरनमेंट वेरिएबल से पाइप $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
stdin से पहली पंक्ति पढ़ता है। स्क्रिप्ट, CI/CD पाइपलाइन और ऑटोमेशन में उपयोगी है। जब stdin टर्मिनल नहीं है और कोई पासवर्ड स्रोत नहीं दिया गया है, तो CLI त्रुटि के साथ बाहर निकलता है (--json उपयोग होने पर छोड़कर, उस स्थिति में पासवर्ड स्वतः उत्पन्न होता है)।
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
फ़ाइल की पहली पंक्ति पढ़ता है (अंत में न्यूलाइन हटा दी जाती है)। Docker secrets (/run/secrets/), Vault agent फ़ाइलों और इसी तरह के पैटर्न के साथ संगत है।
ttl.passwordयदि कोई स्पष्ट पासवर्ड नहीं दिया गया है, तो CLI पहले बाइनरी के बगल में ttl.password फ़ाइल खोजता है, फिर ~/.ttl/password। पहली पंक्ति पासवर्ड के रूप में उपयोग की जाती है।
-p / --password, --password-stdin और --password-file को मिलाना एक त्रुटि है। स्वतः पहचानी गई ttl.password फ़ाइल केवल तभी जाँची जाती है जब इनमें से कोई भी नहीं दिया गया हो। न्यूनतम पासवर्ड लंबाई 8 अक्षर है।| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-p, --password P | एन्क्रिप्शन पासवर्ड | इंटरैक्टिव |
--password-stdin | stdin से पासवर्ड पढ़ें | |
--password-file F | फ़ाइल से पासवर्ड पढ़ें | |
-t, --ttl अवधि | जीवनकाल | 7d |
-b, --burn | पढ़ने के बाद मिटाएँ (एक बार डाउनलोड) | बंद |
-u, --uploader-only | केवल आपकी अपनी API कुंजी से डाउनलोड किया जा सकता है (Orbit; उपनाम --private) | बंद |
--timeout अवधि | ट्रांसफ़र टाइमआउट | कोई सीमा नहीं |
--server URL | सर्वर URL | https://ttl.space |
-h3, --http3 | HTTP/3 (QUIC) आज़माएँ, TCP पर वापस जाएँ | बंद |
--json | stdout पर JSON आउटपुट (स्क्रिप्ट और AI एजेंट के लिए) | बंद |
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-p, --password P | डिक्रिप्शन पासवर्ड | इंटरैक्टिव |
--password-stdin | stdin से पासवर्ड पढ़ें | |
--password-file F | फ़ाइल से पासवर्ड पढ़ें | |
-o, --output DIR | आउटपुट डायरेक्टरी | वर्तमान डायरेक्टरी |
--timeout अवधि | ट्रांसफ़र टाइमआउट | कोई सीमा नहीं |
-h3, --http3 | HTTP/3 (QUIC) आज़माएँ, TCP पर वापस जाएँ | बंद |
--json | stdout पर JSON आउटपुट (स्क्रिप्ट और AI एजेंट के लिए) | बंद |
निःशुल्क: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit अतिरिक्त: 14d 15d 28d 30d permanent
डिफ़ॉल्ट: कोई सीमा नहीं। रुका हुआ ट्रांसफ़र अपने आप फिर शुरू होता है, और आगे न बढ़ पाने पर बंद हो जाता है। सीमा तय करने के लिए --timeout 30m या --timeout 2h का उपयोग करें।
#!/bin/bash tar czf /tmp/backup.tar.gz /data echo "$BACKUP_KEY" | ttl send --password-stdin -t 6h /tmp/backup.tar.gz rm /tmp/backup.tar.gz
$ ttl send -p mypass123 file.pdf | pbcopy
$ ttl send -p mypass123 file.pdf | xclip -sel clip
$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env # लिंक ठीक एक बार काम करता है, 5 मिनट में समाप्त
# भेजें: JSON मोड में पासवर्ड स्वतः उत्पन्न होता है $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"uploader_only":false,"is_permanent":false,"password":"aB3kL9mXq7Rt"} # डाउनलोड करें $ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # त्रुटियाँ ok:false लौटाती हैं {"ok":false,"error":"Link not found"}
--json मोड में सभी आउटपुट stdout पर संरचित JSON के रूप में दिया जाता है। भेजते समय यदि कोई पासवर्ड नहीं दिया गया है तो स्वतः उत्पन्न होता है और प्रतिक्रिया में शामिल किया जाता है। निकास कोड सफलता पर 0, त्रुटि पर 1 है।
Orbit बड़ी फ़ाइलें (10 GB), लंबी अवधारण (30 दिन, या स्थायी), केवल अपलोडकर्ता के लिए फ़ाइलें (उन्हें केवल आपकी API कुंजी से डाउनलोड किया जा सकता है), और फ़ाइल प्रबंधन (सूची और हटाना) प्रदान करता है। पूरी तुलना: Features।
API कुंजी स्वतः पहचानी जाती है: TTL_API_KEY एनवायरनमेंट वेरिएबल, बाइनरी के बगल में ttl.key, या ~/.ttl/key। कुंजी सहेजने के लिए ttl activate का उपयोग करें, या इनमें से किसी भी स्थान पर मैन्युअल रूप से लिखें।
# अपनी कुंजी सक्रिय करें: बिना स्क्रीन पर दिखाए पूछी जाती है, इसलिए शेल इतिहास में नहीं जाती $ ttl activate Enter Orbit API key: ******** Orbit plan activated. Key saved to /usr/local/bin/ttl.key # गैर-इंटरैक्टिव: ttl activate --key-stdin | ttl activate --key-file F # योजना और उपयोग जाँचें $ ttl plan Plan: orbit Max file size: 10.0 GB Max TTL: 30 days (or permanent) Uploads per day: 1000000 Usage: Uploads today: 3 Active storage: 1.2 GB / 500.0 GB # विस्तारित TTL के साथ भेजें $ ttl send -t 30d large-backup.tar.gz # स्थायी फ़ाइल (केवल Orbit): कोई समाप्ति नहीं, जब तक आप इसे हटा न दें या आपकी सदस्यता समाप्त न हो जाए, तब तक रखी जाती है $ ttl send -t permanent archive.tar.gz # निजी फ़ाइल भेजें: इसे केवल आपकी API कुंजी से डाउनलोड किया जा सकता है (केवल Orbit) $ ttl send -u payroll.xlsx # हाल के अपलोड की सूची देखें $ ttl list xK9mQ2vLpA 4.2 MB 2026-03-16 10:30 → 2026-04-15 10:30 [active] https://ttl.space/xK9mQ2vLpA rT7bNw3KpF 912.0 KB 2026-03-15 14:20 → 2026-03-17 14:20 [active (burn)] https://ttl.space/rT7bNw3KpF # फ़ाइल को समय से पहले हटाएँ $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # सहेजी गई कुंजी हटाएँ $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get या --json मोड का उपयोग करें। नीचे दिए गए एंडपॉइंट Orbit फ़ाइल प्रबंधन के लिए हैं।$ curl https://ttl.space/v1/files -H "X-API-Key: ttl_orbit_..." {"files":[{"token":"xK9mQ2vLpA","link":"https://ttl.space/xK9mQ2vLpA","size_bytes":1048576,"created_at":1711800600,"expires_at":1714392600,"burn":false,"expired":false,"uploader_only":false,"is_permanent":false,"is_note":false,"perm_grace_until":0}],"has_more":false} # अगला पृष्ठ: केवल जब has_more true हो; पिछली प्रतिक्रिया का next_cursor भेजें $ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."
इस कुंजी से अपलोड की गई फ़ाइलें लौटाता है, सबसे नई पहले, प्रति पृष्ठ 20। जब has_more true होता है, तो प्रतिक्रिया में next_cursor भी शामिल होता है; अगला पृष्ठ प्राप्त करने के लिए इसे ?cursor= के रूप में भेजें। Orbit योजना आवश्यक है।
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
सफलता पर 204 No Content लौटाता है। Orbit योजना आवश्यक है। फ़ाइल इस कुंजी की होनी चाहिए।
| स्थिति | अर्थ |
|---|---|
401 | अमान्य या समाप्त API कुंजी |
403 | सुविधा के लिए Orbit योजना आवश्यक है |
404 | फ़ाइल नहीं मिली या इस कुंजी की नहीं है |
429 | अनुरोध सीमा पार हो गई |
500 | आंतरिक सर्वर त्रुटि, बाद में पुनः प्रयास करें |
502 | संग्रहण अस्थायी रूप से अनुपलब्ध, बाद में पुनः प्रयास करें |
| प्रतिबंध | निःशुल्क | Orbit |
|---|---|---|
| अधिकतम फ़ाइल आकार | 2 GB | 10 GB |
| अधिकतम TTL | 7 दिन | 30 दिन या स्थायी |
| प्रतिदिन अपलोड | 10 | असीमित |
| प्रतिदिन अपलोड मात्रा (प्रति IP) | 10 GB | असीमित |
| समवर्ती अपलोड | प्रति IP 1 | प्रति IP और प्रति API कुंजी 1 |
| संग्रहण कोटा | ✗ | 500 GB |
| फ़ाइल सूची | ✗ | ✓ |
| समय से पहले डिलीट | ✓ | ✓ |
| केवल अपलोडकर्ता के लिए फ़ाइलें | ✗ | ✓ |
| न्यूनतम पासवर्ड लंबाई | 8 अक्षर | |
| प्रति IP अनुरोध | 10 सेकंड में 30 | |
| प्रति IP कनेक्शन | 10 समवर्ती | |
फ़ाइलें अपलोड से पहले आपके उपकरण पर एन्क्रिप्ट की जाती हैं। सर्वर केवल सिफ़रटेक्स्ट संग्रहीत करता है और आपकी फ़ाइलों को डिक्रिप्ट नहीं कर सकता।
| घटक | एल्गोरिथ्म / मान |
|---|---|
| कुंजी व्युत्पत्ति | Argon2id (time=3, memory=64 MiB, parallelism=1) |
| सिफ़र | XChaCha20-Poly1305 AEAD |
सिफ़रटेक्स्ट में कोई भी परिवर्तन डिक्रिप्शन को विफल कर देता है। सर्वर सिफ़रटेक्स्ट जारी करने से पहले सत्यापित करता है कि डाउनलोड करने वाला सही पासवर्ड जानता है, एन्क्रिप्शन कुंजी से व्युत्पन्न एक-तरफ़ा टोकन का उपयोग करके।