Průvodce použitím

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: 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

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

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 v1.3.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í

# Soubor se po prvním stažení trvale smaže
$ 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í.

Pouze s tokenem

# Místo celé URL můžete použít pouze 10místný token
$ ttl get aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

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á stejnou šifrovací knihovnu 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 pět 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: aB3kL9mX

Vygeneruje kryptograficky náhodné 8znakové heslo z [0-9A-Za-z]. Dostupné pouze při příkazu send v terminálu.

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
--timeout DURČasový limit přenosuauto
--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řenosuauto
-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

Časový limit

Výchozí: auto — odhadnuto podle velikosti souboru při předpokládané rychlosti 1 Mbps + 2 minuty rezerva (minimum 5 minut). Přepsat pomocí --timeout 10m nebo --timeout 1h.

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,"password":"aB3kL9mX"}

# stažení
$ ttl --json get -p aB3kL9mX 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í) a správu souborů (seznam a mazání).

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íč
$ ttl activate ttl_orbit_aBcDeFgHiJ...
Orbit plan activated. Key saved to /usr/local/bin/ttl.key

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

# odeslat s prodlouženým TTL
$ ttl send -t 30d large-backup.tar.gz

# 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}]}

Vrátí všechny soubory nahrané tímto klíčem. 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ů

Limity

OmezeníZdarmaOrbit
Max. velikost souboru2 GB10 GB
Max. TTL7 dní30 dní
Nahrání za den1050
Úložná kvóta250 GB
Seznam & mazání
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 MB, 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.