Skip to main content

Pack your codebase into a single file for AI analysis

Project description

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 text file — perfect for sending to LLMs (ChatGPT, Claude, Copilot, Deepseek, etc.).


✨ 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pilepack-0.2.2.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pilepack-0.2.2-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file pilepack-0.2.2.tar.gz.

File metadata

  • Download URL: pilepack-0.2.2.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pilepack-0.2.2.tar.gz
Algorithm Hash digest
SHA256 b84459b826d598e6cfcc2cbaee6b51192ad3dec5d260efdd4f90772685bf1fdd
MD5 f07d217df9dc896f6c76563c91661370
BLAKE2b-256 7136ccc50f226e794345c8cdbe31420c3bd7d6ce085f8d52923a624775093f04

See more details on using hashes here.

Provenance

The following attestation bundles were made for pilepack-0.2.2.tar.gz:

Publisher: publish.yml on dartmew/pilepack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pilepack-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: pilepack-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pilepack-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c9c729e900a4bc535e92c6b4b8cc740972a32b5494027cf8dcabbeda5d0c0ae5
MD5 89f723ff5ce5096d8d6c0ecfca54d65a
BLAKE2b-256 357d627c597dd31544c7160c219366fbc7b6562e5f3e67f6d94402e4493cdd62

See more details on using hashes here.

Provenance

The following attestation bundles were made for pilepack-0.2.2-py3-none-any.whl:

Publisher: publish.yml on dartmew/pilepack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page