Contributing to Keen
First off, thank you for considering contributing to Keen! It's people like you who make open-source security tools powerful, reliable, and accessible for the community.
Whether you're fixing a bug, adding a new intelligence module, improving documentation, or suggesting a feature, all contributions are highly appreciated.
How Can I Contribute?
Reporting Bugs
If you encounter unexpected behavior, crashes, or parsing errors while running Keen, please open an issue on GitHub. Include:
- Your operating system and Python version.
- The exact command or module you were running.
- A full traceback / error log if available.
- Steps to reproduce the issue.
Suggesting Enhancements & Features
Have an idea for a new third-party integration, UI feature, or reconnaissance technique? Open a feature request issue explaining:
- The goal of the feature.
- How it enhances the investigation workflow.
- Any relevant API documentation or third-party services involved.
Developing New Modules
The framework is built to be highly extensible. If you want to build a new OSINT module (e.g., adding Shodan, Censys, or custom scrapers), check out our dedicated guide:
Improving Documentation
Great documentation is crucial. If you spot typos, missing instructions, or unclear explanations in our MkDocs site, feel free to submit a pull request updating the Markdown files under the docs/ directory.
Local Development Setup
To set up Keen for local development:
-
Fork and clone the repository:
git clone https://github.com/samuel-s-marques/keen-py.git cd keen-py -
Create and activate a virtual environment:
# On Linux / macOS python3 -m venv venv source venv/bin/activate # On Windows python -m venv venv venv\Scripts\activate -
Install project dependencies:
pip install -r requirements.txt -
Verify your setup by starting the interactive shell:
python keen.py --debug
Pull Request Process
When you are ready to submit your changes, follow these standard guidelines:
- Branch cleanly: Create a descriptive branch from
main(e.g.,feature/add-shodan-module,bugfix/whois-parser-crash). - Adhere to Code Style: Ensure your Python code follows PEP 8 conventions. We recommend using standard linters and formatters like
blackandflake8. - Keep Commits Atomic: Write clear, concise commit messages explaining what was changed and why.
- Open a Pull Request: Describe your PR thoroughly on GitHub. Mention any issues it resolves (e.g.,
Fixes #12). - Code Review: Maintainers will review your PR, suggest any necessary adjustments, and merge it once approved!