Brukerveiledning

Norsk

Hurtigstart

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

Installasjon

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Forhåndskompilert binærfil

# 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

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

Fra kildekoden

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

Verifiser

$ ttl version
ttl 1.6.0

Sende filer

Enkel sending

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

Egendefinert passord

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

Slett etter lesing

# Brukes opp i det øyeblikket første nedlasting starter; etter et brudd kan bare den nedlastingen fortsette
$ ttl send -b photo.jpg

Egendefinert TTL

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

Laste ned filer

Interaktivt (terminal)

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

Kun med token

# Du kan bruke bare det 10-tegns tokenet i stedet for den fullstendige URL-en
$ ttl get aBcDeFgHiJ

Utdatamappe

$ ttl get -o ~/Downloads aBcDeFgHiJ

Som standard lagres filer i gjeldende mappe. Bruk -o / --output for å angi en annen mappe.

Med passordflagg

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

Nettleser

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.

Passordadministrasjon

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å:

1. Automatisk generering (kun ved sending)

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

2. Interaktiv inntasting

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

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

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

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

6. Automatisk oppdaget fil: ttl.password

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

Bare én eksplisitt passordkilde kan brukes om gangen. -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.

Flaggreferanse

Send-flagg

FlaggBeskrivelseStandard
-p, --password PKrypteringspassordinteraktiv
--password-stdinLes passord fra stdin
--password-file FLes passord fra fil
-t, --ttl DURGyldighetsvarighet7d
-b, --burnSlett etter lesing (engangs nedlasting)av
-u, --uploader-onlyBare din egen API-nøkkel kan laste ned (Orbit; alias --private)av
--timeout DUROverføringstidsavbruddingen
--server URLServer-URLhttps://ttl.space
-h3, --http3Prøv HTTP/3 (QUIC), fallback til TCPav
--jsonJSON-utdata til stdout (for skript og KI-agenter)av

Get-flagg

FlaggBeskrivelseStandard
-p, --password PDekrypteringspassordinteraktiv
--password-stdinLes passord fra stdin
--password-file FLes passord fra fil
-o, --output DIRUtdatamappegjeldende mappe
--timeout DUROverføringstidsavbruddingen
-h3, --http3Prøv HTTP/3 (QUIC), fallback til TCPav
--jsonJSON-utdata til stdout (for skript og KI-agenter)av

TTL-verdier

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

Tidsavbrudd

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.

Eksempler

Skript: Sikkerhetskopi og opplasting

#!/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 lenke til utklippstavlen (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Kopier lenke til utklippstavlen (Linux)

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

Engangshemmelighet med selvsletting

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Lenken fungerer nøyaktig én gang, utløper etter 5 minutter

JSON-modus (skript & KI-agenter)

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

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

HTTP API

Opplasting og nedlasting krever CLI-ens krypteringspipeline (Argon2id + XChaCha20-Poly1305 + chunk-AEAD). For skript, bruk ttl send / ttl get eller --json-modus. Endepunktene nedenfor er for Orbit-filbehandling.

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}

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

Slett fil (Orbit)

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

Feilsvar

StatusBetydning
401Ugyldig eller utløpt API-nøkkel
403Funksjonen krever Orbit-plan
404Fil ikke funnet eller tilhører ikke denne nøkkelen
429Forespørselsgrense overskredet
500Intern serverfeil, prøv igjen senere
502Lagringen er midlertidig utilgjengelig, prøv igjen senere

Begrensninger

BegrensningGratisOrbit
Maks. filstørrelse2 GB10 GB
Maks. TTL7 dager30 dager eller permanent
Opplastinger per dag10Ubegrenset
Opplastingsvolum per dag (per IP)10 GBUbegrenset
Samtidige opplastinger1 per IP1 per IP og per API-nøkkel
Lagringskvote✗500 GB
Filliste✗✓
Tidlig sletting✓✓
Filer bare du kan laste ned✗✓
Min. passordlengde8 tegn
Forespørsler per IP30 per 10 sekunder
Tilkoblinger per IP10 samtidige

Kryptering

Filer krypteres på enheten din før de lastes opp. Serveren lagrer kun chiffertekst og kan ikke dekryptere filene dine.

KomponentAlgoritme / Verdi
NøkkelavledningArgon2id (time=3, memory=64 MiB, parallelism=1)
ChifferXChaCha20-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.