Skip to content

dartmew/pilepack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PilePack

Python Version License PyPI version Tests Coverage CLI

Pack your codebase into a single file for AI analysis
Combine all your project files into one file — perfect for sending to LLMs (ChatGPT, Claude, Copilot, Deepseek, etc.).


Why pilepack?

  • 🪶 Only 1 dependency – runs anywhere Python 3.8+ is available.
  • Streaming engine – packs huge codebases without eating RAM.
  • 🔐 Secrets masking built-in – no more leaked tokens in LLM chats.
  • 📂 Full directory tree + file contents in one clean text/markdown.
  • 🧪 Tested, typed, actively maintained.

✨ Features

  • 📁 Recursive scanning – walks through all files in a directory.
  • 💾 Streaming output – minimal memory usage even on huge codebases.
  • 🚫 Respects .gitignore – optionally disable with --no-gitignore.
  • 🔗 Skips symlinks by default – opt in with --follow-symlinks.
  • 🌳 Tree structure – displays project hierarchy.
  • 📄 Embedded content – each file is shown with its path header.
  • 🔐 Secrets masking – hides passwords, tokens, keys (--mask-secrets).
  • 🖨️ Two output formats – plain text (txt) or Markdown (md).
  • 💾 Save to file – use -o output.txt.

📦 Installation

pip install pilepack

From source:

git clone https://github.com/dartmew/pilepack.git
cd pilepack
pip install -e .

🚀 Usage

Basic command – pass a path to your project:

pilepack /path/to/your/project

Redirect output to a file:

pilepack . > report.txt

Example output (txt)

myproject
├── main.py
├── utils/
│   ├── helpers.py
│   └── __init__.py
└── README.md

================================================================================

--- FILE: main.py ---
import utils.helpers

def main():
    print("Hello")

--- FILE: utils/helpers.py ---
def greet(name):
    return f"Hi {name}"

Markdown format

pilepack . -f md -o report.md

Produces a Markdown file with syntax highlighting.

Show only structure (no file contents)

pilepack . --no-content

Mask secrets

pilepack . --mask-secrets

Replaces values of password=, api_key=, token=, and long strings (base64/hex) with ***.

Disable .gitignore

pilepack . --no-gitignore

Follow symbolic links explicitly

pilepack . --follow-symlinks

📋 CLI Options

Option Description
root Directory to scan (default: current directory)
--no-content Show tree structure only, skip file contents
--mask-secrets Mask passwords, tokens, API keys
-o, --output Write report to a file instead of stdout
--no-gitignore Do not respect .gitignore (include all files)
--follow-symlinks Follow symbolic links during scanning
-f, --format Output format: txt (default) or md

🧪 Testing

Install test dependencies and run:

pip install -e .[test]
pytest

With coverage:

pytest --cov=pilepack

Current coverage: 84% (20 tests, all passing).

Name                    Stmts   Miss  Cover
-------------------------------------------
pilepack\__init__.py        0      0   100%
pilepack\__main__.py        3      3     0%
pilepack\cli.py            53      5    91%
pilepack\collector.py      32      2    94%
pilepack\formatter.py      39      2    95%
pilepack\ignorer.py        21      3    86%
pilepack\reader.py         31     12    61%
-------------------------------------------
TOTAL                     179     27    85%

📄 License

MIT © 2026 Vasili S. Pribylov

🤝 Contributing

Issues and pull requests are welcome! For major changes, please open an issue first to discuss.

💬 Support

Feel free to open an issue for bugs, questions, or suggestions. I'll try to respond within a few days.

This project is actively maintained (as of 2026).

🙏 Acknowledgements

Inspired by the need to easily feed code into large language models.

About

Pack your codebase into a single file for AI analysis

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages