# Slanje datoteke: lozinka se automatski generira, link + lozinka se ispisuju $ 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 # Preuzimanje: lozinka se traži interaktivno $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI automatski šifrira, učitava, preuzima i dešifrira. Poslužitelj nikad ne vidi vašu lozinku ni vaše nešifrirane podatke.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Preuzmite za svoju platformu s izdanja $ 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 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 1.6.0
# Automatski generiraj lozinku, zadani TTL 7d $ ttl send report.xlsx
Ako u terminalu nije navedena lozinka, CLI pita:
No password provided. Generate one? [Y/n]:
Pritisnite Enter ili unesite y za automatsko generiranje.
$ ttl send -p mySecretPass -t 1h document.pdf
# Potroši se u trenutku kad započne prvo preuzimanje; nakon prekida može nastaviti samo to preuzimanje $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # istječe za 5 minuta $ ttl send -t 30m meeting-link.txt # istječe za 30 minuta $ ttl send -t 6h backup.tar.gz # istječe za 6 sati $ ttl send -t 1d daily-report.pdf # istječe za 1 dan $ ttl send -t 3d project-archive.zip # istječe za 3 dana $ ttl send -t 5d design-assets.zip # istječe za 5 dana $ ttl send report.xlsx # istječe za 7 dana (zadano)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Lozinka se ne prikazuje u terminalu. Izvorni naziv datoteke se zadržava; ako datoteka s tim nazivom već postoji u izlaznom direktoriju, sprema se kao name (1).ext umjesto da se prepiše postojeća.
# Možete koristiti samo 10-znamenkasti token umjesto pune URL adrese $ ttl get aBcDeFgHiJ
$ ttl get -o ~/Downloads aBcDeFgHiJ
Prema zadanim postavkama datoteke se spremaju u trenutni direktorij. Koristite -o / --output za određivanje drugog direktorija.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Datoteke možete preuzeti i dešifrirati i u pregledniku izravnim posjetom poveznici. Web sučelje koristi isti format datoteke i iste algoritme (Argon2id, XChaCha20-Poly1305) i traži vašu lozinku. Nije potrebna instalacija softvera.
Lozinka služi kao polazna vrijednost za izvođenje ključa za šifriranje. Nikad ne napušta vaš uređaj i nikad se ne šalje poslužitelju. Postoji šest načina za njeno navođenje:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mXq7Rt
Generira kriptografski nasumičnu 12-znakovnu lozinku iz [0-9A-Za-z]. Dostupno samo kod send (interaktivno ili automatski u --json načinu).
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Lozinka se ne prikazuje i ne sprema u povijest ljuske. Kod send prvo odabirete želite li automatsko generiranje. Kod get odmah se traži unos.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password vidljiv je u izlazu ps aux i može biti spremljen u povijest ljuske (~/.bash_history). Izbjegavajte korištenje u dijeljenim okruženjima i skriptama. Umjesto toga koristite --password-stdin ili --password-file.--password-stdin# Prosljeđivanje putem echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Prosljeđivanje iz upravitelja lozinki $ pass show ttl/key | ttl send --password-stdin data.zip # Prosljeđivanje iz varijable okruženja $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Čita prvi redak iz stdin-a. Korisno u skriptama, CI/CD cjevovodima i automatizaciji. Ako stdin nije terminal i nije naveden izvor lozinke, CLI se završava s greškom (osim s --json, koji automatski generira lozinku).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Čita prvi redak datoteke (završni znak novog retka se uklanja). Kompatibilno s Docker Secrets (/run/secrets/), Vault agent datotekama i sličnim obrascima.
ttl.passwordAko nije navedena eksplicitna lozinka, CLI traži datoteku ttl.password pokraj programa, zatim ~/.ttl/password. Prvi redak koristi se kao lozinka.
-p / --password, --password-stdin i --password-file ne mogu se kombinirati. Automatski otkrivena datoteka ttl.password provjerava se samo kada nijedan od ovih nije naveden. Minimalna duljina: 8 znakova.| Oznaka | Opis | Zadano |
|---|---|---|
-p, --password P | Lozinka za šifriranje | interaktivno |
--password-stdin | Čitanje lozinke iz stdin-a | |
--password-file F | Čitanje lozinke iz datoteke | |
-t, --ttl DUR | Trajanje valjanosti | 7d |
-b, --burn | Brisanje nakon čitanja (jednokratno preuzimanje) | isključeno |
-u, --uploader-only | Preuzeti može samo vaš vlastiti API ključ (Orbit; alias --private) | isključeno |
--timeout DUR | Vremensko ograničenje prijenosa | bez ograničenja |
--server URL | URL poslužitelja | https://ttl.space |
-h3, --http3 | Pokušaj HTTP/3 (QUIC), povratak na TCP | isključeno |
--json | JSON izlaz na stdout (za skripte i AI agente) | isključeno |
| Oznaka | Opis | Zadano |
|---|---|---|
-p, --password P | Lozinka za dešifriranje | interaktivno |
--password-stdin | Čitanje lozinke iz stdin-a | |
--password-file F | Čitanje lozinke iz datoteke | |
-o, --output DIR | Izlazni direktorij | trenutni direktorij |
--timeout DUR | Vremensko ograničenje prijenosa | bez ograničenja |
-h3, --http3 | Pokušaj HTTP/3 (QUIC), povratak na TCP | isključeno |
--json | JSON izlaz na stdout (za skripte i AI agente) | isključeno |
Besplatno: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit dodaje: 14d 15d 28d 30d permanent
Zadano: bez ograničenja. Prijenos koji zastane sam se nastavlja, a odustaje ako ne može dalje. Ograničenje postavite s --timeout 30m ili --timeout 2h.
#!/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 # Link funkcionira točno jednom, istječe nakon 5 minuta
# slanje: lozinka se automatski generira u JSON načinu $ 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"} # preuzimanje $ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # greške vraćaju ok:false {"ok":false,"error":"Link not found"}
U --json načinu, sav izlaz je strukturirani JSON na stdout. Ako lozinka nije navedena prilikom slanja, automatski se generira i uključuje u odgovor. Izlazni kod je 0 pri uspjehu i 1 pri grešci.
Orbit omogućuje veće datoteke (10 GB), duže čuvanje (30 dana ili trajno), datoteke dostupne samo pošiljatelju (preuzeti ih može samo vaš API ključ) i upravljanje datotekama (popis i brisanje). Potpuna usporedba: Features.
API ključ otkriva se automatski: varijabla okruženja TTL_API_KEY, ttl.key pokraj programa ili ~/.ttl/key. Koristite ttl activate za spremanje ključa ili ga ručno upišite na jedno od ovih mjesta.
# aktivirajte ključ: unosi se bez prikaza, pa ne ostaje u povijesti ljuske $ ttl activate Enter Orbit API key: ******** Orbit plan activated. Key saved to /usr/local/bin/ttl.key # neinteraktivno: ttl activate --key-stdin | ttl activate --key-file F # provjerite plan i korištenje $ 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 # pošaljite s produženim TTL-om $ ttl send -t 30d large-backup.tar.gz # trajna datoteka (samo Orbit): bez isteka, čuva se dok je ne obrišete ili dok vam ne istekne pretplata $ ttl send -t permanent archive.tar.gz # pošaljite privatnu datoteku: preuzeti je može samo vaš API ključ (samo Orbit) $ ttl send -u payroll.xlsx # prikažite nedavne prijenose $ 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 # obrišite datoteku $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # uklonite spremljeni ključ $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get ili --json način. Krajnje točke u nastavku služe za Orbit upravljanje datotekama.$ 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} # sljedeća stranica: samo kad je has_more true; proslijedite next_cursor iz prethodnog odgovora $ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."
Vraća datoteke prenesene ovim ključem, od najnovije prema starijima, 20 po stranici. Kada je has_more true, odgovor sadrži i next_cursor; proslijedite ga kao ?cursor= za dohvat sljedeće stranice. Zahtijeva Orbit plan.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Vraća 204 No Content pri uspjehu. Zahtijeva Orbit plan. Datoteka mora pripadati ovom ključu.
| Status | Značenje |
|---|---|
401 | Nevažeći ili istekli API ključ |
403 | Značajka zahtijeva Orbit plan |
404 | Datoteka nije pronađena ili ne pripada ovom ključu |
429 | Prekoračeno ograničenje zahtjeva |
500 | Interna pogreška poslužitelja, pokušajte ponovno kasnije |
502 | Pohrana je privremeno nedostupna, pokušajte ponovno kasnije |
| Ograničenje | Besplatno | Orbit |
|---|---|---|
| Maks. veličina datoteke | 2 GB | 10 GB |
| Maks. TTL | 7 dana | 30 dana ili trajno |
| Prijenosi dnevno | 10 | Neograničeno |
| Količina prijenosa dnevno (po IP-u) | 10 GB | Neograničeno |
| Istovremeni prijenosi | 1 po IP-u | 1 po IP-u i po API ključu |
| Kvota pohrane | ✗ | 500 GB |
| Popis datoteka | ✗ | ✓ |
| Rano brisanje | ✓ | ✓ |
| Datoteke dostupne samo pošiljatelju | ✗ | ✓ |
| Min. duljina lozinke | 8 znakova | |
| Zahtjevi po IP-u | 30 u 10 sekundi | |
| Veze po IP-u | 10 istovremenih | |
Datoteke se šifriraju na vašem uređaju prije učitavanja. Poslužitelj pohranjuje samo šifrirani tekst i ne može dešifrirati vaše datoteke.
| Komponenta | Algoritam / Vrijednost |
|---|---|
| Izvođenje ključa | Argon2id (time=3, memory=64 MiB, parallelism=1) |
| Šifra | XChaCha20-Poly1305 AEAD |
Svaka izmjena šifriranog teksta uzrokuje neuspjeh dešifriranja. Poslužitelj provjerava da preuzimatelj zna ispravnu lozinku prije nego što oslobodi šifrirani tekst, koristeći jednosmjerni token izveden iz ključa za šifriranje.