Ръководство за използване

Български

Бърз старт

# Изпращане на файл — паролата се генерира автоматично, показват се връзка и парола
$ 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 криптира, качва, изтегля и декриптира автоматично. Сървърът никога не вижда паролата ви или некриптираните ви данни.

Инсталация

Homebrew (macOS)

$ brew install tweenietomatoes/ttl/ttl

Scoop (Windows)

$ 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

$ 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

$ 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

Браузър

Може също да изтегляте и декриптирате файлове в браузъра, като посетите връзката директно. Уеб интерфейсът използва същата криптографска библиотека и иска паролата ви. Не е необходимо инсталиране на софтуер.

Управление на паролата

Паролата се използва като входни данни за ключа за криптиране. Никога не напуска устройството ви и никога не се изпраща до сървъра. Има шест начина за подаване:

1. Автоматично генериране (само при изпращане)

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

Генерира криптографски случайна 8-знакова парола от [0-9A-Za-z]. Достъпно само при send в терминала.

2. Интерактивно въвеждане

$ 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 се иска директно.

3. Флаг: -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 вместо това.

4. Stdin: --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, който автоматично генерира парола).

5. Файл: --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 файлове и подобни шаблони.

6. Автоматично откриван файл: ttl.password

Ако не е подадена изрична парола, CLI търси файл ttl.password до изпълнимия файл, после ~/.ttl/password. Първият ред се използва като парола.

Само един изричен източник на парола може да се използва наведнъж. -p / --password, --password-stdin и --password-file не могат да се комбинират. Автоматично откриваният файл ttl.password се проверява само ако нито един от тях не е зададен. Минимална дължина: 8 знака.

Справочник на флаговете

Флагове за send

ФлагОписаниеПо подразбиране
-p, --password PПарола за криптиранеинтерактивно
--password-stdinЧете парола от stdin
--password-file FЧете парола от файл
-t, --ttl DURСрок на валидност7d
-b, --burnИзтриване след прочит (еднократно изтегляне)изкл.
--timeout DURТаймаут на трансфераавто
--server URLURL на сървъраhttps://ttl.space
-h3, --http3Опит за HTTP/3 (QUIC), при неуспех преминава към TCPизкл.
--jsonJSON изход на stdout (за скриптове и AI агенти)изкл.

Флагове за get

ФлагОписаниеПо подразбиране
-p, --password PПарола за декриптиранеинтерактивно
--password-stdinЧете парола от stdin
--password-file FЧете парола от файл
-o, --output DIRИзходна директориятекуща директория
--timeout DURТаймаут на трансфераавто
-h3, --http3Опит за HTTP/3 (QUIC), при неуспех преминава към TCPизкл.
--jsonJSON изход на stdout (за скриптове и AI агенти)изкл.

Стойности за TTL

Безплатно: 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

Копиране на връзката в клипборда (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Копиране на връзката в клипборда (Linux)

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

Еднократна тайна със самоунищожение

$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env
# Връзката работи точно веднъж, изтича след 5 минути

JSON режим (скриптове и AI агенти)

# изпращане — паролата се генерира автоматично в 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

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

HTTP API

Качването и изтеглянето изискват криптографския процес на CLI (Argon2id + XChaCha20-Poly1305 + chunk-AEAD). За скриптове използвайте ttl send / ttl get или режим --json. Крайните точки по-долу са за управление на файлове в Orbit.

Списък на файловете (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.

Изтриване на файл (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 ГБ
Макс. TTL7 дни30 дни
Качвания на ден1050
Квота за хранилище500 ГБ
Списък и изтриване
Минимална дължина на паролата8 знака
Заявки на IP30 на 10 секунди
Връзки на IP10 едновременно

Криптиране

Файловете се криптират на устройството ви, преди да бъдат качени. Сървърът пази само шифротекста и не може да дешифрира файловете ви.

КомпонентАлгоритъм / Стойност
Извеждане на ключArgon2id (time=3, memory=64 MB, parallelism=1)
ШифърXChaCha20-Poly1305 AEAD

Всяка промяна на шифротекста води до неуспешно декриптиране. Сървърът проверява, че изтеглящият, знае правилната парола, преди да предаде шифротекста, чрез еднопосочен токен, изведен от ключа за криптиране.