kraven
Manage named environment variable profiles.
Installation
Usage
# List available profiles
# Create or edit a profile
# Activate a profile (spawns a subshell with env vars)
# Show the currently active profile
# Display profile contents
# Display profile contents with masked values
# Show how to exit the current kraven session
# Remove a profile
# Encrypt a profile with GPG
# Decrypt an encrypted profile
# Show shell completion setup instructions
Shell Completions
Enable tab completion by adding the appropriate line to your shell config:
# Bash (~/.bashrc)
# Zsh (~/.zshrc)
# Fish (~/.config/fish/config.fish)
COMPLETE=fish |
Then restart your shell or source the config file.
Customizing Your Shell Prompt
When a profile is active, Kraven sets the KRAVEN_ACTIVE environment variable to the profile name. You can use this to display the active profile in your shell prompt.
Zsh
Add this to your ~/.zshrc:
PROMPT='${kraven_info}%~ %# '
Bash
Add this to your ~/.bashrc:
PROMPT_COMMAND=set_prompt
Fish
Add this to your ~/.config/fish/config.fish or create ~/.config/fish/functions/fish_prompt.fish:
function fish_prompt
if set -q KRAVEN_ACTIVE
echo -n "[$KRAVEN_ACTIVE] "
end
echo -n (prompt_pwd) '> '
end
GPG Encryption
Profiles containing sensitive credentials can be encrypted with GPG. This requires GPG to be installed and a default key to be configured.
# Encrypt an existing profile (uses your default GPG key)
# Decrypt it back to plain text
Encrypted profiles are stored as <name>.gpg files alongside plain profiles. All commands (activate, show, edit, remove, list) work transparently with encrypted profiles — decryption happens automatically when needed. You can refer to a profile by either its base name or with the .gpg suffix:
# These are equivalent
For editing encrypted profiles, your editor must handle GPG natively (e.g., Vim with the gnupg.vim plugin).
kraven list shows an (encrypted) indicator next to encrypted profiles.
Profile Format
Profiles are stored as plain text files in ~/.config/kraven/ using the standard dotenv format:
KEY=value
ANOTHER_KEY=another_value
# Comments start with #
QUOTED="value with spaces"
SINGLE_QUOTED='literal $value without expansion'
# Double-quoted values support escape sequences
ESCAPED="line1\nline2\ttabbed"
Supported escape sequences in double-quoted values: \", \\, \n, \t
License
GPL-3.0