# Skicka fil — lösenord genereras automatiskt, länk + lösenord visas $ 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 # Ladda ner — lösenord efterfrågas interaktivt $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI:t krypterar, laddar upp, laddar ner och dekrypterar automatiskt. Servern ser aldrig ditt lösenord eller din okrypterade data.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Ladda ner för din plattform från 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 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
# Generera lösenord automatiskt, standard-TTL 7d $ ttl send report.xlsx
Om inget lösenord anges i terminalen frågar CLI:t:
No password provided. Generate one? [Y/n]:
Tryck Enter eller skriv y för att generera automatiskt.
$ ttl send -p mySecretPass -t 1h document.pdf
# Filen raderas permanent efter första nedladdningen $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # utgår om 5 minuter $ ttl send -t 30m meeting-link.txt # utgår om 30 minuter $ ttl send -t 6h backup.tar.gz # utgår om 6 timmar $ ttl send -t 1d daily-report.pdf # utgår om 1 dag $ ttl send -t 3d project-archive.zip # utgår om 3 dagar $ ttl send -t 5d design-assets.zip # utgår om 5 dagar $ ttl send report.xlsx # utgår om 7 dagar (standard)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Lösenordet läses in säkert — det visas inte i terminalen. Det ursprungliga filnamnet återställs.
# Du kan använda enbart den 10-siffriga token istället för den fullständiga URL:en $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
Som standard sparas filer i den aktuella katalogen. Använd -o / --output för att ange en annan katalog.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Du kan också ladda ner och dekryptera filer i webbläsaren genom att besöka länken direkt. Webbgränssnittet använder samma krypteringsbibliotek och frågar efter ditt lösenord. Ingen programinstallation krävs.
Lösenordet används som ingångsvärde för krypteringsnyckeln. Det lämnar aldrig din enhet och skickas aldrig till servern. Det finns fem sätt att ange det:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Genererar ett kryptografiskt slumpmässigt 8-teckens lösenord från [0-9A-Za-z]. Endast tillgängligt vid send i terminalen.
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Lösenordet visas inte och sparas inte i skalhistoriken. Vid send väljer du först om det ska genereras automatiskt. Vid get uppmanas du direkt att ange det.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password syns i ps aux-utdata och kan sparas i skalhistoriken (~/.bash_history). Undvik i delade miljöer och skript. Använd --password-stdin eller --password-file istället.--password-stdin# Skicka via echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Skicka från lösenordshanterare $ pass show ttl/key | ttl send --password-stdin data.zip # Skicka från miljövariabel $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Läser den första raden från stdin. Användbart i skript, CI/CD-pipelines och automatisering. Om stdin inte är en terminal och ingen lösenordskälla har angetts avslutas CLI:t med ett fel (förutom med --json, som automatiskt genererar ett lösenord).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Läser den första raden i filen (avslutande radbrytning tas bort). Kompatibelt med Docker Secrets (/run/secrets/), Vault-agentfiler och liknande mönster.
ttl.passwordOm inget explicit lösenord anges söker CLI efter en ttl.password-fil bredvid programfilen, sedan ~/.ttl/password. Första raden används som lösenord.
-p / --password, --password-stdin och --password-file kan inte kombineras. Den automatiskt upptäckta ttl.password-filen kontrolleras bara om ingen av dessa angivits. Minimilängd: 8 tecken.| Flagga | Beskrivning | Standard |
|---|---|---|
-p, --password P | Krypteringslösenord | interaktivt |
--password-stdin | Läs lösenord från stdin | |
--password-file F | Läs lösenord från fil | |
-t, --ttl DUR | Giltighetstid | 7d |
-b, --burn | Radera efter läsning (engångsnedladdning) | av |
--timeout DUR | Överföringstimeout | auto |
--server URL | Server-URL | https://ttl.space |
-h3, --http3 | Försök HTTP/3 (QUIC), fallback till TCP | av |
--json | JSON-utdata till stdout (för skript och AI-agenter) | av |
| Flagga | Beskrivning | Standard |
|---|---|---|
-p, --password P | Dekrypteringslösenord | interaktivt |
--password-stdin | Läs lösenord från stdin | |
--password-file F | Läs lösenord från fil | |
-o, --output DIR | Utdatakatalog | aktuell katalog |
--timeout DUR | Överföringstimeout | auto |
-h3, --http3 | Försök HTTP/3 (QUIC), fallback till TCP | av |
--json | JSON-utdata till stdout (för skript och AI-agenter) | av |
Gratis: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit lägger till: 14d 15d 28d 30d
Standard: auto — uppskattas baserat på filstorlek vid antagen 1 Mbps + 2 minuters marginal (minimum 5 minuter). Ange manuellt med --timeout 10m eller --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 # Länken fungerar exakt en gång, upphör efter 5 minuter
# skicka — lösenord genereras automatiskt i JSON-läge $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # hämta $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # fel returnerar ok:false {"ok":false,"error":"Link not found"}
I --json-läge är all utdata strukturerad JSON på stdout. Om inget lösenord anges vid sändning genereras ett automatiskt och inkluderas i svaret. Exitkod är 0 vid framgång, 1 vid fel.
Orbit ger tillgång till större filer (10 GB), längre lagring (30 dagar) och filhantering (lista och radera).
API-nyckeln upptäcks automatiskt: miljövariabeln TTL_API_KEY, ttl.key bredvid programfilen eller ~/.ttl/key. Använd ttl activate för att spara nyckeln eller skriv den manuellt till någon av dessa platser.
# aktivera din nyckel $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # kontrollera plan och användning $ 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 # skicka med förlängd TTL $ ttl send -t 30d large-backup.tar.gz # lista senaste uppladdningar $ 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 # radera en fil $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # ta bort sparad nyckel $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get eller --json-läge. Endpunkterna nedan är för Orbit-filhantering.$ 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}]}
Returnerar alla filer uppladdade med denna nyckel. Kräver Orbit-plan.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Returnerar 204 No Content vid framgång. Kräver Orbit-plan. Filen måste tillhöra denna nyckel.
| Status | Betydelse |
|---|---|
401 | Ogiltig eller utgången API-nyckel |
403 | Funktionen kräver Orbit-plan |
404 | Filen hittades inte eller tillhör inte denna nyckel |
429 | Förfrågningsgräns överskriden |
| Begränsning | Gratis | Orbit |
|---|---|---|
| Max filstorlek | 2 GB | 10 GB |
| Max TTL | 7 dagar | 30 dagar |
| Uppladdningar per dag | 10 | 50 |
| Lagringskvot | — | 250 GB |
| Lista & radera | — | ✓ |
| Min lösenordslängd | 8 tecken | |
| Förfrågningar per IP | 30 per 10 sekunder | |
| Anslutningar per IP | 10 samtidiga | |
Filer krypteras på din enhet innan de laddas upp. Servern lagrar enbart chiffertext och kan inte dekryptera dina filer.
| Komponent | Algoritm / Värde |
|---|---|
| Nyckelhärledning | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Chiffer | XChaCha20-Poly1305 AEAD |
Varje ändring av chiffertexten leder till att dekrypteringen misslyckas. Servern verifierar att nedladdaren känner till rätt lösenord innan chiffertexten lämnas ut, med hjälp av en envägsttoken härledd från krypteringsnyckeln.