PS Banshee
PS Banshee is a command-line interface (CLI) tool designed to provide quick and efficient access to Recorded Future Intelligence. Built for security professionals, PS Banshee helps streamline investigations and automate common security operations tasks.
Key Features
- E-mail (EML) enrichment
- IOC lookup and search
- Packet capture (pcap) enrichment
- Recorded Future Alert search, lookup, update and export
- Recorded Future Detection Rules (YARA, Snort, Sigma) search and download
- Recorded Future Entity search and lookup
- Recorded Future List & Watch List management
- Recorded Future Playbook Alert search, lookup, update and export
- Recorded Future Risk List download, and creation
- Recorded Future Sandbox file and URL submission for malware analysis
Installation
PS Banshee is available on PyPI and can be installed using pip or pipx.
Note: PS Banshee requires Python 3.10 or later (up to 3.13).
Recommended: pipx (isolated environment)
To install globally, run:
pipx install ps-banshee
Note: If you don't have pipx installed, see the installation guide.
Alternative: pip (current environment)
To install in the current environment, run:
pip install ps-banshee
Dependencies
pipx will automatically resolve all Python dependencies.
If you want to use the pcap command, you will also need:
- tshark 3.0.0 or later
Command Auto Completion
After installing PS Banshee, you can enable command auto completion:
banshee --install-completion
Restart your shell to complete the installation. You can now use TAB to auto-complete commands.
Usage
To see the list of available commands, run:
banshee -h
Authorization
PS Banshee reads your Recorded Future API key from the RF_TOKEN environment variable (recommended) or from the -k / --api-key flag on each command.
Option 1: Set RF_TOKEN (recommended)
macOS / Linux
Current shell only:
export RF_TOKEN=<your_api_key>
Persist for future shells (zsh — adjust to ~/.bashrc for bash). Open a new shell after running this (or run source ~/.zshrc to apply in the current shell):
echo 'export RF_TOKEN=<your_api_key>' >> ~/.zshrc
Windows (PowerShell)
Current session only:
$env:RF_TOKEN = '<your_api_key>'
Persist for future sessions (open a new PowerShell after running this):
setx RF_TOKEN <your_api_key>
Windows (Command Prompt)
Current session only:
set RF_TOKEN=<your_api_key>
Persist for future sessions (open a new Command Prompt after running this):
setx RF_TOKEN <your_api_key>
Option 2: Pass with -k per command
banshee -k <your_api_key> <command> <sub-command> <arguments>
This works on any platform, but is more verbose and the key may land in shell history.
Sandbox authorization
To use the sandbox commands, PS Banshee also needs a Recorded Future Sandbox API token from the RF_SANDBOX_TOKEN environment variable (recommended) or from the -K / --sandbox-key flag.
macOS / Linux
export RF_SANDBOX_TOKEN=<your_sandbox_api_key>
Windows (PowerShell)
$env:RF_SANDBOX_TOKEN = '<your_sandbox_api_key>'
Optionally set the region with RF_SANDBOX_CHOICE (eu, usa, apj, public, private; defaults to eu):
export RF_SANDBOX_CHOICE=usa
Proxies
If you are behind a proxy, set the HTTP_PROXY and HTTPS_PROXY environment variables.
To disable SSL verification, use the -s flag:
banshee -s ca rules
Command Help
All commands support the --help (-h) option:
banshee -h
banshee ca --help
banshee ioc lookup --help
banshee list bulk-add -h
Editing documentation
The docs live under docs/en/ (English source of truth), docs/ja/, and
docs/ko/. To preview or build locally:
uv sync --group docs --no-default-groups
uv run python scripts/docs.py dev # prod-like: all languages + rebuild on save
uv run python scripts/docs.py build-all # one-shot build (used by CI)
dev mounts site/ under the same URL subpath as production (derived from
site_url — currently /ps-banshee/), so all three languages resolve at
/ps-banshee/, /ps-banshee/ja/, /ps-banshee/ko/ and the language switcher
points at real pages. Edits under docs/ trigger a per-language rebuild
(~0.5s); refresh the browser to see changes.
If you edit an English page, the CI drift check will fail until every non-English counterpart is regenerated. To see what's drifted before translating:
uv run python scripts/docs.py check-translations --lang ja # one language
uv run python scripts/docs.py check-translations --all # every non-en language (what CI runs)
Run the LLM translator locally with your own API key — CI never calls an LLM:
export ANTHROPIC_API_KEY=<your-key>
uv sync --group translations
uv run python scripts/docs.py translate --lang ja --all
Files are translated in parallel (5 at a time by default; tune with
--concurrency N if you hit rate limits). Failures are reported at the
end so one bad file doesn't stop the rest — re-run the same command to
retry just the failed set.
Then commit the regenerated files.
Adding a new language
Language codes must match one of the locales supported by mkdocs-material — see
the list here.
Using an unsupported code (e.g. we for Welsh instead of cy) fails the build
with TemplateNotFound: 'partials/languages/<code>.html'.
Pass --name "<Native Name>" on the first translate run for a new code and the
tool will register it automatically in both scripts/languages.json and the
extra.alternate block of docs/mkdocs.yml:
uv run python scripts/docs.py translate --lang fr --name "Français" --all
This produces docs/fr/ (translated pages) and docs/fr/_nav.yml (translated
sidebar labels). Commit the new directory alongside the auto-edits to
scripts/languages.json and docs/mkdocs.yml. On subsequent runs --name is
not needed.
Support
Submit a support request for help alternatively reach out to support@recordedfuture.com.
PS Banshee is developed and maintained by the Recorded Future Professional Services Cyber Security Engineers 🚀
Release files for ps-banshee 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ps_banshee-1.5.0.tar.gz | 87.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ps_banshee-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 246.5 kB
Release files / ps_banshee-1.5.0.tar.gz
| Download URL | ps_banshee-1.5.0.tar.gz |
|---|---|
| Size | 87.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe0d33c609e0af8ed95f4534417edcb7e0879c6eec029d0b7fac0e3bdb9305fb
|
|
BLAKE2b-256 checksum How to use checksums |
d8461ac136b67acbc63bea37cfa7339e7073edbdb4682938f4fc92aa43d3dd17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency logRelease files / ps_banshee-1.5.0-py3-none-any.whl
| Download URL | ps_banshee-1.5.0-py3-none-any.whl |
|---|---|
| Size | 159.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
125cbd1fdd5c9dd3d106ef54f8c32cb92e8f8ebb13f7259bcc851c694cb2a8dc
|
|
BLAKE2b-256 checksum How to use checksums |
65f94467a9a69a6b275fbd01ac314dbc8f70ef4cbb4a6edc309c2cac508ea393
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency log