Brugervejledning

Dansk

Hurtig start

# Send en fil: adgangskode genereres automatisk, link + adgangskode 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

# Download: adgangskode indtastes interaktivt
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

CLI'en krypterer, uploader, downloader og dekrypterer automatisk. Serveren ser aldrig din adgangskode eller dine ukrypterede data.

Installation

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Prækompileret binær fil

# Download til din platform fra releases
$ 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

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

Fra kildekode

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

Verificer

$ ttl version
ttl 1.6.0

Send filer

Simpel afsendelse

# Generer adgangskode automatisk, standard-TTL 7d
$ ttl send report.xlsx

Hvis der ikke angives en adgangskode i terminalen, spørger CLI'en:

No password provided. Generate one? [Y/n]:

Tryk Enter eller skriv y for at generere automatisk.

Egen adgangskode

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

Slet efter læsning

# Bruges op i det øjeblik, den første download starter; efter en afbrydelse kan kun den download fortsætte
$ ttl send -b photo.jpg

Brugerdefineret TTL

$ ttl send -t 5m temp-credentials.txt   # udløber om 5 minutter
$ ttl send -t 30m meeting-link.txt      # udløber om 30 minutter
$ ttl send -t 6h backup.tar.gz          # udløber om 6 timer
$ ttl send -t 1d daily-report.pdf       # udløber om 1 dag
$ ttl send -t 3d project-archive.zip    # udløber om 3 dage
$ ttl send -t 5d design-assets.zip      # udløber om 5 dage
$ ttl send report.xlsx                  # udløber om 7 dage (standard)

Download filer

Interaktiv (terminal)

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

Adgangskoden vises ikke. Det originale filnavn gendannes; hvis navnet allerede findes i outputmappen, gemmes filen som name (1).ext i stedet for at overskrive den eksisterende fil.

Kun med token

# Du kan bruge det 10-tegns token i stedet for den fulde URL
$ ttl get aBcDeFgHiJ

Outputmappe

$ ttl get -o ~/Downloads aBcDeFgHiJ

Som standard gemmes filer i den aktuelle mappe. Brug -o / --output til at angive en anden mappe.

Med adgangskode-flag

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

Browser

Du kan også downloade og dekryptere filer i din browser ved at besøge linket direkte. Webgrænsefladen bruger det samme filformat og de samme algoritmer (Argon2id, XChaCha20-Poly1305) og beder om din adgangskode. Ingen softwareinstallation nødvendig.

Håndtering af adgangskode

Adgangskoden bruges som grundlag for krypteringsnøglen. Den forlader aldrig din enhed og sendes aldrig til serveren. Der er seks måder at angive den på:

1. Automatisk generering (kun ved afsendelse)

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: y
Generated password: aB3kL9mXq7Rt

Genererer en kryptografisk tilfældig adgangskode på 12 tegn fra [0-9A-Za-z]. Kun tilgængelig ved send (interaktivt eller automatisk i --json-tilstand).

2. Interaktiv indtastning

$ ttl send notes.txt
No password provided. Generate one? [Y/n]: n
Enter password: ********
Confirm password: ********

$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********

Adgangskoden vises ikke og gemmes ikke i shell-historikken. Ved send vælger du først, om den skal genereres automatisk. Ved get bliver du bedt om at indtaste den direkte.

3. Flag: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password er synlig i ps aux-output og kan gemmes i shell-historikken (~/.bash_history). Undgå brug i delte miljøer og scripts. Brug --password-stdin eller --password-file i stedet.

4. Stdin: --password-stdin

# Videresend via echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# Videresend fra password manager
$ pass show ttl/key | ttl send --password-stdin data.zip

# Videresend fra en 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ørste linje fra stdin. Nyttigt i scripts, CI/CD-pipelines og automatisering. Hvis stdin ikke er en terminal, og der ikke er angivet en adgangskodekilde, afsluttes CLI'en med en fejl (medmindre --json bruges, som automatisk genererer en adgangskode).

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ørste linje i filen (afsluttende linjeskift fjernes). Kompatibel med Docker Secrets (/run/secrets/), Vault-agentfiler og lignende mønstre.

6. Automatisk registreret fil: ttl.password

Hvis der ikke angives en eksplicit adgangskode, søger CLI efter en ttl.password-fil ved siden af programmet, derefter ~/.ttl/password. Første linje bruges som adgangskode.

Kun én eksplicit adgangskodekilde kan bruges ad gangen. -p / --password, --password-stdin og --password-file kan ikke kombineres. Den automatisk registrerede ttl.password-fil kontrolleres kun, når ingen af disse er angivet. Minimumlængde: 8 tegn.

Flagreference

Send-flag

FlagBeskrivelseStandard
-p, --password PKrypteringsadgangskodeinteraktiv
--password-stdinLæs adgangskode fra stdin
--password-file FLæs adgangskode fra fil
-t, --ttl DURGyldighedsperiode7d
-b, --burnSlet efter læsning (engangsdownload)fra
-u, --uploader-onlyKun din egen API-nøgle kan downloade (Orbit; alias --private)fra
--timeout DUROverførselstimeoutingen
--server URLServer-URLhttps://ttl.space
-h3, --http3Forsøg HTTP/3 (QUIC), fallback til TCPfra
--jsonJSON-output til stdout (til scripts og AI-agenter)fra

