Användarguide

← Home

Snabbstart

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

Installation

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl
$ scoop install ttl

Förkompilerad binär

# 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

$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest

Från källkod

$ git clone https://github.com/tweenietomatoes/ttl
$ cd ttl && go build -o ttl ./cmd/ttl/
$ sudo mv ttl /usr/local/bin/

Verifiera

$ ttl version
ttl v1.3.0

Skicka filer

Enkel sändning

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

Eget lösenord

$ ttl send -p mySecretPass -t 1h document.pdf

Radera efter läsning

# Filen raderas permanent efter första nedladdningen
$ ttl send -b photo.jpg

Anpassad TTL

$ 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)

Ladda ner filer

Interaktivt (terminal)

$ 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.

Enbart token

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

Utdatakatalog

$ ttl get -o ~/Downloads aBcDeFgHiJ

Som standard sparas filer i den aktuella katalogen. Använd -o / --output för att ange en annan katalog.

Med lösenordsflagga

$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ

Webbläsare

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ösenordshantering

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:

1. Generera automatiskt (endast vid sändning)

$ 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.

2. Interaktiv inmatning

$ 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.

3. Flagga: -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.

4. Stdin: --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).

5. Fil: --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.

6. Automatiskt upptäckt fil: ttl.password

Om 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.

Bara en explicit lösenordskälla kan användas åt gången. -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.

Flaggreferens

Send-flaggor

FlaggaBeskrivningStandard
-p, --password PKrypteringslösenordinteraktivt
--password-stdinLäs lösenord från stdin
--password-file FLäs lösenord från fil
-t, --ttl DURGiltighetstid7d
-b, --burnRadera efter läsning (engångsnedladdning)av
--timeout DURÖverföringstimeoutauto
--server URLServer-URLhttps://ttl.space
-h3, --http3Försök HTTP/3 (QUIC), fallback till TCPav
--jsonJSON-utdata till stdout (för skript och AI-agenter)av

Get-flaggor

FlaggaBeskrivningStandard
-p, --password PDekrypteringslösenordinteraktivt
--password-stdinLäs lösenord från stdin
--password-file FLäs lösenord från fil
-o, --output DIRUtdatakatalogaktuell katalog
--timeout DURÖverföringstimeoutauto
-h3, --http3Försök HTTP/3 (QUIC), fallback till TCPav
--jsonJSON-utdata till stdout (för skript och AI-agenter)av

TTL-värden

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

Timeout

Standard: auto — uppskattas baserat på filstorlek vid antagen 1 Mbps + 2 minuters marginal (minimum 5 minuter). Ange manuellt med --timeout 10m eller --timeout 1h.

Exempel

Skript: Säkerhetskopiering och uppladdning

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

Kopiera länk till urklipp (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Kopiera länk till urklipp (Linux)

$ ttl send -p mypass123 file.pdf | xclip -sel clip

Engångshemlighet med självradering

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Länken fungerar exakt en gång, upphör efter 5 minuter

JSON-läge (skript & AI-agenter)

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

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

HTTP API

Uppladdning och nedladdning kräver CLI:s krypteringspipeline (Argon2id + XChaCha20-Poly1305 + chunk-AEAD). För skript, använd ttl send / ttl get eller --json-läge. Endpunkterna nedan är för Orbit-filhantering.

Lista filer (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}]}

Returnerar alla filer uppladdade med denna nyckel. Kräver Orbit-plan.

Radera fil (Orbit)

$ 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.

Felsvar

StatusBetydelse
401Ogiltig eller utgången API-nyckel
403Funktionen kräver Orbit-plan
404Filen hittades inte eller tillhör inte denna nyckel
429Förfrågningsgräns överskriden

Begränsningar

BegränsningGratisOrbit
Max filstorlek2 GB10 GB
Max TTL7 dagar30 dagar
Uppladdningar per dag1050
Lagringskvot250 GB
Lista & radera
Min lösenordslängd8 tecken
Förfrågningar per IP30 per 10 sekunder
Anslutningar per IP10 samtidiga

Kryptering

Filer krypteras på din enhet innan de laddas upp. Servern lagrar enbart chiffertext och kan inte dekryptera dina filer.

KomponentAlgoritm / Värde
NyckelhärledningArgon2id (time=3, memory=64 MB, parallelism=1)
ChifferXChaCha20-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.