Repomix
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
š¦ Repomix is a powerful tool that packs your entire repository into a single, AI-friendly file.
It is perfect for when you need to feed your codebase to Large Language Models (LLMs) or other AI tools like Claude,
ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.
š New: Repomix Website & Discord Community!
- Try Repomix in your browser at repomix.com
- Join our Discord Server for support and discussion
We look forward to seeing you there!
š Features
- AI-Optimized: Formats your codebase in a way that's easy for AI to understand and process.
- Token Counting: Provides token counts for each file and the entire repository, useful for LLM context limits.
- Simple to Use: You need just one command to pack your entire repository.
- Customizable: Easily configure what to include or exclude.
- Git-Aware: Automatically respects your
.gitignore
files and.git/info/exclude
. - Security-Focused: Incorporates Secretlint for robust security checks to detect and prevent inclusion of sensitive information.
- Code Compression: The
--compress
option uses Tree-sitter to extract key code elements, reducing token count while preserving structure.
š Quick Start
Using the CLI Tool >_
You can try Repomix instantly in your project directory without installation:
Or install globally for repeated use:
That's it! Repomix will generate a repomix-output.xml
file in your current directory, containing your entire
repository in an AI-friendly format.
You can then send this file to an AI assistant with a prompt like:
When you propose specific changes, the AI might be able to generate code accordingly. With features like Claude's Artifacts, you could potentially output multiple files, allowing for the generation of multiple interdependent pieces of code.
Happy coding! š
Using The Website š
Want to try it quickly? Visit the official website at repomix.com. Simply enter your repository name, fill in any optional details, and click the Pack button to see your generated output.
Available Options
The website offers several convenient features:
- Customizable output format (XML, Markdown, or Plain Text)
- Instant token count estimation
- Much more!
Using The VSCode Extension ā”ļø
A community-maintained VSCode extension lets you run Repomix right inside your editor with just a few clicks. Run it on any folder, manage outputs seamlessly, and control everything through VSCode's intuitive interface.
Want your output as a file or just the content? Need automatic cleanup? This extension has you covered. Plus, it works smoothly with your existing repomix.config.json.
Try it now on the VSCode Marketplace! Source code is available on GitHub.
Alternative Tools š ļø
If you're using Python, you might want to check out Gitingest
, which is better suited for Python ecosystem and data
science workflows:
https://github.com/cyclotruc/gitingest
š Usage
To pack your entire repository:
To pack a specific directory:
To pack specific files or directories using glob patterns:
To exclude specific files or directories:
To pack a remote repository:
To compress the output:
To initialize a new configuration file (repomix.config.json
):
Once you have generated the packed file, you can use it with Generative AI tools like ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more.
Docker Usage š³
You can also run Repomix using Docker.
This is useful if you want to run Repomix in an isolated environment or prefer using containers.
Basic usage (current directory):
To pack a specific directory:
Process a remote repository and output to a output
directory:
Prompt Examples
Once you have generated the packed file with Repomix, you can use it with AI tools like ChatGPT, DeepSeek, Perplexity, Gemini, Gemma, Llama, Grok, and more. Here are some example prompts to get you started:
Code Review and Refactoring
For a comprehensive code review and refactoring suggestions:
Documentation Generation
To generate project documentation:
Test Case Generation
For generating test cases:
Code Quality Assessment
Evaluate code quality and adherence to best practices:
Library Overview
Get a high-level understanding of the library
Feel free to modify these prompts based on your specific needs and the capabilities of the AI tool you're using.
Community Discussion
Check out our community discussion where users share:
- Which AI tools they're using with Repomix
- Effective prompts they've discovered
- How Repomix has helped them
- Tips and tricks for getting the most out of AI code analysis
Feel free to join the discussion and share your own experiences! Your insights could help others make better use of Repomix.
Output File Format
Repomix generates a single file with clear separators between different parts of your codebase.
To enhance AI comprehension, the output file begins with an AI-oriented explanation, making it easier for AI models to
understand the context and structure of the packed repository.
XML Format (default)
The XML format structures the content in a hierarchical manner:
For those interested in the potential of XML tags in AI contexts:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags
When your prompts involve multiple components like context, instructions, and examples, XML tags can be a game-changer. They help Claude parse your prompts more accurately, leading to higher-quality outputs.
This means that the XML output from Repomix is not just a different format, but potentially a more effective way to feed your codebase into AI systems for analysis, code review, or other tasks.
Markdown Format
To generate output in Markdown format, use the --style markdown
option:
The Markdown format structures the content in a hierarchical manner:
This format provides a clean, readable structure that is both human-friendly and easily parseable by AI systems.
Plain Text Format
To generate output in plain text format, use the --style plain
option:
Command Line Options
Basic Options
-v, --version
: Show tool version
Output Options
-o, --output <file>
: Specify the output file name--style <style>
: Specify the output style (xml
,markdown
,plain
)--parsable-style
: Enable parsable output based on the chosen style schema. Note that this can increase token count.--compress
: Perform intelligent code extraction, focusing on essential function and class signatures to reduce token count--output-show-line-numbers
: Show line numbers in the output--copy
: Additionally copy generated output to system clipboard--no-file-summary
: Disable file summary section output--no-directory-structure
: Disable directory structure section output--remove-comments
: Remove comments from supported file types--remove-empty-lines
: Remove empty lines from the output--header-text <text>
: Custom text to include in the file header--instruction-file-path <path>
: Path to a file containing detailed custom instructions--include-empty-directories
: Include empty directories in the output--no-git-sort-by-changes
: Disable sorting files by git change count (enabled by default)
Filter Options
--include <patterns>
: List of include patterns (comma-separated)-i, --ignore <patterns>
: Additional ignore patterns (comma-separated)--no-gitignore
: Disable .gitignore file usage--no-default-patterns
: Disable default patterns
Remote Repository Options
--remote <url>
: Process a remote Git repository--remote-branch <name>
: Specify the remote branch name, tag, or commit hash (defaults to repository default branch)
Configuration Options
-c, --config <path>
: Path to a custom config file--init
: Create config file--global
: Use global config
Security Options
--no-security-check
: Disable security check
Token Count Options
--token-count-encoding <encoding>
: Specify token count encoding (e.g.,o200k_base
,cl100k_base
)
MCP
--mcp
: Run as a MCP (Model Context Protocol) server
Other Options
--top-files-len <number>
: Number of top files to display in the summary--verbose
: Enable verbose logging--quiet
: Disable all output to stdout
Examples:
Updating Repomix
To update a globally installed Repomix:
Using npx repomix
is generally more convenient as it always uses the latest version.
Remote Repository Processing
Repomix supports processing remote Git repositories without the need for manual cloning. This feature allows you to quickly analyze any public Git repository with a single command.
To process a remote repository, use the --remote
option followed by the repository URL:
You can also use GitHub's shorthand format:
You can specify the branch name, tag, or commit hash:
Or use a specific commit hash:
Code Compression
The --compress
option utilizes Tree-sitter to perform intelligent code extraction, focusing on essential function and class signatures while removing implementation details. This can help reduce token count while retaining important structural information.
For example, this code:
Will be compressed to:
Note
This is an experimental feature that we'll be actively improving based on user feedback and real-world usage
MCP Integration
Repomix supports the Model Context Protocol (MCP), allowing AI assistants to directly interact with your codebase. When run as an MCP server, Repomix provides tools that enable AI assistants to package local or remote repositories for analysis without requiring manual file preparation.
Available MCP Tools
When running as an MCP server, Repomix provides the following tools:
- pack_codebase: Package a local code directory into a consolidated file for AI analysis
- Parameters:
directory
: Absolute path to the directory to packcompress
: (Optional, default: true) Whether to perform intelligent code extractionincludePatterns
: (Optional) Comma-separated list of include patternsignorePatterns
: (Optional) Comma-separated list of ignore patterns
- pack_remote_repository: Fetch, clone and package a GitHub repository
- Parameters:
remote
: GitHub repository URL or user/repo format (e.g., yamadashy/repomix)compress
: (Optional, default: true) Whether to perform intelligent code extractionincludePatterns
: (Optional) Comma-separated list of include patternsignorePatterns
: (Optional) Comma-separated list of ignore patterns
- read_repomix_output: Read the contents of a Repomix output file in environments where direct file access is not possible
- Parameters:
outputId
: ID of the Repomix output file to read
- Features:
- Specifically designed for web-based environments or sandboxed applications
- Retrieves the content of previously generated outputs using their ID
- Provides secure access to packed codebase without requiring file system access
- file_system_read_file: Read a file using an absolute path with security validation
- Parameters:
path
: Absolute path to the file to read
- Security features:
- Implements security validation using Secretlint
- Prevents access to files containing sensitive information
- Validates absolute paths to prevent directory traversal attacks
- file_system_read_directory: List contents of a directory using an absolute path
- Parameters:
path
: Absolute path to the directory to list
- Features:
- Shows files and directories with clear indicators (
[FILE]
or[DIR]
) - Provides safe directory traversal with proper error handling
- Validates paths and ensures they are absolute
- Shows files and directories with clear indicators (
Configuring MCP Servers
To use Repomix as an MCP server with AI assistants like Claude, you need to configure the MCP settings:
For Cline (VS Code extension):
Edit the cline_mcp_settings.json
file:
For Claude Desktop:
Edit the claude_desktop_config.json
file with similar configuration to Cline's config.
Once configured, your AI assistant can directly use Repomix's capabilities to analyze codebases without manual file preparation, making code analysis workflows more efficient.
āļø Configuration
Create a repomix.config.json
file in your project root for custom configurations.
Here's an explanation of the configuration options:
Option | Description | Default |
---|---|---|
output.filePath | The name of the output file | "repomix-output.xml" |
output.style | The style of the output (xml , markdown , plain ) | "xml" |
output.parsableStyle | Whether to escape the output based on the chosen style schema. Note that this can increase token count. | false |
output.compress | Whether to perform intelligent code extraction to reduce token count | false |
output.headerText | Custom text to include in the file header | null |
output.instructionFilePath | Path to a file containing detailed custom instructions | null |
output.fileSummary | Whether to include a summary section at the beginning of the output | true |
output.directoryStructure | Whether to include the directory structure in the output | true |
output.removeComments | Whether to remove comments from supported file types | false |
output.removeEmptyLines | Whether to remove empty lines from the output | false |
output.showLineNumbers | Whether to add line numbers to each line in the output | false |
output.copyToClipboard | Whether to copy the output to system clipboard in addition to saving the file | false |
output.topFilesLength | Number of top files to display in the summary. If set to 0, no summary will be displayed | 5 |
output.includeEmptyDirectories | Whether to include empty directories in the repository structure | false |
output.git.sortByChanges | Whether to sort files by git change count (files with more changes appear at the bottom) | true |
output.git.sortByChangesMaxCommits | Maximum number of commits to analyze for git changes | 100 |
include | Patterns of files to include (using glob patterns) | [] |
ignore.useGitignore | Whether to use patterns from the project's .gitignore file | true |
ignore.useDefaultPatterns | Whether to use default ignore patterns | true |
ignore.customPatterns | Additional patterns to ignore (using glob patterns) | [] |
security.enableSecurityCheck | Whether to perform security checks on files | true |
tokenCount.encoding | Token count encoding for AI model context limits (e.g., o200k_base , cl100k_base ) | "o200k_base" |
The configuration file supports JSON5 syntax, which allows:
- Comments (both single-line and multi-line)
- Trailing commas in objects and arrays
- Unquoted property names
- More relaxed string syntax
Example configuration:
Global Configuration
To create a global configuration file:
The global configuration file will be created in:
- Windows:
%LOCALAPPDATA%\Repomix\repomix.config.json
- macOS/Linux:
$XDG_CONFIG_HOME/repomix/repomix.config.json
or~/.config/repomix/repomix.config.json
Note: Local configuration (if present) takes precedence over global configuration.
Include and Ignore
Include Patterns
Repomix now supports specifying files to include using glob patterns. This allows for more flexible and powerful file selection:
- Use
**/*.js
to include all JavaScript files in any directory - Use
src/**/*
to include all files within thesrc
directory and its subdirectories - Combine multiple patterns like
["src/**/*.js", "**/*.md"]
to include JavaScript files insrc
and all Markdown files
Ignore Patterns
Repomix offers multiple methods to set ignore patterns for excluding specific files or directories during the packing process:
- .gitignore: By default, patterns listed in your project's
.gitignore
files and.git/info/exclude
are used. This behavior can be controlled with theignore.useGitignore
setting or the--no-gitignore
cli option. - Default patterns: Repomix includes a default list of commonly excluded files and directories (e.g., node_modules,
.git, binary files). This feature can be controlled with the
ignore.useDefaultPatterns
setting or the--no-default-patterns
cli option. Please see defaultIgnore.ts for more details. - .repomixignore: You can create a
.repomixignore
file in your project root to define Repomix-specific ignore patterns. This file follows the same format as.gitignore
. - Custom patterns: Additional ignore patterns can be specified using the
ignore.customPatterns
option in the configuration file. You can overwrite this setting with the-i, --ignore
command line option.
Priority Order (from highest to lowest):
- Custom patterns
ignore.customPatterns
.repomixignore
.gitignore
and.git/info/exclude
(ifignore.useGitignore
is true and--no-gitignore
is not used)- Default patterns (if
ignore.useDefaultPatterns
is true and--no-default-patterns
is not used)
This approach allows for flexible file exclusion configuration based on your project's needs. It helps optimize the size of the generated pack file by ensuring the exclusion of security-sensitive files and large binary files, while preventing the leakage of confidential information.
Note: Binary files are not included in the packed output by default, but their paths are listed in the "Repository Structure" section of the output file. This provides a complete overview of the repository structure while keeping the packed file efficient and text-based.
Custom Instruction
The output.instructionFilePath
option allows you to specify a separate file containing detailed instructions or
context about your project. This allows AI systems to understand the specific context and requirements of your project,
potentially leading to more relevant and tailored analysis or suggestions.
Here's an example of how you might use this feature:
- Create a file named
repomix-instruction.md
in your project root:
- In your
repomix.config.json
, add theinstructionFilePath
option:
When Repomix generates the output, it will include the contents of repomix-instruction.md
in a dedicated section.
Note: The instruction content is appended at the end of the output file. This placement can be particularly effective
for AI systems. For those interested in understanding why this might be beneficial, Anthropic provides some insights in
their documentation:
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/long-context-tips
Put long-form data at the top: Place your long documents and inputs (~20K+ tokens) near the top of your prompt, above your query, instructions, and examples. This can significantly improve Claude's performance across all models. Queries at the end can improve response quality by up to 30% in tests, especially with complex, multi-document inputs.
Comment Removal
When output.removeComments
is set to true
, Repomix will attempt to remove comments from supported file types. This
feature can help reduce the size of the output file and focus on the essential code content.
Supported languages include:
HTML, CSS, JavaScript, TypeScript, Vue, Svelte, Python, PHP, Ruby, C, C#, Java, Go, Rust, Swift, Kotlin, Dart, Shell,
and YAML.
Note: The comment removal process is conservative to avoid accidentally removing code. In complex cases, some comments might be retained.
š Security Check
Repomix includes a security check feature that uses Secretlint to detect potentially sensitive information in your files. This feature helps you identify possible security risks before sharing your packed repository.
The security check results will be displayed in the CLI output after the packing process is complete. If any suspicious files are detected, you'll see a list of these files along with a warning message.
Example output:
By default, Repomix's security check feature is enabled. You can disable it by setting security.enableSecurityCheck
to
false
in your configuration file:
Or using the --no-security-check
command line option:
Note
Disabling security checks may expose sensitive information. Use this option with caution and only when necessary, such as when working with test files or documentation that contains example credentials.
š¤ Contribution
We welcome contributions from the community! To get started, please refer to our Contributing Guide.
Contributors
š Privacy Policy
Repomix CLI Tool
- Data Collection: The Repomix CLI tool does not collect, transmit, or store any user data, telemetry, or repository information.
- Network Usage: Repomix CLI operates fully offline after installation. The only cases where an internet connection is needed are:
- Installation via npm/yarn.
- Using the
--remote
flag to process remote repositories. - Checking for updates (manually triggered).
- Security Considerations: Since all processing is local, Repomix CLI is safe to use with private and internal repositories.
Repomix Website (repomix.com)
- Data Collection: The Repomix website uses Google Analytics to collect usage data, such as page views and user interactions. This helps us understand how the website is used and improve the user experience.
Liability Disclaimer
Repomix (both the CLI tool and the website) is provided "as is" without any warranties or guarantees.
We do not take responsibility for how the generated output is used, including but not limited to its accuracy, legality, or any potential consequences arising from its use.
š License
This project is licensed under the MIT License.
This server cannot be installed
Repomix MCP Server enables AI models to efficiently analyze codebases by packaging local or remote repositories into optimized single files, with intelligent compression via Tree-sitter to significantly reduce token usage while preserving code structure and essential signatures.
- š Features
- š Quick Start
- š Usage
- āļø Configuration
- š Security Check
- š¤ Contribution
- š Privacy Policy
- š License