Упутство за коришћење

Српски

Брзи почетак

# пошаљите фајл: лозинка се аутоматски генерише, линк + лозинка се исписују
$ 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

# преузмите: лозинка се тражи интерактивно
$ 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/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

$ 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

Слање фајлова

Основно слање

# аутоматски генериши лозинку, подразумевани 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)

Лозинка се чита на безбедан начин, не приказује се у терминалу. Оригинално име фајла се задржава; ако фајл са тим именом већ постоји у излазном директоријуму, чува се као name (1).ext уместо да се постојећи препише.

Само токен

# уместо пуног URL-а можете користити само 10-знаковни токен
$ ttl get aBcDeFgHiJ

Излазни директоријум

$ ttl get -o ~/Downloads aBcDeFgHiJ

Подразумевано се фајлови чувају у тренутном директоријуму. Користите -o / --output да наведете други директоријум.

Са заставицом за лозинку

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

Прегледач

Фајлове можете преузети и дешифровати и у прегледачу тако што директно посетите линк. Веб интерфејс користи исти формат фајла и исте алгоритме (Argon2id, XChaCha20-Poly1305) и тражи Вашу лозинку. Није потребна инсталација софтвера.

Управљање лозинкама

Лозинка је основа кључа за шифровање. Никада не напушта Ваш уређај и никада се не шаље серверу. Може се навести на шест начина:

1. Аутоматско генерисање (само при слању)

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

Генерише криптографски случајну лозинку од 12 знакова из скупа [0-9A-Za-z]. Доступно само приликом send (интерактивно или аутоматски у --json режиму).

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

# pipe са echo
$ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz

# pipe из менаџера лозинки
$ pass show ttl/key | ttl send --password-stdin data.zip

# pipe из променљиве окружења
$ 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 знакова.

Референца опција

Заставице за слање

ЗаставицаОписПодразумевано
-p, --password PЛозинка за шифровањеинтерактивно
--password-stdinЧитај лозинку из stdin-а
--password-file FЧитај лозинку из фајла
-t, --ttl ТРАЈАЊЕРок трајања7d
-b, --burnОбриши после читања (једно преузимање)искључено
-u, --uploader-onlyСамо Ваш API кључ може да преузме (Orbit; алијас --private)искључено
--timeout ТРАЈАЊЕВременско ограничење преносабез ограничења
--server URLURL сервера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 ТРАЈАЊЕВременско ограничење преносабез ограничења
-h3, --http3Покушај HTTP/3 (QUIC), врати се на TCPискључено
--jsonИспиши JSON излаз у 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 permanent

Временско ограничење

Подразумевано: без ограничења. Пренос који застане сам се наставља, а одустаје ако не може даље. Ограничење поставите са --timeout 30m или --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

Копирај линк у clipboard (macOS)

$ ttl send -p mypass123 file.pdf | pbcopy

Копирај линк у clipboard (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,"uploader_only":false,"is_permanent":false,"password":"aB3kL9mXq7Rt"}

# преузми
$ ttl --json get -p aB3kL9mXq7Rt xK9mQ2vLpA
{"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"}

# грешке враћају ok:false
{"ok":false,"error":"Link not found"}

У --json режиму сав излаз се шаље у stdout као структурирани JSON. При слању, ако лозинка није наведена, аутоматски се генерише и укључује у одговор. Излазни код је 0 при успеху, 1 при грешци.

Orbit план

Orbit нуди веће фајлове (10 GB), дуже чување (30 дана или трајно), фајлове само за пошиљаоца (може их преузети само Ваш API кључ) и управљање фајловима (листање и брисање). Потпуно поређење: Features.

API кључ се аутоматски открива: променљива окружења TTL_API_KEY, фајл ttl.key поред извршног фајла или ~/.ttl/key. Користите ttl activate да сачувате кључ или га ручно упишите на једну од ових локација.

# активирајте Ваш кључ: уноси се без приказа на екрану, па не остаје у историји командне линије
$ ttl activate
Enter Orbit API key: ********
Orbit plan activated. Key saved to /usr/local/bin/ttl.key
# неинтерактивно: ttl activate --key-stdin  |  ttl activate --key-file F

# проверите план и коришћење
$ 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

# пошаљите са продуженим TTL-ом
$ ttl send -t 30d large-backup.tar.gz
# трајан фајл (само уз Orbit): без истека, чува се док га не обришете или док Вам се претплата не заврши
$ ttl send -t permanent archive.tar.gz
# пошаљите приватан фајл: само Ваш API кључ може да га преузме (само уз Orbit)
$ ttl send -u payroll.xlsx

# прикажите последња отпремања
$ 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 + сегментирани 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,"uploader_only":false,"is_permanent":false,"is_note":false,"perm_grace_until":0}],"has_more":false}

# следећа страница: само када је has_more true; проследите next_cursor из претходног одговора
$ curl "https://ttl.space/v1/files?cursor=1711800600123456" -H "X-API-Key: ttl_orbit_..."

Враћа фајлове отпремљене овим кључем, од најновијих, 20 по страници. Када је has_more true, одговор садржи и next_cursor; проследите га као ?cursor= да бисте добили следећу страницу. Потребан је 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Прекорачено ограничење захтева
500Интерна грешка сервера, покушајте поново касније
502Складиште привремено није доступно, покушајте поново касније

Ограничења

ОграничењеБесплатноOrbit
Макс величина фајла2 GB10 GB
Макс TTL7 дана30 дана или трајно
Дневна отпремања10Неограничено
Дневни обим отпремања (по IP адреси)10 GBНеограничено
Истовремена отпремања1 по IP адреси1 по IP адреси и по API кључу
Квота складиштења✗500 GB
Листа датотека✗✓
Рано брисање✓✓
Фајлови само за пошиљаоца✗✓
Мин дужина лозинке8 знакова
Захтева по IP адреси30 у 10 секунди
Конекција по IP адреси10 истовремених

Шифровање

Фајлови се шифрују на Вашем уређају пре отпремања. Сервер чува само шифровани текст и не може дешифровати Ваше фајлове.

КомпонентаАлгоритам / Вредност
Извођење кључаArgon2id (time=3, memory=64 MiB, parallelism=1)
ШифраXChaCha20-Poly1305 AEAD

Свака измена шифрованог текста доводи до неуспеха дешифровања. Сервер проверава да преузималац зна исправну лозинку пре издавања шифрованог текста, користећи једносмерни токен изведен из кључа за шифровање.