Skip to main content

CodeCanopy 🌳

PyPI version Python 3.7+ License: MIT Downloads Code style: black

Give LLMs perfect context about your codebase

CodeCanopy solves the pain of manually copying file contents for LLM conversations. Get clean directory structures and file contents in one command - optimized for pasting into ChatGPT, Claude, or any LLM.

⚡ Quick Start

pip install codecanopy
# Get project structure
codecanopy tree --focus src --ignore node_modules,dist

# Get file contents for LLM
codecanopy cat "src/**/*.js" --exclude "**/*.test.js"

🎯 Why CodeCanopy?

Before CodeCanopy:

# Manual, tedious process
tree -I node_modules
cat src/utils.js
cat src/components/Header.js  
cat src/api/users.js
# ...repeat for 20+ files

With CodeCanopy:

# One command, perfect output
codecanopy tree --focus src --ignore node_modules,dist
codecanopy cat "src/**/*.js" --exclude "**/*.test.js"

🚀 Installation

# Install via pip
pip install codecanopy

# Install via pipx (recommended)
pipx install codecanopy

# Development install
git clone https://github.com/sawradip/CodeCanopy
cd CodeCanopy
pip install -e .

🌳 Tree Command - Smart Directory Structure

Selective Depth Control

# Focus on src/, shallow everything else
codecanopy tree --focus src --depth 1

# Multiple focused directories  
codecanopy tree --focus src,lib --ignore node_modules,dist

Example Output:

project/
├── src/                    [focused]
│   ├── components/
│   │   ├── Header.js
│   │   ├── Footer.js
│   │   └── Navigation.js
│   ├── utils/
│   │   ├── api.js
│   │   └── helpers.js
│   └── index.js
├── tests/                  [depth: 1]
│   ├── unit/
│   └── integration/
├── docs/                   [depth: 1]
│   └── ...
└── package.json

Advanced Tree Options

# Show files and directories
codecanopy tree --focus src

# Custom depth and ignore patterns
codecanopy tree --depth 2 --ignore "*.log,tmp,cache"

# Analyze different directory
codecanopy tree /path/to/project --focus app,lib

📄 Cat Command - Smart File Contents

Glob Pattern Matching

# All JavaScript files
codecanopy cat "src/**/*.js"

# Multiple file types
codecanopy cat "src/**/*.{js,ts,jsx}"

# Specific files only
codecanopy cat src/index.js src/app.js config/database.js

Smart Filtering

# Exclude test files
codecanopy cat "src/**/*.js" --exclude "**/*.test.js,**/*.spec.js"

# Size limits to avoid token overflow
codecanopy cat "src/**/*.py" --max-size 50KB

# Custom headers for better LLM context
codecanopy cat "src/**/*.js" --header "// File: {path}"

Example Output:

=== src/utils/api.js ===
export const fetchUser = async (id) => {
  const response = await fetch(`/api/users/${id}`);
  return response.json();
};

=== src/components/Header.js ===
import React from 'react';

const Header = ({ title }) => {
  return <h1>{title}</h1>;
};

export default Header;

⚙️ Configuration

Create .codecanopy.json in your project root:

{
  "ignore": [
    "node_modules",
    ".git", 
    "dist",
    "build",
    ".next",
    "__pycache__"
  ],
  "default_depth": 3,
  "header_format": "=== {path} ===",
  "max_file_size": "100KB",
  "focus_dirs": ["src", "lib"]
}

🎨 Real-World Examples

Frontend React Project

# Project structure
codecanopy tree --focus src/components,src/hooks --depth 2

# Component code for LLM review
codecanopy cat "src/components/**/*.{js,jsx}" --exclude "**/*.test.*"

Backend API Project

# API structure
codecanopy tree --focus src/routes,src/models --ignore node_modules

# All API code
codecanopy cat "src/{routes,models,middleware}/**/*.js"

Python Django Project

# Project overview
codecanopy tree --focus myapp --ignore "__pycache__,migrations"

# Models and views
codecanopy cat "myapp/**/*.py" --exclude "**/tests/**"

Full Stack Project Context

# Complete project for LLM
codecanopy tree --focus src,api --ignore node_modules,dist
codecanopy cat "src/**/*.{js,ts}" "api/**/*.py" --max-size 20KB

🛠️ Advanced Usage

Debug Specific Feature

# Focus on auth module
codecanopy tree --focus src/auth
codecanopy cat "src/auth/**/*.js" "src/middleware/auth.js"

Prepare for Code Review

# Clean overview
codecanopy tree --ignore node_modules,dist,coverage

