Kullanım kılavuzu

← Home

Hızlı başlangıç

# dosya gönder — parola otomatik oluşturulur, bağlantı + parola yazdırılır
$ 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

# indir — parola etkileşimli olarak sorulur
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

CLI şifreleme, yükleme, indirme ve şifre çözme işlemlerini otomatik yapar. Sunucu parolanızı veya düz metin verinizi asla görmez.

Kurulum

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl
$ scoop install ttl

Hazır derlenmiş dosya

# platformunuz için sürümlerden indirin
$ 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

$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest

Kaynak koddan derleme

$ git clone https://github.com/tweenietomatoes/ttl
$ cd ttl && go build -o ttl ./cmd/ttl/
$ sudo mv ttl /usr/local/bin/

Doğrulama

$ ttl version
ttl v1.3.0

Dosya gönderme

Temel gönderim

# parolayı otomatik oluştur, varsayılan 7 gün TTL
$ ttl send report.xlsx

Terminalde parola belirtilmezse CLI şunu sorar:

No password provided. Generate one? [Y/n]:

Otomatik oluşturmak için Enter'a basın veya y yazın.

Özel parola

$ ttl send -p mySecretPass -t 1h document.pdf

Okuduktan sonra sil

# dosya ilk indirmeden sonra kalıcı olarak silinir
$ ttl send -b photo.jpg

Özel TTL

$ ttl send -t 5m temp-credentials.txt   # 5 dakikada süresi dolar
$ ttl send -t 30m meeting-link.txt      # 30 dakikada süresi dolar
$ ttl send -t 6h backup.tar.gz          # 6 saatte süresi dolar
$ ttl send -t 1d daily-report.pdf       # 1 günde süresi dolar
$ ttl send -t 3d project-archive.zip    # 3 günde süresi dolar
$ ttl send -t 5d design-assets.zip      # 5 günde süresi dolar
$ ttl send report.xlsx                  # 7 günde süresi dolar (varsayılan)

Dosya indirme

Etkileşimli (terminal)

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

Parola güvenli şekilde okunur — terminalde gösterilmez. Orijinal dosya adı korunur.

Yalnızca token ile

# tam URL yerine yalnızca 10 karakterlik token kullanabilirsiniz
$ ttl get aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

Çıktı dizini

$ ttl get -o ~/Downloads aBcDeFgHiJ

Varsayılan olarak dosyalar mevcut dizine kaydedilir. Farklı bir dizin belirtmek için -o / --output kullanın.

Parola bayrağı ile

$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ

Tarayıcı

Bağlantıyı doğrudan ziyaret ederek dosyaları tarayıcınızda da indirebilir ve şifresini çözebilirsiniz. Web arayüzü aynı şifreleme kütüphanesini kullanır ve parolanızı sorar. Yazılım kurulumu gerekmez.

Parola yönetimi

Parola, şifreleme anahtarının temelidir. Cihazınızdan asla çıkmaz ve sunucuya asla gönderilmez. Beş farklı yolla belirtilebilir:

1. Otomatik oluşturma (yalnızca gönderimde)

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: y
Generated password: aB3kL9mX

[0-9A-Za-z] karakter setinden kriptografik olarak rastgele 8 karakterlik parola oluşturur. Yalnızca terminalde send sırasında kullanılabilir.

2. Etkileşimli istem

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: n
Enter password: ********
Confirm password: ********

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********

Parola ekrana yansıtılmaz ve kabuk geçmişine kaydedilmez. send sırasında önce otomatik oluşturma teklif edilir; kendi parolanızı yazarsanız doğrulama için ikinci kez girmeniz istenir. get sırasında doğrudan sorulur.

3. Bayrak: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password ps aux çıktısında görünür ve kabuk geçmişine (~/.bash_history) kaydedilebilir. Paylaşımlı ortamlarda ve betiklerde kullanmaktan kaçının. Bunun yerine --password-stdin veya --password-file kullanın.

4. Stdin: --password-stdin

# echo ile pipe
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# parola yöneticisinden pipe
$ pass show ttl/key | ttl send --password-stdin data.zip

# ortam değişkeninden pipe
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

# heredoc
$ ttl send --password-stdin report.pdf <<<"mySecretPass"

Stdin'den ilk satırı okur. Betiklerde, CI/CD işlem hatlarında ve otomasyonda kullanışlıdır. Stdin bir terminal değilse ve parola kaynağı belirtilmemişse CLI hata ile çıkar (--json kullanılıyorsa hariç — bu durumda parola otomatik oluşturulur).

5. Dosya: --password-file

$ ttl send --password-file /run/secrets/key report.xlsx
$ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ

Dosyanın ilk satırını okur (sondaki satır sonu karakteri kırpılır). Docker secrets (/run/secrets/), Vault agent dosyaları ve benzeri yapılarla uyumludur.

6. Otomatik algılanan dosya: ttl.password

Açıkça parola verilmezse CLI, önce çalıştırılabilir dosyanın yanındaki ttl.password dosyasını, ardından ~/.ttl/password dosyasını arar. İlk satır parola olarak kullanılır.

Aynı anda yalnızca bir açık parola kaynağı kullanılabilir. -p / --password, --password-stdin ve --password-file birleştirilemez. Otomatik algılanan ttl.password dosyası yalnızca bunların hiçbiri verilmediğinde kontrol edilir. Minimum parola uzunluğu 8 karakterdir.

