
A macOS utility for selecting, combining, and copying the contents of files — ideal for use with LLMs and generative AI tools. FileKitty lets you grab context from multiple files with one click and keeps a full history of your selections.
Use Cases
- Gather code snippets for LLM prompts (ChatGPT, Claude, Gemini, Copilot, etc.)
- Provide precise multi-file context for generative AI tools
- Combine logs, configs, or structured docs for inspection
- Track and revisit prior file selections and outputs
Quick Install (macOS via Homebrew)
brew install banagale/filekitty/filekitty
Launch the App
- From Terminal:
- Or via Finder:
open /opt/homebrew/opt/filekitty/FileKitty.app
Make it a Regular Mac App
To access via Spotlight or Launchpad, copy the app to /Applications
:
ditto /opt/homebrew/opt/filekitty/FileKitty.app /Applications/FileKitty.app
Note: Using ditto
rather than cp
preserves the application bundle's icon and metadata.
Manual Build (Alternative)
Install Poetry and build locally:
git clone https://github.com/banagale/FileKitty.git
cd FileKitty
poetry install
poetry run python setup.py py2app
The app will be created in ./dist/
. Copy it to /Applications
for full integration.
Manual builds are useful for development or Linux/Windows adaptation.
Screenshots
Select files, preview combined output, copy instantly


How to Use
- Open the app
- Select Files or drag-and-drop files from Finder, PyCharm, etc.
- Combined contents will appear, grouped in Markdown code blocks.
- Click Copy to Clipboard and paste into your LLM or chat.
History Navigation
- Back/Forward buttons let you navigate prior selections
- Changes to file contents are detected and marked as
(Modified)
or(Missing Files)
Python Symbol Mode
- When
.py
files are selected, use Select Classes/Functions to target specific symbols and relevant imports.
Refreshing
- Click Refresh to reload the current selection, useful after editing source files.
Preferences
Access via FileKitty → Preferences (Cmd+,
):
- Default Select Directory – sets initial folder for file dialog
- History Location – controls where snapshot state is stored
Developer & Contributor Guide
Manual Build
(Also listed above.)
git clone https://github.com/banagale/FileKitty.git
cd FileKitty
poetry install
poetry run python setup.py py2app
The app bundle will be created in ./dist/
.
Linting & Formatting
Uses Ruff:
make lint # Run linter make format # Format code # or directly poetry run ruff check . poetry run ruff format .
Pre-commit Hooks
Set up local linting before commits:
pre-commit install pre-commit run --all-files
Continuous Integration
- GitHub Actions validate linting and build on every push
- See
.github/workflows/
for full pipeline
License
MIT License © Rob Banagale