# Send fil: passord genereres automatisk, lenke + passord vises $ 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 # Last ned: passord blir spurt om interaktivt $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI-verktøyet krypterer, laster opp, laster ned og dekrypterer automatisk. Serveren ser aldri passordet ditt eller klartekstdataene dine.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Last ned for din plattform fra utgivelsene $ 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
# Generer passord automatisk, standard TTL 7d $ ttl send report.xlsx
Hvis det ikke er oppgitt noe passord i terminalen, spør CLI-verktøyet:
No password provided. Generate one? [Y/n]:
Trykk Enter eller skriv y for å generere automatisk.
$ ttl send -p mySecretPass -t 1h document.pdf
# Brukes opp i det øyeblikket første nedlasting starter; etter et brudd kan bare den nedlastingen fortsette $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # utløper om 5 minutter $ ttl send -t 30m meeting-link.txt # utløper om 30 minutter $ ttl send -t 6h backup.tar.gz # utløper om 6 timer $ ttl send -t 1d daily-report.pdf # utløper om 1 dag $ ttl send -t 3d project-archive.zip # utløper om 3 dager $ ttl send -t 5d design-assets.zip # utløper om 5 dager $ ttl send report.xlsx # utløper om 7 dager (standard)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Passordet vises ikke i terminalen. Det opprinnelige filnavnet beholdes; finnes det allerede en fil med samme navn i utdatamappen, lagres filen som name (1).ext i stedet for å overskrive den.
# Du kan bruke bare det 10-tegns tokenet i stedet for den fullstendige URL-en $ ttl get aBcDeFgHiJ
$ ttl get -o ~/Downloads aBcDeFgHiJ
Som standard lagres filer i gjeldende mappe. Bruk -o / --output for å angi en annen mappe.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Du kan også laste ned og dekryptere filer i nettleseren ved å besøke lenken direkte. Webgrensesnittet bruker det samme filformatet og de samme algoritmene (Argon2id, XChaCha20-Poly1305) og ber om passordet ditt. Ingen programvareinstallasjon nødvendig.
Passordet brukes som grunnlag for krypteringsnøkkelen. Det forlater aldri enheten din og sendes aldri til serveren. Det finnes seks måter å oppgi det på:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mXq7Rt
Genererer et kryptografisk tilfeldig 12-tegns passord fra [0-9A-Za-z]. Kun tilgjengelig ved send (interaktivt, eller automatisk i --json-modus).
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Passordet vises ikke og lagres ikke i skallhistorikken. Ved send velger du først om det skal genereres automatisk. Ved get blir du bedt om å taste inn passordet direkte.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password er synlig i ps aux-utdata og kan lagres i skallhistorikken (~/.bash_history). Unngå bruk i delte miljøer og skript. Bruk --password-stdin eller --password-file i stedet.--password-stdin# Videresend via echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Videresend fra passordbehandler $ pass show ttl/key | ttl send --password-stdin data.zip # Videresend fra miljøvariabel $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Leser den første linjen fra stdin. Nyttig i skript, CI/CD-pipelines og automatisering. Hvis stdin ikke er en terminal og ingen passordkilde er angitt, avsluttes CLI-verktøyet med en feil (med unntak av --json, som automatisk genererer et passord).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Leser den første linjen i filen (avsluttende linjeskift fjernes). Kompatibel med Docker Secrets (/run/secrets/), Vault-agent-filer og lignende mønstre.
ttl.passwordHvis det ikke oppgis et eksplisitt passord, søker CLI etter en ttl.password-fil ved siden av programmet, deretter ~/.ttl/password. Første linje brukes som passord.
-p / --password, --password-stdin og --password-file kan ikke kombineres. Den automatisk oppdagede ttl.password-filen sjekkes bare når ingen av disse er oppgitt. Minstelengde: 8 tegn.| Flagg | Beskrivelse | Standard |
|---|---|---|
-p, --password P | Krypteringspassord | interaktiv |
--password-stdin | Les passord fra stdin | |
--password-file F | Les passord fra fil | |
-t, --ttl DUR | Gyldighetsvarighet | 7d |
-b, --burn | Slett etter lesing (engangs nedlasting) | av |
-u, --uploader-only | Bare din egen API-nøkkel kan laste ned (Orbit; alias --private) | av |
--timeout DUR | Overføringstidsavbrudd | ingen |
--server URL | Server-URL | https://ttl.space |
-h3, --http3 | Prøv HTTP/3 (QUIC), fallback til TCP | av |
--json | JSON-utdata til stdout (for skript og KI-agenter) | av |
| Flagg | Beskrivelse | Standard |
|---|---|---|
-p, --password P | Dekrypteringspassord | interaktiv |
--password-stdin | Les passord fra stdin | |
--password-file F | Les passord fra fil | |
-o, --output DIR | Utdatamappe | gjeldende mappe |
--timeout DUR | Overføringstidsavbrudd | ingen |
-h3, --http3 | Prøv HTTP/3 (QUIC), fallback til TCP | av |
--json | JSON-utdata til stdout (for skript og KI-agenter) | av |
Gratis: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit legger til: 14d 15d 28d 30d permanent
Standard: ingen. En overføring som stopper opp, fortsetter av seg selv og avbrytes hvis den ikke kommer videre. Sett en grense med --timeout 30m eller --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 # Lenken fungerer nøyaktig én gang, utløper etter 5 minutter
# sending: passord genereres automatisk i JSON-modus $ 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"} # nedlasting $ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # feil returnerer ok:false {"ok":false,"error":"Link not found"}
I --json-modus er all utdata strukturert JSON på stdout. Hvis det ikke oppgis passord ved sending, genereres et automatisk og inkluderes i svaret. Avslutningskode er 0 ved suksess og 1 ved feil.
Orbit gir tilgang til større filer (10 GB), lengre lagring (30 dager eller permanent), filer bare du kan laste ned (kun med API-nøkkelen din) og filbehandling (liste og slett). Full sammenligning: Features.
API-nøkkelen oppdages automatisk: miljøvariabelen TTL_API_KEY, ttl.key ved siden av programmet eller ~/.ttl/key. Bruk ttl activate for å lagre nøkkelen eller skriv den manuelt til en av disse plasseringene.
# aktiver nøkkelen din: du blir bedt om den uten at den vises, så den havner ikke i skallhistorikken $ ttl activate Enter Orbit API key: ******** Orbit plan activated. Key saved to /usr/local/bin/ttl.key # ikke-interaktivt: ttl activate --key-stdin | ttl activate --key-file F # sjekk plan og bruk $ 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 # send med forlenget TTL $ ttl send -t 30d large-backup.tar.gz # permanent fil (kun Orbit): ingen utløp, beholdes til du sletter den eller abonnementet ditt avsluttes $ ttl send -t permanent archive.tar.gz # send en privat fil: bare API-nøkkelen din kan laste den ned (kun Orbit) $ ttl send -u payroll.xlsx # list nylige opplastinger $ 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 # slett en fil $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # fjern lagret nøkkel $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get eller --json-modus. Endepunktene nedenfor er for Orbit-filbehandling.$ 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} # neste side: bare når has_more er true; oppgi next_cursor fra forrige svar $ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."
Returnerer filer lastet opp med denne nøkkelen, nyeste først, 20 per side. Når has_more er true, inneholder svaret også next_cursor; send den som ?cursor= for å hente neste side. Krever Orbit-plan.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Returnerer 204 No Content ved suksess. Krever Orbit-plan. Filen må tilhøre denne nøkkelen.
| Status | Betydning |
|---|---|
401 | Ugyldig eller utløpt API-nøkkel |
403 | Funksjonen krever Orbit-plan |
404 | Fil ikke funnet eller tilhører ikke denne nøkkelen |
429 | Forespørselsgrense overskredet |
500 | Intern serverfeil, prøv igjen senere |
502 | Lagringen er midlertidig utilgjengelig, prøv igjen senere |
| Begrensning | Gratis | Orbit |
|---|---|---|
| Maks. filstørrelse | 2 GB | 10 GB |
| Maks. TTL | 7 dager | 30 dager eller permanent |
| Opplastinger per dag | 10 | Ubegrenset |
| Opplastingsvolum per dag (per IP) | 10 GB | Ubegrenset |
| Samtidige opplastinger | 1 per IP | 1 per IP og per API-nøkkel |
| Lagringskvote | ✗ | 500 GB |
| Filliste | ✗ | ✓ |
| Tidlig sletting | ✓ | ✓ |
| Filer bare du kan laste ned | ✗ | ✓ |
| Min. passordlengde | 8 tegn | |
| Forespørsler per IP | 30 per 10 sekunder | |
| Tilkoblinger per IP | 10 samtidige | |
Filer krypteres på enheten din før de lastes opp. Serveren lagrer kun chiffertekst og kan ikke dekryptere filene dine.
| Komponent | Algoritme / Verdi |
|---|---|
| Nøkkelavledning | Argon2id (time=3, memory=64 MiB, parallelism=1) |
| Chiffer | XChaCha20-Poly1305 AEAD |
Enhver endring av chifferteksten fører til at dekrypteringen mislykkes. Serveren verifiserer at den som laster ned kjenner riktig passord før chifferteksten frigis, ved hjelp av et enveis-token avledet fra krypteringsnøkkelen.