# Изпращане на файл — паролата се генерира автоматично, показват се връзка и парола $ 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 # Изтегляне — паролата се изисква интерактивно $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI криптира, качва, изтегля и декриптира автоматично. Сървърът никога не вижда паролата ви или некриптираните ви данни.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# Изтеглете за вашата платформа от страницата с издания $ 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 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 v1.3.0
# Автоматично генериране на парола, TTL по подразбиране 7 дни $ ttl send report.xlsx
Ако в терминала не е подадена парола, CLI пита:
No password provided. Generate one? [Y/n]:
Натиснете Enter или въведете y за автоматично генериране.
$ ttl send -p mySecretPass -t 1h document.pdf
# Файлът се изтрива безвъзвратно след първото изтегляне $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # изтича след 5 минути $ ttl send -t 30m meeting-link.txt # изтича след 30 минути $ ttl send -t 6h backup.tar.gz # изтича след 6 часа $ ttl send -t 1d daily-report.pdf # изтича след 1 ден $ ttl send -t 3d project-archive.zip # изтича след 3 дни $ ttl send -t 5d design-assets.zip # изтича след 5 дни $ ttl send report.xlsx # изтича след 7 дни (по подразбиране)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Паролата се чете сигурно — не се показва в терминала. Оригиналното име на файла се възстановява.
# Може да използвате само 10-знаковия токен вместо пълния URL $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
По подразбиране файловете се записват в текущата директория. Използвайте -o / --output, за да зададете друга директория.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Може също да изтегляте и декриптирате файлове в браузъра, като посетите връзката директно. Уеб интерфейсът използва същата криптографска библиотека и иска паролата ви. Не е необходимо инсталиране на софтуер.
Паролата се използва като входни данни за ключа за криптиране. Никога не напуска устройството ви и никога не се изпраща до сървъра. Има шест начина за подаване:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Генерира криптографски случайна 8-знакова парола от [0-9A-Za-z]. Достъпно само при send в терминала.
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Паролата не се показва и не се записва в историята на обвивката. При send първо избирате дали да се генерира автоматично. При get се иска директно.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password се вижда в изхода на ps aux и може да се запише в историята на обвивката (~/.bash_history). Избягвайте в споделени среди и скриптове. Използвайте --password-stdin или --password-file вместо това.--password-stdin# Подаване чрез echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # Подаване от мениджър на пароли $ pass show ttl/key | ttl send --password-stdin data.zip # Подаване от променлива на средата $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # Heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Чете първия ред от stdin. Полезно в скриптове, CI/CD конвейери и автоматизация. Ако stdin не е терминал и не е подаден източник на парола, CLI приключва с грешка (освен в режим --json, който автоматично генерира парола).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Чете първия ред от файла (крайният знак за нов ред се премахва). Съвместимо с Docker Secrets (/run/secrets/), Vault agent файлове и подобни шаблони.
ttl.passwordАко не е подадена изрична парола, CLI търси файл ttl.password до изпълнимия файл, после ~/.ttl/password. Първият ред се използва като парола.
-p / --password, --password-stdin и --password-file не могат да се комбинират. Автоматично откриваният файл ttl.password се проверява само ако нито един от тях не е зададен. Минимална дължина: 8 знака.| Флаг | Описание | По подразбиране |
|---|---|---|
-p, --password P | Парола за криптиране | интерактивно |
--password-stdin | Чете парола от stdin | |
--password-file F | Чете парола от файл | |
-t, --ttl DUR | Срок на валидност | 7d |
-b, --burn | Изтриване след прочит (еднократно изтегляне) | изкл. |
--timeout DUR | Таймаут на трансфера | авто |
--server URL | URL на сървъра | https://ttl.space |
-h3, --http3 | Опит за HTTP/3 (QUIC), при неуспех преминава към TCP | изкл. |
--json | JSON изход на stdout (за скриптове и AI агенти) | изкл. |
| Флаг | Описание | По подразбиране |
|---|---|---|
-p, --password P | Парола за декриптиране | интерактивно |
--password-stdin | Чете парола от stdin | |
--password-file F | Чете парола от файл | |
-o, --output DIR | Изходна директория | текуща директория |
--timeout DUR | Таймаут на трансфера | авто |
-h3, --http3 | Опит за HTTP/3 (QUIC), при неуспех преминава към TCP | изкл. |
--json | JSON изход на stdout (за скриптове и AI агенти) | изкл. |
Безплатно: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit добавя: 14d 15d 28d 30d
По подразбиране: авто — изчислява се на база размер на файла при допускане 1 Mbps + 2 минути марж (минимум 5 минути). Задавайте ръчно с --timeout 10m или --timeout 1h.
#!/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 # Връзката работи точно веднъж, изтича след 5 минути
# изпращане — паролата се генерира автоматично в JSON режим $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # изтегляне $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # грешките връщат ok:false {"ok":false,"error":"Link not found"}
В режим --json целият изход е структуриран JSON на stdout. Ако при изпращане не е подадена парола, тя се генерира автоматично и се включва в отговора. Кодът за изход е 0 при успех, 1 при грешка.
Features · Orbit дава достъп до по-големи файлове (10 ГБ), по-дълго съхранение (30 дни) и управление на файлове (списък и изтриване).
API ключът се открива автоматично: променливата на средата TTL_API_KEY, ttl.key до изпълнимия файл или ~/.ttl/key. Използвайте ttl activate, за да запазите ключа, или го запишете ръчно на едно от тези места.
# активирайте ключа си $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # проверете плана и използването $ 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 / 500.0 GB # изпращане с удължен TTL $ ttl send -t 30d large-backup.tar.gz # списък на последните качвания $ 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 # изтриване на файл $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # премахване на запазения ключ $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get или режим --json. Крайните точки по-долу са за управление на файлове в 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}]}
Връща всички файлове, качени с този ключ. Изисква план Orbit.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Връща 204 No Content при успех. Изисква план Orbit. Файлът трябва да принадлежи на този ключ.
| Статус | Значение |
|---|---|
401 | Невалиден или изтекъл API ключ |
403 | Функцията изисква план Orbit |
404 | Файлът не е намерен или не принадлежи на този ключ |
429 | Лимитът за заявки е надвишен |
| Лимит | Безплатно | Orbit |
|---|---|---|
| Макс. размер на файла | 2 ГБ | 10 ГБ |
| Макс. TTL | 7 дни | 30 дни |
| Качвания на ден | 10 | 50 |
| Квота за хранилище | — | 500 ГБ |
| Списък и изтриване | — | ✓ |
| Минимална дължина на паролата | 8 знака | |
| Заявки на IP | 30 на 10 секунди | |
| Връзки на IP | 10 едновременно | |
Файловете се криптират на устройството ви, преди да бъдат качени. Сървърът пази само шифротекста и не може да дешифрира файловете ви.
| Компонент | Алгоритъм / Стойност |
|---|---|
| Извеждане на ключ | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Шифър | XChaCha20-Poly1305 AEAD |
Всяка промяна на шифротекста води до неуспешно декриптиране. Сървърът проверява, че изтеглящият, знае правилната парола, преди да предаде шифротекста, чрез еднопосочен токен, изведен от ключа за криптиране.