# Trimite fișier — parola este generată automat, link + parolă afișate $ 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 # Descarcă — parola este cerută interactiv $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI-ul criptează, încarcă, descarcă și decriptează automat. Serverul nu îți vede niciodată parola sau datele necriptate.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Descarcă pentru platforma ta din pagina de versiuni $ 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
# Generare automată a parolei, TTL implicit 7 zile $ ttl send report.xlsx
Dacă în terminal nu este furnizată o parolă, CLI-ul întreabă:
No password provided. Generate one? [Y/n]:
Apasă Enter sau scrie y pentru generare automată.
$ ttl send -p mySecretPass -t 1h document.pdf
# Fișierul este șters definitiv după prima descărcare $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # expiră în 5 minute $ ttl send -t 30m meeting-link.txt # expiră în 30 de minute $ ttl send -t 6h backup.tar.gz # expiră în 6 ore $ ttl send -t 1d daily-report.pdf # expiră într-o zi $ ttl send -t 3d project-archive.zip # expiră în 3 zile $ ttl send -t 5d design-assets.zip # expiră în 5 zile $ ttl send report.xlsx # expiră în 7 zile (implicit)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Parola este citită în siguranță — nu este afișată în terminal. Numele original al fișierului este restaurat.
# Poți folosi doar tokenul de 10 caractere în loc de URL-ul complet $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
În mod implicit, fișierele sunt salvate în directorul curent. Folosește -o / --output pentru a specifica un alt director.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Poți descărca și decripta fișiere și în browser, vizitând linkul direct. Interfața web folosește aceeași bibliotecă de criptare și îți cere parola. Nu este necesară instalarea de software.
Parola este folosită ca intrare pentru cheia de criptare. Nu îți părăsește niciodată dispozitivul și nu este trimisă niciodată către server. Există șase moduri de a o furniza:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Generează o parolă aleatoare din punct de vedere criptografic, de 8 caractere, din [0-9A-Za-z]. Disponibilă doar la send în 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: ********
Parola nu este afișată și nu se salvează în istoricul shell-ului. La send alegi mai întâi dacă să fie generată automat. La get ești invitat direct să o introduci.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password este vizibil în ieșirea ps aux și poate fi salvat în istoricul shell-ului (~/.bash_history). Evită în medii partajate și scripturi. Folosește --password-stdin sau --password-file în schimb.--password-stdin# Trimite prin echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Trimite dintr-un manager de parole $ pass show ttl/key | ttl send --password-stdin data.zip # Trimite dintr-o variabilă de mediu $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Citește prima linie din stdin. Util în scripturi, pipeline-uri CI/CD și automatizare. Dacă stdin nu este un terminal și nu este furnizată o sursă de parolă, CLI-ul iese cu o eroare (cu excepția --json, care generează automat o parolă).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Citește prima linie a fișierului (caracterul de linie nouă final este eliminat). Compatibil cu Docker Secrets (/run/secrets/), fișierele Vault agent și modele similare.
ttl.passwordDacă nu este furnizată o parolă explicită, CLI-ul caută un fișier ttl.password lângă executabil, apoi ~/.ttl/password. Prima linie este folosită ca parolă.
-p / --password, --password-stdin și --password-file nu pot fi combinate. Fișierul ttl.password detectat automat este verificat doar dacă niciuna dintre acestea nu este specificată. Lungime minimă: 8 caractere.| Opțiune | Descriere | Implicit |
|---|---|---|
-p, --password P | Parolă de criptare | interactiv |
--password-stdin | Citește parola de la stdin | |
--password-file F | Citește parola dintr-un fișier | |
-t, --ttl DUR | Durată de valabilitate | 7d |
-b, --burn | Distrugere după citire (descărcare unică) | oprit |
--timeout DUR | Timeout pentru transfer | auto |
--server URL | URL-ul serverului | https://ttl.space |
-h3, --http3 | Încearcă HTTP/3 (QUIC), cu revenire la TCP | oprit |
--json | Ieșire JSON la stdout (pentru scripturi și agenți AI) | oprit |
| Opțiune | Descriere | Implicit |
|---|---|---|
-p, --password P | Parolă de decriptare | interactiv |
--password-stdin | Citește parola de la stdin | |
--password-file F | Citește parola dintr-un fișier | |
-o, --output DIR | Director de ieșire | directorul curent |
--timeout DUR | Timeout pentru transfer | auto |
-h3, --http3 | Încearcă HTTP/3 (QUIC), cu revenire la TCP | oprit |
--json | Ieșire JSON la stdout (pentru scripturi și agenți AI) | oprit |
Gratuit: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit adaugă: 14d 15d 28d 30d
Implicit: auto — estimat în funcție de dimensiunea fișierului presupunând 1 Mbps + 2 minute marjă (minim 5 minute). Setează manual cu --timeout 10m sau --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 # Linkul funcționează exact o singură dată, expiră după 5 minute
# trimitere — parola este generată automat în modul JSON $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # descărcare $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # erorile returnează ok:false {"ok":false,"error":"Link not found"}
În modul --json toată ieșirea este JSON structurat la stdout. Dacă la trimitere nu este furnizată o parolă, una este generată automat și inclusă în răspuns. Codul de ieșire este 0 la succes, 1 la eroare.
Features · Orbit oferă acces la fișiere mai mari (10 GB), păstrare mai îndelungată (30 de zile) și gestionare a fișierelor (listare și ștergere).
Cheia API este detectată automat: variabila de mediu TTL_API_KEY, ttl.key lângă executabil sau ~/.ttl/key. Folosește ttl activate pentru a salva cheia sau scrie-o manual într-una dintre aceste locații.
# activează cheia ta $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # verifică planul și utilizarea $ 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 # trimite cu TTL extins $ ttl send -t 30d large-backup.tar.gz # listează încărcările recente $ 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 # șterge un fișier $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # elimină cheia salvată $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get sau modul --json. Endpoint-urile de mai jos sunt pentru gestionarea fișierelor 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}]}
Returnează toate fișierele încărcate cu această cheie. Necesită planul Orbit.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Returnează 204 No Content la succes. Necesită planul Orbit. Fișierul trebuie să aparțină acestei chei.
| Status | Semnificație |
|---|---|
401 | Cheie API nevalidă sau expirată |
403 | Funcționalitatea necesită planul Orbit |
404 | Fișierul nu a fost găsit sau nu aparține acestei chei |
429 | Limita de cereri a fost depășită |
| Limită | Gratuit | Orbit |
|---|---|---|
| Dimensiune maximă a fișierului | 2 GB | 10 GB |
| TTL maxim | 7 zile | 30 de zile |
| Încărcări pe zi | 10 | 50 |
| Cotă de stocare | — | 500 GB |
| Listare și ștergere | — | ✓ |
| Lungime minimă a parolei | 8 caractere | |
| Cereri pe IP | 30 la 10 secunde | |
| Conexiuni pe IP | 10 simultane | |
Fișierele sunt criptate pe dispozitivul tău înainte de a fi încărcate. Serverul stochează doar text cifrat și nu poate decripta fișierele tale.
| Componentă | Algoritm / Valoare |
|---|---|
| Derivare cheie | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Cifru | XChaCha20-Poly1305 AEAD |
Orice modificare a textului cifrat duce la eșecul decriptării. Serverul verifică faptul că cel care descarcă cunoaște parola corectă înainte de a livra textul cifrat, prin intermediul unui token unidirecțional derivat din cheia de criptare.