Průvodce použitím

Čeština

Rychlý start

# Odeslání souboru: heslo se vygeneruje automaticky, odkaz + heslo se vypíše
$ 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

# Stažení: heslo se zadává interaktivně
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

CLI automaticky šifruje, nahrává, stahuje a dešifruje. Server nikdy nevidí vaše heslo ani vaše nešifrovaná data.

Instalace

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Předkompilovaný binární soubor

# Stáhněte verzi pro svou platformu z releases
$ 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

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

Ze zdrojového kódu

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

Ověření

$ ttl version
ttl 1.6.0

Odesílání souborů

Jednoduché odeslání

# Automatické generování hesla, výchozí TTL 7 d
$ ttl send report.xlsx

Pokud v terminálu nezadáte heslo, CLI se zeptá:

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

Stiskněte Enter nebo zadejte y pro automatické vygenerování.

Vlastní heslo

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

Smazání po přečtení

# Spotřebuje se ve chvíli, kdy začne první stažení; po přerušení může pokračovat jen toto stažení
$ ttl send -b photo.jpg

Vlastní TTL

$ ttl send -t 5m temp-credentials.txt   # vyprší za 5 minut
$ ttl send -t 30m meeting-link.txt      # vyprší za 30 minut
$ ttl send -t 6h backup.tar.gz          # vyprší za 6 hodin
$ ttl send -t 1d daily-report.pdf       # vyprší za 1 den
$ ttl send -t 3d project-archive.zip    # vyprší za 3 dny
$ ttl send -t 5d design-assets.zip      # vyprší za 5 dní
$ ttl send report.xlsx                  # vyprší za 7 dní (výchozí)

Stahování souborů

Interaktivně (terminál)

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

Heslo se zadává bezpečně, v terminálu se nezobrazuje. Původní název souboru se obnoví; pokud soubor s tímto názvem ve výstupním adresáři již existuje, uloží se jako name (1).ext a existující soubor se nepřepíše.

Pouze s tokenem

# Místo celé URL můžete použít pouze 10místný token
$ ttl get aBcDeFgHiJ

Výstupní adresář

$ ttl get -o ~/Downloads aBcDeFgHiJ

Ve výchozím nastavení se soubory ukládají do aktuálního adresáře. Použijte -o / --output pro zadání jiného adresáře.

S parametrem hesla

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

Prohlížeč

Soubory můžete stáhnout a dešifrovat také přímo v prohlížeči návštěvou odkazu. Webové rozhraní používá stejný formát souborů a stejné algoritmy (Argon2id, XChaCha20-Poly1305) a požádá o heslo. Není nutná žádná instalace.

Správa hesel

Heslo slouží jako základ pro odvození šifrovacího klíče. Nikdy neopustí vaše zařízení a nikdy se neodesílá na server. Existuje šest způsobů, jak ho zadat:

1. Automatické generování (pouze při odesílání)

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

Vygeneruje kryptograficky náhodné 12znakové heslo z [0-9A-Za-z]. Dostupné pouze při příkazu send (interaktivně, nebo automaticky v režimu --json).

2. Interaktivní zadání

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

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

Heslo se nezobrazuje a neukládá se do historie shellu. Při send nejprve zvolíte, zda se má vygenerovat automaticky. Při get budete rovnou vyzváni k zadání.

3. Parametr: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password je viditelné ve výstupu ps aux a může být uloženo v historii shellu (~/.bash_history). Vyhněte se použití ve sdílených prostředích a skriptech. Místo toho použijte --password-stdin nebo --password-file.

4. Stdin: --password-stdin

# Předání přes echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# Předání ze správce hesel
$ pass show ttl/key | ttl send --password-stdin data.zip

# Předání z proměnné prostředí
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

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

Načte první řádek ze stdin. Užitečné ve skriptech, CI/CD pipeline a automatizaci. Pokud stdin není terminál a nebyl zadán žádný zdroj hesla, CLI se ukončí s chybou (pokud není použit --json, který automaticky vygeneruje heslo).

5. Soubor: --password-file

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

Načte první řádek souboru (koncový znak nového řádku se odstraní). Kompatibilní s Docker Secrets (/run/secrets/), soubory Vault Agenta a podobnými vzory.

6. Automaticky detekovaný soubor: ttl.password

Pokud není zadáno explicitní heslo, CLI hledá soubor ttl.password vedle programu, poté ~/.ttl/password. První řádek se použije jako heslo.

Současně lze použít pouze jeden explicitní zdroj hesla. -p / --password, --password-stdin a --password-file nelze kombinovat. Automaticky detekovaný soubor ttl.password se kontroluje pouze tehdy, když žádný z nich není zadán. Minimální délka: 8 znaků.

Přehled parametrů

Parametry pro odesílání

ParametrPopisVýchozí
-p, --password PŠifrovací heslointeraktivní
--password-stdinNačíst heslo ze stdin
--password-file FNačíst heslo ze souboru
-t, --ttl DURDoba platnosti7d
-b, --burnSmazat po přečtení (jednorázové stažení)vypnuto
-u, --uploader-onlyStáhnout může pouze váš vlastní API klíč (Orbit; alias --private)vypnuto
--timeout DURČasový limit přenosubez limitu
--server URLURL serveruhttps://ttl.space
-h3, --http3Zkusit HTTP/3 (QUIC), záložně TCPvypnuto
--jsonJSON výstup na stdout (pro skripty a AI agenty)vypnuto