# Recent changes only (requires git)
codecanopy cat $(git diff --name-only HEAD~5 | grep -E '\.(js|py|go))

Documentation Generation

# Project structure for docs
codecanopy tree --files > STRUCTURE.md

# Code samples for documentation
codecanopy cat "examples/**/*.js" --header "### {filename}" > EXAMPLES.md

📊 Command Reference

Tree Command

codecanopy tree [PATH] [OPTIONS]

Options:
  --focus TEXT     Focus directories (full depth). Can be used multiple times.
  --ignore TEXT    Ignore directories/files. Can be used multiple times.
  --depth INTEGER  Global depth limit (default: 3)
  --no-files       Hide files, show only directories
  --config TEXT    Config file path (default: .codecanopy.json)
  --help           Show this message and exit.

Cat Command

codecanopy cat PATTERNS [OPTIONS]

Arguments:
  PATTERNS            File patterns (supports globs)

Options:
  --exclude PATTERNS  Exclude file patterns
  --header FORMAT     Header format ({path}, {filename}, {dir})
  --no-headers       Skip file headers
  --max-size SIZE    Skip files larger than size (e.g., 100KB)
  --base-path PATH   Base path for relative paths
  --config FILE      Custom config file path

💡 Pro Tips for LLM Usage

Optimal File Selection

# ✅ Focused and clean
codecanopy tree --focus src --ignore node_modules
codecanopy cat "src/**/*.js" --exclude "**/*.test.js" --max-size 20KB

# ❌ Too much noise
codecanopy tree
codecanopy cat "**/*"

Token Management

# Large codebase strategy
codecanopy tree --focus src --depth 2  # Structure overview
codecanopy cat "src/index.js" "src/app.js"  # Entry points only

# Feature-specific context
codecanopy tree --focus src/features/auth
codecanopy cat "src/features/auth/**/*.js"

Custom Headers for Context

# Better LLM understanding
codecanopy cat "src/**/*.py" --header "# File: {path}\n# Purpose: {dir}"

# Markdown-friendly output
codecanopy cat "src/**/*.js" --header "## {filename}\n\`\`\`javascript"

🔧 Integration Examples

VS Code Task

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "CodeCanopy: Full Context",
      "type": "shell",
      "command": "codecanopy tree --focus src && codecanopy cat 'src/**/*.js'",
      "group": "build"
    }
  ]
}

Git Hook (Pre-commit)

#!/bin/sh
# Generate project context for commit messages
codecanopy tree --focus src --depth 2 > .git/PROJECT_CONTEXT
codecanopy cat $(git diff --cached --name-only | head -5) >> .git/PROJECT_CONTEXT

Shell Alias

# Add to .bashrc or .zshrc
alias llm-context="codecanopy tree --focus src --ignore node_modules && codecanopy cat 'src/**/*.{js,py}' --exclude '**/*.test.*' --max-size 30KB"

🆚 Comparison

Tool Selective Depth Custom Headers LLM Optimized Pattern Matching Size Control
tree ❌ ❌ ❌ ❌ ❌
cat ❌ ❌ ❌ ❌ ❌
find + cat ❌ ⚠️ ❌ ✅ ❌
CodeCanopy ✅ ✅ ✅ ✅ ✅

🤝 Contributing

We welcome contributions! CodeCanopy is built for developers who work with LLMs daily.

# Development setup
git clone https://github.com/yourusername/codecanopy
cd codecanopy
pip install -e .

# Run tests
python test_codecanopy.py

# Format code
black codecanopy/

Feature Requests

  • 🔄 Git integration (show only changed files)
  • 📊 Token counting for different LLM models
  • 🎨 Syntax highlighting in output
  • 📦 Export to different formats (JSON, Markdown)

📝 License

MIT License - use it, modify it, ship it.


Made with ❤️ for the AI-assisted development community

Stop copying files manually. Start using CodeCanopy. 🚀

Metadata

Release files for codecanopy 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for codecanopy 0.1.1
File Size Uploaded Provenance Actions
codecanopy-0.1.1.tar.gz 15.9 kB Without provenance Details for codecanopy-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for codecanopy 0.1.1
File Interpreter ABI Platform Actions
codecanopy-0.1.1-py3-none-any.whl Python 3 none any Details for codecanopy-0.1.1-py3-none-any.whl

Total release size: 30.9 kB

Release files / codecanopy-0.1.1.tar.gz

Download URL codecanopy-0.1.1.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4aa802ca98205febd03b3b8871f7dbfee52e13c2c503703abf435194bca5e860
BLAKE2b-256 checksum
How to use checksums
32defe9fab119f16f98c84ffdaac7454ee1427868d5cb2a9f988e500fff82169
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.6

Release files / codecanopy-0.1.1-py3-none-any.whl

Download URL codecanopy-0.1.1-py3-none-any.whl
Size 14.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1fb86af6dac3e106fbaae8ec3a6e09ecac2a13daf2b9de614fe648d42455b529
BLAKE2b-256 checksum
How to use checksums
6aa3c6438bda10b3ff45542025f3065eebae54f6d84169037334fa6bb930b843
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.6

Security for codecanopy 0.1.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page