Get-flag

FlagBeskrivelseStandard
-p, --password PDekrypteringsadgangskodeinteraktiv
--password-stdinLæs adgangskode fra stdin
--password-file FLæs adgangskode fra fil
-o, --output DIROutputmappeaktuel mappe
--timeout DUROverførselstimeoutingen
-h3, --http3Forsøg HTTP/3 (QUIC), fallback til TCPfra
--jsonJSON-output til stdout (til scripts og AI-agenter)fra

TTL-værdier

Gratis: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d

Orbit tilføjer: 14d 15d 28d 30d permanent

Timeout

Standard: ingen. En overførsel, der går i stå, fortsætter af sig selv og opgives, hvis den ikke kan komme videre. Sæt en grænse med --timeout 30m eller --timeout 2h.

Eksempler

Script: Backup og upload

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

Kopier link til udklipsholder (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Kopier link til udklipsholder (Linux)

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

Engangshemmelighed med selvdestruktion

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Linket virker kun én gang og udløber efter 5 minutter

JSON-tilstand (scripts & AI-agenter)

# send: adgangskode genereres automatisk i JSON-tilstand
$ 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"}

# download
$ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# fejl returnerer ok:false
{"ok":false,"error":"Link not found"}

I --json-tilstand er al output struktureret JSON på stdout. Hvis der ikke angives en adgangskode ved afsendelse, genereres en automatisk og inkluderes i svaret. Exitkode er 0 ved succes og 1 ved fejl.

Orbit-plan

Orbit giver adgang til større filer (10 GB), længere opbevaring (30 dage eller permanent), filer kun for uploaderen (kun din API-nøgle kan downloade dem) og filhåndtering (liste og slet). Fuld sammenligning: Features.

API-nøglen registreres automatisk: miljøvariablen TTL_API_KEY, ttl.key ved siden af programmet eller ~/.ttl/key. Brug ttl activate til at gemme nøglen eller skriv den manuelt til en af disse placeringer.

# aktiver din nøgle: den indtastes uden at blive vist, så den ikke havner i shell-historikken
$ 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

# kontroller plan og forbrug
$ 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 forlænget TTL
$ ttl send -t 30d large-backup.tar.gz
# permanent fil (kun Orbit): intet udløb, beholdes, indtil du sletter den, eller dit abonnement ophører
$ ttl send -t permanent archive.tar.gz
# send en privat fil: kun din API-nøgle kan downloade den (kun Orbit)
$ ttl send -u payroll.xlsx

# list seneste uploads
$ 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

# slet en fil
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# fjern gemt nøgle
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Upload og download kræver CLI's krypteringspipeline (Argon2id + XChaCha20-Poly1305 + chunk-AEAD). Til scripts, brug ttl send / ttl get eller --json-tilstand. Nedenstående endpunkter er til Orbit-filhåndtering.

List 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,"uploader_only":false,"is_permanent":false,"is_note":false,"perm_grace_until":0}],"has_more":false}

# næste side: kun når has_more er true; angiv next_cursor fra det forrige svar
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Returnerer filer uploadet med denne nøgle, nyeste først, 20 pr. side. Når has_more er true, indeholder svaret også next_cursor; angiv den som ?cursor= for at hente næste side. Kræver Orbit-plan.

Slet fil (Orbit)

$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."

Returnerer 204 No Content ved succes. Kræver Orbit-plan. Filen skal tilhøre denne nøgle.

Fejlsvar

StatusBetydning
401Ugyldig eller udløbet API-nøgle
403Funktionen kræver Orbit-plan
404Fil ikke fundet eller tilhører ikke denne nøgle
429Anmodningsgrænse overskredet
500Intern serverfejl, prøv igen senere
502Lageret er midlertidigt utilgængeligt, prøv igen senere

Begrænsninger

BegrænsningGratisOrbit
Maks. filstørrelse2 GB10 GB
Maks. TTL7 dage30 dage eller permanent
Uploads pr. dag10Ubegrænset
Uploadmængde pr. dag (pr. IP)10 GBUbegrænset
Samtidige uploads1 pr. IP1 pr. IP og pr. API-nøgle
Lagerkvote✗500 GB
Filliste✗✓
Tidlig sletning✓✓
Filer kun for uploaderen✗✓
Min. adgangskodelængde8 tegn
Anmodninger pr. IP30 pr. 10 sekunder
Forbindelser pr. IP10 samtidige

Kryptering

Filer krypteres på din enhed, før de uploades. Serveren gemmer kun chiffertekst og kan ikke dekryptere dine filer.

KomponentAlgoritme / værdi
NøgleafledningArgon2id (time=3, memory=64 MiB, parallelism=1)
ChifferXChaCha20-Poly1305 AEAD

Enhver ændring af chifferteksten medfører, at dekrypteringen fejler. Serveren verificerer, at den, der downloader, kender den korrekte adgangskode, før chifferteksten frigives, ved hjælp af et envejs-token afledt af krypteringsnøglen.