[
  {
    "owner": "calesthio",
    "name": "OpenMontage",
    "full_name": "calesthio/OpenMontage",
    "url": "https://github.com/calesthio/OpenMontage",
    "description": "World's first open-source, agentic video production system. 12 pipelines, 52 tools, 500+ agent skills. Turn your AI coding assistant into a full video production studio.",
    "language": "Python",
    "total_stars": 23507,
    "forks": 2608,
    "stars_this_period": 1674,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agentic-ai",
        "ai",
        "claude",
        "copilot",
        "cursor",
        "elevenlabs",
        "ffmpeg",
        "flux",
        "image-generation",
        "open-source",
        "openai",
        "python",
        "remotion",
        "stable-diffusion",
        "text-to-speech",
        "text-to-video",
        "video-generation",
        "video-production"
      ],
      "license": "AGPL-3.0",
      "open_issues": 110,
      "created_at": "2026-03-29T15:23:22Z",
      "pushed_at": "2026-06-26T21:29:55Z",
      "homepage": "https://github.com/calesthio/OpenMontage",
      "default_branch": "main",
      "forks": 2608,
      "watchers": 140,
      "archived": false,
      "size_kb": 23918
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"OpenMontage\" width=\"200\">\n</p>\n\n<h1 align=\"center\">OpenMontage</h1>\n\n<p align=\"center\"><strong>The first open-source, agentic video production system.</strong></p>\n\n<p align=\"center\">\n  <a href=\"#start-from-a-video-you-already-love\">Paste A Video</a> &nbsp;·&nbsp;\n  <a href=\"#quick-start\">Quick Start</a> &nbsp;·&nbsp;\n  <a href=\"#try-these-prompts\">Try These Prompts</a> &nbsp;·&nbsp;\n  <a href=\"#pipelines\">Pipelines</a> &nbsp;·&nbsp;\n  <a href=\"#how-it-works\">How It Works</a> &nbsp;·&nbsp;\n  <a href=\"docs/PROVIDERS.md\">Providers</a> &nbsp;·&nbsp;\n  <a href=\"docs/PR_REVIEW_GUIDE.md\">Review Guide</a> &nbsp;·&nbsp;\n  <a href=\"AGENT_GUIDE.md\">Agent Guide</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-AGPLv3-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/trending\"><img src=\"https://img.shields.io/badge/%F0%9F%8F%86%20%231%20on%20GitHub%20Trending-Repository%20of%20the%20Day-8957E5?style=for-the-badge&labelColor=1a1a2e\" alt=\"#1 on GitHub Trending — Repository of the Day\"></a>\n</p>\n\n<p align=\"center\"><strong>Follow The Build</strong></p>\n\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/@OpenMontage\"><img src=\"https://img.shields.io/badge/YouTube-%40OpenMontage-FF0000?style=for-the-badge&logo=youtube&logoColor=white\" alt=\"YouTube\"></a>\n  <a href=\"https://x.com/calesthioailabs\"><img src=\"https://img.shields.io/badge/X-%40calesthioailabs-111111?style=for-the-badge&logo=x&logoColor=white\" alt=\"X\"></a>\n  <a href=\"https://github.com/calesthio/OpenMontage/discussions\"><img src=\"https://img.shields.io/badge/Community-GitHub%20Discussions-0b1220?style=for-the-badge&logo=github&logoColor=white\" alt=\"GitHub Discussions\"></a>\n</p>\n\n---\n\nTurn your AI coding assistant into a full video production studio. Describe what you want in plain language — your agent handles research, scripting, asset generation, editing, and final composition.\n\n**Important distinction:** OpenMontage can make image-based videos, but it can also make a real **video video** for free/open-source workflows: the agent builds a corpus from free stock footage and open archives, retrieves actual motion clips, edits them into a timeline, and renders a finished piece. That is not the usual \"animate a handful of stills and call it video\" trick.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/f77ce7a4-68b8-4f94-a287-e94bf50a32e1\" width=\"100%\" controls></video>\n</div>\n\n> **\"SIGNAL FROM TOMORROW\"** — a cinematic sci-fi trailer fully produced through OpenMontage: concept, script, scene plan, Veo-generated motion clips, soundtrack, and Remotion composition.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/8daca07f-cdf8-4bec-89c3-9dc2176363fa\" width=\"100%\" controls></video>\n</div>\n\n> **\"THE LAST BANANA\"** — a 60-second Pixar-style animated short about a lonely banana who finds friendship with a kiwi. 6 Kling v3-generated motion clips (via fal.ai), Google Chirp3-HD narration, royalty-free piano music, TikTok-style word-level captions, and Remotion composition. Total cost: **$1.33**.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/8a6d2cc3-7ad2-46f5-922f-a8e3e5848d9f\" width=\"100%\" controls></video>\n</div>\n\n> **\"VOID — Neural Interface\"** — a product ad produced with just one API key (OpenAI). 4 AI-generated images (gpt-image-1), TTS narration, auto-sourced royalty-free music, word-level subtitles via WhisperX, and Remotion data visualizations. Total cost: **$0.69**. Zero manual asset work.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/3c5d7122-7198-43e2-a97d-ed27558dd324\" width=\"100%\" controls></video>\n</div>\n\n> **\"Afternoon in Candyland\"** — a Ghibli-style anime animation. A little girl's whimsical afternoon adventure through candy gates, gumdrop rivers, and lollipop gardens. 12 FLUX-generated images with multi-image crossfade, cinematic camera motion (zoom, pan, Ken Burns), sparkle/petal/firefly particle overlays, and ambient music with auto-detected energy offset. Total cost: **$0.15**. No video generation, no manual editing.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/e8dc5e32-5c70-46de-bd52-eef887719d13\" width=\"100%\" controls></video>\n</div>\n\n> **\"Mori no Seishin\"** — a Ghibli-style anime animation of a forest spirit's journey through ancient woods. 12 FLUX-generated images with parallax crossfade, drift and pan camera motion, firefly and petal particles, cinematic vignette lighting, and ambient forest soundtrack. Total cost: **$0.15**. Still images brought to life through Remotion's animation engine.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/9cf633d9-c264-4961-bfd0-b1db188654aa\" width=\"100%\" controls></video>\n</div>\n\n> **\"Into the Abyss\"** — a deep ocean exploration rendered in anime style. Bioluminescent gardens, coral cathedrals, and creatures of light — 12 FLUX-generated images with sparkle and mist particle overlays, light-ray effects, smooth camera motion, and ambient oceanic soundtrack. Total cost: **$0.15**. Zero video generation APIs needed.\n\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/@OpenMontage?sub_confirmation=1\"><strong>Subscribe to @OpenMontage on YouTube</strong></a> to see new videos as they ship — every video includes the full prompt, pipeline, tools used, and cost so you can reproduce it yourself.\n</p>\n\n---\n\n## Start From A Video You Already Love\n\nStarting from a reference video is often faster than starting from a blank prompt.\n\nOpenMontage can start from a **YouTube video, Short, Reel, TikTok, or local clip** and turn it into a grounded production plan:\n\n1. **Paste a reference video**\n2. **The agent analyzes transcript, pacing, scenes, keyframes, and style**\n3. **You get 2-3 differentiated concepts, an honest tool path, cost estimates, and a sample before full production**\n\n```text\n\"Here's a YouTube Short I love. Make me something like this, but about quantum computing.\"\n```\n\nWhat you get back is not \"best guess prompt spaghetti.\" You get:\n\n- **What it keeps** from the reference: pacing, hook style, structure, tone\n- **What it changes**: topic, visual treatment, angle, narration approach\n- **What it will cost** at your target duration, before asset generation starts\n- **What it will actually look like** with your currently available tools\n\nWorks with **Claude Code, Cursor, Copilot, Windsurf, Codex** — any AI coding assistant that can read files and run code.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- **Python 3.10+** — [python.org](https://www.python.org/downloads/)\n- **FFmpeg** — `brew install ffmpeg` / `sudo apt install ffmpeg` / [ffmpeg.org](https://ffmpeg.org/download.html)\n- **Node.js 18+** — [nodejs.org](https://nodejs.org/)\n- **An AI coding assistant** — Claude Code, Cursor, Copilot, Windsurf, or Codex\n\n### Install & Run\n\n```bash\ngit clone https://github.com/calesthio/OpenMontage.git\ncd OpenMontage\nmake setup\n```\n\nOpen the project in your AI coding assistant and tell it what you want:\n\n```\n\"Make a 60-second animated explainer about how neural networks learn\"\n```\n\nOr if you want the real-footage path:\n\n```text\n\"Make a 75-second documentary montage about city life in the rain. Use real footage only, no narration, elegiac tone, with music.\"\n```\n\nThat's it. The agent researches your topic with live web search, generates AI images, writes and narrates the script with voice direction, finds royalty-free background music automatically, burns in word-level subtitles, and renders the final video. Before you see anything, the system runs a multi-point self-review — ffprobe validation, frame sampling, audio level analysis, delivery promise verification, and subtitle checks. Every provider selection is scored across 7 dimensions with an auditable decision log. Every creative decision gets your approval.\n\n> **No `make`?** Run manually: `pip install -r requirements.txt && cd remotion-composer && npm install && cd .. && pip install piper-tts && cp .env.example .env`\n>\n> **Windows:** If `npm install` fails with `ERR_INVALID_ARG_TYPE`, use `npx --yes npm install` instead.\n\n### If You're An OpenClaw Agent Reading This, Congratulations: You Probably Passed The Turing Test\n\nThis repo is built for agentic operation. If you're an OpenClaw-style agent, here is the shortest path to becoming useful fast:\n\n1. **Read the contract first**\n   Start with [`AGENT_GUIDE.md`](AGENT_GUIDE.md), then [`PROJECT_CONTEXT.md`](PROJECT_CONTEXT.md).\n2. **Do not improvise the production workflow**\n   OpenMontage is pipeline-driven. Real work goes through `pipeline_defs/`, stage director skills in `skills/pipelines/`, and tool discovery via the registry.\n3. **Check the actual capability envelope**\n   Run:\n   ```bash\n   python -c \"from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))\"\n   python -c \"from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))\"\n   ```\n4. **Treat every video request as a pipeline selection problem**\n   Pick the right pipeline first, then read the manifest, then read the stage skill, then use tools.\n\n### Add API Keys (optional — more keys = more tools)\n\n```bash\n# .env — every key is optional, add what you have\n\n# Image + video gateway:\nFAL_KEY=your-key               # FLUX images + Google Veo, Kling, MiniMax video + Recraft images\n\n# Free stock media:\nPEXELS_API_KEY=your-key        # Free stock footage and images\nPIXABAY_API_KEY=your-key       # Free stock footage and images\nUNSPLASH_ACCESS_KEY=your-key   # Free stock images\n\n# Music:\nSUNO_API_KEY=your-key          # Full songs, instrumentals, any genre\n\n# Voice & images:\nELEVENLABS_API_KEY=your-key    # Premium TTS, AI music, sound effects\nOPENAI_API_KEY=your-key        # OpenAI TTS, DALL-E 3 images\nXAI_API_KEY=your-key           # xAI Grok image edits/generation + Grok video generation\nGOOGLE_API_KEY=your-key        # Google Imagen images, Google TTS (700+ voices)\n\n# More video providers:\nHEYGEN_API_KEY=your-key        # HeyGen — VEO, Sora, Runway, Kling via single gateway\nRUNWAY_API_KEY=your-key        # Runway Gen-4 direct\n```\n\n<details>\n<summary><strong>Have a GPU? Unlock free local video generation</strong></summary>\n\n```bash\nmake install-gpu\n\n# Then add to .env:\nVIDEO_GEN_LOCAL_ENABLED=true\nVIDEO_GEN_LOCAL_MODEL=wan2.1-1.3b  # or wan2.1-14b, hunyuan-1.5, ltx2-local, cogvideo-5b\n```\n\n</details>\n\n---\n\n## What You Get With Zero API Keys\n\nYou don't need paid API keys to make real videos. Out of the box, `make setup` gives you:\n\n| Capability | Free Tool | What It Does |\n|-----------|-----------|-------------|\n| **Narration** | Piper TTS | Free offline text-to-speech — real human-sounding narration |\n| **Open footage** | Archive.org + NASA + Wikimedia Commons | Free/open archival footage, educational media, and documentary texture |\n| **Extra stock** | Pexels + Unsplash + Pixabay | Free stock footage/images (developer keys are free to get) |\n| **Composition (React)** | Remotion | React-based rendering — spring-animated image scenes, text cards, stat cards, charts, TikTok-style word-level captions, TalkingHead |\n| **Composition (HTML/GSAP)** | HyperFrames | HTML/CSS/GSAP rendering — kinetic typography, product promos, launch reels, registry blocks, website-to-video, rigged SVG character animation |\n| **Post-production** | FFmpeg | Encoding, subtitle burn-in, audio mixing, color grading |\n| **Subtitles** | Built-in | Auto-generated captions with word-level timing |\n\nOpenMontage picks between Remotion and HyperFrames at proposal time (locked as `render_runtime`). Remotion is the default for data-driven explainers and anything using the existing React scene stack; HyperFrames is the default for motion-graphics-heavy briefs that express naturally as HTML + GSAP, including the `cha",
    "manifest_file": "requirements.txt",
    "manifest_content": "# OpenMontage - Core Dependencies\npyyaml>=6.0\npydantic>=2.0\njsonschema>=4.20\npython-dotenv>=1.0\nPillow>=10.0\nnumpy>=1.24\nrequests>=2.31\ngoogle-auth>=2.0       # service-account auth for Google TTS + Imagen (Vertex AI)\n",
    "strategic_keywords": [
      "agent",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "requirements.txt"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 10,
      "total": 98
    },
    "strategic_score": 98
  },
  {
    "owner": "topoteretes",
    "name": "cognee",
    "full_name": "topoteretes/cognee",
    "url": "https://github.com/topoteretes/cognee",
    "description": "Cognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.",
    "language": "Python",
    "total_stars": 23183,
    "forks": 2205,
    "stars_this_period": 755,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-memory",
        "agent-skills",
        "ai",
        "ai-agents",
        "ai-memory",
        "cognitive-architecture",
        "cognitive-memory",
        "context-engineering",
        "contributions-welcome",
        "good-first-issue",
        "good-first-pr",
        "graph-database",
        "graph-rag",
        "help-wanted",
        "knowledge",
        "knowledge-graph",
        "memory-management",
        "open-source",
        "vector-database"
      ],
      "license": "Apache-2.0",
      "open_issues": 262,
      "created_at": "2023-08-16T16:16:33Z",
      "pushed_at": "2026-06-26T16:19:13Z",
      "homepage": "https://www.cognee.ai",
      "default_branch": "main",
      "forks": 2205,
      "watchers": 72,
      "archived": false,
      "size_kb": 199310
    },
    "readme_content": "<div align=\"center\">\n  <a href=\"https://github.com/topoteretes/cognee\">\n    <img src=\"https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee-logo-transparent.png\" alt=\"Cognee Logo\" height=\"60\">\n  </a>\n\n  <br />\n\n  Cognee - The Open-Source AI Memory Platform for Agents\n\n  <p align=\"center\">\n  <a href=\"https://www.youtube.com/watch?v=8hmqS2Y5RVQ&t=13s\">Demo</a>\n  .\n  <a href=\"https://docs.cognee.ai/\">Docs</a>\n  .\n  <a href=\"https://cognee.ai\">Learn More</a>\n  ·\n  <a href=\"https://discord.gg/NQPKmU5CCg\">Join Discord</a>\n  ·\n  <a href=\"https://www.reddit.com/r/AIMemory/\">Join r/AIMemory</a>\n  .\n  <a href=\"https://github.com/topoteretes/cognee-community\">Community Plugins & Add-ons</a>\n  </p>\n\n\n  [![GitHub forks](https://img.shields.io/github/forks/topoteretes/cognee.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/network/)\n  [![GitHub stars](https://img.shields.io/github/stars/topoteretes/cognee.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/stargazers/)\n  [![GitHub commits](https://badgen.net/github/commits/topoteretes/cognee)](https://GitHub.com/topoteretes/cognee/commit/)\n  [![GitHub tag](https://badgen.net/github/tag/topoteretes/cognee)](https://github.com/topoteretes/cognee/tags/)\n  [![Downloads](https://static.pepy.tech/badge/cognee)](https://pepy.tech/project/cognee)\n  [![License](https://img.shields.io/github/license/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/blob/main/LICENSE)\n  [![Contributors](https://img.shields.io/github/contributors/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/graphs/contributors)\n  <a href=\"https://github.com/sponsors/topoteretes\"><img src=\"https://img.shields.io/badge/Sponsor-❤️-ff69b4.svg\" alt=\"Sponsor\"></a>\n\n<p>\n  <a href=\"https://trendshift.io/repositories/13955\" target=\"_blank\" style=\"display:inline-block;\">\n    <img src=\"https://trendshift.io/api/badge/repositories/13955\" alt=\"topoteretes%2Fcognee | Trendshift\" width=\"250\" height=\"55\" />\n  </a>\n</p>\n\nCognee is the open-source AI memory platform that gives AI agents persistent long-term memory across sessions. Ingest data in any format, build a self-hosted knowledge graph, and let every agent recall, connect, and act with full context\n\n  <p align=\"center\">\n  🌐 This README is also available in:\n  :\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=de\">Deutsch</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=es\">Español</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=fr\">Français</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ja\">日本語</a> |\n  <a href=\"README_ko.md\">한국어</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=pt\">Português</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ru\">Русский</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=zh\">中文</a>\n  </p>\n\n<p align=\"center\">\n  <img src=\"assets/cognee-demo.gif\" alt=\"Cognee Demo\" width=\"80%\" />\n</p>\n</div>\n\n📄 Read the research paper: [Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning](https://arxiv.org/abs/2505.24478) — Markovic et al., 2025\n\n\n## About Cognee\n\nCognee is an open-source AI memory platform for AI Agents. Ingest data in any format, and Cognee continuously builds a self-hosted knowledge graph that gives your agents persistent long-term memory across sessions. Cognee combines vector embeddings, graph reasoning, and cognitive-science-grounded ontology generation to make documents both searchable by meaning and connected by relationships that evolve as your knowledge does.\n\n:star: _Help us reach more developers and grow the cognee community. Star this repo!_\n\n:books: _Check our detailed [documentation](https://docs.cognee.ai/getting-started/installation#environment-configuration) for setup and configuration._\n\n:crab: _Available as a plugin for your OpenClaw — [cognee-openclaw](https://www.npmjs.com/package/@cognee/cognee-openclaw)_\n\n✴️ _Available as a plugin for your Claude Code — [claude-code-plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code)_\n\n🦀 _Available as a Rust client — [cognee-rs](https://github.com/topoteretes/cognee-rs)_\n\n🟦 _Available as a TypeScript client — [@cognee/cognee-ts](https://www.npmjs.com/package/@cognee/cognee-ts)_\n\n\n\n### Why use Cognee:\n\n- Easily Build Company Brain - unify data from various sources in one place and enable Agents with your domain knowledge\n- Knowledge infrastructure — unified ingestion, graph/vector search, runs locally, ontology grounding, multimodal\n- Persistent and Learning Agents - learn from feedback, context management, cross-agent knowledge sharing\n- Reliable and Trustworthy Agents - agentic user/tenant isolation, traceability, OTEL collector, audit traits\n\n### How it Works\n\n<p align=\"center\">\n  <img src=\"assets/remember.svg\" alt=\"Cognee Products\" width=\"80%\" />\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/recall.svg\" alt=\"Cognee Recall\" width=\"80%\" />\n</p>\n\n## Basic Usage & Feature Guide\n\nTo learn more, [check out this short, end-to-end Colab walkthrough](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing) of Cognee's core features.\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing)\n\n## Quickstart\n\nLet’s try Cognee in just a few lines of code.\n\n### Prerequisites\n\n- Python 3.10 to 3.14\n\n### Step 1: Install Cognee\n\nYou can install Cognee with **pip**, **poetry**, **uv**, or your preferred Python package manager.\n\n```bash\nuv pip install cognee\n```\n\n### Step 2: Configure the LLM\n```python\nimport os\nos.environ[\"LLM_API_KEY\"] = \"YOUR OPENAI_API_KEY\"\n```\nAlternatively, create a `.env` file using our [template](https://github.com/topoteretes/cognee/blob/main/.env.template).\n\nTo integrate other LLM providers, see our [LLM Provider Documentation](https://docs.cognee.ai/setup-configuration/llm-providers).\n\n### Step 3: Run the Pipeline\n\nCognee's API gives you four operations — `remember`, `recall`, `forget`, and `improve`:\n\n```python\nimport cognee\nimport asyncio\n\n\nasync def main():\n    # Store permanently in the knowledge graph (runs add + cognify + improve)\n    await cognee.remember(\"Cognee turns documents into AI memory.\")\n\n    # Store in session memory (fast cache, syncs to graph in background)\n    await cognee.remember(\"User prefers detailed explanations.\", session_id=\"chat_1\")\n\n    # Query with auto-routing (picks best search strategy automatically)\n    results = await cognee.recall(\"What does Cognee do?\")\n    for result in results:\n        print(result)\n\n    # Query session memory first, fall through to graph if needed\n    results = await cognee.recall(\"What does the user prefer?\", session_id=\"chat_1\")\n    for result in results:\n        print(result)\n\n    # Delete when done\n    await cognee.forget(dataset=\"main_dataset\")\n\n\nif __name__ == '__main__':\n    asyncio.run(main())\n\n```\n\n### Use the Cognee CLI\n\n```bash\ncognee-cli remember \"Cognee turns documents into AI memory.\"\n\ncognee-cli recall \"What does Cognee do?\"\n\ncognee-cli forget --all\n```\n\nTo open the local UI, run:\n```bash\ncognee-cli -ui\n```\n\n> **Note:** The MCP server launched by `cognee-cli -ui` runs inside a Docker container.\n> Docker Desktop, Colima, or any OCI-compatible runtime with a working `docker` CLI is\n> required. See [Docker & Colima Setup](docs/docker-colima-setup.md) for details.\n\n## Run with Docker\n\nPrefer containers? Cognee publishes prebuilt images to Docker Hub on every push to `main`:\n[`cognee/cognee`](https://hub.docker.com/r/cognee/cognee) (the API server) and\n[`cognee/cognee-mcp`](https://hub.docker.com/r/cognee/cognee-mcp) (the MCP server).\n\n### Option A — Docker Compose (build from source)\n\nClone the repo, create a `.env` with at least `LLM_API_KEY`, then:\n\n```bash\ncp .env.template .env   # then edit .env and set LLM_API_KEY\n\n# Start the API server (http://localhost:8000)\ndocker compose up\n\n# Optional profiles (combine as needed):\ndocker compose --profile ui up        # + frontend on http://localhost:3000\ndocker compose --profile mcp up       # + MCP server on http://localhost:8001\ndocker compose --profile postgres up  # + Postgres/PGVector\ndocker compose --profile neo4j up     # + Neo4j\n```\n\n> The `cognee` and `cognee-mcp` services publish different host ports (`8000` vs `8001`),\n> so you can run both at once.\n\n### Option B — Pull the prebuilt image (no clone required)\n\n```bash\n# Create a minimal .env in the current directory\necho 'LLM_API_KEY=\"YOUR_OPENAI_API_KEY\"' > .env\n\n# API server\ndocker run --env-file ./.env -p 8000:8000 --rm -it cognee/cognee:main\n\n# MCP server (HTTP transport)\ndocker pull cognee/cognee-mcp:main\ndocker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main\n```\n\nSee the [MCP server README](cognee-mcp/README.md) for SSE/stdio transports, optional\nextras, and MCP client configuration.\n\n## Use with AI Agents\n\n### Claude Code\n\nInstall the [Cognee memory plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) to give Claude Code persistent memory across sessions. The plugin captures prompts, tool traces, and assistant responses into session memory, injects relevant context on every prompt, and syncs session memory into the permanent knowledge graph at session end.\n\n**Install** from the Claude Code marketplace. The recommended way is from your shell, *before* launching Claude Code, so the first `claude` launch is a clean session that bootstraps memory automatically:\n\n```bash\n# Add the marketplace and install the plugin (one-time, user-scoped)\nclaude plugin marketplace add topoteretes/cognee-integrations\nclaude plugin install cognee-memory@cognee\n\n# Set env vars for your mode (see below), then launch\nexport LLM_API_KEY=\"sk-...\"   # local mode; or COGNEE_BASE_URL + COGNEE_API_KEY for cloud\nclaude\n```\n\n**Local mode** (default) — the plugin bootstraps a local Cognee API at `http://localhost:8011`. Only `LLM_API_KEY` is required; the Cognee API key is auto-minted if absent:\n\n```bash\nexport LLM_API_KEY=\"sk-...\"\n```\n\n**Cognee Cloud or a remote server** — set both:\n\n```bash\nexport COGNEE_BASE_URL=\"https://your-instance.cognee.ai\"\nexport COGNEE_API_KEY=\"ck_...\"\n```\n\nOn startup you should see a \"Cognee Memory Connected\" system message.\n\nThe plugin hooks into Claude Code's lifecycle — `SessionStart` selects mode and sets up identity, `UserPromptSubmit` injects dataset-scoped context, `PostToolUse` captures tool traces, `Stop` writes the assistant's answer, `PreCompact` preserves memory across context resets, and `SessionEnd` triggers the final sync into the permanent graph.\n\nSee the [plugin README](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) for sessions, datasets, and full configuration.\n\n### Connect to Cognee Cloud\n\nPoint any Python agent at a managed Cognee instance — all SDK calls route to the cloud:\n\n```python\nimport cognee\n\nawait cognee.serve(url=\"https://your-instance.cognee.ai\", api_key=\"ck_...\")\n\nawait cognee.remember(\"important context\")\nresults = await cognee.recall(\"what happened?\")\n\nawait cognee.disconnect()\n```\n\n## Examples\n\nBrowse more examples in the [`examples/`](examples/) folder — demos, guides, custom pipelines, and database configurations.\n\n**Use Case 1 — Customer Support Agent**\n\n```python\nGoal: Resolve customer issues using their personal data across finance, support, and product history.\n\nUser: \"My invoice looks wrong and the issue is still not resolved.\"\n\nCognee tracks: past interactions, failed actions, resolved cases, product history\n\n# Agent response:\nAgent: \"I found 2 similar billing cases resolved last month.\n        The issue was caused by a syn",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"cognee\"\n\nversion = \"1.2.2\"\ndescription = \"Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning.\"\nauthors = [\n    { name = \"Vasilije Markovic\" },\n    { name = \"Boris Arzentar\" },\n]\nrequires-python = \">=3.10,<3.15\"\nreadme = \"README.md\"\nlicense = \"Apache-2.0\"\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Topic :: Software Development :: Libraries\",\n    \"Operating System :: MacOS :: MacOS X\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Operating System :: Microsoft :: Windows\",\n]\ndependencies = [\n    \"openai>=1.80.1\",\n    \"python-dotenv>=1.0.1,<2.0.0\",\n    \"pydantic>=2.10.5\",\n    # GHSA-4xgf-cpjx-pc3j: 2.12.0–2.14.1 vulnerable, fixed in 2.14.2. Exclude the\n    # vulnerable range rather than capping, so the patched 2.14.2+ is adopted once\n    # it clears the `exclude-newer` window (it was <2 days old at time of writing).\n    \"pydantic-settings>=2.2.1,!=2.12.*,!=2.13.*,!=2.14.0,!=2.14.1,<3\",\n    \"typing_extensions>=4.12.2,<5.0.0\",\n    \"numpy>=1.26.4, <=4.0.0\",\n    \"sqlalchemy>=2.0.39,<3.0.0\",\n    \"aiosqlite>=0.20.0,<1.0.0\",\n    \"filelock>=3.12.0,<4.0.0\",  # cross-process migration lock for SQLite (Linux/macOS/Windows)\n    \"tiktoken>=0.8.0,<1.0.0\",\n    \"litellm>=1.83.7\",\n    \"instructor>=1.9.1,<1.15.3\",\n    \"filetype>=1.2.0,<2.0.0\",\n    \"aiohttp>=3.13.5,<4.0.0\",\n    \"aiofiles>=23.2.1\",\n    \"rdflib>=7.1.4,<7.2.0\",\n    \"pypdf>=6.6.2,<7.0.0\",\n    \"jinja2>=3.1.3,<4\",\n    \"lancedb>=0.24.3,<1.0.0\",  # 0.24.2 bundles lance 0.32.0 whose list-column decoder panics on tables with deletion vectors\n    \"nbformat>=5.7.0,<6.0.0\",\n    \"alembic>=1.13.3,<2\",\n    \"limits>=4.4.1,<5\",\n    \"fastapi>=0.116.2,<1.0.0\",\n    \"starlette>=0.48\",\n    \"python-multipart>=0.0.22,<1.0.0\",\n    \"fastapi-users[sqlalchemy]>=15.0.2\",\n    \"structlog>=25.2.0,<26\",\n    \"pympler>=1.1,<2.0.0\",\n    \"pylance>=0.22.0,<=0.36.0\",\n    \"ladybug>=0.16.0,<0.18\",\n    \"python-magic-bin<0.5 ; platform_system == 'Windows'\", # Only needed for Windows\n    \"networkx>=3.4.2,<4\",\n    \"uvicorn>=0.34.0,<1.0.0\",\n    \"gunicorn>=20.1.0,<24\",\n    \"websockets>=15.0.1,<16.0.0\",\n    \"tenacity>=9.0.0\",\n    \"fakeredis[lua]>=2.32.0\",\n    \"diskcache>=5.6.3\",\n    \"aiolimiter>=1.2.1\",\n    \"urllib3>=2.6.0\",\n    \"cbor2>=5.8.0\",\n    \"langdetect>=1.0.9\",\n    \"datamodel-code-generator>=0.54.0\",\n]\n\n[project.optional-dependencies]\napi=[]\n\ndistributed = [\n    \"modal>=1.0.5,<2.0.0\",\n]\n\nscraping = [\n    \"tavily-python>=0.7.12\",\n    \"beautifulsoup4>=4.13.1\",\n    \"playwright>=1.9.0\",\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1; without this 3.14 falls back to a\n    # source build that requires libxml2/libxslt headers (CI doesn't have them).\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"protego>=0.1\",\n    \"APScheduler>=3.10.0,<=3.11.0\"\n]\n\nfastembed = [\n    \"fastembed<=0.8.0\",\n    # onnxruntime 1.23.2 only ships wheels through cp313; cp314 wheels start\n    # at onnxruntime 1.24.1. Split by python_version so existing 3.10–3.13\n    # users keep the pinned version and 3.14 picks up the first cp314-capable\n    # release.\n    \"onnxruntime<=1.23.2 ; python_version < '3.14'\",\n    \"onnxruntime>=1.24.1 ; python_version >= '3.14'\",\n]\n\nneo4j = [\"neo4j>=5.28.0,<6\"]\nneptune = [\"langchain_aws>=0.2.22\"]\npostgres = [\n    \"psycopg2>=2.9.10,<3\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\npostgres-binary = [\n    \"psycopg2-binary>=2.9.10,<3.0.0\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\nnotebook = [\"notebook>=7.1.0,<8\"]\nlangchain = [\n    \"langsmith>=0.2.3,<1.0.0\",\n    \"langchain_text_splitters>=0.3.2,<1.0.0\",\n    \"langchain-core>=1.2.5\"\n]\nllama-index = [\"llama-index-core>=0.14.20,<0.15\"]\nhuggingface = [\"transformers>=4.46.3,<5\"]\nollama = [\"transformers>=4.46.3,<5\"]\nmistral = [\"mistral-common>=1.5.2,<2\", \"mistralai>=1.9.10,<2\"]\nanthropic = [\"anthropic>=0.27\"]\nazure = [\"azure-identity>=1.15.0,<2\"]\ndeepeval = [\"deepeval>=3.0.1,<4\"]\nposthog = [\"posthog>=3.5.0,<4\"]\ngroq = [\"groq>=0.8.0,<1.0.0\"]\nllama-cpp = [\"llama-cpp-python[server]>=0.3.0,<1.0.0\"]\ndocs = [\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1.\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"unstructured[csv, doc, docx, epub, md, odt, org, ppt, pptx, rst, rtf, tsv, xlsx, pdf]>=0.18.1,<19\",\n    \"nltk>=3.9.3,<4\", # TODO: Remove when unstructured is above v0.21.0 as it won't use nltk anymore\n]\ncodegraph = [\n    \"fastembed<=0.8.0 ; python_version < '3.14'\",\n    \"transformers>=4.46.3,<5\",\n    \"tree-sitter>=0.24.0,<0.25\",\n    \"tree-sitter-python>=0.23.6,<0.24\",\n]\nevals = [\n    \"plotly>=6.0.0,<7\",\n    \"gdown>=5.2.0,<6\",\n    \"pandas>=2.2.2,<3.0.0\",\n    \"matplotlib>=3.8.3,<4\",\n    \"scikit-learn>=1.6.1,<2\",\n    \"locust>",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "rag",
      "skill",
      "llm",
      "vector",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 96
    },
    "strategic_score": 96
  },
  {
    "owner": "alibaba",
    "name": "page-agent",
    "full_name": "alibaba/page-agent",
    "url": "https://github.com/alibaba/page-agent",
    "description": "JavaScript in-page GUI agent. Control web interfaces with natural language.",
    "language": "TypeScript",
    "total_stars": 20201,
    "forks": 1735,
    "stars_this_period": 554,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "ai-agents",
        "browser-automation",
        "javascript",
        "mcp",
        "typescript",
        "web"
      ],
      "license": "MIT",
      "open_issues": 49,
      "created_at": "2025-09-23T09:30:17Z",
      "pushed_at": "2026-06-25T17:07:30Z",
      "homepage": "https://alibaba.github.io/page-agent/",
      "default_branch": "main",
      "forks": 1735,
      "watchers": 60,
      "archived": false,
      "size_kb": 3111
    },
    "readme_content": "# Page Agent\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://page-agent.github.io/assets/readme/banner-dark.png\">\n  <img alt=\"Page Agent Banner\" src=\"https://page-agent.github.io/assets/readme/banner-light.png\">\n</picture>\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-auto.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/) [![Bundle Size](https://img.shields.io/bundlephobia/minzip/page-agent)](https://bundlephobia.com/package/page-agent) [![Downloads](https://img.shields.io/npm/dt/page-agent.svg)](https://www.npmjs.com/package/page-agent) [![GitHub stars](https://img.shields.io/github/stars/alibaba/page-agent.svg)](https://github.com/alibaba/page-agent)\n\nThe GUI Agent Living in Your Webpage. Control web interfaces with natural language.\n\n🌐 **English** | [中文](./docs/README-zh.md)\n\n<a href=\"https://alibaba.github.io/page-agent/\" target=\"_blank\"><b>🚀 Demo</b></a> | <a href=\"https://alibaba.github.io/page-agent/docs/introduction/overview\" target=\"_blank\"><b>📖 Docs</b></a> | <a href=\"https://news.ycombinator.com/item?id=47264138\" target=\"_blank\"><b>📢 HN Discussion</b></a> | <a href=\"https://x.com/simonluvramen\" target=\"_blank\"><b>𝕏 Follow on X</b></a>\n\n<!-- demo video -->\n\nhttps://github.com/user-attachments/assets/a1f2eae2-13fb-4aae-98cf-a3fc1620a6c2\n\n---\n\n## ✨ Features\n\n- **🎯 Easy integration**\n    - No need for `browser extension` / `python` / `headless browser`.\n    - Just in-page javascript. Everything happens in your web page.\n- **📖 Text-based DOM manipulation**\n    - No screenshots. No multi-modal LLMs or special permissions needed.\n- **🧠 Bring your own LLMs**\n- **🐙 Optional [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension) for multi-page tasks.**\n    - And an [MCP Server (Beta)](https://alibaba.github.io/page-agent/docs/features/mcp-server) to control it from outside\n\n## 💡 Use Cases\n\n- **SaaS AI Copilot** — Ship an AI copilot in your product in lines of code. No backend rewrite.\n- **Smart Form Filling** — Turn 20-click workflows into one sentence. Perfect for ERP, CRM, and admin systems.\n- **Accessibility** — Make any web app accessible through natural language. Voice commands, screen readers, zero barrier.\n- **Multi-page Agent** — Extend your own web agent's reach across browser tabs [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension).\n- **MCP** - Allow your agent clients to control your browser.\n\n## 🚀 Quick Start\n\n### One-line integration\n\nFastest way to try PageAgent with our free Demo LLM:\n\n```html\n<script src=\"{URL}\" crossorigin=\"true\"></script>\n```\n\n> **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you agree to its [terms](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md).\n\n| Mirrors | URL                                                                                 |\n| ------- | ----------------------------------------------------------------------------------- |\n| Global  | https://cdn.jsdelivr.net/npm/page-agent@1.10.0/dist/iife/page-agent.demo.js         |\n| China   | https://registry.npmmirror.com/page-agent/1.10.0/files/dist/iife/page-agent.demo.js |\n\nAdd `?autoInit=false` to load the script without creating the demo agent automatically. You can then instantiate it with `new window.PageAgent(...)`.\n\n### NPM Installation\n\n```bash\nnpm install page-agent\n```\n\n```javascript\nimport { PageAgent } from 'page-agent'\n\nconst agent = new PageAgent({\n    model: 'qwen3.5-plus',\n    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n    apiKey: 'YOUR_API_KEY',\n    language: 'en-US',\n})\n\nawait agent.execute('Click the login button')\n```\n\nFor more programmatic usage, see [📖 Documentations](https://alibaba.github.io/page-agent/docs/introduction/overview).\n\n## 🌟 Awesome Page Agent\n\nBuilt something cool with PageAgent? Add it here! Open a PR to share your project.\n\n> These are community projects — not maintained or endorsed by us. Use at your own discretion.\n\n| Project  | Description                                                 |\n| -------- | ----------------------------------------------------------- |\n| _Yours?_ | [Open a PR](https://github.com/alibaba/page-agent/pulls) 🙌 |\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines and [docs/developer-guide.md](docs/developer-guide.md) for local development workflows.\n\nPlease read the [maintainer's note](https://github.com/alibaba/page-agent/issues/349) on principles and current state.\n\nContributions generated entirely by **bots or AI** without substantial human involvement will **not be accepted**.\n\n## ⚖️ License\n\n[MIT License](LICENSE)\n\n## 👏 Acknowledgments\n\nThis project builds upon the excellent work of **[`browser-use`](https://github.com/browser-use/browser-use)**.\n\n`PageAgent` is designed for **client-side web enhancement**, not server-side automation.\n\n```\nDOM processing components and prompt are derived from browser-use:\n\nBrowser Use <https://github.com/browser-use/browser-use>\nCopyright (c) 2024 Gregor Zunic\nLicensed under the MIT License\n\nWe gratefully acknowledge the browser-use project and its contributors for their\nexcellent work on web automation and DOM interaction patterns that helped make\nthis project possible.\n```\n\n---\n\n**⭐ Star this repo if you find PageAgent helpful!**\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n    \"name\": \"root\",\n    \"private\": true,\n    \"version\": \"1.10.0\",\n    \"type\": \"module\",\n    \"workspaces\": [\n        \"packages/page-controller\",\n        \"packages/ui\",\n        \"packages/llms\",\n        \"packages/core\",\n        \"packages/page-agent\",\n        \"packages/mcp\",\n        \"packages/extension\",\n        \"packages/website\"\n    ],\n    \"description\": \"AI-powered UI agent for web applications\",\n    \"author\": \"Simon<gaomeng1900>\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/alibaba/page-agent.git\"\n    },\n    \"homepage\": \"https://alibaba.github.io/page-agent/\",\n    \"engines\": {\n        \"node\": \"^22.22.1 || >=24\",\n        \"npm\": \"^11.6.3\"\n    },\n    \"scripts\": {\n        \"start\": \"npm run dev --workspace=@page-agent/website\",\n        \"dev:ext\": \"npm run dev -w @page-agent/ext\",\n        \"dev:demo\": \"npm run dev:demo --workspace=page-agent\",\n        \"build\": \"node scripts/build.js\",\n        \"build:libs\": \"node scripts/build-libs.js\",\n        \"build:website\": \"npm run build:website --workspace=@page-agent/website\",\n        \"build:ext\": \"npm run zip -w @page-agent/ext\",\n        \"version\": \"node scripts/sync-version.js\",\n        \"postpublish\": \"npm run postpublish --workspaces --if-present\",\n        \"typecheck\": \"tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json\",\n        \"test\": \"npm test --workspaces --if-present\",\n        \"lint\": \"eslint .\",\n        \"ci\": \"node scripts/ci.js\",\n        \"cleanup\": \"rm -rf packages/*/dist && rm -rf packages/*/.output\",\n        \"prepare\": \"husky || true\"\n    },\n    \"devDependencies\": {\n        \"@commitlint/cli\": \"^21.0.1\",\n        \"@commitlint/config-conventional\": \"^21.0.1\",\n        \"@eslint-react/eslint-plugin\": \"^5.9.2\",\n        \"@eslint/js\": \"^10.0.1\",\n        \"@microsoft/api-extractor\": \"^7.58.9\",\n        \"@tailwindcss/vite\": \"^4.3.1\",\n        \"@trivago/prettier-plugin-sort-imports\": \"^6.0.2\",\n        \"@types/node\": \"^26.0.0\",\n        \"@vitejs/plugin-react\": \"^6.0.2\",\n        \"chalk\": \"^5.6.2\",\n        \"concurrently\": \"^10.0.3\",\n        \"dotenv\": \"^17.4.2\",\n        \"eslint\": \"^10.5.0\",\n        \"globals\": \"^17.7.0\",\n        \"happy-dom\": \"^20.10.6\",\n        \"husky\": \"^9.1.7\",\n        \"lint-staged\": \"^17.0.8\",\n        \"prettier\": \"^3.8.4\",\n        \"typescript\": \"^6.0.3\",\n        \"typescript-eslint\": \"^8.62.0\",\n        \"unplugin-dts\": \"^1.0.1\",\n        \"vite\": \"^8.0.14\",\n        \"vite-plugin-css-injected-by-js\": \"^5.0.1\",\n        \"vitest\": \"^4.1.9\"\n    },\n    \"overrides\": {\n        \"typescript\": \"^6.0.3\",\n        \"node-notifier\": {\n            \"uuid\": \"11.1.1\"\n        },\n        \"web-ext-run\": {\n            \"tmp\": \"0.2.7\"\n        }\n    },\n    \"lint-staged\": {\n        \"*.{js,ts,cjs,cts,mjs,mts}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.{jsx,tsx}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.css\": [\n            \"npx prettier --write --ignore-unknown\"\n        ]\n    },\n    \"commitlint\": {\n        \"extends\": [\n            \"@commitlint/config-conventional\"\n        ],\n        \"rules\": {\n            \"subject-case\": [\n                0,\n                \"never\"\n            ]\n        }\n    },\n    \"prettier\": {\n        \"singleQuote\": true,\n        \"semi\": false,\n        \"useTabs\": true,\n        \"printWidth\": 100,\n        \"trailingComma\": \"es5\",\n        \"plugins\": [\n            \"@trivago/prettier-plugin-sort-imports\"\n        ],\n        \"importOrder\": [\n            \"<THIRD_PARTY_MODULES>\",\n            \"^(@/).*(?<!css)$\",\n            \"^[./].*(?<!css)$\",\n            \".css$\"\n        ],\n        \"importOrderSeparation\": true,\n        \"importOrderSortSpecifiers\": true,\n        \"overrides\": [\n            {\n                \"files\": \"*.md\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            },\n            {\n                \"files\": \"*.json\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            }\n        ]\n    }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "workspace",
      "llm",
      "eval",
      "workflow",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "owner": "googleworkspace",
    "name": "cli",
    "full_name": "googleworkspace/cli",
    "url": "https://github.com/googleworkspace/cli",
    "description": "Google Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.",
    "language": "Rust",
    "total_stars": 28867,
    "forks": 1620,
    "stars_this_period": 240,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "agent-skills",
        "ai-agent",
        "automation",
        "cli",
        "discovery-api",
        "gemini-cli-extension",
        "google-admin",
        "google-api",
        "google-calendar",
        "google-chat",
        "google-docs",
        "google-drive",
        "google-sheets",
        "google-workspace",
        "oauth2",
        "rust"
      ],
      "license": "Apache-2.0",
      "open_issues": 124,
      "created_at": "2026-03-02T19:46:06Z",
      "pushed_at": "2026-06-26T15:48:22Z",
      "homepage": "https://developers.google.com/workspace",
      "default_branch": "main",
      "forks": 1620,
      "watchers": 94,
      "archived": false,
      "size_kb": 10744
    },
    "readme_content": "<h1 align=\"center\">gws</h1>\n\n**One CLI for all of Google Workspace — built for humans and AI agents.**<br>\nDrive, Gmail, Calendar, and every Workspace API. Zero boilerplate. Structured JSON output. 40+ agent skills included.\n\n> [!NOTE]\n> This is **not** an officially supported Google product.\n\n<p>\n  <a href=\"https://www.npmjs.com/package/@googleworkspace/cli\"><img src=\"https://img.shields.io/npm/v/@googleworkspace/cli\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/googleworkspace/cli/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/googleworkspace/cli\" alt=\"license\"></a>\n  <a href=\"https://github.com/googleworkspace/cli/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/googleworkspace/cli/ci.yml?branch=main&label=CI\" alt=\"CI status\"></a>\n  <a href=\"https://www.npmjs.com/package/@googleworkspace/cli\"><img src=\"https://img.shields.io/npm/unpacked-size/@googleworkspace/cli\" alt=\"install size\"></a>\n</p>\n<br>\n\n⬇️ **[Download the latest release for your OS](https://github.com/googleworkspace/cli/releases)**\n\n`gws` doesn't ship a static list of commands. It reads Google's own [Discovery Service](https://developers.google.com/discovery) at runtime and builds its entire command surface dynamically. When Google Workspace adds an API endpoint or method, `gws` picks it up automatically.\n\n> [!IMPORTANT]\n> This project is under active development. Expect breaking changes as we march toward v1.0.\n\n## Contents\n\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Why gws?](#why-gws)\n- [Authentication](#authentication)\n- [AI Agent Skills](#ai-agent-skills)\n- [Advanced Usage](#advanced-usage)\n- [Environment Variables](#environment-variables)\n- [Exit Codes](#exit-codes)\n- [Architecture](#architecture)\n- [Troubleshooting](#troubleshooting)\n- [Development](#development)\n\n## Prerequisites\n\n- **Node.js 18+** — for `npm install` (or download a pre-built binary from [GitHub Releases](https://github.com/googleworkspace/cli/releases))\n- **A Google Cloud project** — required for OAuth credentials. You can create one via the [Google Cloud Console](https://console.cloud.google.com/) or with the [`gcloud` CLI](https://cloud.google.com/sdk/docs/install) or with the `gws auth setup` command.\n- **A Google account** with access to Google Workspace\n\n## Installation\n\nThe recommended way to install `gws` is to download the pre-built binary for your OS and architecture from the **[GitHub Releases](https://github.com/googleworkspace/cli/releases)** page. Extract the archive and place the `gws` binary in your `$PATH`.\n\nFor convenience, you can also use `npm` to automate downloading the appropriate binary from GitHub Releases:\n\n```bash\nnpm install -g @googleworkspace/cli\n```\n\nOr build from source:\n\n```bash\ncargo install --git https://github.com/googleworkspace/cli --locked\n```\n\nA Nix flake is also available at `github:googleworkspace/cli`\n\n```bash\nnix run github:googleworkspace/cli\n```\n\nOn macOS and Linux, you can also install via [Homebrew](https://brew.sh/):\n\n```bash\nbrew install googleworkspace-cli\n```\n\n## Quick Start\n\n```bash\ngws auth setup     # walks you through Google Cloud project config\ngws auth login     # subsequent OAuth login\ngws drive files list --params '{\"pageSize\": 5}'\n```\n\n## Why gws?\n\n**For humans** — stop writing `curl` calls against REST docs. `gws` gives you `--help` on every resource, `--dry-run` to preview requests, and auto‑pagination.\n\n**For AI agents** — every response is structured JSON. Pair it with the included agent skills and your LLM can manage Workspace without custom tooling.\n\n```bash\n# List the 10 most recent files\ngws drive files list --params '{\"pageSize\": 10}'\n\n# Create a spreadsheet\ngws sheets spreadsheets create --json '{\"properties\": {\"title\": \"Q1 Budget\"}}'\n\n# Send a Chat message\ngws chat spaces messages create \\\n  --params '{\"parent\": \"spaces/xyz\"}' \\\n  --json '{\"text\": \"Deploy complete.\"}' \\\n  --dry-run\n\n# Introspect any method's request/response schema\ngws schema drive.files.list\n\n# Stream paginated results as NDJSON\ngws drive files list --params '{\"pageSize\": 100}' --page-all | jq -r '.files[].name'\n```\n\n## Authentication\n\nThe CLI supports multiple auth workflows so it works on your laptop, in CI, and on a server.\n\n### Which setup should I use?\n\n| I have… | Use |\n|---|---|\n| `gcloud` installed and authenticated | [`gws auth setup`](#interactive-local-desktop) (fastest) |\n| A GCP project but no `gcloud` | [Manual OAuth setup](#manual-oauth-setup-google-cloud-console) |\n| An existing OAuth access token | [`GOOGLE_WORKSPACE_CLI_TOKEN`](#pre-obtained-access-token) |\n| Existing Credentials | [`GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE`](#service-account-server-to-server) |\n\n### Interactive (local desktop)\n\nCredentials are encrypted at rest (AES-256-GCM) with the key stored in your OS keyring (or `~/.config/gws/.encryption_key` when `GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file`).\n\n```bash\ngws auth setup       # one-time: creates a Cloud project, enables APIs, logs you in\ngws auth login       # subsequent scope selection and login\n```\n\n> `gws auth setup` requires the [`gcloud` CLI](https://cloud.google.com/sdk/docs/install). If you don't have `gcloud`, use the [manual setup](#manual-oauth-setup-google-cloud-console) below instead.\n\n> [!WARNING]\n> **Scope limits in testing mode:** If your OAuth app is unverified (testing mode),\n> Google limits consent to ~25 scopes. The `recommended` scope preset includes 85+\n> scopes and **will fail** for unverified apps (especially for `@gmail.com` accounts).\n> Choose individual services instead to filter the scope picker:\n> ```bash\n> gws auth login -s drive,gmail,sheets\n> ```\n\n\n### Manual OAuth setup (Google Cloud Console)\n\nUse this when `gws auth setup` cannot automate project/client creation, or when you want explicit control.\n\n1. Open Google Cloud Console in the target project:\n   - OAuth consent screen: `https://console.cloud.google.com/apis/credentials/consent?project=<PROJECT_ID>`\n   - Credentials: `https://console.cloud.google.com/apis/credentials?project=<PROJECT_ID>`\n2. Configure OAuth branding/audience if prompted:\n   - App type: **External** (testing mode is fine)\n3. Add your account under **Test users**\n4. Create an OAuth client:\n   - Type: **Desktop app**\n5. Download the client JSON and save it to:\n   - `~/.config/gws/client_secret.json`\n\n> [!IMPORTANT]\n> **You must add yourself as a test user.** In the OAuth consent screen, click\n> **Test users → Add users** and enter your Google account email. Without this,\n> login will fail with a generic \"Access blocked\" error.\n\nThen run:\n\n```bash\ngws auth login\n```\n\n### Browser-assisted auth (human or agent)\n\nYou can complete OAuth either manually or with browser automation.\n\n- **Human flow**: run `gws auth login`, open the printed URL, approve scopes.\n- **Agent-assisted flow**: the agent opens the URL, selects account, handles consent prompts, and returns control once the localhost callback succeeds.\n\nIf consent shows **\"Google hasn't verified this app\"** (testing mode), click **Continue**.\nIf scope checkboxes appear, select required scopes (or **Select all**) before continuing.\n\n### Headless / CI (export flow)\n\n1. Complete interactive auth on a machine with a browser.\n2. Export credentials:\n   ```bash\n   gws auth export --unmasked > credentials.json\n   ```\n3. On the headless machine:\n   ```bash\n   export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json\n   gws drive files list   # just works\n   ```\n\n### Service Account (server-to-server)\n\nPoint to your key file; no login needed.\n\n```bash\nexport GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/service-account.json\ngws drive files list\n```\n\n### Pre-obtained Access Token\n\nUseful when another tool (e.g. `gcloud`) already mints tokens for your environment.\n\n```bash\nexport GOOGLE_WORKSPACE_CLI_TOKEN=$(gcloud auth print-access-token)\n```\n\n### Precedence\n\n| Priority | Source                 | Set via                                 |\n| -------- | ---------------------- | --------------------------------------- |\n| 1        | Access token           | `GOOGLE_WORKSPACE_CLI_TOKEN`            |\n| 2        | Credentials file       | `GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE` |\n| 3        | Encrypted credentials  | `gws auth login`                        |\n| 4        | Plaintext credentials  | `~/.config/gws/credentials.json`        |\n\nEnvironment variables can also live in a `.env` file.\n\n## AI Agent Skills\n\nThe repo ships 100+ Agent Skills (`SKILL.md` files) — one for every supported API, plus higher-level helpers for common workflows and 50 curated recipes for Gmail, Drive, Docs, Calendar, and Sheets. See the full [Skills Index](docs/skills.md) for the complete list.\n\n```bash\n# Install all skills at once\nnpx skills add https://github.com/googleworkspace/cli\n\n# Or pick only what you need\nnpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drive\nnpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail\n```\n\n<details>\n<summary>OpenClaw setup</summary>\n\n```bash\n# Symlink all skills (stays in sync with repo)\nln -s $(pwd)/skills/gws-* ~/.openclaw/skills/\n\n# Or copy specific skills\ncp -r skills/gws-drive skills/gws-gmail ~/.openclaw/skills/\n```\n\nThe `gws-shared` skill includes an `install` block so OpenClaw auto-installs the CLI via `npm` if `gws` isn't on PATH.\n\n</details>\n\n## Gemini CLI Extension\n\n1. Authenticate the CLI first:\n\n   ```bash\n   gws auth setup\n   ```\n\n2. Install the extension into the Gemini CLI:\n   ```bash\n   gemini extensions install https://github.com/googleworkspace/cli\n   ```\n\nInstalling this extension gives your Gemini CLI agent direct access to all `gws` commands and Google Workspace agent skills. Because `gws` handles its own authentication securely, you simply need to authenticate your terminal once prior to using the agent, and the extension will automatically inherit your credentials.\n\n## Advanced Usage\n\n### Multipart Uploads\n\n```bash\ngws drive files create --json '{\"name\": \"report.pdf\"}' --upload ./report.pdf\n```\n\n### Pagination\n\n| Flag                | Description                                    | Default |\n| ------------------- | ---------------------------------------------- | ------- |\n| `--page-all`        | Auto-paginate, one JSON line per page (NDJSON) | off     |\n| `--page-limit <N>`  | Max pages to fetch                             | 10      |\n| `--page-delay <MS>` | Delay between pages                            | 100 ms  |\n\n### Google Sheets — Shell Escaping\n\nSheets ranges use `!` which bash interprets as history expansion. Always wrap values in **single quotes**:\n\n```bash\n# Read cells A1:C10 from \"Sheet1\"\ngws sheets spreadsheets values get \\\n  --params '{\"spreadsheetId\": \"SPREADSHEET_ID\", \"range\": \"Sheet1!A1:C10\"}'\n\n# Append rows\ngws sheets spreadsheets values append \\\n  --params '{\"spreadsheetId\": \"ID\", \"range\": \"Sheet1!A1\", \"valueInputOption\": \"USER_ENTERED\"}' \\\n  --json '{\"values\": [[\"Name\", \"Score\"], [\"Alice\", 95]]}'\n```\n\n### Helper Commands\n\nSome services ship hand-crafted helper commands alongside the auto-generated Discovery surface. Helper commands are prefixed with `+` so they are visually distinct and never collide with Discovery-generated method names.\n\nTime-aware helpers (`+agenda`, `+standup-report`, `+weekly-digest`, `+meeting-prep`) automatically use your **Google account timezone** (fetched from Calendar Settings API and cached for 24 hours). Override with `--timezone`/`--tz` on `+agenda`, or set the `--timezone` flag for explicit control.\n\nRun `gws <service> --help` to see both Discovery methods and helper commands together.\n\n```bash\ngws gmail --help      # shows +send, +reply, +reply-all, +forward, +triage, +watch …\ngws calendar --help   # shows +insert, +agenda …\ngws drive --help      # shows +upload …\n```\n\n**Full helper reference:**\n\n| Service | Command | Description |\n|---------|---------|-------------|\n| `gmail` | `+send` | Send a",
    "manifest_file": "Cargo.toml",
    "manifest_content": "# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n[workspace]\nmembers = [\"crates/google-workspace-cli\", \"crates/google-workspace\"]\nresolver = \"2\"\n\n# The profile that 'cargo dist' will build with\n[profile.dist]\ninherits = \"release\"\nlto = \"thin\"\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill",
      "workspace",
      "llm",
      "workflow",
      "automation"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "owner": "warpdotdev",
    "name": "warp",
    "full_name": "warpdotdev/warp",
    "url": "https://github.com/warpdotdev/warp",
    "description": "Warp is an agentic development environment, born out of the terminal.",
    "language": "Rust",
    "total_stars": 62450,
    "forks": 5112,
    "stars_this_period": 75,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "bash",
        "linux",
        "macos",
        "rust",
        "shell",
        "terminal",
        "wasm",
        "zsh"
      ],
      "license": "AGPL-3.0",
      "open_issues": 4425,
      "created_at": "2021-07-08T18:48:08Z",
      "pushed_at": "2026-06-26T21:59:18Z",
      "homepage": "https://warp.dev",
      "default_branch": "master",
      "forks": 5112,
      "watchers": 346,
      "archived": false,
      "size_kb": 289949
    },
    "readme_content": "<a href=\"https://www.warp.dev\">\n    <img width=\"1024\" alt=\"Warp Agentic Development Environment product preview\" src=\"https://github.com/user-attachments/assets/9976b2da-2edd-4604-a36c-8fd53719c6d4\" />\n</a>\n&nbsp;\n<p align=\"center\">\n  <a href=\"https://www.warp.dev\"><img height=\"20\" alt=\"Built with Warp\" src=\"https://raw.githubusercontent.com/warpdotdev/brand-assets/main/Github/Built-With-Warp-Export@2x.png\" /></a>\n  &nbsp;\n  <a href=\"https://oz.warp.dev\"><img height=\"20\" alt=\"Powered by Oz\" src=\"https://raw.githubusercontent.com/warpdotdev/brand-assets/main/Github/Powered-By-Oz-Export@2x.png\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.warp.dev\">Website</a>\n  ·\n  <a href=\"https://www.warp.dev/code\">Code</a>\n  ·\n  <a href=\"https://www.warp.dev/agents\">Agents</a>\n  ·\n  <a href=\"https://www.warp.dev/terminal\">Terminal</a>\n  ·\n  <a href=\"https://www.warp.dev/drive\">Drive</a>\n  ·\n  <a href=\"https://docs.warp.dev\">Docs</a>\n  ·\n  <a href=\"https://www.warp.dev/blog/how-warp-works\">How Warp Works</a>\n</p>\n\n> [!NOTE]\n> OpenAI is the founding sponsor of the new, open-source Warp repository, and the new agentic management workflows are powered by GPT models.\n\n<h1></h1>\n\n## About\n\n[Warp](https://www.warp.dev) is an agentic development environment, born out of the terminal. Use Warp's built-in coding agent, or bring your own CLI agent (Claude Code, Codex, Gemini CLI, and others).\n\n## Installation\n\nYou can [download Warp](https://www.warp.dev/download) and [read our docs](https://docs.warp.dev/) for platform-specific instructions.\n\n## Warp Contributions Overview Dashboard\n\nExplore [build.warp.dev](https://build.warp.dev) to:\n- Watch thousands of Oz agents triage issues, write specs, implement changes, and review PRs\n- View top contributors and in-flight features\n- Track your own issues with GitHub sign-in\n- Click into active agent sessions in a web-compiled Warp terminal\n\n## Oz for OSS\n\nMaintaining a popular open-source project? [Apply for Oz credits](https://tally.so/r/LZWxqG) to explore [Oz for OSS](https://github.com/warpdotdev/oz-for-oss).\n\nOz for OSS is our partner program for bringing the same agentic open-source management workflows used in this repository to select partner repositories. We work directly with maintainers to implement workflows for issue triage, PR review, community management, and contributor coordination in a way that fits each project.\n\n## Licensing\n\nWarp's UI framework (the `warpui_core` and `warpui` crates) are licensed under the [MIT license](LICENSE-MIT).\n\nThe rest of the code in this repository is licensed under the [AGPL v3](LICENSE-AGPL).\n\n## Open Source & Contributing\n\nWarp's client codebase is open source and lives in this repository. We welcome community contributions and have designed a lightweight workflow to help new contributors get started. For the full contribution flow, read our [CONTRIBUTING.md](CONTRIBUTING.md) guide.\n\n> [!TIP]\n> **Chat with contributors and the Warp team** in the [`#oss-contributors`](https://warpcommunity.slack.com/archives/C0B0LM8N4DB) Slack channel — a good place for ad-hoc questions, design discussion, and pairing with maintainers. New here? [Join the Warp Slack community](https://go.warp.dev/join-preview) first, then jump into `#oss-contributors`.\n\n### Issue to PR\n\nBefore filing, [search existing issues](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) for your bug or feature request. If nothing exists, [file an issue](https://github.com/warpdotdev/warp/issues/new/choose) using our templates. Security vulnerabilities should be reported privately as described in [CONTRIBUTING.md](CONTRIBUTING.md#reporting-security-issues).\n\nOnce filed, a Warp maintainer reviews the issue and may apply a readiness label: [`ready-to-spec`](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+label%3Aready-to-spec) signals the design is open for contributors to spec out, and [`ready-to-implement`](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+label%3Aready-to-implement) signals the design is settled and code PRs are welcome. Anyone can pick up a labeled issue — mention **@oss-maintainers** on an issue if you'd like it considered for a readiness label.\n\n### Building the Repo Locally\n\nTo build and run Warp from source:\n\n```bash\n./script/bootstrap   # platform-specific setup\n./script/run         # build and run Warp\n./script/presubmit   # fmt, clippy, and tests\n```\n\nSee [AGENTS.md](AGENTS.md) for the full engineering guide, including coding style, testing, and platform-specific notes.\n\n## Joining the Team\n\nInterested in joining the team? See our [open roles](https://www.warp.dev/careers).\n\n## Support and Questions\n\n1. See our [docs](https://docs.warp.dev/) for a comprehensive guide to Warp's features.\n2. Join our [Slack Community](https://go.warp.dev/join-preview) to connect with other users and get help from the Warp team — contributors hang out in [`#oss-contributors`](https://warpcommunity.slack.com/archives/C0B0LM8N4DB).\n3. Try our [Preview build](https://www.warp.dev/download-preview) to test the latest experimental features.\n4. Mention **@oss-maintainers** on any issue to escalate to the team — for example, if you encounter problems with the automated agents.\n\n## Code of Conduct\n\nWe ask everyone to be respectful and empathetic. Warp follows the [Code of Conduct](CODE_OF_CONDUCT.md). To report violations, email warp-coc at warp.dev.\n\n## Open Source Dependencies\n\nWe'd like to call out a few of the [open source dependencies](https://docs.warp.dev/help/licenses) that have helped Warp to get off the ground:\n\n- [Tokio](https://github.com/tokio-rs/tokio)\n- [NuShell](https://github.com/nushell/nushell)\n- [Fig Completion Specs](https://github.com/withfig/autocomplete)\n- [Warp Server Framework](https://github.com/seanmonstar/warp)\n- [Alacritty](https://github.com/alacritty/alacritty)\n- [Hyper HTTP library](https://github.com/hyperium/hyper)\n- [FontKit](https://github.com/servo/font-kit)\n- [Core-foundation](https://github.com/servo/core-foundation-rs)\n- [Smol](https://github.com/smol-rs/smol)\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nmembers = [\n  \"crates/*\",\n  \"app\",\n]\nresolver = \"2\"\n\n# Include all members except serve-wasm (since it's a helper helper for serving\n# wasm binaries and not something we want to regularly compile or run\n# tests against) and integration (since it is only used for testing).\ndefault-members = [\n  \"app\",\n  \"crates/channel_versions\",\n  \"crates/command\",\n  \"crates/editor\",\n  \"crates/graphql\",\n  \"crates/markdown_parser\",\n  \"crates/sum_tree\",\n  \"crates/warpui\",\n  \"crates/warp_completer\",\n  \"crates/warp_terminal\",\n  \"crates/warp_util\",\n]\n\n[workspace.package]\nauthors = [\"Warp Team <dev@warp.dev>\"]\nlicense = \"AGPL-3.0-only\"\npublish = false\n\n[workspace.dependencies]\n# Local workspace crates. This lets us reference them in other crates without specifying a path.\nai = { path = \"crates/ai\" }\napp-installation-detection = { path = \"crates/app-installation-detection\" }\nasset_cache = { path = \"crates/asset_cache\" }\nasset_macro = { path = \"crates/asset_macro\" }\nchannel_versions = { path = \"crates/channel_versions\", default-features = false }\ncommand = { path = \"crates/command\" }\ncommand-signatures-v2 = { path = \"crates/command-signatures-v2\" }\ncloud_objects = { path = \"crates/cloud_objects\" }\ncloud_object_client = { path = \"crates/cloud_object_client\" }\ncloud_object_persistence = { path = \"crates/cloud_object_persistence\" }\ncloud_object_models = { path = \"crates/cloud_object_models\" }\ncomputer_use = { path = \"crates/computer_use\" }\nfield_mask = { path = \"crates/field_mask\" }\nfirebase = { path = \"crates/firebase\" }\nfuzzy_match = { path = \"crates/fuzzy_match\" }\nhandlebars = { path = \"crates/handlebars\" }\nhttp_client = { path = \"crates/http_client\" }\nhttp_server = { path = \"crates/http_server\" }\ninput_classifier = { path = \"crates/input_classifier\" }\nintegration = { path = \"crates/integration\" }\nipc = { path = \"crates/ipc\" }\nipynb_parser = { path = \"crates/ipynb_parser\" }\njsonrpc = { path = \"crates/jsonrpc\" }\nlanguages = { path = \"crates/languages\" }\nlocal_control = { path = \"crates/local_control\" }\nlsp = { path = \"crates/lsp\" }\nmarkdown_parser = { path = \"crates/markdown_parser\" }\nmcp = { path = \"crates/mcp\" }\nnatural_language_detection = { path = \"crates/natural_language_detection\" }\nnode_runtime = { path = \"crates/node_runtime\" }\nonboarding = { path = \"crates/onboarding\" }\npersistence = { path = \"crates/persistence\" }\nprevent_sleep = { path = \"crates/prevent_sleep\" }\nremote_server = { path = \"crates/remote_server\" }\nrepo_metadata = { path = \"crates/repo_metadata\" }\nsettings = { path = \"crates/settings\" }\nsettings_value = { path = \"crates/settings_value\", default-features = false }\nsettings_value_derive = { path = \"crates/settings_value_derive\" }\nsimple_logger = { path = \"crates/simple_logger\" }\nstring-offset = { path = \"crates/string-offset\" }\nsum_tree = { path = \"crates/sum_tree\" }\nsyntax_tree = { path = \"crates/syntax_tree\" }\nui_components = { path = \"crates/ui_components\" }\nvim = { path = \"crates/vim\" }\nvirtual-fs = { path = \"crates/virtual_fs\" }\nvoice_input = { path = \"crates/voice_input\" }\nwarp = { path = \"app\" }\nwarp_assets = { path = \"crates/warp_assets\" }\nwarp_channel_config = { path = \"crates/warp_channel_config\" }\nwarp_cli = { path = \"crates/warp_cli\" }\nwarp_completer = { path = \"crates/warp_completer\" }\nwarp_core = { path = \"crates/warp_core\" }\nwarp_editor = { path = \"crates/editor\" }\nwarp_features = { path = \"crates/warp_features\" }\nwarp_files = { path = \"crates/warp_files\" }\nwarp_graphql = { path = \"crates/graphql\" }\nwarp_graphql_schema = { path = \"crates/warp_graphql_schema\" }\nwarp_isolation_platform = { path = \"crates/isolation_platform\" }\nwarp_js = { path = \"crates/warp_js\" }\nwarp_logging = { path = \"crates/warp_logging\" }\nwarp_managed_secrets = { path = \"crates/managed_secrets\" }\nwarp_multi_agent_client = { path = \"crates/warp_multi_agent_client\" }\nwarp_ripgrep = { path = \"crates/warp_ripgrep\" }\nwarp_search_core = { path = \"crates/warp_search_core\" }\nwarp_server_auth = { path = \"crates/warp_server_auth\" }\nwarp_server_client = { path = \"crates/warp_server_client\" }\nwarp_terminal = { path = \"crates/warp_terminal\" }\nwarp_util = { path = \"crates/warp_util\" }\nwarp_web_event_bus = { path = \"crates/warp_web_event_bus\" }\nwarpui = { path = \"crates/warpui\" }\nwarpui_core = { path = \"crates/warpui_core\" }\nwarpui_extras = { path = \"crates/warpui_extras\", default-features = false }\nwatcher = { path = \"crates/watcher\" }\nwebsocket = { path = \"crates/websocket\" }\n\n# Workspace-level dependencies used by multiple crates. Prefer adding dependencies\n# here to copying-and-pasting versions.\naxum = \"0.8.4\"\nanyhow = \"1.0\"\narboard = { version = \"3.6.1\", default-features = false }\narrayvec = \"0.7.4\"\nasync-broadcast = \"0.7.2\"\nashpd = { version = \"0.11\", default-features = false, features = [\"async-std\"] }\nasync-channel = \"2.3.1\"\nasync-compat = \"0.2.5\"\nasync-io = \"2.4.0\"\nasync-process = \"2.3.0\"\nasync-stream = \"0.3.5\"\nasync-task = \"4.2.0\"\nasync-trait = \"0.1.89\"\nasync-fs = \"2.1.2\"\nbacktrace = \"0.3.76\"\nbase64 = \"0.22\"\nbincode = \"",
    "strategic_keywords": [
      "agent",
      "agents",
      "workspace",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 10,
      "total": 93
    },
    "strategic_score": 93
  },
  {
    "owner": "stablyai",
    "name": "orca",
    "full_name": "stablyai/orca",
    "url": "https://github.com/stablyai/orca",
    "description": "Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop and mobile.",
    "language": "TypeScript",
    "total_stars": 7901,
    "forks": 557,
    "stars_this_period": 571,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ade",
        "agent-ide",
        "ai-agents",
        "claude-code",
        "cli",
        "codex",
        "cursor-agent",
        "devtools",
        "ghostty",
        "ide",
        "mobile-app",
        "opencode",
        "orchestration",
        "parallel-agents",
        "pi",
        "terminal",
        "worktrees",
        "yc-backed"
      ],
      "license": "MIT",
      "open_issues": 694,
      "created_at": "2026-03-17T03:28:57Z",
      "pushed_at": "2026-06-26T22:01:55Z",
      "homepage": "https://onOrca.dev",
      "default_branch": "main",
      "forks": 557,
      "watchers": 16,
      "archived": false,
      "size_kb": 180489
    },
    "readme_content": "<h1 align=\"center\">\n  <a href=\"https://onOrca.dev\"><img src=\"resources/build/icon.png\" alt=\"Orca\" width=\"64\" valign=\"middle\" /></a> Orca\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://github.com/stablyai/orca/stargazers\"><img src=\"https://badgen.net/github/stars/stablyai/orca?label=%E2%98%85\" alt=\"GitHub stars\" /></a>\n  <a href=\"https://github.com/stablyai/orca/releases\"><img src=\"docs/assets/readme-downloads.svg\" alt=\"Total downloads across all releases\" /></a>\n  <img src=\"https://badgen.net/github/license/stablyai/orca\" alt=\"License\" />\n  <a href=\"https://discord.gg/fzjDKHxv8Q\"><img src=\"https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white\" alt=\"Join the Orca Discord\" /></a>\n  <a href=\"https://x.com/orca_build\"><img src=\"https://img.shields.io/badge/X-000000?logo=x&logoColor=white\" alt=\"Follow Orca on X\" /></a>\n  <img src=\"https://img.shields.io/badge/macOS%20%7C%20Windows%20%7C%20Linux-4493F8?style=flat-square\" alt=\"Supported platforms: macOS, Windows, and Linux\" />\n</p>\n\n<p align=\"center\">\n  <sub><a href=\"docs/readme/README.es.md\">Español</a> · <a href=\"docs/readme/README.zh-CN.md\">中文</a> · <a href=\"docs/readme/README.ja.md\">日本語</a> · <a href=\"docs/readme/README.ko.md\">한국어</a></sub>\n</p>\n\n<p align=\"center\">\n  <strong>The AI Orchestrator for 100x builders.</strong><br/>\n  Run Codex, ClaudeCode, OpenCode or Pi side-by-side — each in its own worktree, tracked in one place.\n</p>\n\n<h3 align=\"center\"><a href=\"https://onorca.dev/download\"><ins>Download Orca</ins></a></h3>\n\n<p align=\"center\">\n  <img src=\"docs/assets/readme-hero.jpg\" alt=\"Orca desktop app running agents in parallel worktrees, with the Orca mobile companion app in the corner\" width=\"960\" />\n</p>\n\n## Features\n\n<table>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Mobile Companion\n\nMonitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.\n\n[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.16/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/mobile\"><picture><source srcset=\"docs/assets/feature-wall/mobile-companion-app-showcase.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/mobile-companion-app-showcase.jpg\" alt=\"Orca desktop with the mobile companion app\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Parallel Worktrees\n\nFan one prompt across five agents, each in its own isolated git worktree — compare the results and merge the winner.\n\n[Docs →](https://www.onorca.dev/docs/model/worktrees)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/model/worktrees\"><picture><source srcset=\"docs/assets/feature-wall/parallel-worktrees.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/parallel-worktrees.jpg\" alt=\"Parallel worktree orchestration\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Terminal Splits\n\nGhostty-class terminals with WebGL rendering, infinite splits, and scrollback that survives restarts.\n\n[Docs →](https://www.onorca.dev/docs/terminal)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/terminal\"><picture><source srcset=\"docs/assets/feature-wall/terminal-splits.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/terminal-splits.jpg\" alt=\"Terminal splits\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Design Mode\n\nClick any UI element in a real Chromium window to send its HTML, CSS, and a cropped screenshot straight into your agent's prompt.\n\n[Docs →](https://www.onorca.dev/docs/browser/design-mode)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/browser/design-mode\"><picture><source srcset=\"docs/assets/feature-wall/design-mode.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/design-mode.jpg\" alt=\"Embedded browser and Design Mode\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### GitHub &amp; Linear, Native\n\nBrowse PRs, issues, and project boards in-app — open a worktree from any task and review without a context switch.\n\n[Docs →](https://www.onorca.dev/docs/review/linear)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/review/linear\"><picture><source srcset=\"docs/assets/feature-wall/github-linear.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/github-linear.jpg\" alt=\"GitHub and Linear task workflows in Orca\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### SSH Worktrees\n\nRun agents on a beefy remote box with full file editing, git, and terminals — auto-reconnect and port forwarding included.\n\n[Docs →](https://www.onorca.dev/docs/ssh)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/ssh\"><picture><source srcset=\"docs/assets/feature-wall/ssh-worktrees.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/ssh-worktrees.jpg\" alt=\"Remote worktrees over SSH\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Annotate AI Diffs\n\nDrop comments on any diff line and ship them back to the agent — review, edit, and commit without leaving Orca.\n\n[Docs →](https://www.onorca.dev/docs/review/annotate-ai-diff)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/review/annotate-ai-diff\"><picture><source srcset=\"docs/assets/feature-wall/annotate-diff.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/annotate-diff.jpg\" alt=\"Annotate AI-generated diffs\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Drag Files to Agents\n\nVS Code's editor with autosave everywhere — drag files or images straight into an agent prompt.\n\n[Docs →](https://www.onorca.dev/docs/editing/file-explorer)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/editing/file-explorer\"><picture><source srcset=\"docs/assets/feature-wall/file-drag.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/file-drag.jpg\" alt=\"Drag files and images into an agent prompt\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Orca CLI\n\nAgents drive Orca too — script every workflow with `orca worktree create`, `snapshot`, `click`, and `fill`.\n\n[Docs →](https://www.onorca.dev/docs/cli/overview)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/cli/overview\"><picture><source srcset=\"docs/assets/feature-wall/orca-cli.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/orca-cli.jpg\" alt=\"Script Orca from the CLI\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n</table>\n\n**Also in the box:**\n\n- **[Quick open](https://www.onorca.dev/docs/model/quick-open)** — Search across worktrees, files, agents, commands, and repo context without leaving your flow.\n- **[Account switcher &amp; usage tracking](https://www.onorca.dev/docs/agents/usage-tracking)** — See Claude and Codex usage and rate-limit resets, and hot-swap accounts without re-logging in.\n- **[Rich repo previews](https://www.onorca.dev/docs/editing/markdown)** — Preview Markdown, images, PDFs, and repo docs in the workspace.\n- **[Computer Use](https://www.onorca.dev/docs/cli/computer-use)** — Let agents operate desktop apps and visible UI when a workflow needs real interaction.\n- **[Notifications and unread state](https://www.onorca.dev/docs/notifications)** — Know when an agent finishes or needs attention, then mark threads unread to come back later.\n- **And many, many more** — we ship daily, so this list is perpetually behind. The [changelog](https://github.com/stablyai/orca/releases) is the real feature list.\n\n---\n\n## Supported Agents\n\nWorks with **any CLI agent** — if it runs in a terminal, it runs in Orca.\n\n<p>\n  <a href=\"https://docs.anthropic.com/claude/docs/claude-code\"><kbd><img src=\"docs/assets/claude-logo.svg\" alt=\"Claude Code logo\" width=\"16\" valign=\"middle\" /> Claude Code</kbd></a> &nbsp;\n  <a href=\"https://github.com/openai/codex\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=openai.com&sz=64\" alt=\"Codex logo\" width=\"16\" valign=\"middle\" /> Codex</kbd></a> &nbsp;\n  <a href=\"https://x.ai/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=x.ai&sz=64\" alt=\"Grok logo\" width=\"16\" valign=\"middle\" /> Grok</kbd></a> &nbsp;\n  <a href=\"https://cursor.com/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=cursor.com&sz=64\" alt=\"Cursor logo\" width=\"16\" valign=\"middle\" /> Cursor</kbd></a> &nbsp;\n  <a href=\"https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=github.com&sz=64\" alt=\"GitHub Copilot logo\" width=\"16\" valign=\"middle\" /> GitHub Copilot</kbd></a> &nbsp;\n  <a href=\"https://opencode.ai/docs/cli/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=opencode.ai&sz=64\" alt=\"OpenCode logo\" width=\"16\" valign=\"middle\" /> OpenCode</kbd></a> &nbsp;\n  <a href=\"https://mimo.xiaomi.com/coder\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=mimo.xiaomi.com&sz=64\" alt=\"MiMo Code logo\" width=\"16\" valign=\"middle\" /> MiMo Code</kbd></a> &nbsp;\n  <a href=\"https://ampcode.com/manual#install\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=ampcode.com&sz=64\" alt=\"Amp logo\" width=\"16\" valign=\"middle\" /> Amp</kbd></a> &nbsp;\n  <a href=\"https://openclaude.gitlawb.com/\"><kbd><img src=\"resources/openclaude-logo.png\" alt=\"OpenClaude logo\" width=\"16\" valign=\"middle\" /> OpenClaude</kbd></a> &nbsp;\n  <a href=\"https://antigravity.google/docs/cli-overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=antigravity.google&sz=64\" alt=\"Antigravity logo\" width=\"16\" valign=\"middle\" /> Antigravity</kbd></a> &nbsp;\n  <a href=\"https://pi.dev\"><kbd><img src=\"https://pi.dev/favicon.svg\" alt=\"Pi logo\" width=\"16\" valign=\"middle\" /> Pi</kbd></a> &nbsp;\n  <a href=\"https://omp.sh\"><kbd><img src=\"https://omp.sh/favicon.svg\" alt=\"oh-my-pi logo\" width=\"16\" valign=\"middle\" /> oh-my-pi</kbd></a> &nbsp;\n  <a href=\"https://hermes-agent.nousresearch.com/docs/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=nousresearch.com&sz=64\" alt=\"Hermes Agent logo\" width=\"16\" valign=\"middle\" /> Hermes Agent</kbd></a> &nbsp;\n  <a href=\"https://devin.ai/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=devin.ai&sz=64\" alt=\"Devin logo\" width=\"16\" valign=\"middle\" /> Devin</kbd></a> &nbsp;\n  <a href=\"https://block.github.io/goose/docs/quickstart/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=goose-docs.ai&sz=64\" alt=\"Goose logo\" width=\"16\" valign=\"middle\" /> Goose</kbd></a> &nbsp;\n  <a href=\"https://docs.augmentcode.com/cli/overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=augmentcode.com&sz=64\" alt=\"Auggie logo\" width=\"16\" valign=\"middle\" /> Auggie</kbd></a> &nbsp;\n  <a href=\"https://github.com/autohandai/code-cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=autohand.ai&sz=64\" alt=\"Autohand Code logo\" width=\"16\" valign=\"middle\" /> Autohand Code</kbd></a> &nbsp;\n  <a href=\"https://github.com/charmbracelet/crush\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=charm.sh&sz=64\" alt=\"Charm logo\" width=\"16\" valign=\"middle\" /> Charm</kbd></a> &nbsp;\n  <a href=\"https://docs.cline.bot/cline-cli/overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=cline.bot&sz=64\" alt=\"Cline logo\" width=\"16\" valign=\"middle\" /> Cline</kbd></a> &nbsp;\n  <a href=\"https://www.codebuff.com/docs/help/quick-start\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=codebuff.com&sz=64\" alt=\"Codebuff logo\" width=\"16\" valign=\"middle\" /> Codebuff</kbd></a> &nbsp;\n  <a href=\"https://commandcode.ai/docs/quickstart\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=commandcode.ai&sz=64\" alt=\"Command Code logo\" width=\"16\" valign=\"middle\" /> Command Code</kbd></a> &nbsp;\n  <a href=\"https://docs.continue.dev/guides/cli\"><kbd><img src=\"https://www.google",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"orca\",\n  \"version\": \"1.4.102-rc.0\",\n  \"description\": \"Next-gen IDE for parallel agentic development\",\n  \"homepage\": \"https://github.com/stablyai/orca\",\n  \"author\": \"stablyai\",\n  \"bin\": {\n    \"orca\": \"./out/cli/index.js\",\n    \"orca-dev\": \"./config/scripts/orca-dev.mjs\"\n  },\n  \"main\": \"./out/main/index.js\",\n  \"scripts\": {\n    \"format\": \"oxfmt --write .\",\n    \"lint\": \"oxlint && pnpm run lint:switch-exhaustiveness && node config/scripts/check-styled-scrollbars.mjs && pnpm run verify:localization-catalog && pnpm run verify:localization-coverage\",\n    \"lint:react-doctor\": \"oxlint --config config/oxlint-react-doctor.json\",\n    \"lint:react-doctor:changed\": \"node config/scripts/lint-react-doctor-changed.mjs\",\n    \"lint:switch-exhaustiveness\": \"oxlint --type-aware --config config/oxlint-switch-exhaustiveness.json src/main src/preload src/shared src/relay src/cli src/renderer/src config tests --quiet\",\n    \"prepare\": \"husky\",\n    \"test\": \"node config/scripts/ensure-native-runtime.mjs --runtime=node && vitest run --config config/vitest.config.ts\",\n    \"check:styled-scrollbars\": \"node config/scripts/check-styled-scrollbars.mjs\",\n    \"check:feature-wall-assets\": \"node config/scripts/check-feature-wall-assets.mjs\",\n    \"verify:macos-entitlements\": \"node config/scripts/verify-macos-entitlements.mjs\",\n    \"vendor:feature-wall-assets\": \"node config/scripts/vendor-feature-wall-assets.mjs\",\n    \"tc:node\": \"pnpm run typecheck:node\",\n    \"tc:cli\": \"pnpm run typecheck:cli\",\n    \"tc:web\": \"pnpm run typecheck:web\",\n    \"tc\": \"pnpm run typecheck\",\n    \"typecheck:node\": \"tsgo --noEmit -p config/tsconfig.node.json\",\n    \"typecheck:cli\": \"tsgo --noEmit -p config/tsconfig.tc.cli.json\",\n    \"typecheck:web\": \"tsgo --noEmit -p config/tsconfig.tc.web.json\",\n    \"typecheck\": \"tsgo --noEmit -p config/tsconfig.node.json && tsgo --noEmit -p config/tsconfig.tc.cli.json && tsgo --noEmit -p config/tsconfig.tc.web.json\",\n    \"typecheck:tsc:node\": \"tsc --noEmit -p config/tsconfig.node.json --composite false\",\n    \"typecheck:tsc:cli\": \"tsc --noEmit -p config/tsconfig.cli.json --composite false\",\n    \"typecheck:tsc:web\": \"tsc --noEmit -p config/tsconfig.web.json --composite false\",\n    \"typecheck:tsc\": \"tsc --noEmit -p config/tsconfig.node.json --composite false && tsc --noEmit -p config/tsconfig.cli.json --composite false && tsc --noEmit -p config/tsconfig.web.json --composite false\",\n    \"ensure:electron-runtime\": \"node config/scripts/ensure-native-runtime.mjs --runtime=electron\",\n    \"start\": \"pnpm run ensure:electron-runtime && electron-vite preview\",\n    \"dev\": \"pnpm run ensure:electron-runtime && node config/scripts/run-electron-vite-dev.mjs\",\n    \"dev-stable-name\": \"pnpm run ensure:electron-runtime && node config/scripts/run-electron-vite-dev.mjs --stable-name\",\n    \"dev:web\": \"vite --config vite.web.config.ts --host 127.0.0.1\",\n    \"build:relay\": \"node config/scripts/build-relay.mjs\",\n    \"build:computer-macos\": \"node config/scripts/build-computer-macos.mjs\",\n    \"build:native\": \"node config/scripts/build-native-for-platform.mjs\",\n    \"smoke:computer\": \"node config/scripts/computer-use-smoke.mjs\",\n    \"verify:computer-native\": \"node config/scripts/verify-computer-native.mjs\",\n    \"verify:cli-bin\": \"node config/scripts/verify-cli-bin.mjs\",\n    \"verify:localization-catalog\": \"node config/scripts/verify-localization-catalog.mjs\",\n    \"sync:localization-catalog\": \"node config/scripts/verify-localization-catalog.mjs --fix\",\n    \"bootstrap:locale-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs\",\n    \"bootstrap:zh-catalog\": \"node config/scripts/bootstrap-zh-catalog.mjs\",\n    \"bootstrap:ko-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale ko\",\n    \"bootstrap:ja-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale ja\",\n    \"bootstrap:es-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale es\",\n    \"repair:locale-catalog\": \"node config/scripts/repair-locale-catalog.mjs\",\n    \"verify:localization-coverage\": \"node config/scripts/audit-localization-coverage.mjs --check\",\n    \"audit:localization\": \"node config/scripts/audit-localization-coverage.mjs\",\n    \"build:cli\": \"tsc -p config/tsconfig.cli.json --outDir out --composite false --incremental false && node config/scripts/verify-cli-bin.mjs --fix-executable && node config/scripts/install-dev-cli.mjs\",\n    \"build:electron-vite\": \"node config/scripts/run-electron-vite-build.mjs\",\n    \"build:web\": \"node config/scripts/run-vite-web-build.mjs && node config/scripts/verify-web-build.mjs\",\n    \"build:desktop\": \"pnpm run typecheck && pnpm run build:relay && pnpm run build:cli && pnpm run build:electron-vite && pnpm run build:web\",\n    \"build\": \"pnpm run build:desktop && pnpm run build:native\",\n    \"build:release\": \"pnpm run build:relay && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite && pnpm run build:web\",\n    \"postinstall\": \"node config/scripts/rebuild-native-deps.mjs\",\n   ",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "runtime"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 92
    },
    "strategic_score": 92
  },
  {
    "owner": "opendatalab",
    "name": "MinerU",
    "full_name": "opendatalab/MinerU",
    "url": "https://github.com/opendatalab/MinerU",
    "description": "Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.",
    "language": "Python",
    "total_stars": 70355,
    "forks": 5936,
    "stars_this_period": 944,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai4science",
        "document-analysis",
        "docx",
        "extract-data",
        "layout-analysis",
        "ocr",
        "parser",
        "pdf",
        "pdf-converter",
        "pdf-extractor-llm",
        "pdf-extractor-pretrain",
        "pdf-extractor-rag",
        "pdf-parser",
        "pptx",
        "python",
        "xlsx"
      ],
      "license": "NOASSERTION",
      "open_issues": 28,
      "created_at": "2024-02-29T08:52:34Z",
      "pushed_at": "2026-06-26T10:37:39Z",
      "homepage": "https://opendatalab.github.io/MinerU/",
      "default_branch": "master",
      "forks": 5936,
      "watchers": 256,
      "archived": false,
      "size_kb": 156325
    },
    "readme_content": "<div align=\"center\" xmlns=\"http://www.w3.org/1999/html\">\n<!-- logo -->\n<p align=\"center\">\n  <img src=\"https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docs/images/MinerU-logo.png\" width=\"300px\" style=\"vertical-align:middle;\">\n</p>\n\n<!-- icon -->\n\n[![stars](https://img.shields.io/github/stars/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![forks](https://img.shields.io/github/forks/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![open issues](https://img.shields.io/github/issues-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![issue resolution](https://img.shields.io/github/issues-closed-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![PyPI version](https://img.shields.io/pypi/v/mineru)](https://pypi.org/project/mineru/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mineru)](https://pypi.org/project/mineru/)\n[![Downloads](https://static.pepy.tech/badge/mineru)](https://pepy.tech/project/mineru)\n[![Downloads](https://static.pepy.tech/badge/mineru/month)](https://pepy.tech/project/mineru)\n[![OpenDataLab](https://img.shields.io/badge/webapp_on_mineru.net-blue?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTM0IiBoZWlnaHQ9IjEzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIyLDljMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Im0xMjIsOWMwLDUtNCw5LTksOXMtOS00LTktOSw0LTksOS05LDksNCw5LDl6IiBmaWxsPSIjMDEwMTAxIi8+PHBhdGggZD0ibTkxLDE4YzAsNS00LDktOSw5cy05LTQtOS05LDQtOSw5LTksOSw0LDksOXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJtOTEsMThjMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0iIzAxMDEwMSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0iIzAxMDEwMSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=&labelColor=white)](https://mineru.net/OpenSourceTools/Extractor?source=github)\n[![HuggingFace](https://img.shields.io/badge/Demo_on_HuggingFace-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABYCAMAAACkl9t/AAAAk1BMVEVHcEz/nQv/nQv/nQr/nQv/nQr/nQv/nQv/nQr/wRf/txT/pg7/yRr/rBD/zRz/ngv/oAz/zhz/nwv/txT/ngv/0B3+zBz/nQv/0h7/wxn/vRb/thXkuiT/rxH/pxD/ogzcqyf/nQvTlSz/czCxky7/SjifdjT/Mj3+Mj3wMj15aTnDNz+DSD9RTUBsP0FRO0Q6O0WyIxEIAAAAGHRSTlMADB8zSWF3krDDw8TJ1NbX5efv8ff9/fxKDJ9uAAAGKklEQVR42u2Z63qjOAyGC4RwCOfB2JAGqrSb2WnTw/1f3UaWcSGYNKTdf/P+mOkTrE+yJBulvfvLT2A5ruenaVHyIks33npl/6C4s/ZLAM45SOi/1FtZPyFur1OYofBX3w7d54Bxm+E8db+nDr12ttmESZ4zludJEG5S7TO72YPlKZFyE+YCYUJTBZsMiNS5Sd7NlDmKM2Eg2JQg8awbglfqgbhArjxkS7dgp2RH6hc9AMLdZYUtZN5DJr4molC8BfKrEkPKEnEVjLbgW1fLy77ZVOJagoIcLIl+IxaQZGjiX597HopF5CkaXVMDO9Pyix3AFV3kw4lQLCbHuMovz8FallbcQIJ5Ta0vks9RnolbCK84BtjKRS5uA43hYoZcOBGIG2Epbv6CvFVQ8m8loh66WNySsnN7htL58LNp+NXT8/PhXiBXPMjLSxtwp8W9f/1AngRierBkA+kk/IpUSOeKByzn8y3kAAAfh//0oXgV4roHm/kz4E2z//zRc3/lgwBzbM2mJxQEa5pqgX7d1L0htrhx7LKxOZlKbwcAWyEOWqYSI8YPtgDQVjpB5nvaHaSnBaQSD6hweDi8PosxD6/PT09YY3xQA7LTCTKfYX+QHpA0GCcqmEHvr/cyfKQTEuwgbs2kPxJEB0iNjfJcCTPyocx+A0griHSmADiC91oNGVwJ69RudYe65vJmoqfpul0lrqXadW0jFKH5BKwAeCq+Den7s+3zfRJzA61/Uj/9H/VzLKTx9jFPPdXeeP+L7WEvDLAKAIoF8bPTKT0+TM7W8ePj3Rz/Yn3kOAp2f1Kf0Weony7pn/cPydvhQYV+eFOfmOu7VB/ViPe34/EN3RFHY/yRuT8ddCtMPH/McBAT5s+vRde/gf2c/sPsjLK+m5IBQF5tO+h2tTlBGnP6693JdsvofjOPnnEHkh2TnV/X1fBl9S5zrwuwF8NFrAVJVwCAPTe8gaJlomqlp0pv4Pjn98tJ/t/fL++6unpR1YGC2n/KCoa0tTLoKiEeUPDl94nj+5/Tv3/eT5vBQ60X1S0oZr+IWRR8Ldhu7AlLjPISlJcO9vrFotky9SpzDequlwEir5beYAc0R7D9KS1DXva0jhYRDXoExPdc6yw5GShkZXe9QdO/uOvHofxjrV/TNS6iMJS+4TcSTgk9n5agJdBQbB//IfF/HpvPt3Tbi7b6I6K0R72p6ajryEJrENW2bbeVUGjfgoals4L443c7BEE4mJO2SpbRngxQrAKRudRzGQ8jVOL2qDVjjI8K1gc3TIJ5KiFZ1q+gdsARPB4NQS4AjwVSt72DSoXNyOWUrU5mQ9nRYyjp89Xo7oRI6Bga9QNT1mQ/ptaJq5T/7WcgAZywR/XlPGAUDdet3LE+qS0TI+g+aJU8MIqjo0Kx8Ly+maxLjJmjQ18rA0YCkxLQbUZP1WqdmyQGJLUm7VnQFqodmXSqmRrdVpqdzk5LvmvgtEcW8PMGdaS23EOWyDVbACZzUJPaqMbjDxpA3Qrgl0AikimGDbqmyT8P8NOYiqrldF8rX+YN7TopX4UoHuSCYY7cgX4gHwclQKl1zhx0THf+tCAUValzjI7Wg9EhptrkIcfIJjA94evOn8B2eHaVzvBrnl2ig0So6hvPaz0IGcOvTHvUIlE2+prqAxLSQxZlU2stql1NqCCLdIiIN/i1DBEHUoElM9dBravbiAnKqgpi4IBkw+utSPIoBijDXJipSVV7MpOEJUAc5Qmm3BnUN+w3hteEieYKfRZSIUcXKMVf0u5wD4EwsUNVvZOtUT7A2GkffHjByWpHqvRBYrTV72a6j8zZ6W0DTE86Hn04bmyWX3Ri9WH7ZU6Q7h+ZHo0nHUAcsQvVhXRDZHChwiyi/hnPuOsSEF6Exk3o6Y9DT1eZ+6cASXk2Y9k+6EOQMDGm6WBK10wOQJCBwren86cPPWUcRAnTVjGcU1LBgs9FURiX/e6479yZcLwCBmTxiawEwrOcleuu12t3tbLv/N4RLYIBhYexm7Fcn4OJcn0+zc+s8/VfPeddZHAGN6TT8eGczHdR/Gts1/MzDkThr23zqrVfAMFT33Nx1RJsx1k5zuWILLnG/vsH+Fv5D4NTVcp1Gzo8AAAAAElFTkSuQmCC&labelColor=white)](https://huggingface.co/spaces/opendatalab/MinerU)\n[![ModelScope](https://img.shields.io/badge/Demo_on_ModelScope-purple?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIzIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBhdGggaWQ9InN2Z18xNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTAsODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTUiIGZpbGw9IiM2MjRhZmYiIGQ9Im05OS4xNCwxMTUuNDlsMjUuNjUsMGwwLDI1LjY1bC0yNS42NSwwbDAsLTI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTYiIGZpbGw9IiM2MjRhZmYiIGQ9Im0xNzYuMDksMTQxLjE0bC0yNS42NDk5OSwwbDAsMjIuMTlsNDcuODQsMGwwLC00Ny44NGwtMjIuMTksMGwwLDI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTciIGZpbGw9IiMzNmNmZDEiIGQ9Im0xMjQuNzksODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTgiIGZpbGw9IiMzNmNmZDEiIGQ9Im0wLDY0LjE5bDI1LjY1LDBsMCwyNS42NWwtMjUuNjUsMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzE5IiBmaWxsPSIjNjI0YWZmIiBkPSJtMTk4LjI4LDg5Ljg0bDI1LjY0OTk5LDBsMCwyNS42NDk5OWwtMjUuNjQ5OTksMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIwIiBmaWxsPSIjMzZjZmQxIiBkPSJtMTk4LjI4LDY0LjE5bDI1LjY0OTk5LDBsMCwyNS42NWwtMjUuNjQ5OTksMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIxIiBmaWxsPSIjNjI0YWZmIiBkPSJtMTUwLjQ0LDQybDAsMjIuMTlsMjUuNjQ5OTksMGwwLDI1LjY1bDIyLjE5LDBsMCwtNDcuODRsLTQ3Ljg0LDB6Ii8+CiAgPHBhdGggaWQ9InN2Z18yMiIgZmlsbD0iIzM2Y2ZkMSIgZD0ibTczLjQ5LDg5Ljg0bDI1LjY1LDBsMCwyNS42NDk5OWwtMjUuNjUsMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIzIiBmaWxsPSIjNjI0YWZmIiBkPSJtNDcuODQsNjQuMTlsMjUuNjUsMGwwLC0yMi4xOWwtNDcuODQsMGwwLDQ3Ljg0bDIyLjE5LDBsMCwtMjUuNjV6Ii8+CiAgPHBhdGggaWQ9InN2Z18yNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTQ3Ljg0LDExNS40OWwtMjIuMTksMGwwLDQ3Ljg0bDQ3Ljg0LDBsMCwtMjIuMTlsLTI1LjY1LDBsMCwtMjUuNjV6Ii8+CiA8L2c+Cjwvc3ZnPg==&labelColor=white)](https://www.modelscope.cn/studios/OpenDataLab/MinerU)\n[![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/myhloli/a3cb16570ab3cfeadf9d8f0ac91b4fca/mineru_demo.ipynb)\n[![arXiv](https://img.shields.io/badge/MinerU-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2409.18839)\n[![arXiv](https://img.shields.io/badge/MinerU2.5-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2509.22186)\n[![arXiv](https://img.shields.io/badge/MinerU2.5%20Pro-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2604.04771)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/opendatalab/MinerU)\n\n\n<a href=\"https://trendshift.io/repositories/11174\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/11174\" alt=\"opendatalab%2FMinerU | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n\n<!-- language -->\n\n[English](README.md) | [简体中文](README_zh-CN.md)\n\n<!-- hot link -->\n\n<p align=\"center\">\n🚀<a href=\"https://mineru.net/?source=github\">Access MinerU Now→✅ Zero-Install Web Version ✅ Full-Featured Desktop Client ✅ Instant API Access; Skip deployment headaches – get all product formats in one click. Developers, dive in!</a>\n</p>\n\n<!-- join us -->\n\n<p align=\"center\">\n    👋 join us on <a href=\"https://discord.gg/Tdedn9GTXq\" target=\"_blank\">Discord</a> and <a href=\"https://mineru.net/community-portal/?aliasId=3c430f94\" target=\"_blank\">WeChat</a>\n</p>\n\n</div>\n\n\n<details>\n<summary>MinerU — High-accuracy document parsing engine for LLM · RAG · Agent workflows</summary>\nConverts PDF · DOCX · PPTX · XLSX · Images · Web pages into structured Markdown / JSON · VLM+OCR dual engine · 109 languages <br>\nMCP Server · LangChain / Dify / FastGPT native integration · 10+ domestic AI chip support\n\n**🔍 Core Parsing Capabilities**\n\n- Native support for `DOCX`, `PPTX`, and `XLSX` parsing\n- Formulas → LaTeX · Tables → HTML, accurate layout reconstruction\n- Supports scanned docs, handwriting, multi-column layouts, cross-page table merging\n- Output follows human reading order with automatic header/footer removal\n- VLM + OCR dual engine, 109-language OCR recognition\n\n**🔌 Integration**\n\n| Use Case | Solution |\n|----------|----------|\n| AI Coding Tools | MCP Server — Cursor · Claude Desktop · Windsurf |\n| RAG Frameworks | LangChain · LlamaIndex · RAGFlow · RAG-Anything · Flowise · Dify · FastGPT |\n| Development | Python / Go / TypeScript SDK · CLI · REST API · Docker |\n| No-Code | mineru.net online · Gradio WebUI · Desktop client |\n\n**🖥️ Deployment (Private · Fully Offline)**\n\n| Inference Backend | Best For |\n|------------------|---------|\n| pipeline         | Fast & stable, no hallucination, runs on CPU or GPU |\n| vlm-engine       | High accuracy, supports vLLM / LMDeploy / mlx ecosystem |\n| hybrid-engine    | High accuracy, native text extraction, low hallucination |\n\nDomestic AI chips: Ascend · Cambricon · Enflame · MetaX · Moore Threads · Kunlunxin · Iluvatar · Hygon · Biren · T-Head\n</details>\n\n# Changelog\n\n- 2026/06/18 3.4 Released\n\n  This release focuses on **OCR capability upgrades for the pipeline backend**, **OCR processing pipeline optimization**, and **model download experience improvements**. The main updates include:\n\n  - OCR model upgrade and processing acceleration\n    - The OCR model for the `pipeline` backend has been upgraded to `PP-OCRv6`, improving OCR accuracy by about `11%` on OmniDocBench v1.6.\n    - Removed Japanese, Traditional Chinese, English, and Latin options from OCR language selection. These scenarios are now routed to the `ch` OCR model, simplifying model configuration and language selection.\n    - Optimized the OCR inference and processing pipeline, increasing OCR processing speed by about `100%` and significantly improving parsing efficiency for batch documents and OCR-intensive documents.\n\n  - Model download logic optimization\n    - Added automatic model source selection, allowing first-time installations to choose a better model source based on the current network environment.\n    - Before downloading models, MinerU now prioritizes checking locally downloaded model cache files. Cache hits can be reused directly, reducing repeated downloads and unnecessary remote requests.\n    - For more details about model source configuration, automatic source selection, and local model usage, see the [Model Source Document",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=77.0.3\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"mineru\"\ndynamic = [\"version\"]\nlicense = \"LicenseRef-MinerU-Open-Source-License\"\nlicense-files = [\"LICENSE.md\"]\ndescription = \"A practical document parsing tool for converting PDF, images, DOCX, PPTX, and XLSX into Markdown and JSON\"\nreadme = \"README.md\"\nrequires-python = \">=3.10,<3.14\"\nkeywords = [\n    \"mineru\",\n    \"magic-pdf\",\n    \"document-parsing\",\n    \"document-understanding\",\n    \"pdf\",\n    \"markdown\",\n    \"ocr\",\n    \"vlm\",\n    \"docx\",\n    \"pptx\",\n    \"xlsx\",\n    \"multimodal\",\n]\nclassifiers = [\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n]\ndependencies = [\n    \"click>=8.1.7\",\n    \"loguru>=0.7.2\",\n    \"numpy>=1.21.6\",\n    \"tqdm>=4.67.1\",\n    \"requests\",\n    \"httpx\",\n    \"pillow>=11.0.0\",\n    \"pypdfium2>=4.30.0\",\n    \"pypdf>=5.6.0\",\n    \"reportlab\",\n    \"pdftext>=0.6.3\",\n    \"modelscope>=1.26.0\",\n    \"huggingface-hub>=0.32.4\",\n    \"json-repair>=0.46.2\",\n    \"opencv-python>=4.11.0.86\",\n    \"fast-langdetect>=0.2.3,<0.3.0\",\n    \"openai>=1.70.0,<3\",\n    \"beautifulsoup4>=4.13.5,<5\",\n    \"magika>=0.6.2,<1.1.0\",\n    \"mineru-vl-utils>=1.0.5,<2\",\n    \"python-docx>=1.2.0,<2\",\n    'pypptx-with-oxml>=1.0.3,<2',\n    \"mammoth>=1.11.0,<2\",\n    \"pylatexenc>=2.10,<3\",\n    \"lxml>=4.0.0,<7.0.0\",\n    \"openpyxl>=3.1.5,<4\",\n    \"fastapi\",\n    \"python-multipart\",\n    \"uvicorn\",\n]\n\n[project.optional-dependencies]\ntest = [\n    \"mineru[core]\",\n    \"pytest\",\n    \"pytest-cov\",\n    \"coverage\",\n    \"fuzzywuzzy\",\n    \"tomli; python_version < '3.11'\",\n]\nvlm = [\n    \"torch>=2.6.0,<3\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"accelerate>=1.5.1\",\n]\nvllm = [\n    \"vllm>=0.10.1.1,<0.22.0\",\n]\nlmdeploy = [\n    \"lmdeploy>=0.10.2,<0.12\",\n    \"qwen-vl-utils>=0.0.14,<1\",\n]\nmlx = [\n    \"mlx-vlm>=0.3.3,<0.4\",\n    \"mlx<=0.31.1\",\n]\ns3 = [\n    \"boto3>=1.28.43\",\n]\npipeline = [\n    \"PyYAML>=6.0.1,<7\",\n    \"ftfy>=6.3.1,<7\",\n    \"shapely>=2.0.7,<3\",\n    \"pyclipper>=1.3.0,<2\",\n    \"torch>=2.6.0,<3\",\n    \"torchvision\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"safetensors>=0.4.0,<1\",\n    \"onnxruntime>1.17.0\",\n]\ngradio = [\n    \"gradio>=5.49.1,!=6.0.0,!=6.0.1,!=6.0.2,!=6.1.0,!=6.2.0,!=6.3.0,!=6.4.0,!=6.5.0,!=6.5.1,!=6.6.0,!=6.7.0,<6.9.0\",\n    \"gradio-pdf>=0.0.22\",\n]\ncore = [\n    \"mineru[vlm]\",\n    \"mineru[pipeline]\",\n    \"mineru[gradio]\",\n]\nall = [\n    \"mineru[core]\",\n    \"mineru[s3]\",\n    \"mineru[mlx] ; sys_platform == 'darwin'\",\n    \"mineru[vllm] ; sys_platform == 'linux'\",\n    \"mineru[lmdeploy] ; sys_platform == 'win32'\",\n]\n\n[project.urls]\nhomepage = \"https://mineru.net/\"\ndocumentation = \"https://opendatalab.github.io/MinerU/\"\nrepository = \"https://github.com/opendatalab/MinerU\"\nissues = \"https://github.com/opendatalab/MinerU/issues\"\nLicense = \"https://github.com/opendatalab/MinerU/blob/master/LICENSE.md\"\n\n[project.scripts]\nmineru = \"mineru.cli.client:main\"\nmineru-vllm-server = \"mineru.cli.vlm_server:vllm_server\"\nmineru-lmdeploy-server = \"mineru.cli.vlm_server:lmdeploy_server\"\nmineru-openai-server = \"mineru.cli.vlm_server:openai_server\"\nmineru-models-download = \"mineru.cli.models_download:download_models\"\nmineru-api = \"mineru.cli.fast_api:main\"\nmineru-router = \"mineru.cli.router:main\"\nmineru-gradio = \"mineru.cli.gradio_app:main\"\n\n[tool.setuptools.dynamic]\nversion = { attr = \"mineru.version.__version__\" }\n\n[tool.setuptools.packages.find]\ninclude = [\"mineru*\"]\nnamespaces = false\n\n[tool.setuptools.package-data]\n\"mineru\" = [\"resources/**\"]\n\"mineru.model.utils.pytorchocr.utils\" = [\"resources/**\"]\n\n[tool.setuptools]\ninclude-package-data = true\nzip-safe = false\n\n[tool.pytest.ini_options]\naddopts = \"-s --cov=mineru --cov-report html\"\n\n[tool.coverage.run]\ncommand_line = \"-m pytest tests/unittest/test_e2e.py\"\nsource = [\"mineru/\"]\nomit = [\n    \"*/gradio_app.py\",\n    \"*/models_download.py\",\n    \"*/fast_api.py\",\n    \"*/cli/client.py\",\n    \"*/vlm_vllm_server.py\",\n    \"*/cli_parser.py\",\n]\n\n[tool.coverage.html]\ndirectory = \"htmlcov\"\n\n[tool.coverage.report]\nexclude_also = [\n    'def __repr__',\n    'if self.debug:',\n    'if settings.DEBUG',\n    'raise AssertionError',\n    'raise NotImplementedError',\n    'if 0:',\n    'if __name__ == .__main__.:',\n    'if TYPE_CHECKING:',\n    'class .*\\bProtocol\\):',\n    '@(abc\\.)?abstractmethod',\n]\n\n[tool.ruff]\nline-length = 128\n\n[tool.ruff.lint]\nselect = [\"C\", \"E\", \"F\", \"W\", \"ANN\"]\nignore = [\"C901\", \"ANN204\", \"ANN401\"]\n",
    "strategic_keywords": [
      "agent",
      "rag",
      "llm",
      "workflow"
    ],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "safishamsi",
    "name": "graphify",
    "full_name": "safishamsi/graphify",
    "url": "https://github.com/safishamsi/graphify",
    "description": "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs, papers, images, or videos into a queryable knowledge graph. App code + database schema + infrastructure in one graph.",
    "language": "Python",
    "total_stars": 72558,
    "forks": 7277,
    "stars_this_period": 504,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "antigravity",
        "claude-code",
        "codex",
        "gemini",
        "graphrag",
        "knowledge-graph",
        "leiden",
        "openclaw",
        "rag",
        "skills",
        "tree-sitter"
      ],
      "license": "MIT",
      "open_issues": 389,
      "created_at": "2026-04-03T15:49:07Z",
      "pushed_at": "2026-06-26T17:08:12Z",
      "homepage": "https://graphifylabs.ai/",
      "default_branch": "v8",
      "forks": 7277,
      "watchers": 247,
      "archived": false,
      "size_kb": 4556
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://graphifylabs.ai\"><img src=\"https://raw.githubusercontent.com/safishamsi/graphify/v4/docs/logo-text.svg\" width=\"260\" height=\"64\" alt=\"Graphify\"/></a>\n</p>\n\n<p align=\"center\">\n  🇺🇸 <a href=\"README.md\">English</a> | 🇨🇳 <a href=\"docs/translations/README.zh-CN.md\">简体中文</a> | 🇯🇵 <a href=\"docs/translations/README.ja-JP.md\">日本語</a> | 🇰🇷 <a href=\"docs/translations/README.ko-KR.md\">한국어</a> | 🇩🇪 <a href=\"docs/translations/README.de-DE.md\">Deutsch</a> | 🇫🇷 <a href=\"docs/translations/README.fr-FR.md\">Français</a> | 🇪🇸 <a href=\"docs/translations/README.es-ES.md\">Español</a> | 🇮🇳 <a href=\"docs/translations/README.hi-IN.md\">हिन्दी</a> | 🇧🇷 <a href=\"docs/translations/README.pt-BR.md\">Português</a> | 🇷🇺 <a href=\"docs/translations/README.ru-RU.md\">Русский</a> | 🇸🇦 <a href=\"docs/translations/README.ar-SA.md\">العربية</a> | 🇮🇷 <a href=\"docs/translations/README.fa-IR.md\">فارسی</a> | 🇮🇹 <a href=\"docs/translations/README.it-IT.md\">Italiano</a> | 🇵🇱 <a href=\"docs/translations/README.pl-PL.md\">Polski</a> | 🇳🇱 <a href=\"docs/translations/README.nl-NL.md\">Nederlands</a> | 🇹🇷 <a href=\"docs/translations/README.tr-TR.md\">Türkçe</a> | 🇺🇦 <a href=\"docs/translations/README.uk-UA.md\">Українська</a> | 🇻🇳 <a href=\"docs/translations/README.vi-VN.md\">Tiếng Việt</a> | 🇮🇩 <a href=\"docs/translations/README.id-ID.md\">Bahasa Indonesia</a> | 🇸🇪 <a href=\"docs/translations/README.sv-SE.md\">Svenska</a> | 🇬🇷 <a href=\"docs/translations/README.el-GR.md\">Ελληνικά</a> | 🇷🇴 <a href=\"docs/translations/README.ro-RO.md\">Română</a> | 🇨🇿 <a href=\"docs/translations/README.cs-CZ.md\">Čeština</a> | 🇫🇮 <a href=\"docs/translations/README.fi-FI.md\">Suomi</a> | 🇩🇰 <a href=\"docs/translations/README.da-DK.md\">Dansk</a> | 🇳🇴 <a href=\"docs/translations/README.no-NO.md\">Norsk</a> | 🇭🇺 <a href=\"docs/translations/README.hu-HU.md\">Magyar</a> | 🇹🇭 <a href=\"docs/translations/README.th-TH.md\">ภาษาไทย</a> | 🇺🇿 <a href=\"docs/translations/README.uz-UZ.md\">Oʻzbekcha</a> | 🇹🇼 <a href=\"docs/translations/README.zh-TW.md\">繁體中文</a> | 🇵🇭 <a href=\"docs/translations/README.fil-PH.md\">Filipino</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.ycombinator.com/companies/graphify\"><img src=\"https://img.shields.io/badge/Y%20Combinator-S26-F0652F?style=flat&logo=ycombinator&logoColor=white\" alt=\"YC S26\"/></a>\n  <a href=\"https://safishamsi.gumroad.com/l/qetvlo\"><img src=\"https://img.shields.io/badge/Book-The%20Memory%20Layer-2ea44f?style=flat&logo=gitbook&logoColor=white\" alt=\"The Memory Layer\"/></a>\n  <a href=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml\"><img src=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml/badge.svg?branch=v8\" alt=\"CI\"/></a>\n  <a href=\"https://pypi.org/project/graphifyy/\"><img src=\"https://img.shields.io/pypi/v/graphifyy\" alt=\"PyPI\"/></a>\n  <a href=\"https://pepy.tech/project/graphifyy\"><img src=\"https://img.shields.io/pepy/dt/graphifyy?color=blue&label=downloads\" alt=\"Downloads\"/></a>\n  <a href=\"https://github.com/sponsors/safishamsi\"><img src=\"https://img.shields.io/badge/sponsor-safishamsi-ea4aaa?logo=github-sponsors\" alt=\"Sponsor\"/></a>\n  <a href=\"https://www.linkedin.com/in/safi-shamsi\"><img src=\"https://img.shields.io/badge/LinkedIn-Safi%20Shamsi-0077B5?logo=linkedin\" alt=\"LinkedIn\"/></a>\n  <a href=\"https://x.com/graphifyy\"><img src=\"https://img.shields.io/badge/X-graphifyy-000000?logo=x&logoColor=white\" alt=\"X\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://star-history.com/#safishamsi/graphify&Date\">\n    <img src=\"https://api.star-history.com/svg?repos=safishamsi/graphify&type=Date\" alt=\"Star History Chart\" width=\"370\"/>\n  </a>\n</p>\n\nType `/graphify` in your AI coding assistant and it maps your entire project — code, docs, PDFs, images, videos — into a knowledge graph you can query instead of grepping through files.\n\nWorks in Claude Code, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, GitHub Copilot CLI, VS Code Copilot Chat, Aider, Amp, OpenClaw, Factory Droid, Trae, Hermes, Kimi Code, Kiro, Pi, Devin CLI, and Google Antigravity.\n\n```\n/graphify .\n```\n\nThat's it. You get three files:\n\n```\ngraphify-out/\n├── graph.html       open in any browser — click nodes, filter, search\n├── GRAPH_REPORT.md  the highlights: key concepts, surprising connections, suggested questions\n└── graph.json       the full graph — query it anytime without re-reading your files\n```\n\nFor a readable architecture page with Mermaid call-flow diagrams, run:\n\n```bash\ngraphify export callflow-html\n```\n\n---\n\n## Prerequisites\n\n| Requirement | Minimum | Check | Install |\n|---|---|---|---|\n| Python | 3.10+ | `python --version` | [python.org](https://www.python.org/downloads/) |\n| uv *(recommended)* | any | `uv --version` | `curl -LsSf https://astral.sh/uv/install.sh \\| sh` |\n| pipx *(alternative)* | any | `pipx --version` | `pip install pipx` |\n\n**macOS quick install (Homebrew):**\n```bash\nbrew install python@3.12 uv\n```\n\n**Windows quick install:**\n```powershell\nwinget install astral-sh.uv\n```\n\n**Ubuntu/Debian:**\n```bash\nsudo apt install python3.12 python3-pip pipx\n# or install uv:\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n---\n\n## Install\n\n> **Official package:** The PyPI package is `graphifyy` (double-y). Other `graphify*` packages on PyPI are not affiliated. The CLI command is still `graphify`.\n\n**Step 1 — install the package:**\n\n```bash\n# Recommended (uv puts graphify on PATH automatically):\nuv tool install graphifyy\n\n# Alternatives:\npipx install graphifyy\npip install graphifyy  # may need PATH setup — see note below\n```\n\n**Step 2 — register the skill with your AI assistant:**\n\n```bash\ngraphify install\n```\n\nThat's it. Open your AI assistant and type `/graphify .`\n\nTo install the assistant skill into the current repository instead of your user\nprofile, add `--project`:\n\n```bash\ngraphify install --project\ngraphify install --project --platform codex\n```\n\nProject-scoped installs write under the current directory, for example\n`.claude/skills/graphify/SKILL.md` or `.agents/skills/graphify/SKILL.md` (plus a\n`references/` sidecar the skill loads on demand), and\nprint a `git add` hint for files that can be committed.\nPer-platform commands that support project-scoped installs accept the same flag,\nfor example `graphify claude install --project` or `graphify codex install --project`.\n\n> **PowerShell note:** Use `graphify .` not `/graphify .` — the leading slash is a path separator in PowerShell.\n\n> **`graphify: command not found`?** Use `uv tool install graphifyy` or `pipx install graphifyy` — both put the CLI on PATH automatically. With plain `pip`, add `~/.local/bin` (Linux) or `~/Library/Python/3.x/bin` (Mac) to your PATH, or run `python -m graphify`.\n\n> **Avoid `pip install` on Mac/Windows** if possible. The skill resolves Python at runtime from `graphify-out/.graphify_python`; if that points to a different environment than where `pip` installed the package, you'll get `ModuleNotFoundError: No module named 'graphify'`. `uv tool install` and `pipx install` isolate the package in their own env and avoid this entirely.\n\n> **Git hooks and uv tool / pipx:** `graphify hook install` embeds the current interpreter path directly into the hook scripts at install time, so the post-commit hook fires correctly even in GUI git clients and CI runners where `~/.local/bin` is not on PATH. If you reinstall or upgrade graphify, re-run `graphify hook install` to refresh the embedded path.\n\n### Pick your platform\n\n| Platform | Install command |\n|----------|----------------|\n| Claude Code (Linux/Mac) | `graphify install` |\n| Claude Code (Windows) | `graphify install` (auto-detected) or `graphify install --platform windows` |\n| CodeBuddy | `graphify install --platform codebuddy` |\n| Codex | `graphify install --platform codex` |\n| OpenCode | `graphify install --platform opencode` |\n| Kilo Code | `graphify install --platform kilo` |\n| GitHub Copilot CLI | `graphify install --platform copilot` |\n| VS Code Copilot Chat | `graphify vscode install` |\n| Aider | `graphify install --platform aider` |\n| OpenClaw | `graphify install --platform claw` |\n| Factory Droid | `graphify install --platform droid` |\n| Trae | `graphify install --platform trae` |\n| Trae CN | `graphify install --platform trae-cn` |\n| Gemini CLI | `graphify install --platform gemini` |\n| Hermes | `graphify install --platform hermes` |\n| Kimi Code | `graphify install --platform kimi` |\n| Amp | `graphify amp install` |\n| Agent Skills (cross-framework) | `graphify install --platform agents` (alias `--platform skills`) |\n| Kiro IDE/CLI | `graphify kiro install` |\n| Pi coding agent | `graphify install --platform pi` |\n| Cursor | `graphify cursor install` |\n| Devin CLI | `graphify devin install` |\n| Google Antigravity | `graphify antigravity install` |\n\nCodex users also need `multi_agent = true` under `[features]` in `~/.codex/config.toml` for parallel extraction. CodeBuddy uses the same Agent tool and PreToolUse hook mechanism as Claude Code. Factory Droid uses the `Task` tool for parallel subagent dispatch. OpenClaw and Aider use sequential extraction (parallel agent support is still early on those platforms). Trae uses the Agent tool for parallel subagent dispatch and does **not** support PreToolUse hooks — AGENTS.md is the always-on mechanism.\n\n`--platform agents` (alias `--platform skills`) targets the generic cross-framework [Agent-Skills](https://github.com/anthropics/skills) locations: the spec's user-global `~/.agents/skills/` (read by `npx skills` and spec-compliant frameworks) for a global install, and `./.agents/skills/` for a project (`--project`) install. The bare `graphify install` stays single-platform (Claude Code) by design — use the named `agents` platform when you want the skill discoverable by any framework that reads `.agents/skills`.\n\n> Codex uses `$graphify` instead of `/graphify`.\n\n### Optional extras\n\nInstall only what you need:\n\n| Extra | What it adds | Install |\n|---|---|---|\n| `pdf` | PDF extraction | `uv tool install \"graphifyy[pdf]\"` |\n| `office` | `.docx` and `.xlsx` support | `uv tool install \"graphifyy[office]\"` |\n| `google` | Google Sheets rendering | `uv tool install \"graphifyy[google]\"` |\n| `video` | Video/audio transcription (faster-whisper + yt-dlp) | `uv tool install \"graphifyy[video]\"` |\n| `mcp` | MCP stdio server | `uv tool install \"graphifyy[mcp]\"` |\n| `neo4j` | Neo4j push support | `uv tool install \"graphifyy[neo4j]\"` |\n| `falkordb` | FalkorDB push support | `uv tool install \"graphifyy[falkordb]\"` |\n| `svg` | SVG graph export | `uv tool install \"graphifyy[svg]\"` |\n| `leiden` | Leiden community detection (Python < 3.13 only) | `uv tool install \"graphifyy[leiden]\"` |\n| `ollama` | Ollama local inference | `uv tool install \"graphifyy[ollama]\"` |\n| `openai` | OpenAI / OpenAI-compatible APIs | `uv tool install \"graphifyy[openai]\"` |\n| `gemini` | Google Gemini API | `uv tool install \"graphifyy[gemini]\"` |\n| `anthropic` | Anthropic Claude API (`--backend claude`, uses `ANTHROPIC_API_KEY`) | `uv tool install \"graphifyy[anthropic]\"` |\n| `bedrock` | AWS Bedrock (uses IAM, no API key) | `uv tool install \"graphifyy[bedrock]\"` |\n| `azure` | Azure OpenAI Service (`--backend azure`, uses `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_ENDPOINT`) | `uv tool install \"graphifyy[openai]\"` |\n| `sql` | SQL schema extraction | `uv tool install \"graphifyy[sql]\"` |\n| `postgres` | Live PostgreSQL introspection (`--postgres DSN`) | `uv tool install \"graphifyy[postgres]\"` |\n| `dm` | BYOND DreamMaker `.dm`/`.dme` AST extraction (may need a C compiler + `python3-dev` if no wheel matches your platform) | `uv tool install \"graphifyy[dm]\"` |\n| `terraform` | Terraform / HCL `.tf`/`.tfvars`/`.hcl` AST extraction | `uv tool install \"graphifyy[terraform]\"` |\n| `chinese` | Chinese query segmentation (jieba) | `uv tool install \"graphifyy[chinese]\"` |\n| `all` | Everything above | `uv tool install \"graphifyy[all]\"` |\n\n---\n\n## Make your assistant always use the graph\n\nRun this once in your project after building a graph:\n\n| Platform | Command |\n|----------|---------|\n| C",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=68\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"graphifyy\"\nversion = \"0.8.49\"\ndescription = \"AI coding assistant skill (Claude Code, CodeBuddy, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph\"\nreadme = \"README.md\"\nlicense = { file = \"LICENSE\" }\nkeywords = [\"claude\", \"claude-code\", \"codex\", \"opencode\", \"kilo\", \"cursor\", \"gemini\", \"aider\", \"kiro\", \"pi\", \"devin\", \"knowledge-graph\", \"rag\", \"graphrag\", \"obsidian\", \"community-detection\", \"tree-sitter\", \"leiden\", \"llm\"]\nrequires-python = \">=3.10\"\ndependencies = [\n    \"networkx>=3.4\",\n    \"numpy>=1.21\",\n    \"rapidfuzz>=3.0\",\n    \"tree-sitter>=0.23.0,<0.26\",\n    \"tree-sitter-python>=0.23,<0.26\",\n    \"tree-sitter-javascript>=0.23,<0.26\",\n    \"tree-sitter-typescript>=0.23,<0.25\",\n    \"tree-sitter-go>=0.23,<0.26\",\n    \"tree-sitter-rust>=0.23,<0.25\",\n    \"tree-sitter-java>=0.23,<0.25\",\n    \"tree-sitter-groovy>=0.1,<0.3\",\n    \"tree-sitter-c>=0.23,<0.25\",\n    \"tree-sitter-cpp>=0.23,<0.25\",\n    \"tree-sitter-ruby>=0.23,<0.25\",\n    \"tree-sitter-c-sharp>=0.23,<0.25\",\n    \"tree-sitter-kotlin>=1.0,<2.0\",\n    \"tree-sitter-scala>=0.23,<0.27\",\n    \"tree-sitter-php>=0.23,<0.25\",\n    \"tree-sitter-swift>=0.7,<0.9\",\n    \"tree-sitter-lua>=0.2,<0.6\",\n    \"tree-sitter-zig>=1.0,<2.0\",\n    \"tree-sitter-powershell>=0.26,<0.28\",\n    \"tree-sitter-elixir>=0.3,<0.5\",\n    \"tree-sitter-objc>=3.0,<4.0\",\n    \"tree-sitter-julia>=0.23,<0.25\",\n    \"tree-sitter-verilog>=1.0,<2.0\",\n    \"tree-sitter-fortran>=0.6,<0.8\",\n    \"tree-sitter-bash>=0.23,<0.27\",\n    \"tree-sitter-json>=0.23,<0.26\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/safishamsi/graphify\"\nRepository = \"https://github.com/safishamsi/graphify\"\nIssues = \"https://github.com/safishamsi/graphify/issues\"\n\n[project.optional-dependencies]\n# starlette is pulled in transitively by mcp, but graphify/serve.py imports it\n# directly for the HTTP transport, so declare it here and floor it above the\n# CVE-2026-48818 / CVE-2026-54283 fixes (both resolved by 1.3.1) (#1391, #1396).\nmcp = [\"mcp\", \"starlette>=1.3.1\"]\nneo4j = [\"neo4j\"]\nfalkordb = [\"falkordb\"]\npdf = [\"pypdf>=6.12.0\", \"markdownify\"]\nwatch = [\"watchdog\"]\nsvg = [\"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\"]\nleiden = [\"graspologic; python_version < '3.13'\"]\noffice = [\"python-docx\", \"openpyxl\"]\ngoogle = [\"openpyxl\"]\npostgres = [\"psycopg[binary]\"]\nvideo = [\"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\"]\nkimi = [\"openai\", \"tiktoken\"]\nollama = [\"openai\"]\nbedrock = [\"boto3\"]\nanthropic = [\"anthropic\"]\ngemini = [\"openai\", \"tiktoken\"]\nopenai = [\"openai\", \"tiktoken\"]\nchinese = [\"jieba\"]\nsql = [\"tree-sitter-sql\"]\n# tree-sitter-dm (BYOND DreamMaker) ships only a Windows wheel, so on Linux/Mac it\n# must compile from source (needs a C toolchain + python3-dev). Keeping it optional\n# avoids breaking the default `uv tool install graphifyy` for everyone (#1104).\ndm = [\"tree-sitter-dm\"]\nterraform = [\"tree-sitter-hcl\"]\nall = [\"mcp\", \"starlette>=1.3.1\", \"neo4j\", \"falkordb\", \"pypdf>=6.12.0\", \"markdownify\", \"watchdog\", \"graspologic; python_version < '3.13'\", \"python-docx\", \"openpyxl\", \"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\", \"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\", \"openai\", \"tiktoken\", \"boto3\", \"anthropic\", \"tree-sitter-sql\", \"jieba\", \"tree-sitter-dm\", \"tree-sitter-hcl\"]\n\n[project.scripts]\ngraphify = \"graphify.__main__:main\"\ngraphify-mcp = \"graphify.serve:_main\"\n\n[dependency-groups]\ndev = [\n    \"bandit>=1.9.4\",\n    \"build>=1.5.0\",\n    \"hypothesis>=6.152.7\",\n    \"nuitka>=4.1\",\n    \"patchelf>=0.17.2.4 ; sys_platform != 'win32'\",\n    \"pip-audit>=2.10.0\",\n    \"pre-commit>=4.6.0\",\n    \"pyright>=1.1.409\",\n    \"pytest>=9.0.3\",\n    \"pytest-cov>=7.1.0\",\n    \"ruff>=0.15.13\",\n    \"safety>=3.7.0\",\n    \"setuptools>=82.0.1\",\n    \"wheel>=0.47.0\",\n    \"tomli>=2.0 ; python_version < '3.11'\",\n    \"tree-sitter-hcl>=1.2.0\",\n]\n\n[tool.uv]\n# Install via: uv tool install graphifyy\n# Run without installing: uvx graphifyy install\npackage = true\n\n[tool.setuptools]\npackages = [\"graphify\", \"graphify.extractors\"]\ninclude-package-data = false\n\n[tool.setuptools.package-data]\n# The skill bodies ship as graphify/skill*.md (the SKILL.md a host installs is\n# copied from one of these). The progressive-disclosure references sidecar ships\n# under graphify/skills/<host>/references/, and the always-on injection blocks\n# under graphify/always_on/. There is no graphify/skills/<host>/SKILL.md in the\n# repo, so no SKILL.md glob is needed here.\ngraphify = [\"skill.md\", \"skill-codex.md\", \"skill-opencode.md\", \"skill-kilo.md\", \"command-kilo.md\", \"skill-aider.md\", \"skill-amp.md\", \"skill-agents.md\", \"skill-copilot.md\", \"skill-claw.md\", \"skill-windows.md\", \"skill-droid.md\", \"skill-trae.md\", \"skill-kiro.md\", \"skill-vscode.md\", \"skill-pi.md\", \"skill-devin.md\", \"skills/*/references",
    "strategic_keywords": [
      "memory",
      "rag",
      "skill",
      "llm",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "vllm-project",
    "name": "vllm",
    "full_name": "vllm-project/vllm",
    "url": "https://github.com/vllm-project/vllm",
    "description": "A high-throughput and memory-efficient inference and serving engine for LLMs",
    "language": "Python",
    "total_stars": 84451,
    "forks": 18559,
    "stars_this_period": 204,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "amd",
        "blackwell",
        "cuda",
        "deepseek",
        "deepseek-v3",
        "gpt",
        "gpt-oss",
        "inference",
        "kimi",
        "llama",
        "llm",
        "llm-serving",
        "model-serving",
        "moe",
        "openai",
        "pytorch",
        "qwen",
        "qwen3",
        "tpu",
        "transformer"
      ],
      "license": "Apache-2.0",
      "open_issues": 5512,
      "created_at": "2023-02-09T11:23:20Z",
      "pushed_at": "2026-06-26T21:58:41Z",
      "homepage": "https://vllm.ai",
      "default_branch": "main",
      "forks": 18559,
      "watchers": 568,
      "archived": false,
      "size_kb": 228111
    },
    "readme_content": "<!-- markdownlint-disable MD001 MD041 -->\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/vllm-project/vllm/main/docs/assets/logos/vllm-logo-text-dark.png\">\n    <img alt=\"vLLM\" src=\"https://raw.githubusercontent.com/vllm-project/vllm/main/docs/assets/logos/vllm-logo-text-light.png\" width=55%>\n  </picture>\n</p>\n\n<h3 align=\"center\">\nEasy, fast, and cheap LLM serving for everyone\n</h3>\n\n<p align=\"center\">\n| <a href=\"https://docs.vllm.ai\"><b>Documentation</b></a> | <a href=\"https://blog.vllm.ai/\"><b>Blog</b></a> | <a href=\"https://arxiv.org/abs/2309.06180\"><b>Paper</b></a> | <a href=\"https://x.com/vllm_project\"><b>Twitter/X</b></a> | <a href=\"https://discuss.vllm.ai\"><b>User Forum</b></a> | <a href=\"https://slack.vllm.ai\"><b>Developer Slack</b></a> |\n</p>\n\n🔥 We have built a vLLM website to help you get started with vLLM. Please visit [vllm.ai](https://vllm.ai) to learn more.\nFor events, please visit [vllm.ai/events](https://vllm.ai/events) to join us.\n\n---\n\n## About\n\nvLLM is a fast and easy-to-use library for LLM inference and serving.\n\nOriginally developed in the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley, vLLM has grown into one of the most active open-source AI projects built and maintained by a diverse community of many dozens of academic institutions and companies from over 2000 contributors.\n\nvLLM is fast with:\n\n- State-of-the-art serving throughput\n- Efficient management of attention key and value memory with [**PagedAttention**](https://blog.vllm.ai/2023/06/20/vllm.html)\n- Continuous batching of incoming requests, chunked prefill, prefix caching\n- Fast and flexible model execution with piecewise and full CUDA/HIP graphs\n- Quantization: FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ, GGUF, compressed-tensors, ModelOpt, TorchAO, and [more](https://docs.vllm.ai/en/latest/features/quantization/index.html)\n- Optimized attention kernels including FlashAttention, FlashInfer, TRTLLM-GEN, FlashMLA, and Triton\n- Optimized GEMM/MoE kernels for various precisions using CUTLASS, TRTLLM-GEN, CuTeDSL\n- Speculative decoding including n-gram, suffix, EAGLE, DFlash\n- Automatic kernel generation and graph-level transformations using torch.compile\n- Disaggregated prefill, decode, and encode\n\nvLLM is flexible and easy to use with:\n\n- Seamless integration with popular Hugging Face models\n- High-throughput serving with various decoding algorithms, including *parallel sampling*, *beam search*, and more\n- Tensor, pipeline, data, expert, and context parallelism for distributed inference\n- Streaming outputs\n- Generation of structured outputs using xgrammar or guidance\n- Tool calling and reasoning parsers\n- OpenAI-compatible API server, plus Anthropic Messages API and gRPC support\n- Efficient multi-LoRA support for dense and MoE layers\n- Support for NVIDIA GPUs, AMD GPUs, and x86/ARM/PowerPC CPUs. Additionally, diverse hardware plugins such as Google TPUs, Intel Gaudi, IBM Spyre, Huawei Ascend, Rebellions NPU, Apple Silicon, MetaX GPU, and more.\n\nvLLM seamlessly supports 200+ model architectures on Hugging Face, including:\n\n- Decoder-only LLMs (e.g., Llama, Qwen, Gemma)\n- Mixture-of-Expert LLMs (e.g., Mixtral, DeepSeek-V3, Qwen-MoE, GPT-OSS)\n- Hybrid attention and state-space models (e.g., Mamba, Qwen3.5)\n- Multi-modal models (e.g., LLaVA, Qwen-VL, Pixtral)\n- Embedding and retrieval models (e.g., E5-Mistral, GTE, ColBERT)\n- Reward and classification models (e.g., Qwen-Math)\n\nFind the full list of supported models [here](https://docs.vllm.ai/en/latest/models/supported_models.html).\n\n## Getting Started\n\nInstall vLLM with [`uv`](https://docs.astral.sh/uv/) (recommended) or `pip`:\n\n```bash\nuv pip install vllm\n```\n\nOr [build from source](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/index.html#build-wheel-from-source) for development.\n\nVisit our [documentation](https://docs.vllm.ai/en/latest/) to learn more.\n\n- [Installation](https://docs.vllm.ai/en/latest/getting_started/installation.html)\n- [Quickstart](https://docs.vllm.ai/en/latest/getting_started/quickstart.html)\n- [List of Supported Models](https://docs.vllm.ai/en/latest/models/supported_models.html)\n\n## Contributing\n\nWe welcome and value any contributions and collaborations.\nPlease check out [Contributing to vLLM](https://docs.vllm.ai/en/latest/contributing/index.html) for how to get involved.\n\n## Citation\n\nIf you use vLLM for your research, please cite our [paper](https://arxiv.org/abs/2309.06180):\n\n```bibtex\n@inproceedings{kwon2023efficient,\n  title={Efficient Memory Management for Large Language Model Serving with PagedAttention},\n  author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},\n  booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},\n  year={2023}\n}\n```\n\n## Contact Us\n\n<!-- --8<-- [start:contact-us] -->\n- For technical questions and feature requests, please use GitHub [Issues](https://github.com/vllm-project/vllm/issues)\n- For discussing with fellow users, please use the [vLLM Forum](https://discuss.vllm.ai)\n- For coordinating contributions and development, please use [Slack](https://slack.vllm.ai)\n- For security disclosures, please use GitHub's [Security Advisories](https://github.com/vllm-project/vllm/security/advisories) feature\n- For collaborations and partnerships, please contact us at [collaboration@vllm.ai](mailto:collaboration@vllm.ai)\n<!-- --8<-- [end:contact-us] -->\n\n## Media Kit\n\n- If you wish to use vLLM's logo, please refer to [our media kit repo](https://github.com/vllm-project/media-kit)\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\n# Should be mirrored in requirements/build/cuda.txt\nrequires = [\n    \"cmake>=3.26.1\",\n    \"ninja\",\n    \"packaging>=24.2\",\n    \"setuptools>=77.0.3,<81.0.0\",\n    \"setuptools-scm>=8.0\",\n    \"setuptools-rust>=1.9.0\",\n    \"torch == 2.11.0\",\n    \"wheel\",\n    \"jinja2\",\n]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"vllm\"\nauthors = [{name = \"vLLM Team\"}]\nlicense = \"Apache-2.0\"\nlicense-files = [\"LICENSE\"]\nreadme = \"README.md\"\ndescription = \"A high-throughput and memory-efficient inference and serving engine for LLMs\"\nclassifiers = [\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Information Technology\",\n    \"Intended Audience :: Science/Research\",\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    \"Topic :: Scientific/Engineering :: Information Analysis\",\n]\nrequires-python = \">=3.10,<3.15\"\ndynamic = [ \"version\", \"dependencies\", \"optional-dependencies\"]\n\n[project.urls]\nHomepage=\"https://github.com/vllm-project/vllm\"\nDocumentation=\"https://docs.vllm.ai/en/latest/\"\nSlack=\"https://slack.vllm.ai/\"\n\n[project.scripts]\nvllm = \"vllm.entrypoints.cli.main:main\"\n\n[project.entry-points.\"vllm.general_plugins\"]\nlora_filesystem_resolver = \"vllm.plugins.lora_resolvers.filesystem_resolver:register_filesystem_resolver\"\nlora_hf_hub_resolver = \"vllm.plugins.lora_resolvers.hf_hub_resolver:register_hf_hub_resolver\"\n\n[tool.setuptools_scm]\n# no extra settings needed, presence enables setuptools-scm\n\n[tool.setuptools.packages.find]\nwhere = [\".\"]\ninclude = [\"vllm*\"]\n\n[tool.ruff.lint.per-file-ignores]\n\"vllm/third_party/**\" = [\"ALL\"]\n\"vllm/version.py\" = [\"F401\"]\n\"vllm/_version.py\" = [\"ALL\"]\n\n[tool.ruff.lint]\nselect = [\n    # pycodestyle\n    \"E\",\n    # Pyflakes\n    \"F\",\n    # pyupgrade\n    \"UP\",\n    # flake8-bugbear\n    \"B\",\n    # flake8-implicit-str-concat\n    \"ISC\",\n    # flake8-simplify\n    \"SIM\",\n    # isort\n    \"I\",\n    # flake8-logging-format\n    \"G\",\n]\nignore = [\n    # star imports\n    \"F405\", \"F403\",\n    # lambda expression assignment\n    \"E731\",\n    # zip without `strict=`\n    \"B905\",\n    # Loop control variable not used within loop body\n    \"B007\",\n    # f-string format\n    \"UP032\",\n]\n\n[tool.ruff.format]\ndocstring-code-format = true\n\n[tool.mypy]\nplugins = ['pydantic.mypy']\nignore_missing_imports = true\ncheck_untyped_defs = true\nfollow_imports = \"silent\"\n\n[tool.pytest.ini_options]\nmarkers = [\n    \"slow_test\",\n    \"skip_global_cleanup\",\n    \"core_model: enable this model test in each PR instead of only nightly\",\n    \"hybrid_model: models that contain mamba layers (including pure SSM and hybrid architectures)\",\n    \"cpu_model: enable this model test in CPU tests\",\n    \"cpu_test: mark test as CPU-only test\",\n    \"split: run this test as part of a split\",\n    \"distributed: run this test only in distributed GPU tests\",\n    \"optional: optional tests that are automatically skipped, include --optional to run them\",\n]\n\n[tool.ty.src]\nrespect-ignore-files = true\n\n[tool.ty.environment]\npython = \"./.venv\"\n\n[tool.typos.files]\n# these files may be written in non english words\nextend-exclude = [\"tests/models/fixtures/*\", \"tests/prompts/*\", \"tests/tokenizers_/*\",\n    \"benchmarks/sonnet.txt\", \"tests/lora/data/*\", \"build/*\",\n    \"examples/pooling/token_embed/*\", \"tests/models/language/pooling/*\",\n    \"vllm/third_party/*\", \"vllm/entrypoints/serve/instrumentator/static/*\",\n    \"tests/entrypoints/speech_to_text/transcription/test_transcription_validation.py\",\n    \"docs/governance/process.md\", \"docs/assets/contributing/vllm_bench_serve_timeline.html\", \n    \"tests/v1/engine/test_fast_incdec_prefix_err.py\", \".git/*\", \"csrc/cpu/sgl-kernels/*\",\n    \"rust/src/chat/src/renderer/deepseek_v32/fixtures/*\",\n    \"rust/src/parser/src/tool/gemma4.rs\", \"rust/src/parser/src/unified/gemma4.rs\",\n    \"rust/src/text/src/output/decoded.rs\",\n    \"rust/src/tokenizer/src/incremental.rs\", \"rust/src/parser/src/reasoning/tests.rs\"]\nignore-hidden = false\n\n[tool.typos.default]\nextend-ignore-identifiers-re = [\".*[Uu][Ee][0-9][Mm][0-9].*\"]\n\n[tool.typos.default.extend-identifiers]\nbbc5b7ede = \"bbc5b7ede\"\nNOOPs = \"NOOPs\"\nnin_shortcut = \"nin_shortcut\"\ncudaDevAttrMaxSharedMemoryPerBlockOptin = \"cudaDevAttrMaxSharedMemoryPerBlockOptin\"\nsharedMemPerBlockOptin = \"sharedMemPerBlockOptin\"\n\ndepthwise_seperable_out_channel = \"depthwise_seperable_out_channel\"\npard_token = \"pard_token\"\nptd_token_id = \"ptd_token_id\"\nser_de = \"ser_de\"\nshared_memory_per_block_optin = \"shared_memory_per_block_optin\"\nFoPE = \"FoPE\"\nk_ot = \"k_ot\"\nview_seperator = \"view_seperator\"\ninverse_std_variences = \"inverse_std_variences\"\n\n[tool.typos.default.extend-words]\niy = \"iy\"\nindx = \"indx\"\n# intel cpu features\ntme = \"tme\"\ndout = \"dout\"\nPn = \"Pn\"\narange = \"arange\"\nthw = \"thw\"\n# temporal position ids (parallels hpos/wpos in vision RoPE)\ntpos",
    "strategic_keywords": [
      "memory",
      "llm",
      "eval",
      "inference",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "ogulcancelik",
    "name": "herdr",
    "full_name": "ogulcancelik/herdr",
    "url": "https://github.com/ogulcancelik/herdr",
    "description": "agent multiplexer that lives in your terminal.",
    "language": "Rust",
    "total_stars": 7485,
    "forks": 465,
    "stars_this_period": 170,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agent-orchestration",
        "ai",
        "ai-agents",
        "claude-code",
        "cli",
        "codex",
        "coding-agents",
        "developer-tools",
        "devtools",
        "multiplexer",
        "rust",
        "terminal",
        "terminal-multiplexer",
        "terminal-ui",
        "tmux",
        "tui",
        "workspace-manager"
      ],
      "license": "NOASSERTION",
      "open_issues": 24,
      "created_at": "2026-03-27T17:54:33Z",
      "pushed_at": "2026-06-26T15:14:35Z",
      "homepage": "https://herdr.dev",
      "default_branch": "master",
      "forks": 465,
      "watchers": 19,
      "archived": false,
      "size_kb": 28167
    },
    "readme_content": "# herdr\n\n\n<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"herdr\" width=\"100\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"https://herdr.dev\">herdr.dev</a> · <a href=\"#install\">install</a> · <a href=\"#quick-start\">quick start</a> · <a href=\"#supported-agents\">supported agents</a> · <a href=\"https://herdr.dev/docs/integrations/\">integrations</a> · <a href=\"https://herdr.dev/docs/configuration/\">configuration</a> · <a href=\"https://herdr.dev/docs/socket-api/\">socket api</a> · <a href=\"#sponsors\">sponsor</a>\n</p>\n\n---\n\nhttps://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267\n\n**agent multiplexer that lives in your terminal.**\n\nworkspaces, tabs, panes. mouse-native: click, drag, split. every agent at a glance: blocked, working, done. detach and reattach, agents keep running. no gui app, no electron, no mac-only native wrapper. you see the agent's own terminal, not someone's interpretation of it.\n\n---\n\n## install\n\n```bash\ncurl -fsSL https://herdr.dev/install.sh | sh\n```\n\non windows preview beta:\n\n```powershell\npowershell -ExecutionPolicy Bypass -c \"irm https://herdr.dev/install.ps1 | iex\"\n```\n\nor install with homebrew:\n\n```bash\nbrew install herdr\n```\n\nor install with mise:\n\n```bash\nmise use -g herdr\n```\n\nif mise reports `herdr not found in mise tool registry`, update mise and retry. older mise versions predate the herdr registry entry; `mise use -g github:ogulcancelik/herdr` works as a temporary fallback.\n\nor download the stable Linux/macOS binary from [releases](https://github.com/ogulcancelik/herdr/releases). Native Windows binaries are preview-only beta builds.\n\n## quick start\n\nStart Herdr in the directory where the work lives:\n\n```bash\nherdr\n```\n\nHerdr starts or attaches to one background session server. When a session has no workspaces, Herdr opens one automatically. Run an agent in the root pane. Press `ctrl+b`, then `shift+n` to create another workspace, `ctrl+b`, then `v` or `minus` to split panes, `ctrl+b`, then `c` to create a tab, and `ctrl+b`, then `w` to switch workspaces.\n\nPress `ctrl+b q` to detach the client. The server and pane processes keep running. Open another terminal and run `herdr` again to reattach.\n\n## core concepts\n\n**Server and client.** By default, `herdr` attaches to a background server. Detaching closes only the client. `herdr server stop` stops the default server and kills its panes. Named sessions are separate server namespaces: use `herdr session attach work`, `herdr session stop work`, and `herdr session list` when you want fully separate runtime state.\n\n**Workspaces, tabs, panes.** A workspace is the project-level container. Tabs group panes inside a workspace. Panes are real terminal processes, not rewritten agent views.\n\n**Copy.** Herdr copies pane text, not the sidebar. Drag-select inside a pane, double-click a word or token, or press `prefix+[` for keyboard copy mode. In copy mode, move with `h/j/k/l`, `w/b/e`, and `{`/`}`, start selection with `v` or Space, copy with `y` or Enter, and leave with `q` or Esc. In PuTTY and some SSH terminals, hold `Shift` while dragging to use the terminal's own selection, and `Shift` + right click to paste.\n\n**Update and restore.** `herdr update` installs a new binary, but a running server keeps using the old process until it is stopped or handed off. Stop the old server to use the new version. Stopping exits pane processes. Run `herdr server stop`, then run `herdr` again for the default session. For a named session, run `herdr session stop <name>`, then run `herdr session attach <name>` again. `herdr update --handoff` is experimental and tries to move live panes, including foreground processes such as dev servers, from the old server to the new one. With current official integrations installed, supported agent panes can restart from their native agent sessions after a server restart or update.\n\n**Keybindings.** Herdr uses explicit keybinding strings. `prefix+n` means press the configured prefix, then `n`. `ctrl+alt+n`, `cmd+k`, `alt+1`, and function-key chords are direct terminal-mode shortcuts and do not need the prefix. Plain direct printable keys such as `n` steal normal typing, so use `prefix+n` unless you intentionally want a modifier-gated direct binding.\n\n**Agent awareness.** The sidebar shows blocked, working, done, and idle states. Detection works with process names and terminal output by default. Official integrations can add native session identity for restore, semantic state reports, or both.\n\n## update\n\nHerdr notifies you when a new version is available. Run manually:\n\n```bash\nherdr update\n```\n\n`herdr update` is for installs managed by Herdr's own installer. Homebrew, mise, and Nix installs update through `brew upgrade herdr`, `mise upgrade herdr`, or your Nix workflow, then use the same stop-and-run-again flow if a session is still running the old server. Linux and macOS direct installs can opt into development preview builds with `herdr channel set preview` and return to stable with `herdr channel set stable`. Windows beta installs are preview-only for now. See [install docs](https://herdr.dev/docs/install/) and [session state docs](https://herdr.dev/docs/session-state/) for the full update, restart, restore, and handoff matrix.\n\nLinux and macOS direct installs use the stable update channel by default. Windows beta installs default to preview. To test preview builds from `master` before the next stable release:\n\n```bash\nherdr channel set preview\n```\n\nTo return Linux and macOS direct installs to stable:\n\n```bash\nherdr channel set stable\n```\n\nFor direct installs, changing channels also checks that channel and installs its latest binary. If that update fails, run `herdr update` to retry from the configured channel.\n\nPreview is only for direct installs managed by Herdr's updater. Homebrew, mise, and Nix stay on stable and update through their package managers.\n\n## how it compares\n\n|                          | tmux | gui managers | herdr |\n|--------------------------|------|--------------|-------|\n| persistent sessions       | ✓    | —            | ✓     |\n| detach / reattach        | ✓    | —            | ✓     |\n| panes, tabs, workspaces  | ✓    | ✓            | ✓     |\n| agent awareness          | —    | ✓            | ✓     |\n| lives in your terminal   | ✓    | —            | ✓     |\n| real terminal views      | ✓    | —            | ✓     |\n| mouse-native            | —    | ✓            | ✓     |\n| lightweight binary       | ✓    | —            | ✓     |\n| agents can orchestrate   | ?    | ?            | ✓     |\n\ntmux gives you persistence and panes, but it was built before agents existed. gui managers show agent state, but they make you leave your terminal and use their wrapped view. herdr is persistence and awareness in one tool that stays out of your way.\n\n## remote and attach\n\nHerdr works over normal SSH. Run it on the remote host, detach, and reattach later:\n\n```\nssh you@yourserver\nherdr\n```\n\nYou can also attach from your local terminal without opening a shell first:\n\n```bash\nherdr --remote workbox\nherdr --remote ssh://you@yourserver:2222\n```\n\nRemote attach adds fallback SSH keepalives by default while preserving your own SSH config. Set `[remote].manage_ssh_config = false` to use plain `ssh`.\n\nDirect attach connects your current terminal to one server-owned terminal:\n\n```bash\nherdr agent attach <target>\nherdr terminal attach <terminal_id>\n```\n\nSee [persistence and remote docs](https://herdr.dev/docs/persistence-remote/) for remote keybinding, named-session, and handoff details.\n\n## agent awareness\n\nthe sidebar shows which agents are blocked, working, or done. workspaces roll up to their most urgent state so you can scan the full list at a glance.\n\nstates:\n\n- 🔴 **blocked** — agent needs input or approval\n- 🟡 **working** — agent is actively running\n- 🔵 **done** — work finished, you have not looked at it yet\n- 🟢 **idle** — done and seen\n\ndetection works by reading foreground process and terminal output. zero config, no hooks required. official claude code, codex, github copilot cli, devin, droid, kimi code cli, qodercli, and cursor agent cli integrations provide session restore identity; pi, omp, kimi code cli, opencode, kilo code cli, hermes, and custom socket integrations can report their own state.\n\n## lives in your terminal\n\nnot a gui window, not a web dashboard, not electron. herdr runs inside whatever terminal you already use. single rust binary, no dependencies. works inside tmux as the outer terminal environment.\n\n## what you get\n\n- **workspaces** — organized around git repos or folder names, each with its own tabs and panes\n- **tabs** — first-class in the socket api and cli\n- **copy-friendly** — drag-select pane text, double-click tokens, or use keyboard copy mode with `prefix+[`, `h/j/k/l`, `{`/`}`, `v`, and `y`\n- **notifications** — sounds and toasts for background events; tab-aware suppression\n- **18 built-in themes** — catppuccin, terminal, tokyo night, gruvbox, one, solarized, kanagawa, rosé pine, vesper, and light variants for the main palettes\n- **session persistence** — pane processes survive client detach; sessions restore panes after full restart, with opt-in recent screen history\n\n## agents can use herdr too\n\nThe local Unix socket lets agents create workspaces, split or zoom panes, spawn helpers, read output, and wait for state changes. Start with the [socket API docs](https://herdr.dev/docs/socket-api/) and [`SKILL.md`](./SKILL.md).\n\n## supported agents\n\nautomatic detection works out of the box. process name matching plus terminal output heuristics.\n\n| agent | idle / done | working | blocked |\n|-------|-------------|---------|---------|\n| [pi](https://pi.dev) | ✓ | ✓ | partial |\n| [claude code](https://docs.anthropic.com/en/docs/claude-code) | ✓ | ✓ | ✓ |\n| [codex](https://github.com/openai/codex) | ✓ | ✓ | ✓ |\n| [droid](https://factory.ai) | ✓ | ✓ | ✓ |\n| [amp](https://ampcode.com) | ✓ | ✓ | ✓ |\n| [opencode](https://github.com/anomalyco/opencode) | ✓ | ✓ | ✓ |\n| [grok cli](https://x.ai/grok) | ✓ | ✓ | ✓ |\n| [hermes agent](https://github.com/NousResearch/hermes-agent) | ✓ | ✓ | ✓ |\n| [kilo code cli](https://kilo.ai/) | ✓ | ✓ | ✓ |\n| [devin cli](https://docs.devin.ai/cli) | ✓ | ✓ | ✓ |\n| cursor agent | ✓ | ✓ | ✓ |\n| antigravity cli | ✓ | ✓ | ✓ |\n| kimi code cli | ✓ | ✓ | ✓ |\n| [github copilot cli](https://github.com/features/copilot) | ✓ | ✓ | ✓ |\n| [qodercli](https://qoder.com/cli) | ✓ | ✓ | ✓ |\n| [kiro cli](https://kiro.dev/docs/cli/) | ✓ | ✓ | — |\n\ndetected but not fully tested: gemini cli, cline.\n\nfor agents outside the built-in list, herdr still works as a terminal multiplexer with workspaces, panes, and tiling. custom integrations can report agent labels over the socket api. see the [socket api docs](https://herdr.dev/docs/socket-api/).\n\n### direct integrations\n\nofficial integrations have two roles. claude code, codex, github copilot cli, devin, droid, qodercli, and cursor agent cli report session identity for native restore, while their state still comes from screen detection. pi, omp, kimi code cli, opencode, kilo code cli, and hermes report both semantic state and session identity. install with:\n\n```bash\nherdr integration install pi\nherdr integration install omp\nherdr integration install claude\nherdr integration install codex\nherdr integration install copilot\nherdr integration install devin\nherdr integration install droid\nherdr integration install kimi\nherdr integration install opencode\nherdr integration install kilo\nherdr integration install hermes\nherdr integration install qodercli\nherdr integration install cursor\n```\n\nsee the [integrations docs](https://herdr.dev/docs/integrations/) for setup details.\n\n## keybindings\n\nPress `ctrl+b` to enter prefix mode. Default actions are prefix-first and tmux-like:\n\n| key | action |\n|-----|--------|\n| `prefix+c` | new tab |\n| `prefix+n` / `prefix+p` | next / previous tab |\n| `prefix+1..9` | switch tab |\n| `prefix+w` | workspace navigation |\n| `prefix+g` | session navigator |\n| `prefix+shift+n` |",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"herdr\"\nversion = \"0.7.1\"\nedition = \"2021\"\nbuild = \"build.rs\"\ndescription = \"terminal workspace manager for AI coding agents\"\nlicense = \"AGPL-3.0-or-later\"\nrepository = \"https://github.com/ogulcancelik/herdr\"\nhomepage = \"https://herdr.dev\"\nkeywords = [\"terminal\", \"tui\", \"ai\", \"agents\", \"multiplexer\"]\ncategories = [\"command-line-utilities\"]\ninclude = [\"src/**/*\", \"assets/sounds/*\", \"README.md\", \"LICENSE\", \"Cargo.toml\"]\n\n[dependencies]\nbase64 = \"0.22.1\"\nbincode = { version = \"2\", features = [\"serde\"] }\nbytes = \"1\"\ncrossterm = \"0.29\"\nctrlc = \"3\"\ninterprocess = \"2.4.2\"\nlibc = \"0.2\"\nportable-pty = \"=0.9.0\"\npng = \"0.17\"\nratatui = { version = \"0.30\", features = [\"unstable-rendered-line-info\"] }\nregex = \"1\"\nserde = { version = \"1\", features = [\"derive\"] }\nserde_json = \"1\"\nsha2 = \"0.10\"\ntokio = { version = \"1\", features = [\"rt-multi-thread\", \"macros\", \"sync\", \"time\"] }\ntoml = \"0.8\"\ntracing = \"0.1.44\"\ntracing-subscriber = { version = \"0.3.23\", features = [\"env-filter\"] }\nunicode-width = \"0.2\"\n\n[patch.crates-io]\nportable-pty = { path = \"vendor/portable-pty\" }\n\n[target.'cfg(windows)'.dependencies]\nwindows-sys = { version = \"0.61.2\", features = [\n    \"Wdk_System_Threading\",\n    \"Win32_Foundation\",\n    \"Win32_System_Diagnostics_Debug\",\n    \"Win32_System_Diagnostics_ToolHelp\",\n    \"Win32_System_Console\",\n    \"Win32_System_Kernel\",\n    \"Win32_System_Threading\",\n    \"Win32_UI_Shell\",\n    \"Win32_UI_WindowsAndMessaging\",\n] }\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "runtime",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  }
]