Metadata-Version: 2.4
Name: lokindi-cli
Version: 0.1.0
Summary: Lokindi command-line client — run every Lokindi service from your terminal.
Author: Lokindi
License: Proprietary
Project-URL: Homepage, https://lokindi.com
Keywords: lokindi,encryption,steganography,cli
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: typer<1.0,>=0.12
Requires-Dist: httpx<1.0,>=0.27
Requires-Dist: rich>=13.0
Requires-Dist: keyring>=24.0
Requires-Dist: tomli>=2.0; python_version < "3.11"
Requires-Dist: tomli-w>=1.0
Provides-Extra: yaml
Requires-Dist: PyYAML>=6.0; extra == "yaml"
Provides-Extra: qr
Requires-Dist: qrcode>=7.0; extra == "qr"

# Lokindi CLI

Run every Lokindi service — standard & custom encryption, semantic
encoding, steganography, Auralith image→audio, storage — straight from
your terminal (cmd / PowerShell / macOS Terminal / Linux shell).

```bash
pip install lokindi-cli      # or: pipx install lokindi-cli
lokindi login                # then pick a service by number, or:
lokindi --help               # commands are built from the server manifest
lokindi encrypt standard --content "hello" --package <code> --network <code>
lokindi encrypt file --in ./secret.pdf --package <code> --network <code>
lokindi usage quota
```

After `lokindi login` you get an interactive menu of the services your
account unlocks: pick a number (e.g. **Encryption**), then choose **Text**
or **File**. Text input is capped at the platform's per-message character
limit (enforced before the request is sent); files are uploaded and
encrypted server-side. The same flow is available any time via
`lokindi services`.

## Architecture (thin client)

The CLI runs **no** cryptography locally. It authenticates, fetches a
per-account **command manifest** from `GET /api/v1/cli/manifest/`, and
builds its commands dynamically from that manifest. Every command maps
to a REST endpoint on the Lokindi API; the server stays the single
source of truth for behaviour, limits, and billing.

- **Auth:** JWT Bearer; tokens stored in the OS keyring (Windows
  Credential Manager / macOS Keychain / Linux Secret Service).
- **Config:** `~/.lokindi/config.toml` (profiles, API base URL).
- **Manifest cache:** `~/.lokindi/manifest.json` + ETag, so `--help`
  works offline and revalidates cheaply (`If-None-Match` → 304).

Static commands (`login`, `logout`, `whoami`, `version`, `config`) are
built in; only service commands come from the manifest.

## Development

- Layout & internals: see [ARCHITECTURE.md](ARCHITECTURE.md).
- Editable install: `pip install -e .` (installs `lokindi` and
  `lokindi-admin`).
- Debugging a missing-commands `--help`: set `LOKINDI_DEBUG=1` to see why
  the dynamic manifest didn't load (offline / not logged in).
- Switch environments: `lokindi config set-url <url> --profile dev` then
  `lokindi --profile dev …` (tokens are stored per profile).
