# Bestand verzenden: wachtwoord wordt automatisch gegenereerd, link + wachtwoord worden weergegeven $ 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 # 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.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Download voor uw platform vanuit de 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 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 1.6.0
# 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.
$ ttl send -p mySecretPass -t 1h document.pdf
# Wordt verbruikt zodra de eerste download begint; na een onderbreking kan alleen die download verder $ ttl send -b photo.jpg
$ 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)
$ 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; als er in de uitvoermap al een bestand met die naam bestaat, wordt het bestand opgeslagen als name (1).ext in plaats van het bestaande bestand te overschrijven.
# U kunt alleen het 10-tekens token gebruiken in plaats van de volledige URL $ ttl get aBcDeFgHiJ
$ ttl get -o ~/Downloads aBcDeFgHiJ
Standaard worden bestanden opgeslagen in de huidige map. Gebruik -o / --output om een andere map op te geven.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
U kunt bestanden ook downloaden en ontsleutelen in uw browser door de link rechtstreeks te bezoeken. De webinterface gebruikt hetzelfde bestandsformaat en dezelfde algoritmen (Argon2id, XChaCha20-Poly1305) en vraagt om uw wachtwoord. Geen software-installatie nodig.
Het wachtwoord dient als basis voor de versleutelingssleutel. Het verlaat nooit uw apparaat en wordt nooit naar de server verzonden. Er zijn zes manieren om het op te geven:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mXq7Rt
Genereert een cryptografisch willekeurig wachtwoord van 12 tekens uit [0-9A-Za-z]. Alleen beschikbaar bij send (interactief, of automatisch in --json-modus).
$ 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.
-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.--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).
--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.
ttl.passwordAls 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.
-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.| Flag | Beschrijving | Standaard |
|---|---|---|
-p, --password P | Versleutelingswachtwoord | interactief |
--password-stdin | Wachtwoord van stdin lezen | |
--password-file F | Wachtwoord uit bestand lezen | |
-t, --ttl DUR | Geldigheidsduur | 7d |
-b, --burn | Na lezen verwijderen (eenmalige download) | uit |
-u, --uploader-only | Alleen uw eigen API-sleutel kan downloaden (Orbit; alias --private) | uit |
--timeout DUR | Overdrachtstimeout | geen |
--server URL | Server-URL | https://ttl.space |
-h3, --http3 | HTTP/3 (QUIC) proberen, terugval op TCP | uit |
--json | JSON-uitvoer naar stdout (voor scripts en AI-agenten) | uit |
| Flag | Beschrijving | Standaard |
|---|---|---|
-p, --password P | Ontsleutelingswachtwoord | interactief |
--password-stdin | Wachtwoord van stdin lezen | |
--password-file F | Wachtwoord uit bestand lezen | |
-o, --output DIR | Uitvoermap | huidige map |
--timeout DUR | Overdrachtstimeout | geen |
-h3, --http3 | HTTP/3 (QUIC) proberen, terugval op TCP | uit |
--json | JSON-uitvoer naar stdout (voor scripts en AI-agenten) | uit |
Gratis: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit extra: 14d 15d 28d 30d permanent
Standaard: geen. Een overdracht die stokt, gaat vanzelf verder en stopt als die niet verder kan. Stel een limiet in met --timeout 30m of --timeout 2h.
#!/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 # Link werkt precies één keer, verloopt na 5 minuten
# 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,"uploader_only":false,"is_permanent":false,"password":"aB3kL9mXq7Rt"} # downloaden $ ttl --json get -p aB3kL9mXq7Rt 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 ontgrendelt grotere bestanden (10 GB), langere bewaring (30 dagen, of permanent), privébestanden (alleen uw API-sleutel kan ze downloaden) en bestandsbeheer (weergeven en verwijderen). Volledige vergelijking: Features.
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: gevraagd zonder weergave, zodat hij niet in de shellgeschiedenis belandt $ ttl activate Enter Orbit API key: ******** Orbit plan activated. Key saved to /usr/local/bin/ttl.key # niet-interactief: ttl activate --key-stdin | ttl activate --key-file F # plan en gebruik controleren $ 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 # verzenden met verlengde TTL $ ttl send -t 30d large-backup.tar.gz # permanent bestand (alleen Orbit): geen vervaldatum, bewaard tot u het verwijdert of uw abonnement eindigt $ ttl send -t permanent archive.tar.gz # een privébestand verzenden: alleen uw API-sleutel kan het downloaden (alleen Orbit) $ ttl send -u payroll.xlsx # 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
ttl send / ttl get of de --json-modus. De onderstaande endpoints zijn voor Orbit-bestandsbeheer.$ 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} # volgende pagina: alleen als has_more true is; geef next_cursor uit het vorige antwoord mee $ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."
Geeft de bestanden weer die met deze sleutel zijn geüpload, nieuwste eerst, 20 per pagina. Als has_more true is, bevat het antwoord ook next_cursor; geef die mee als ?cursor= om de volgende pagina op te halen. Vereist Orbit-plan.
$ 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.
| Status | Betekenis |
|---|---|
401 | Ongeldige of verlopen API-sleutel |
403 | Functie vereist Orbit-plan |
404 | Bestand niet gevonden of behoort niet tot deze sleutel |
429 | Aanvraaglimiet overschreden |
500 | Interne serverfout, probeer het later opnieuw |
502 | Opslag tijdelijk niet beschikbaar, probeer het later opnieuw |
| Beperking | Gratis | Orbit |
|---|---|---|
| Max. bestandsgrootte | 2 GB | 10 GB |
| Max. TTL | 7 dagen | 30 dagen of permanent |
| Uploads per dag | 10 | Onbeperkt |
| Uploadvolume per dag (per IP) | 10 GB | Onbeperkt |
| Gelijktijdige uploads | 1 per IP | 1 per IP en per API-sleutel |
| Opslagquotum | ✗ | 500 GB |
| Bestandsoverzicht | ✗ | ✓ |
| Vroegtijdig verwijderen | ✓ | ✓ |
| Privébestanden (alleen uploader) | ✗ | ✓ |
| Min. wachtwoordlengte | 8 tekens | |
| Verzoeken per IP | 30 per 10 seconden | |
| Verbindingen per IP | 10 gelijktijdig | |
Bestanden worden op uw apparaat versleuteld voordat ze worden geüpload. De server slaat alleen versleutelde tekst op en kan uw bestanden niet ontsleutelen.
| Component | Algoritme / Waarde |
|---|---|
| Sleutelafleiding | Argon2id (time=3, memory=64 MiB, parallelism=1) |
| Cijfer | XChaCha20-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.