codexray
Understand a Python codebase in seconds.
codexray answers the questions you actually have when you open a project
you've never seen before: What is this? Where does execution start? How do
the parts connect? Is anything broken?
Note on names: the PyPI package is
hush-codexray, but the command you run iscodexray. This is common — the package name on PyPI is sometimes different from the command it provides.
Install
pip install hush-codexray
Usage
codexray # default: files, lines, largest files
codexray --entrypoints # where execution starts
codexray --deps # internal import graph + external packages
codexray --unused # files nothing imports (dead code candidates)
codexray --tests # test files and framework
codexray --onboard # guided reading order for newcomers
codexray --json # machine-readable output of everything
codexray --explain # AI summary (requires GROQ_API_KEY)
All commands take an optional folder argument. Default is the current directory.
codexray /path/to/project --entrypoints
Example
$ codexray . --onboard
Onboarding guide for .:
1. Start with the README
README.md
2. Understand the shape
pyproject.toml — dependencies, entry points, config
3. Read the core modules (most imported)
src/codexray/scanner.py 73 lines, imported by 1
src/codexray/analyzer.py 69 lines, imported by 1
src/codexray/entrypoints.py 74 lines, imported by 1
4. Follow execution from the entry points
[script] codexray -> codexray.cli:main
[__main__] src/codexray/cli.py
5. Verify your understanding
Run tests: pytest
Test files: 0
Skip for now: __init__.py, conftest.py, generated files
Why
Most developers spend 80% of their time reading code, not writing it.
codexray makes that reading faster — whether you're joining a new team,
returning to an old project, or reviewing code an AI just generated.
Features
| Flag | What it does |
|---|---|
| (none) | Count files, lines, bytes; show largest files |
--entrypoints |
Find where execution starts (main blocks, console scripts, __main__.py) |
--deps |
Build the internal import graph and list external packages |
--unused |
Find files that nothing else imports (dead code candidates) |
--tests |
Detect test files and framework (pytest, unittest) |
--onboard |
Produce a guided reading order for someone new |
--json |
Dump everything as machine-readable JSON |
--explain |
AI summary of the codebase (optional, requires an API key) |
AI mode (optional)
The --explain flag sends the largest files to an LLM and returns a
plain-English summary. Uses Groq by default. Set your key:
export GROQ_API_KEY="gsk_..."
Override the model with CODEXRAY_MODEL (default: openai/gpt-oss-120b).
Everything else runs offline and free — no network, no API key, no cost.
Requirements
- Python 3.9+
openai(for--explainonly)
License
MIT
Release files for hush-codexray 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hush_codexray-0.1.2.tar.gz | 10.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hush_codexray-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.0 kB
Release files / hush_codexray-0.1.2.tar.gz
| Download URL | hush_codexray-0.1.2.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb3f2034bf7a42c63a11a13030a8df547aa79af121f0157f5e767a6f67fc6f11
|
|
BLAKE2b-256 checksum How to use checksums |
a68ec05fedab53df8a630246dcb035ce609608d921e168ab410830b882db430d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|
Release files / hush_codexray-0.1.2-py3-none-any.whl
| Download URL | hush_codexray-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc89897b685e43364206f357a6e2546de3200265af93b1b0a1306daee0c74639
|
|
BLAKE2b-256 checksum How to use checksums |
ec415b833786253e79dbf8ffdd99b0da05a8e8857673e7152105b98e5c1e8364
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|