Handleiding

← Home

Snelstart

# Bestand verzenden — wachtwoord wordt automatisch gegenereerd, link + wachtwoord worden weergegeven
$ 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

# Downloaden — wachtwoord wordt interactief gevraagd
$ ttl get https://ttl.space/aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)

De CLI versleutelt, uploadt, downloadt en ontsleutelt automatisch. De server ziet nooit uw wachtwoord of uw onversleutelde gegevens.

Installatie

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

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

Voorgecompileerd bestand

# Download voor uw platform vanuit de 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

Vanuit broncode

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

Verifiëren

$ ttl version
ttl v1.3.0

Bestanden verzenden

Eenvoudig verzenden

# Wachtwoord automatisch genereren, standaard TTL 7d
$ ttl send report.xlsx

Als er geen wachtwoord is opgegeven in de terminal, vraagt de CLI:

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

Druk op Enter of typ y om automatisch te genereren.

Eigen wachtwoord

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

Na lezen verwijderen

# Bestand wordt na de eerste download definitief verwijderd
$ ttl send -b photo.jpg

Aangepaste TTL

$ ttl send -t 5m temp-credentials.txt   # verloopt over 5 minuten
$ ttl send -t 30m meeting-link.txt      # verloopt over 30 minuten
$ ttl send -t 6h backup.tar.gz          # verloopt over 6 uur
$ ttl send -t 1d daily-report.pdf       # verloopt over 1 dag
$ ttl send -t 3d project-archive.zip    # verloopt over 3 dagen
$ ttl send -t 5d design-assets.zip      # verloopt over 5 dagen
$ ttl send report.xlsx                  # verloopt over 7 dagen (standaard)

Bestanden downloaden

Interactief (terminal)

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

Het wachtwoord wordt niet weergegeven. De oorspronkelijke bestandsnaam wordt hersteld.

Alleen met token

# U kunt alleen het 10-tekens token gebruiken in plaats van de volledige URL
$ ttl get aBcDeFgHiJ
Enter password: ********
Password verified
◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)

Uitvoermap

$ ttl get -o ~/Downloads aBcDeFgHiJ

Standaard worden bestanden opgeslagen in de huidige map. Gebruik -o / --output om een andere map op te geven.

Met wachtwoord-flag

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

Browser

U kunt bestanden ook downloaden en ontsleutelen in uw browser door de link rechtstreeks te bezoeken. De webinterface gebruikt dezelfde encryptiebibliotheek en vraagt om uw wachtwoord. Geen software-installatie nodig.

Wachtwoordbeheer

Het wachtwoord dient als basis voor de versleutelingssleutel. Het verlaat nooit uw apparaat en wordt nooit naar de server verzonden. Er zijn vijf manieren om het op te geven:

1. Automatisch genereren (alleen bij verzenden)

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

Genereert een cryptografisch willekeurig wachtwoord van 8 tekens uit [0-9A-Za-z]. Alleen beschikbaar bij send in de terminal.

2. Interactieve invoer

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

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

Het wachtwoord wordt niet weergegeven en niet opgeslagen in de shellgeschiedenis. Bij send kiest u eerst of u automatisch wilt genereren. Bij get wordt u direct om invoer gevraagd.

3. Flag: -p / --password

$ ttl send -p mySecretPass file.zip
$ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password is zichtbaar in ps aux-uitvoer en kan worden opgeslagen in de shell-geschiedenis (~/.bash_history). Vermijd gebruik in gedeelde omgevingen en scripts. Gebruik in plaats daarvan --password-stdin of --password-file.

4. Stdin: --password-stdin

# Via echo doorsturen
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# Vanuit wachtwoordbeheerder doorsturen
$ pass show ttl/key | ttl send --password-stdin data.zip

# Vanuit een omgevingsvariabele doorsturen
$ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ

# Heredoc
$ ttl send --password-stdin report.pdf <<<"mySecretPass"

Leest de eerste regel van stdin. Handig in scripts, CI/CD-pipelines en automatisering. Als stdin geen terminal is en er geen wachtwoordbron is opgegeven, stopt de CLI met een foutmelding (tenzij --json wordt gebruikt, dat automatisch een wachtwoord genereert).

5. Bestand: --password-file

$ ttl send --password-file /run/secrets/key report.xlsx
$ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ

Leest de eerste regel van het bestand (afsluitend regeleindeteken wordt verwijderd). Compatibel met Docker Secrets (/run/secrets/), Vault-agent-bestanden en vergelijkbare patronen.

6. Automatisch gedetecteerd bestand: ttl.password

Als er geen expliciet wachtwoord wordt opgegeven, zoekt de CLI naar een ttl.password-bestand naast het programma, dan ~/.ttl/password. De eerste regel wordt als wachtwoord gebruikt.

Er kan slechts één expliciete wachtwoordbron tegelijk worden gebruikt. -p / --password, --password-stdin en --password-file kunnen niet worden gecombineerd. Het automatisch gedetecteerde ttl.password-bestand wordt alleen gecontroleerd als geen van deze is opgegeven. Minimumlengte: 8 tekens.

