# надіслати файл — пароль генерується автоматично, виводить посилання + пароль $ 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 (для скриптів та ШІ-агентів) | вимк. |
| Прапорець | Опис | За замовчуванням |
|---|---|---|
-p, --password P | Пароль для розшифрування | інтерактивно |
--password-stdin | Зчитати пароль зі stdin | |
--password-file F | Зчитати пароль з файлу | |
-o, --output DIR | Каталог виведення | поточний каталог |
--timeout DUR | Тайм-аут передачі | автоматично |
-h3, --http3 | Спробувати HTTP/3 (QUIC), відкат на TCP | вимкнено |
--json | Вивід JSON у stdout (для скриптів та ШІ-агентів) | вимк. |
Безкоштовно: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Orbit додає: 14d 15d 28d 30d
За замовчуванням: автоматично — розраховується з розміру файлу при швидкості 1 Мбіт/с + 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 при помилці.
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 / 250.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 |
| Квота сховища | — | 100 ГБ |
| Перелік та видалення | — | ✓ |
| Мін. довжина пароля | 8 символів | |
| Запитів на IP | 30 за 10 секунд | |
| З'єднань на IP | 10 одночасних | |
Файли шифруються на вашому пристрої перед завантаженням. Сервер зберігає лише зашифровані дані і не може розшифрувати ваші файли.
| Компонент | Алгоритм / Значення |
|---|---|
| Виведення ключа | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Шифр | XChaCha20-Poly1305 AEAD |
Будь-яка зміна шифротексту призводить до помилки розшифрування. Сервер перевіряє, що той, хто завантажує, знає правильний пароль, перш ніж віддати шифротекст, використовуючи односторонній токен, отриманий з ключа шифрування.