{"id":29432156,"url":"https://github.com/coderamp-labs/gitingest","last_synced_at":"2026-02-21T01:03:42.907Z","repository":{"id":265412474,"uuid":"895942941","full_name":"coderamp-labs/gitingest","owner":"coderamp-labs","description":"Replace 'hub' with 'ingest' in any GitHub URL to get a prompt-friendly extract of a codebase ","archived":false,"fork":false,"pushed_at":"2025-10-17T19:45:22.000Z","size":1373,"stargazers_count":12840,"open_issues_count":25,"forks_count":955,"subscribers_count":48,"default_branch":"main","last_synced_at":"2025-10-18T04:27:25.702Z","etag":null,"topics":["ai","code","developer-tool","ingestion"],"latest_commit_sha":null,"homepage":"https://gitingest.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coderamp-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-29T08:27:18.000Z","updated_at":"2025-10-18T01:57:22.000Z","dependencies_parsed_at":"2025-03-03T18:31:44.070Z","dependency_job_id":"055eab9c-129b-44c9-9ee2-90da9ea90912","html_url":"https://github.com/coderamp-labs/gitingest","commit_stats":null,"previous_names":["cyclotruc/gitdigest","cyclotruc/gitingest","coderamp-labs/gitingest"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/coderamp-labs/gitingest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderamp-labs%2Fgitingest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderamp-labs%2Fgitingest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderamp-labs%2Fgitingest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderamp-labs%2Fgitingest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coderamp-labs","download_url":"https://codeload.github.com/coderamp-labs/gitingest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderamp-labs%2Fgitingest/sbom","scorecard":{"id":503067,"data":{"date":"2025-08-19T11:38:16Z","repo":{"name":"github.com/coderamp-labs/gitingest","commit":"4e259a02fe72115bee538271622f1234a81c8e1a"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":7.2,"checks":[{"name":"Code-Review","score":6,"reason":"Found 10/15 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: RenovateBot: renovate.json:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":5,"reason":"dependency not pinned by hash detected -- score normalized to 5","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-pr.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/deploy-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-pr.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/deploy-pr.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy-pr.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/deploy-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy-pr.yml:165: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/deploy-pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker-build.ecr.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/docker-build.ecr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/rebase-needed.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/rebase-needed.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-please.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/release-please.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-please.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/release-please.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/coderamp-labs/gitingest/stale.yml/main?enable=pin","Warn: pipCommand not pinned by hash: Dockerfile:14-16","Warn: pipCommand not pinned by hash: Dockerfile:14-16","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:45","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:46","Warn: pipCommand not pinned by hash: .github/workflows/publish_to_pypi.yml:32","Warn: pipCommand not pinned by hash: .github/workflows/publish_to_pypi.yml:33","Info:  20 out of  25 GitHub-owned GitHubAction dependencies pinned","Info:  17 out of  27 third-party GitHubAction dependencies pinned","Info:   2 out of   2 containerImage dependencies pinned","Info:   0 out of   6 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:31","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:32","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker-build.ecr.yml:30","Info: jobLevel 'contents' permission set to 'read': .github/workflows/docker-build.ghcr.yml:36","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:14","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/dependency-review.yml:13","Info: topLevel 'contents' permission set to 'read': .github/workflows/deploy-pr.yml:10","Warn: no topLevel permission defined: .github/workflows/docker-build.ecr.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/docker-build.ghcr.yml:29","Warn: no topLevel permission defined: .github/workflows/pr-title-check.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/publish_to_pypi.yml:9","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-please.yml:8","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:9","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-183 / GHSA-h8pj-cxx2-jfg2","Warn: Project is vulnerable to: PYSEC-2021-47 / GHSA-5jqp-qgf6-3pvh","Warn: Project is vulnerable to: GHSA-mr82-8j83-vxmv","Warn: Project is vulnerable to: GHSA-29pr-6jr8-q5jm","Warn: Project is vulnerable to: GHSA-g92j-qhmh-64v2","Warn: Project is vulnerable to: GHSA-2c2j-9gv5-cj73"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker-build.ecr.yml:23"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":8,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Warn: 'stale review dismissal' is disabled on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Warn: codeowners review is not required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"CI-Tests","score":10,"reason":"30 out of 30 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}},{"name":"Contributors","score":6,"reason":"project has 2 contributing companies or organizations -- score normalized to 6","details":["Info: found contributions from: coderamp-labs, intelligyn"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}}]},"last_synced_at":"2025-08-19T22:29:44.283Z","repository_id":265412474,"created_at":"2025-08-19T22:29:44.283Z","updated_at":"2025-08-19T22:29:44.283Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280200872,"owners_count":26289477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","code","developer-tool","ingestion"],"created_at":"2025-07-12T22:01:26.934Z","updated_at":"2025-10-21T04:03:45.746Z","avatar_url":"https://github.com/coderamp-labs.png","language":"Python","readme":"# Gitingest\n\n[![Screenshot of Gitingest front page](https://raw.githubusercontent.com/coderamp-labs/gitingest/refs/heads/main/docs/frontpage.png)](https://gitingest.com)\n\n\u003c!-- Badges --\u003e\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003cp align=\"center\"\u003e\n  \u003c!-- row 1 — install \u0026 compat --\u003e\n  \u003ca href=\"https://pypi.org/project/gitingest\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/gitingest.svg\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/gitingest\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/gitingest.svg\" alt=\"Python Versions\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003c!-- row 2 — quality \u0026 community --\u003e\n  \u003ca href=\"https://github.com/coderamp-labs/gitingest/actions/workflows/ci.yml?query=branch%3Amain\"\u003e\u003cimg src=\"https://github.com/coderamp-labs/gitingest/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI\"\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://github.com/astral-sh/ruff\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\" alt=\"Ruff\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://scorecard.dev/viewer/?uri=github.com/coderamp-labs/gitingest\"\u003e\u003cimg src=\"https://api.scorecard.dev/projects/github.com/coderamp-labs/gitingest/badge\" alt=\"OpenSSF Scorecard\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/coderamp-labs/gitingest/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/coderamp-labs/gitingest.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pepy.tech/project/gitingest\"\u003e\u003cimg src=\"https://pepy.tech/badge/gitingest\" alt=\"Downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/coderamp-labs/gitingest\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/coderamp-labs/gitingest\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.com/invite/zerRaGK9EC\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join_chat-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://trendshift.io/repositories/13519\"\u003e\u003cimg src=\"https://trendshift.io/api/badge/repositories/13519\" alt=\"Trendshift\" height=\"50\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c!-- markdownlint-enable MD033 --\u003e\n\nTurn any Git repository into a prompt-friendly text ingest for LLMs.\n\nYou can also replace `hub` with `ingest` in any GitHub URL to access the corresponding digest.\n\n\u003c!-- Extensions --\u003e\n[gitingest.com](https://gitingest.com) · [Chrome Extension](https://chromewebstore.google.com/detail/adfjahbijlkjfoicpjkhjicpjpjfaood) · [Firefox Add-on](https://addons.mozilla.org/firefox/addon/gitingest)\n\n\u003c!-- Languages --\u003e\n[Deutsch](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=de) |\n[Español](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=es) |\n[Français](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=fr) |\n[日本語](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=ja) |\n[한국어](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=ko) |\n[Português](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=pt) |\n[Русский](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=ru) |\n[中文](https://www.readme-i18n.com/coderamp-labs/gitingest?lang=zh)\n\n## 🚀 Features\n\n- **Easy code context**: Get a text digest from a Git repository URL or a directory\n- **Smart Formatting**: Optimized output format for LLM prompts\n- **Statistics about**:\n  - File and directory structure\n  - Size of the extract\n  - Token count\n- **CLI tool**: Run it as a shell command\n- **Python package**: Import it in your code\n\n## 📚 Requirements\n\n- Python 3.8+\n- For private repositories: A GitHub Personal Access Token (PAT). [Generate your token **here**!](https://github.com/settings/tokens/new?description=gitingest\u0026scopes=repo)\n\n### 📦 Installation\n\nGitingest is available on [PyPI](https://pypi.org/project/gitingest/).\nYou can install it using `pip`:\n\n```bash\npip install gitingest\n```\n\nor\n\n```bash\npip install gitingest[server]\n```\n\nto include server dependencies for self-hosting.\n\nHowever, it might be a good idea to use `pipx` to install it.\nYou can install `pipx` using your preferred package manager.\n\n```bash\nbrew install pipx\napt install pipx\nscoop install pipx\n...\n```\n\nIf you are using pipx for the first time, run:\n\n```bash\npipx ensurepath\n```\n\n```bash\n# install gitingest\npipx install gitingest\n```\n\n## 🧩 Browser Extension Usage\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ca href=\"https://chromewebstore.google.com/detail/adfjahbijlkjfoicpjkhjicpjpjfaood\" target=\"_blank\" title=\"Get Gitingest Extension from Chrome Web Store\"\u003e\u003cimg height=\"48\" src=\"https://github.com/user-attachments/assets/20a6e44b-fd46-4e6c-8ea6-aad436035753\" alt=\"Available in the Chrome Web Store\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://addons.mozilla.org/firefox/addon/gitingest\" target=\"_blank\" title=\"Get Gitingest Extension from Firefox Add-ons\"\u003e\u003cimg height=\"48\" src=\"https://github.com/user-attachments/assets/c0e99e6b-97cf-4af2-9737-099db7d3538b\" alt=\"Get The Add-on for Firefox\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://microsoftedge.microsoft.com/addons/detail/nfobhllgcekbmpifkjlopfdfdmljmipf\" target=\"_blank\" title=\"Get Gitingest Extension from Microsoft Edge Add-ons\"\u003e\u003cimg height=\"48\" src=\"https://github.com/user-attachments/assets/204157eb-4cae-4c0e-b2cb-db514419fd9e\" alt=\"Get from the Edge Add-ons\" /\u003e\u003c/a\u003e\n\u003c!-- markdownlint-enable MD033 --\u003e\n\nThe extension is open source at [lcandy2/gitingest-extension](https://github.com/lcandy2/gitingest-extension).\n\nIssues and feature requests are welcome to the repo.\n\n## 💡 Command line usage\n\nThe `gitingest` command line tool allows you to analyze codebases and create a text dump of their contents.\n\n```bash\n# Basic usage (writes to digest.txt by default)\ngitingest /path/to/directory\n\n# From URL\ngitingest https://github.com/coderamp-labs/gitingest\n\n# or from specific subdirectory\ngitingest https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils\n```\n\nFor private repositories, use the `--token/-t` option.\n\n```bash\n# Get your token from https://github.com/settings/personal-access-tokens\ngitingest https://github.com/username/private-repo --token github_pat_...\n\n# Or set it as an environment variable\nexport GITHUB_TOKEN=github_pat_...\ngitingest https://github.com/username/private-repo\n\n# Include repository submodules\ngitingest https://github.com/username/repo-with-submodules --include-submodules\n```\n\nBy default, files listed in `.gitignore` are skipped. Use `--include-gitignored` if you\nneed those files in the digest.\n\nBy default, the digest is written to a text file (`digest.txt`) in your current working directory. You can customize the output in two ways:\n\n- Use `--output/-o \u003cfilename\u003e` to write to a specific file.\n- Use `--output/-o -` to output directly to `STDOUT` (useful for piping to other tools).\n\nSee more options and usage details with:\n\n```bash\ngitingest --help\n```\n\n## 🐍 Python package usage\n\n```python\n# Synchronous usage\nfrom gitingest import ingest\n\nsummary, tree, content = ingest(\"path/to/directory\")\n\n# or from URL\nsummary, tree, content = ingest(\"https://github.com/coderamp-labs/gitingest\")\n\n# or from a specific subdirectory\nsummary, tree, content = ingest(\"https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils\")\n```\n\nFor private repositories, you can pass a token:\n\n```python\n# Using token parameter\nsummary, tree, content = ingest(\"https://github.com/username/private-repo\", token=\"github_pat_...\")\n\n# Or set it as an environment variable\nimport os\nos.environ[\"GITHUB_TOKEN\"] = \"github_pat_...\"\nsummary, tree, content = ingest(\"https://github.com/username/private-repo\")\n\n# Include repository submodules\nsummary, tree, content = ingest(\"https://github.com/username/repo-with-submodules\", include_submodules=True)\n```\n\nBy default, this won't write a file but can be enabled with the `output` argument.\n\n```python\n# Asynchronous usage\nfrom gitingest import ingest_async\nimport asyncio\n\nresult = asyncio.run(ingest_async(\"path/to/directory\"))\n```\n\n### Jupyter notebook usage\n\n```python\nfrom gitingest import ingest_async\n\n# Use await directly in Jupyter\nsummary, tree, content = await ingest_async(\"path/to/directory\")\n\n```\n\nThis is because Jupyter notebooks are asynchronous by default.\n\n## 🐳 Self-host\n\n### Using Docker\n\n1. Build the image:\n\n   ``` bash\n   docker build -t gitingest .\n   ```\n\n2. Run the container:\n\n   ``` bash\n   docker run -d --name gitingest -p 8000:8000 gitingest\n   ```\n\nThe application will be available at `http://localhost:8000`.\n\nIf you are hosting it on a domain, you can specify the allowed hostnames via env variable `ALLOWED_HOSTS`.\n\n   ```bash\n   # Default: \"gitingest.com, *.gitingest.com, localhost, 127.0.0.1\".\n   ALLOWED_HOSTS=\"example.com, localhost, 127.0.0.1\"\n   ```\n\n### Environment Variables\n\nThe application can be configured using the following environment variables:\n\n- **ALLOWED_HOSTS**: Comma-separated list of allowed hostnames (default: \"gitingest.com, *.gitingest.com, localhost, 127.0.0.1\")\n- **GITINGEST_METRICS_ENABLED**: Enable Prometheus metrics server (set to any value to enable)\n- **GITINGEST_METRICS_HOST**: Host for the metrics server (default: \"127.0.0.1\")\n- **GITINGEST_METRICS_PORT**: Port for the metrics server (default: \"9090\")\n- **GITINGEST_SENTRY_ENABLED**: Enable Sentry error tracking (set to any value to enable)\n- **GITINGEST_SENTRY_DSN**: Sentry DSN (required if Sentry is enabled)\n- **GITINGEST_SENTRY_TRACES_SAMPLE_RATE**: Sampling rate for performance data (default: \"1.0\", range: 0.0-1.0)\n- **GITINGEST_SENTRY_PROFILE_SESSION_SAMPLE_RATE**: Sampling rate for profile sessions (default: \"1.0\", range: 0.0-1.0)\n- **GITINGEST_SENTRY_PROFILE_LIFECYCLE**: Profile lifecycle mode (default: \"trace\")\n- **GITINGEST_SENTRY_SEND_DEFAULT_PII**: Send default personally identifiable information (default: \"true\")\n- **S3_ALIAS_HOST**: Public URL/CDN for accessing S3 resources (default: \"127.0.0.1:9000/gitingest-bucket\")\n- **S3_DIRECTORY_PREFIX**: Optional prefix for S3 file paths (if set, prefixes all S3 paths with this value)\n\n### Using Docker Compose\n\nThe project includes a `compose.yml` file that allows you to easily run the application in both development and production environments.\n\n#### Compose File Structure\n\nThe `compose.yml` file uses YAML anchoring with `\u0026app-base` and `\u003c\u003c: *app-base` to define common configuration that is shared between services:\n\n```yaml\n# Common base configuration for all services\nx-app-base: \u0026app-base\n  build:\n    context: .\n    dockerfile: Dockerfile\n  ports:\n    - \"${APP_WEB_BIND:-8000}:8000\"  # Main application port\n    - \"${GITINGEST_METRICS_HOST:-127.0.0.1}:${GITINGEST_METRICS_PORT:-9090}:9090\"  # Metrics port\n  # ... other common configurations\n```\n\n#### Services\n\nThe file defines three services:\n\n1. **app**: Production service configuration\n   - Uses the `prod` profile\n   - Sets the Sentry environment to \"production\"\n   - Configured for stable operation with `restart: unless-stopped`\n\n2. **app-dev**: Development service configuration\n   - Uses the `dev` profile\n   - Enables debug mode\n   - Mounts the source code for live development\n   - Uses hot reloading for faster development\n\n3. **minio**: S3-compatible object storage for development\n   - Uses the `dev` profile (only available in development mode)\n   - Provides S3-compatible storage for local development\n   - Accessible via:\n     - API: Port 9000 ([localhost:9000](http://localhost:9000))\n     - Web Console: Port 9001 ([localhost:9001](http://localhost:9001))\n   - Default admin credentials:\n     - Username: `minioadmin`\n     - Password: `minioadmin`\n   - Configurable via environment variables:\n     - `MINIO_ROOT_USER`: Custom admin username (default: minioadmin)\n     - `MINIO_ROOT_PASSWORD`: Custom admin password (default: minioadmin)\n   - Includes persistent storage via Docker volume\n   - Auto-creates a bucket and application-specific credentials:\n     - Bucket name: `gitingest-bucket` (configurable via `S3_BUCKET_NAME`)\n     - Access key: `gitingest` (configurable via `S3_ACCESS_KEY`)\n     - Secret key: `gitingest123` (configurable via `S3_SECRET_KEY`)\n   - These credentials are automatically passed to the app-dev service via environment variables:\n     - `S3_ENDPOINT`: URL of the MinIO server\n     - `S3_ACCESS_KEY`: Access key for the S3 bucket\n     - `S3_SECRET_KEY`: Secret key for the S3 bucket\n     - `S3_BUCKET_NAME`: Name of the S3 bucket\n     - `S3_REGION`: Region for the S3 bucket (default: us-east-1)\n     - `S3_ALIAS_HOST`: Public URL/CDN for accessing S3 resources (default: \"127.0.0.1:9000/gitingest-bucket\")\n\n#### Usage Examples\n\nTo run the application in development mode:\n\n```bash\ndocker compose --profile dev up\n```\n\nTo run the application in production mode:\n\n```bash\ndocker compose --profile prod up -d\n```\n\nTo build and run the application:\n\n```bash\ndocker compose --profile prod build\ndocker compose --profile prod up -d\n```\n\n## 🤝 Contributing\n\n### Non-technical ways to contribute\n\n- **Create an Issue**: If you find a bug or have an idea for a new feature, please [create an issue](https://github.com/coderamp-labs/gitingest/issues/new) on GitHub. This will help us track and prioritize your request.\n- **Spread the Word**: If you like Gitingest, please share it with your friends, colleagues, and on social media. This will help us grow the community and make Gitingest even better.\n- **Use Gitingest**: The best feedback comes from real-world usage! If you encounter any issues or have ideas for improvement, please let us know by [creating an issue](https://github.com/coderamp-labs/gitingest/issues/new) on GitHub or by reaching out to us on [Discord](https://discord.com/invite/zerRaGK9EC).\n\n### Technical ways to contribute\n\nGitingest aims to be friendly for first time contributors, with a simple Python and HTML codebase. If you need any help while working with the code, reach out to us on [Discord](https://discord.com/invite/zerRaGK9EC). For detailed instructions on how to make a pull request, see [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## 🛠️ Stack\n\n- [Tailwind CSS](https://tailwindcss.com) - Frontend\n- [FastAPI](https://github.com/fastapi/fastapi) - Backend framework\n- [Jinja2](https://jinja.palletsprojects.com) - HTML templating\n- [tiktoken](https://github.com/openai/tiktoken) - Token estimation\n- [posthog](https://github.com/PostHog/posthog) - Amazing analytics\n- [Sentry](https://sentry.io) - Error tracking and performance monitoring\n\n### Looking for a JavaScript/FileSystemNode package?\n\nCheck out the NPM alternative 📦 Repomix: \u003chttps://github.com/yamadashy/repomix\u003e\n\n## 🚀 Project Growth\n\n[![Star History Chart](https://api.star-history.com/svg?repos=coderamp-labs/gitingest\u0026type=Date)](https://star-history.com/#coderamp-labs/gitingest\u0026Date)\n","funding_links":[],"categories":["Python","12. Miscellaneous"],"sub_categories":["Data \u0026 Alignment Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderamp-labs%2Fgitingest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderamp-labs%2Fgitingest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderamp-labs%2Fgitingest/lists"}