Seçenekler referansı

Gönderim bayrakları

BayrakAçıklamaVarsayılan
-p, --password PŞifreleme parolasıetkileşimli
--password-stdinParolayı stdin'den oku
--password-file FParolayı dosyadan oku
-t, --ttl SÜREYaşam süresi7d
-b, --burnOkuduktan sonra sil (tek indirme)kapalı
--timeout SÜRETransfer zaman aşımıotomatik
--server URLSunucu URL'sihttps://ttl.space
-h3, --http3HTTP/3 (QUIC) dene, TCP'ye geri dönkapalı
--jsonJSON çıktısını stdout'a yaz (betikler ve yapay zeka ajanları için)kapalı

İndirme bayrakları

BayrakAçıklamaVarsayılan
-p, --password PŞifre çözme parolasıetkileşimli
--password-stdinParolayı stdin'den oku
--password-file FParolayı dosyadan oku
-o, --output DIRÇıktı dizinimevcut dizin
--timeout SÜRETransfer zaman aşımıotomatik
-h3, --http3HTTP/3 (QUIC) dene, TCP'ye geri dönkapalı
--jsonJSON çıktısını stdout'a yaz (betikler ve yapay zeka ajanları için)kapalı

TTL değerleri

Ücretsiz: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d

Orbit ek: 14d 15d 28d 30d

Zaman aşımı

Varsayılan: otomatik — dosya boyutuna göre 1 Mbps varsayarak + 2 dakika marj ile hesaplanır (minimum 5 dakika). --timeout 10m veya --timeout 1h ile geçersiz kılın.

Örnekler

Betik: yedekle ve yükle

#!/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

Bağlantıyı panoya kopyala (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Bağlantıyı panoya kopyala (Linux)

$ ttl send -p mypass123 file.pdf | xclip -sel clip

Tek seferlik sır

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# bağlantı tam olarak bir kez çalışır, 5 dakikada süresi dolar

JSON modu (betikler & yapay zeka ajanları)

# gönder — JSON modunda parola otomatik oluşturulur
$ ttl --json send report.pdf
{"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"}

# indir
$ ttl --json get -p aB3kL9mX xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# hatalar ok:false döndürür
{"ok":false,"error":"Link not found"}

--json modunda tüm çıktı stdout'a yapılandırılmış JSON olarak verilir. Gönderim sırasında parola belirtilmezse otomatik oluşturulur ve yanıta dahil edilir. Çıkış kodu başarıda 0, hatada 1'dir.

Orbit planı

Orbit daha büyük dosyalar (10 GB), daha uzun saklama (30 gün) ve dosya yönetimi (listeleme ve silme) sunar.

API anahtarı otomatik algılanır: TTL_API_KEY ortam değişkeni, çalıştırılabilir dosyanın yanındaki ttl.key veya ~/.ttl/key. Anahtarı kaydetmek için ttl activate kullanın veya bu konumlardan birine elle yazın.

# anahtarınızı etkinleştirin
$ ttl activate ttl_orbit_aBcDeFgHiJ...
Orbit plan activated. Key saved to /usr/local/bin/ttl.key

# plan ve kullanımı kontrol edin
$ 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 / 250.0 GB

# uzatılmış TTL ile gönder
$ ttl send -t 30d large-backup.tar.gz

# son yüklemeleri listele
$ 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

# dosyayı erken sil
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# kayıtlı anahtarı kaldır
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Yükleme ve indirme, CLI'ın şifreleme hattını gerektirir (Argon2id + XChaCha20-Poly1305 + parçalı AEAD). Betikler için ttl send / ttl get veya --json modunu kullanın. Aşağıdaki uç noktalar Orbit dosya yönetimi içindir.

Dosyaları listele (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}]}

Bu anahtarla yüklenen tüm dosyaları döndürür. Orbit planı gerektirir.

Dosya sil (Orbit)

$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."

Başarıda 204 No Content döndürür. Orbit planı gerektirir. Dosya bu anahtara ait olmalıdır.

Hata yanıtları

DurumAnlam
401Geçersiz veya süresi dolmuş API anahtarı
403Özellik Orbit planı gerektirir
404Dosya bulunamadı veya bu anahtara ait değil
429İstek limiti aşıldı

Limitler

KısıtlamaÜcretsizOrbit
Maks dosya boyutu2 GB10 GB
Maks TTL7 gün30 gün
Günlük yükleme1050
Depolama kotası250 GB
Listeleme ve silme
Min parola uzunluğu8 karakter
IP başına istek10 saniyede 30
IP başına bağlantı10 eşzamanlı

Şifreleme

Dosyalar yüklemeden önce cihazınızda şifrelenir. Sunucu yalnızca şifreli metni saklar ve dosyalarınızın şifresini çözemez.

BileşenAlgoritma / Değer
Anahtar türetmeArgon2id (time=3, memory=64 MB, parallelism=1)
ŞifreXChaCha20-Poly1305 AEAD

Şifreli metinde yapılan herhangi bir değişiklik, şifre çözme işleminin başarısız olmasına neden olur. Sunucu, şifreli metni yayınlamadan önce indirme yapanın doğru parolayı bildiğini, şifreleme anahtarından türetilen tek yönlü bir token kullanarak doğrular.