# kirim berkas — kata sandi dibuat otomatis, tautan + kata sandi ditampilkan $ ttl send secret.pdf No password provided. Generate one? [Y/n]: Generated password: aB3kL9mX ·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB) IMPORTANT! Save your password — required to download and decrypt the file. Password: aB3kL9mX https://ttl.space/aBcDeFgHiJ # unduh — kata sandi diminta secara interaktif $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI menangani enkripsi, pengunggahan, pengunduhan, dan dekripsi secara otomatis. Server tidak pernah melihat kata sandi atau data teks biasa Anda.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# unduh rilis untuk platform Anda $ curl -Lo ttl.tar.gz \ https://github.com/tweenietomatoes/ttl/releases/latest/download/ttl_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 v1.3.0
# buat kata sandi otomatis, TTL bawaan 7 hari $ ttl send report.xlsx
Jika tidak ada kata sandi di terminal, CLI akan bertanya:
No password provided. Generate one? [Y/n]:
Tekan Enter atau ketik y untuk membuat otomatis.
$ ttl send -p mySecretPass -t 1h document.pdf
# berkas dihapus permanen setelah unduhan pertama $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # kedaluwarsa dalam 5 menit $ ttl send -t 30m meeting-link.txt # kedaluwarsa dalam 30 menit $ ttl send -t 6h backup.tar.gz # kedaluwarsa dalam 6 jam $ ttl send -t 1d daily-report.pdf # kedaluwarsa dalam 1 hari $ ttl send -t 3d project-archive.zip # kedaluwarsa dalam 3 hari $ ttl send -t 5d design-assets.zip # kedaluwarsa dalam 5 hari $ ttl send report.xlsx # kedaluwarsa dalam 7 hari (bawaan)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Kata sandi dibaca secara aman — tidak ditampilkan di terminal. Nama berkas asli dipertahankan.
# Anda bisa menggunakan token 10 karakter saja, bukan URL lengkap $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
Secara bawaan berkas disimpan di direktori saat ini. Gunakan -o / --output untuk menentukan direktori lain.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Anda juga bisa mengunduh dan mendekripsi berkas di peramban dengan mengunjungi tautan langsung. Antarmuka web menggunakan pustaka enkripsi yang sama dan meminta kata sandi Anda. Tidak perlu instalasi perangkat lunak.
Kata sandi adalah dasar dari kunci enkripsi. Tidak pernah meninggalkan perangkat Anda dan tidak pernah dikirim ke server. Dapat ditentukan dengan lima cara berbeda:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Membuat kata sandi acak 8 karakter secara kriptografis dari set karakter [0-9A-Za-z]. Hanya tersedia saat send di terminal.
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Kata sandi tidak ditampilkan di layar dan tidak disimpan di riwayat shell. Saat send, pembuatan otomatis ditawarkan terlebih dahulu; jika Anda mengetik kata sandi sendiri, Anda diminta memasukkannya sekali lagi untuk konfirmasi. Saat get, langsung diminta.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password terlihat di output ps aux dan mungkin tersimpan di riwayat shell (~/.bash_history). Hindari penggunaan di lingkungan bersama dan skrip. Gunakan --password-stdin atau --password-file sebagai gantinya.--password-stdin# pipe dengan echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # pipe dari pengelola kata sandi $ pass show ttl/key | ttl send --password-stdin data.zip # pipe dari variabel lingkungan $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Membaca baris pertama dari stdin. Berguna untuk skrip, pipeline CI/CD, dan otomasi. Jika stdin bukan terminal dan sumber kata sandi tidak ditentukan, CLI keluar dengan error (kecuali menggunakan --json — dalam hal ini kata sandi dibuat otomatis).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Membaca baris pertama berkas (karakter baris baru di akhir dipotong). Kompatibel dengan Docker secrets (/run/secrets/), berkas Vault agent, dan sejenisnya.
ttl.passwordJika tidak ada kata sandi yang diberikan secara eksplisit, CLI terlebih dahulu mencari berkas ttl.password di samping berkas eksekusi, kemudian ~/.ttl/password. Baris pertama digunakan sebagai kata sandi.
-p / --password, --password-stdin, dan --password-file tidak dapat digabungkan. Berkas ttl.password yang terdeteksi otomatis hanya diperiksa jika tidak ada yang diberikan. Panjang kata sandi minimum adalah 8 karakter.| Flag | Deskripsi | Bawaan |
|---|---|---|
-p, --password P | Kata sandi enkripsi | interaktif |
--password-stdin | Baca kata sandi dari stdin | |
--password-file F | Baca kata sandi dari berkas | |
-t, --ttl DURASI | Masa berlaku | 7d |
-b, --burn | Hapus setelah dibaca (satu unduhan) | nonaktif |
--timeout DURASI | Batas waktu transfer | otomatis |
--server URL | URL server | https://ttl.space |
-h3, --http3 | Coba HTTP/3 (QUIC), fallback ke TCP | nonaktif |
--json | Tulis output JSON ke stdout (untuk skrip dan agen AI) | nonaktif |
| Flag | Deskripsi | Bawaan |
|---|---|---|
-p, --password P | Kata sandi dekripsi | interaktif |
--password-stdin | Baca kata sandi dari stdin | |
--password-file F | Baca kata sandi dari berkas | |
-o, --output DIR | Direktori keluaran | direktori saat ini |
--timeout DURASI | Batas waktu transfer | otomatis |
-h3, --http3 | Coba HTTP/3 (QUIC), fallback ke TCP | nonaktif |
--json | Tulis output JSON ke stdout (untuk skrip dan agen AI) | nonaktif |
Gratis: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Tambahan Orbit: 14d 15d 28d 30d
Bawaan: otomatis — dihitung berdasarkan ukuran berkas dengan asumsi 1 Mbps + margin 2 menit (minimum 5 menit). Timpa dengan --timeout 10m atau --timeout 1h.
#!/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 # tautan hanya berfungsi sekali, kedaluwarsa dalam 5 menit
# kirim — dalam mode JSON kata sandi dibuat otomatis $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # unduh $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # kesalahan mengembalikan ok:false {"ok":false,"error":"Link not found"}
Dalam mode --json semua output diberikan sebagai JSON terstruktur ke stdout. Saat pengiriman, jika kata sandi tidak ditentukan, kata sandi dibuat otomatis dan disertakan dalam respons. Kode keluar 0 untuk berhasil, 1 untuk gagal.
Orbit menawarkan berkas lebih besar (10 GB), penyimpanan lebih lama (30 hari), dan pengelolaan berkas (daftar dan hapus).
Kunci API terdeteksi otomatis: variabel lingkungan TTL_API_KEY, ttl.key di samping berkas eksekusi, atau ~/.ttl/key. Gunakan ttl activate untuk menyimpan kunci atau tulis manual ke salah satu lokasi tersebut.
# aktifkan kunci Anda $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # periksa paket dan penggunaan $ ttl plan Plan: orbit Max file size: 10.0 GB Max TTL: 30 days Uploads per day: Unlimited Usage: Uploads today: 3 Active storage: 1.2 GB / 500.0 GB # kirim dengan TTL diperpanjang $ ttl send -t 30d large-backup.tar.gz # daftar unggahan terbaru $ 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 # hapus berkas lebih awal $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # hapus kunci tersimpan $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get atau mode --json. Endpoint di bawah untuk pengelolaan berkas 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}]}
Mengembalikan semua berkas yang diunggah dengan kunci ini. Memerlukan paket Orbit.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Mengembalikan 204 No Content jika berhasil. Memerlukan paket Orbit. Berkas harus milik kunci ini.
| Status | Arti |
|---|---|
401 | Kunci API tidak valid atau kedaluwarsa |
403 | Fitur memerlukan paket Orbit |
404 | Berkas tidak ditemukan atau bukan milik kunci ini |
429 | Batas permintaan terlampaui |
| Batasan | Gratis | Orbit |
|---|---|---|
| Ukuran berkas maks | 2 GB | 10 GB |
| TTL maks | 7 hari | 30 hari |
| Muat naik harian | 10 | 50 |
| Kuota penyimpanan | — | 500 GB |
| Daftar dan hapus | — | ✓ |
| Panjang kata sandi min | 8 karakter | |
| Permintaan per IP | 30 per 10 detik | |
| Koneksi per IP | 10 bersamaan | |
Berkas dienkripsi di perangkat Anda sebelum diunggah. Server hanya menyimpan teks terenkripsi dan tidak dapat mendekripsi berkas Anda.
| Komponen | Algoritma / Nilai |
|---|---|
| Derivasi kunci | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Sandi | XChaCha20-Poly1305 AEAD |
Perubahan apa pun pada teks terenkripsi menyebabkan dekripsi gagal. Server memverifikasi bahwa pengunduh mengetahui kata sandi yang benar menggunakan token satu arah yang diturunkan dari kunci enkripsi, sebelum menyajikan teks terenkripsi.