Opties-overzicht

Send-flags

FlagBeschrijvingStandaard
-p, --password PVersleutelingswachtwoordinteractief
--password-stdinWachtwoord van stdin lezen
--password-file FWachtwoord uit bestand lezen
-t, --ttl DURGeldigheidsduur7d
-b, --burnNa lezen verwijderen (eenmalige download)uit
--timeout DUROverdrachtstimeoutauto
--server URLServer-URLhttps://ttl.space
-h3, --http3HTTP/3 (QUIC) proberen, terugval op TCPuit
--jsonJSON-uitvoer naar stdout (voor scripts en AI-agenten)uit

Get-flags

FlagBeschrijvingStandaard
-p, --password POntsleutelingswachtwoordinteractief
--password-stdinWachtwoord van stdin lezen
--password-file FWachtwoord uit bestand lezen
-o, --output DIRUitvoermaphuidige map
--timeout DUROverdrachtstimeoutauto
-h3, --http3HTTP/3 (QUIC) proberen, terugval op TCPuit
--jsonJSON-uitvoer naar stdout (voor scripts en AI-agenten)uit

TTL-waarden

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

Orbit extra: 14d 15d 28d 30d

Timeout

Standaard: auto — geschat op basis van bestandsgrootte bij een veronderstelde snelheid van 1 Mbps + 2 minuten buffer (minimum 5 minuten). Overschrijven met --timeout 10m of --timeout 1h.

Voorbeelden

Script: back-up en 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

Link naar klembord kopiëren (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Link naar klembord kopiëren (Linux)

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

Eenmalig geheim met zelfvernietiging

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Link werkt precies één keer, verloopt na 5 minuten

JSON-modus (scripts & AI-agenten)

# verzenden — wachtwoord automatisch gegenereerd in JSON-modus
$ ttl --json send report.pdf
{"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"}

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

# fouten retourneren ok:false
{"ok":false,"error":"Link not found"}

In --json-modus is alle uitvoer gestructureerde JSON op stdout. Als bij het verzenden geen wachtwoord is opgegeven, wordt er automatisch een gegenereerd en opgenomen in het antwoord. De exitcode is 0 bij succes en 1 bij een fout.

Orbit-plan

Orbit ontgrendelt grotere bestanden (10 GB), langere bewaring (30 dagen) en bestandsbeheer (weergeven en verwijderen).

De API-sleutel wordt automatisch gedetecteerd: TTL_API_KEY-omgevingsvariabele, ttl.key naast het programma of ~/.ttl/key. Gebruik ttl activate om de sleutel op te slaan of schrijf deze handmatig naar een van deze locaties.

# uw sleutel activeren
$ ttl activate ttl_orbit_aBcDeFgHiJ...
Orbit plan activated. Key saved to /usr/local/bin/ttl.key

# plan en gebruik controleren
$ 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

# verzenden met verlengde TTL
$ ttl send -t 30d large-backup.tar.gz

# recente uploads weergeven
$ 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

# een bestand verwijderen
$ ttl delete xK9mQ2vLpA
Deleted: xK9mQ2vLpA

# opgeslagen sleutel verwijderen
$ ttl deactivate
Key file removed: /usr/local/bin/ttl.key

HTTP API

Upload en download vereisen de versleutelingspipeline van de CLI (Argon2id + XChaCha20-Poly1305 + blok-AEAD). Gebruik voor scripts ttl send / ttl get of de --json-modus. De onderstaande endpoints zijn voor Orbit-bestandsbeheer.

Bestanden weergeven (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}]}

Geeft alle bestanden weer die met deze sleutel zijn geüpload. Vereist Orbit-plan.

Bestand verwijderen (Orbit)

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

Retourneert 204 No Content bij succes. Vereist Orbit-plan. Het bestand moet bij deze sleutel horen.

Foutreacties

StatusBetekenis
401Ongeldige of verlopen API-sleutel
403Functie vereist Orbit-plan
404Bestand niet gevonden of behoort niet tot deze sleutel
429Aanvraaglimiet overschreden

Limieten

BeperkingGratisOrbit
Max. bestandsgrootte2 GB10 GB
Max. TTL7 dagen30 dagen
Uploads per dag1050
Opslagquotum250 GB
Weergeven & verwijderen
Min. wachtwoordlengte8 tekens
Verzoeken per IP30 per 10 seconden
Verbindingen per IP10 gelijktijdig

Versleuteling

Bestanden worden op uw apparaat versleuteld voordat ze worden geüpload. De server slaat alleen versleutelde tekst op en kan uw bestanden niet ontsleutelen.

ComponentAlgoritme / Waarde
SleutelafleidingArgon2id (time=3, memory=64 MB, parallelism=1)
CijferXChaCha20-Poly1305 AEAD

Elke wijziging aan de versleutelde tekst veroorzaakt dat de ontsleuteling mislukt. De server verifieert dat de downloader het juiste wachtwoord kent voordat de versleutelde tekst wordt vrijgegeven, met behulp van een eenrichtingstoken afgeleid van de encryptiesleutel.