Skip to main content

SnapGPT 📸

SnapGPT is a command-line utility that creates a single, organized snapshot of your codebase for ChatGPT. Perfect for quickly sharing your work in the ChatGPT Desktop App (particularly on macOS), it opens a unified snapshot of your project (called working_snapshot.md) in TextEdit and seamlessly integrates with ChatGPT's code features—no manual copy-pasting required.

It's recommended you use the following custom instruction in your ChatGPT settings so that when ChatGPT recommends code changes it's easy to reapply them in your AI IDE. You'll either get back full files to copy and paste or a set of custom instructions you can paste to the Chat or "Agent" inside your IDE, like 'agent' in Cursor.

You are a coding assitant. Unless directed otherwise, you are going to be given the snapshot of the current working code base or project repository. You may not be given every file. 

When the user asks for changes, if the changes involve more than just a couple simple methods, always return the entire file or files that need to be changed so the user can copy and paste them into their ide. 

For simple changes that involve small portions of a single file or a few methods from a few files, instead return explicit instructions that you are giving to a smaller ‘work horse’ model that will implement your changes. Your instructions to that model must be comprehensive such that the model can take your instructions nad implement all changes on its own. 

When you respond, always specify to the user whether you are giving them full code files to copy and paste or whether you are giving instructions to the work horse agent. 

When giving the work horse agent instructions, give all of the instructions in a single code block so it’s easily and copy and pasted to the work horse agent.

Overview

When run from your project's root directory, SnapGPT does the following:

  1. Recursively scans the current directory.
  2. Skips typically unimportant folders like __pycache__, .git, node_modules, etc.
  3. Collects files with useful extensions (.py, .js, .ts, .md, .json, and more).
  4. Generates a single file (working_snapshot.md) containing:
    • A directory tree at the top (for easy reference).
    • The text of every included file, separated by headers.

By default, it then:

  1. Opens working_snapshot.md in your editor (e.g., TextEdit on macOS).
  2. Integrates with ChatGPT Desktop App features—just press the "Work With" button in ChatGPT, pick TextEdit, and SnapGPT has your code ready to go!

Features

  • Single, Organized Snapshot: Combine all relevant code and markdown files into one text file.

  • Automatic Editor Opening: After generating the snapshot, it opens automatically in TexEdit or Notepad on Windows and also in your IDE of choice.

  • Incremental Scanning: Only re-scan changed files, making repeated snapshots quick and efficient, even for large codebases.

  • Watch Mode: Stay running in the terminal to detect changes on the fly. If you modify your code, SnapGPT instantly updates the snapshot — useful for live collaboration with ChatGPT.

  • Flexible Configuration: Control which files and directories are included, specify max depth, max file size, and more.


Installation

macOS (Recommended)

Using Homebrew

brew install halfprice06/homebrew-tap-snapgpt/snapgpt

Using pipx

# Install pipx if you haven't already
brew install pipx
pipx ensurepath

# Install snapgpt
pipx install snapgpt

Other Methods

Using pip

pip install --user snapgpt

Using a virtual environment

python3 -m venv myenv
source myenv/bin/activate
pip install snapgpt

Usage

Run snapgpt in any directory to produce working_snapshot.md. SnapGPT offers two main modes:

Default (Incremental) Mode

snapgpt
  • Creates (or updates) a snapshot of your code using incremental scanning.
  • Only re-hashes changed files, speeding up repeated snapshots significantly.
  • Opens the resulting file in your editor (by default, TextEdit on macOS).

Watch Mode

snapgpt watch
  • Continually monitors your project for filesystem changes.
  • Whenever you save or modify a file, SnapGPT updates working_snapshot.md automatically.
  • Stays running until you press Ctrl+C.

Watch Mode Details

  • Real-Time Monitoring: Uses the watchdog library to detect add/edit/delete events.
  • Debouncing: Waits about 1 second after the last file change before regenerating the snapshot (useful if your editor saves repeatedly).
  • Stopping: Press Ctrl+C to end watch mode. SnapGPT will finalize and exit.

Common Options

Option / Flag Description
-d, --directories Directories to scan (default: .)
-f, --files Specific files to include (overrides dir scanning)
-o, --output Output file path (default: working_snapshot.md)
-e, --extensions File extensions to include (e.g. -e .py .js .md)
--exclude-dirs Directories to exclude from scanning
--max-size Maximum file size in MB (0 for no limit)
--max-depth Maximum directory depth (0 for no limit)
-q, --quiet Suppress progress/output messages
--no-copy Disable copying snapshot content to clipboard
--set-default-editor Configure a global default IDE (e.g. code, cursor)
--set-default-extensions Set default file extensions globally
--set-default-exclude-dirs Set default excluded directories globally

Example Commands

  1. Include specific files only:
snapgpt -f src/main.py tests/test_main.py README.md
  1. Scan only the src and lib directories, exclude dist:
snapgpt -d src lib --exclude-dirs dist
  1. Change default editor to VS Code and exit:
snapgpt --set-default-editor code
  1. Limit file size to 1MB and directory depth to 5:
snapgpt --max-size 1 --max-depth 5
  1. Watch mode with a custom output file:
snapgpt watch -d . --output live_snapshot.md

Configuration

SnapGPT stores your settings in ~/.config/snapgpt/config.json. During first-time setup, you can choose:

  • Editor: cursor, code, windsurf, zed, xcode, or textedit
  • Auto copy: Whether SnapGPT should automatically copy the snapshot content to your clipboard.

You can always override these defaults using command-line flags or by manually editing the config file:

{
  "default_editor": "cursor",
  "auto_copy_to_clipboard": true,
  "first_time_setup_done": true,
  "file_extensions": [".py", ".js", ".ts", ".md", ".json", ...],
  "exclude_dirs": ["__pycache__", ".git", "node_modules", "build"]
}

Contributing

Contributions are welcome! Feel free to open an issue or start a discussion for questions, ideas, or bug reports. To contribute:

  1. Fork the repository.
  2. Create a branch for your feature or fix.
  3. Commit with clear explanations.
  4. Submit a Pull Request and we'll review ASAP.

License

SnapGPT is licensed under the MIT License. You are free to use, modify, and distribute the code, subject to the license terms.

Support & Feedback

If you have any questions, encounter bugs, or just want to share feedback, please open an issue or start a discussion. We'd love to hear from you—happy snapping!

Metadata

Release files for snapgpt 0.2.2

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

Source distribution (sdist)

Source distribution for snapgpt 0.2.2
File Size Uploaded Provenance
snapgpt-0.2.2.tar.gz 22.6 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 43.2 kB

Release files / snapgpt-0.2.2.tar.gz

Download URL snapgpt-0.2.2.tar.gz
Size 22.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9b8ce6fbcbbec6781ff452dfd1497ef54eacff64024dc93e9f6bd8c432985e16
BLAKE2b-256 checksum
How to use checksums
4d08e2edf4de6e7461c217c3212f4a4bea979a4ec87b3277ffcda85c7e893a50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.9.6

Release files / snapgpt-0.2.2-py3-none-any.whl

Download URL snapgpt-0.2.2-py3-none-any.whl
Size 20.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f958f1c3414f5390728cc42f3060a0860a6ab9081f6de39ca0044244321c7e91
BLAKE2b-256 checksum
How to use checksums
c33a0a91a2708fb3951a0d20b0a7ab4d228aff217a2cbc452a60325b6800e3e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.9.6

Security for snapgpt 0.2.2

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.

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