Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

dump 📄

Run Go TestsAsk DeepWiki

dumpy

A simple CLI tool that dumps text files from directories into a format that's easy for LLMs to understand. Features include directory tree visualization, URL content fetching, and flexible filtering options.

Why?

When working with LLMs, you often need to provide multiple files as context. This tool makes it super easy by:

  • Walking through directories recursively
  • Filtering out binary files and respecting .gitignore
  • Outputting text files in structured XML or Markdown formats
  • Visualizing directory structure with tree view
  • Fetching content from URLs via Exa API
  • Providing flexible filtering and pattern matching
  • Filtering by file extension with -e/--ext

demo

Installation

Option 1: Download from GitHub Releases

# Download the latest release for your platform from:# https://github.com/Kabilan108/dump/releases/latest# Example for Linux:
curl -L https://github.com/Kabilan108/dump/releases/latest/download/dump_linux_amd64 -o dump
chmod +x dump
sudo mv dump /usr/local/bin/

Option 2: Build from Source

# Using go install
go install github.com/kabilan108/dump@latest
# Or clone and build
git clone https://github.com/kabilan108/dump
cd dump
make build

Option 3: Using Nix Flake

# Install directly
nix profile install github:kabilan108/dump
# Or run without installing
nix run github:kabilan108/dump
# For development
nix develop

Usage

# Dump all text files from current directory
dump
# Dump from specific directories
dump src/ tests/ docs/
# Dump with directory flags
dump -d src/ -d tests/
# Include specific files using glob patterns
dump -g "*.go" -g "*.md"# Include specific files using extensions (case-insensitive)
dump -e go -e md
# Add ignore patterns (can use multiple times)
dump -i "*.log" -i "node_modules"# Filter out lines matching a regex pattern
dump -f "TODO|FIXME"# Include directory tree structure in output
dump -t
# List file paths only (no content)
dump -l
# Markdown output format instead of XML
dump -o md
# Custom XML tag name
dump --xml-tag source# Fetch content from URLs (requires EXA_API_KEY)
dump -u https://docs.example.com/api
# Mix local files and URLs
dump -d src/ -u https://github.com/user/repo
# Custom timeout and live crawl for URLs
dump -u https://example.com --timeout 30 --live
# Combine options
dump src/ tests/ -g "*.go" -i "vendor" -f "^//.*" -t
# Get help
dump -h

Flag Reference

FlagLong FlagDescription
-d--dirDirectory to scan (can be repeated)
-g--globGlob pattern to match files (can be repeated)
-e--extFile extension to include (repeatable). Accepts go, .go, MD, etc.
-f--filterSkip lines matching this regex
-h--helpDisplay help message
-i--ignoreGlob pattern to ignore files/dirs (can be repeated)
-l--listList file paths only (no content)
-o--out-fmtOutput format: xml or md (default "xml")
-t--treeShow directory tree structure
-u--urlURL to fetch content from via Exa API (can be repeated)
-v--versionDisplay version information
--xml-tagCustom XML tag name for wrapping content (only for xml output)
--timeoutTimeout in seconds for URL fetching (default 15)
--liveForce fresh content from URLs (livecrawl=always)
--tmuxCapture tmux panes: current/all (current window)/%<id>/<win>.<pane>/@<pane_id> (repeatable)
--tmux-linesLines of history per tmux pane (default 500; 0 = full)

Output Format

XML Format (Default)

Files are output in this format:

<filepath="relative/path/to/file">
content of the file goes here
multiple lines are preserved
</file>

URLs are output as:

<fileurl="https://example.com">
fetched content goes here
</file>

Markdown Format

When using -o md, files are output as code blocks:

```relative/path/to/filecontent of the file goes heremultiple lines are preserved```

URLs are output as:

```https://example.comfetched content goes here```

Tree Mode

When using -t, shows directory structure:

.
├── src/
│ ├── main.go
│ └── utils/
│ └── helper.go
└── README.md

List Mode

When using -l, shows only file paths:

src/main.go
src/utils/helper.go
README.md

URL Fetching

The tool can fetch content from URLs using the Exa API:

# Set your Exa API keyexport EXA_API_KEY="your-api-key"# Fetch content from URLs
dump -u https://docs.example.com/api -u https://github.com/user/repo
# Combine with local files
dump -d src/ -u https://example.com/docs
# Use live crawl for fresh content
dump -u https://example.com --live
# Custom timeout
dump -u https://example.com --timeout 30

Tmux Panes

Dump tmux panes alongside files and URLs.

# Current pane
dump --tmux current
# Specific panes (by id and by window.pane)
dump --tmux %1 --tmux 0.1
# All panes in current window with full history
dump --tmux all --tmux-lines 0
# Limit history lines (default 500)
dump --tmux current --tmux-lines 200

Markdown output for tmux panes is formatted as:

```shell# tmux-pane: id='%1' session='mysess' window='0' pane='1'<pane content>```

XML output for tmux panes uses a fixed tag:

<tmux_paneid='%1'session='mysess'window='0'pane='1'>
<pane content>
</tmux_pane>

URL Requirements

  • EXA_API_KEY environment variable must be set
  • URLs are processed after local file processing
  • Default timeout is 15 seconds (configurable with --timeout)
  • Use --live flag to force fresh content retrieval

Examples

Basic Usage

# Dump current directory
dump
# Dump specific directories with tree view
dump -t -d src/ -d docs/
# Only Go files, ignore vendor, show tree
dump -g "*.go" -i "vendor" -t

Advanced Filtering

# Skip comment lines and show only file paths
dump -f "^\s*//" -l
# Markdown output with custom patterns
dump -o md -g "*.md" -g "*.txt" -i "node_modules"# Combine globs and extensions (OR semantics)# Includes files that match any glob OR any listed extension
dump -g "**/*.test.js" -e go -e md

Fetching URLs

# Mix local and remote content
dump -d src/ -u https://raw.githubusercontent.com/user/repo/main/README.md
# Multiple URLs with custom timeout
dump -u https://example.com/api -u https://docs.example.com --timeout 30

License

MIT

About

a cli for dumping your code into an llm-ready format

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages