aweconfig: The dumb vault for shell keys
One 0600 env file. One source line. No more secrets in ~/.zshrc.
English · 简体中文
One 0600 env file. One source line. No more secrets in ~/.zshrc.
aweconfig keeps every API key your tools read from the environment in one file, ~/.config/awe/keys.env, and gives you a tiny editor for it. The file is a plain shell file any POSIX shell can source — the CLI is only a safe editor on top, never a runtime dependency. If the CLI disappears, your shell still loads the keys.
What it deliberately does not do: switch agent profiles (that is aweswitch), route model traffic (that is awerouter), or hold OAuth login tokens (those stay in each tool's own config). It is just the vault those tools read keys from — awerouter's ${VAR} provider references resolve straight from the environment this file feeds.
Install
pip install git+https://github.com/wehuman01/aweconfig.git
Quick Start
aweconfig init # create ~/.config/awe/keys.env (mode 0600)
aweconfig set DEEPSEEK_AUTH_TOKEN # prompts hidden; never touches shell history
aweconfig list # names only, no values
aweconfig show DEEPSEEK_AUTH_TOKEN
Then add one line to ~/.zshrc (init prints it for you):
[ -f "$HOME/.config/awe/keys.env" ] && source "$HOME/.config/awe/keys.env"
To move existing secrets out of ~/.zshrc in one go:
aweconfig import-zshrc --dry-run # shows what would move and what would stay
aweconfig import-zshrc # moves them, backs up ~/.zshrc first
The file
# aweconfig vault - plain shell env file; keep mode 0600 and never commit it.
## Anthropic
export GLM_ANTHROPIC_AUTH_TOKEN='...'
## Openai
export OPENAI_AUTH_TOKEN='...'
- Path:
~/.config/awe/keys.env, overridable with$AWECONFIG_FILE. - Format:
export NAME='value'lines plus free-form comments. Edit by hand if you like;aweconfig editopens$EDITOR. - Every CLI write is atomic (temp file + rename) and re-asserts mode 0600.
Commands
aweconfig init # create the vault file (0600) if missing
aweconfig set NAME [--value V|--stdin]
aweconfig list # key names, one per line
aweconfig show NAME [--raw]
aweconfig rm NAME
aweconfig edit # open the vault in $EDITOR
aweconfig path # print the vault file path
aweconfig import-zshrc [--file RC] [--dry-run] [--yes] [--name NAME]
import-zshrc moves a paragraph only when every export in it looks like a secret (name contains TOKEN, KEY, or SECRET); mixed paragraphs stay put and --name forces one through. Names already in the vault are skipped, never overwritten.
Development
uv venv && uv pip install --python .venv/bin/python -e ".[dev]"
./verify # pytest + ruff, same as CI
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aweconfig-0.1.0.tar.gz.
File metadata
- Download URL: aweconfig-0.1.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c68e22be6add66bab001813bc28ab3d0a46ed5fa3dd528989f316b63f593b51
|
|
| MD5 |
28af14f48f7ac9854a717256a43d3c60
|
|
| BLAKE2b-256 |
77687e5c635fd848ef61954d32f1d623ef327f81f6dae3d2bc1fae25ed115824
|
File details
Details for the file aweconfig-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aweconfig-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea39c595100f76291815e418dee96fc6f71d4e6e95c12492ae492c3294cb8287
|
|
| MD5 |
b61477ce5318146b87ce1a24cebd39bb
|
|
| BLAKE2b-256 |
2f799568f8bf783fa8439d766554c34ad7f7acf598c2c178e4b59b9956ddf163
|