Metadata-Version: 2.4
Name: keyabra
Version: 0.1.1
Summary: Securely prompt for API tokens and run CLI commands — no notepad copy-paste dance
Project-URL: Homepage, https://github.com/librarynth2/keyabra
Author: Everplay-Tech LLC
License-Expression: LicenseRef-Proprietary
License-File: LICENSE
Keywords: cli,credentials,keyabra,noldorian,pypi,secret,token,twine
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# keyabra

Proprietary — Copyright © 2026 Everplay-Tech LLC. See [LICENSE](LICENSE).

Prompt for API tokens **once**, run the command — no export/copy/delete/notepad loop.

**Noldorian** tier (pip operator tools — not `snx` spells). Sibling: **binabra** (`abra`).

## Install

```bash
pip install keyabra
```

If `keyabra` is not found, pip may have installed it outside your PATH. Either:

```bash
# macOS — add pip's script dir (once, in ~/.zshrc)
export PATH="$HOME/Library/Python/3.9/bin:$HOME/.local/bin:$PATH"
```

Or run without PATH setup:

```bash
python3 -m keyabra pypi publish
```

Also need `twine` and `build` for PyPI uploads:

```bash
pip install build twine
```

## Publish binabra (or any project)

```bash
cd ~/Projects/binabra
keyabra pypi publish
```

That will:
1. Run `python -m build` if `dist/` is empty
2. Prompt: `PyPI token (pypi-...):` (hidden input)
3. Run `twine upload` — token never hits disk or your shell history

## Other commands

```bash
keyabra pypi upload dist/*
keyabra pypi publish ~/Projects/binabra --skip-build

# Generic — any secret env var + any command
keyabra run --env GITHUB_TOKEN -- gh auth status
keyabra run --env TWINE_PASSWORD --env TWINE_USERNAME -- twine upload dist/*
```

## Publish keyabra itself

First upload needs an account-scoped PyPI token: https://pypi.org/manage/account/token/

```bash
cd ~/Projects/keyabra
python3 -m pip install --user build twine
python3 -m build
keyabra pypi publish --skip-build   # after build, uses prompted token
```

## Security

- Uses `getpass` — token is not echoed
- Token lives only in process memory for the subprocess
- Never written to files or shell history