Parametry pro stahování

ParametrPopisVýchozí
-p, --password PDešifrovací heslointeraktivní
--password-stdinNačíst heslo ze stdin
--password-file FNačíst heslo ze souboru
-o, --output DIRVýstupní adresářaktuální adresář
--timeout DURČasový limit přenosubez limitu
-h3, --http3Zkusit HTTP/3 (QUIC), záložně TCPvypnuto
--jsonJSON výstup na stdout (pro skripty a AI agenty)vypnuto

Hodnoty TTL

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

Orbit přidává: 14d 15d 28d 30d permanent

Časový limit

Výchozí: bez limitu. Přenos, který se zastaví, sám pokračuje a vzdá to, pokud nemůže dál. Limit nastavíte pomocí --timeout 30m nebo --timeout 2h.

Příklady

Skript: záloha a nahrání

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

Kopírování odkazu do schránky (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Kopírování odkazu do schránky (Linux)

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

Jednorázové tajemství s automatickým smazáním

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Odkaz funguje pouze jednou, vyprší po 5 minutách

Režim JSON (skripty & AI agenti)

# odeslání: heslo se v režimu JSON vygeneruje automaticky
$ 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"}

# stažení
$ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# chyby vrací ok:false
{"ok":false,"error":"Link not found"}

V režimu --json je veškerý výstup strukturovaný JSON na stdout. Pokud není při odesílání zadáno heslo, je automaticky vygenerováno a zahrnuto v odpovědi. Návratový kód je 0 při úspěchu a 1 při chybě.

Plán Orbit

Orbit odemyká větší soubory (10 GB), delší uchování (30 dní nebo trvale), soubory pouze pro nahrávajícího (stáhnout je může pouze váš API klíč) a správu souborů (seznam a mazání). Úplné srovnání: Features.

API klíč je detekován automaticky: proměnná prostředí TTL_API_KEY, ttl.key vedle programu nebo ~/.ttl/key. Použijte ttl activate k uložení klíče nebo jej zapište ručně na jedno z těchto míst.

# aktivovat klíč: zadává se bez zobrazení, takže nezůstane v historii shellu
$ ttl activate
Enter Orbit API key: ********
Orbit plan activated. Key saved to /usr/local/bin/ttl.key
# neinteraktivně: ttl activate --key-stdin  |  ttl activate --key-file F

# zkontrolovat plán a využití
$ 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

# odeslat s prodlouženým TTL
$ ttl send -t 30d large-backup.tar.gz
# trvalý soubor (pouze Orbit): bez vypršení, zůstane uložen, dokud ho nesmažete nebo neskončí vaše předplatné
$ ttl send -t permanent archive.tar.gz
# odeslat soukromý soubor: stáhnout ho může pouze váš API klíč (pouze Orbit)
$ ttl send -u payroll.xlsx

# zobrazit nedávná nahrání
$ 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

# smazat soubor
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# odebrat uložený klíč
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Nahrávání a stahování vyžadují šifrovací pipeline CLI (Argon2id + XChaCha20-Poly1305 + blokové AEAD). Pro skripty použijte ttl send / ttl get nebo režim --json. Níže uvedené koncové body jsou pro správu souborů Orbit.

Seznam souborů (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}

# další stránka: pouze když je has_more true; předejte next_cursor z předchozí odpovědi
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Vrátí soubory nahrané tímto klíčem, od nejnovějších, 20 na stránku. Když je has_more true, odpověď obsahuje také next_cursor; předejte ho jako ?cursor= pro načtení další stránky. Vyžaduje plán Orbit.

Smazat soubor (Orbit)

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

Vrátí 204 No Content při úspěchu. Vyžaduje plán Orbit. Soubor musí patřit tomuto klíči.

Chybové odpovědi

StavVýznam
401Neplatný nebo vypršelý API klíč
403Funkce vyžaduje plán Orbit
404Soubor nenalezen nebo nepatří tomuto klíči
429Překročen limit požadavků
500Interní chyba serveru, zkuste to později
502Úložiště je dočasně nedostupné, zkuste to později

Limity

OmezeníZdarmaOrbit
Max. velikost souboru2 GB10 GB
Max. TTL7 dní30 dní nebo trvale
Nahrání za den10Bez omezení
Objem nahrání za den (na IP)10 GBBez omezení
Souběžná nahrání1 na IP1 na IP a na API klíč
Úložná kvóta✗500 GB
Výpis souborů✗✓
Předčasné mazání✓✓
Soubory pouze pro nahrávajícího✗✓
Min. délka hesla8 znaků
Požadavky na IP30 za 10 sekund
Připojení na IP10 současných

Šifrování

Soubory se šifrují na vašem zařízení před nahráním. Server uchovává pouze šifrovaný text a nemůže vaše soubory dešifrovat.

KomponentaAlgoritmus / hodnota
Odvození klíčeArgon2id (time=3, memory=64 MiB, parallelism=1)
ŠifraXChaCha20-Poly1305 AEAD

Jakákoli úprava šifrovaného textu způsobí selhání dešifrování. Server před uvolněním šifrovaného textu ověří, že stahující zná správné heslo, pomocí jednosměrného tokenu odvozeného z šifrovacího klíče.