Metadata-Version: 2.4
Name: orgpt
Version: 0.1.0
Summary: Консольный клиент к OpenRouter API для Termux и Linux
Author-email: venslyy <venslyy@mail.ru>
License: MIT
Keywords: openrouter,cli,termux,linux,llm,ai
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: strong-crypto
Requires-Dist: cryptography>=41.0; extra == "strong-crypto"

# orgpt

Консольная утилита для общения с моделями через [OpenRouter](https://openrouter.ai)
из Termux или обычного Linux (Ubuntu и т.п.).

## Установка

### Termux

```bash
pkg update
pkg install python
# (опционально, но рекомендуется) чтобы orgpt getkey сразу открывал браузер:
pkg install termux-api
pip install ./orgpt          # из скачанной папки с проектом
# либо для настоящего AES-шифрования конфига вместо запасного шифра:
pip install "./orgpt[strong-crypto]"
```

Также поставь приложение **Termux:API** (F-Droid / Play Store) — без него
`termux-open-url` не откроет браузер.

### Linux (Ubuntu/Debian и т.п.)

```bash
python3 -m venv .venv && source .venv/bin/activate   # опционально
pip install ./orgpt
# или с настоящим шифрованием:
pip install "./orgpt[strong-crypto]"
```

После установки в `PATH` появится команда `orgpt`.

## Команды

Все команды понимают вызов как с дефисом, так и без (`orgpt help` ==
`orgpt -help`).

| Команда                          | Что делает |
|-----------------------------------|------------|
| `orgpt help`                      | Список команд с описанием |
| `orgpt getkey`                    | Открывает страницу получения API-ключа OpenRouter в браузере |
| `orgpt bindkey <key>` (алиасы `setkey`, `savekey`) | Сохраняет API-ключ (перезаписывает старый, если уже был) |
| `orgpt choosemodel`               | Показывает список бесплатных моделей OpenRouter, просит выбрать номер |
| `orgpt setrole [текст]`           | Задаёт системную роль/характер ассистента |
| `orgpt getanswer`                 | Просит ввести запрос и печатает ответ модели |
| `orgpt status`                    | Показывает текущую модель/роль и замаскированный ключ |

## Типичный сценарий использования

```bash
orgpt getkey            # получаешь ключ на сайте
orgpt bindkey sk-or-... # сохраняешь его
orgpt choosemodel        # выбираешь бесплатную модель
orgpt setrole "Ты — лаконичный технический ассистент"
orgpt getanswer          # задаёшь вопрос
```

## Где и как хранится конфиг

Файл лежит в `~/.config/orgpt/config.enc` с правами доступа `600`
(читать может только владелец — это основная защита, как у большинства
CLI с API-ключами). Дополнительно содержимое шифруется ключом, который
завязан на пользователя и машину:

- если установлен пакет `cryptography` — используется настоящий Fernet
  (AES128-CBC + HMAC);
- если пакета нет — используется запасной потоковый шифр на основе
  HMAC-SHA256 из стандартной библиотеки, чтобы пакет ставился без
  лишних зависимостей на Termux.

В обоих случаях это не plaintext-JSON: скопировать файл на другую
машину и просто прочитать его не выйдет.

## Идея на будущее

- `orgpt setrole` без аргумента — интерактивный ввод; с аргументом —
  сразу текст роли, удобно для алиасов/скриптов.
- Можно добавить `orgpt history` (лог последних запросов/ответов) или
  `orgpt chat` (диалоговый режим с памятью в рамках сессии) — сейчас
  каждый `getanswer` независим (без истории переписки).
