[
  {
    "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": 21587,
    "forks": 2414,
    "stars_this_period": 12948,
    "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": 123,
      "created_at": "2026-03-29T15:23:22Z",
      "pushed_at": "2026-06-24T17:55:36Z",
      "homepage": "https://github.com/calesthio/OpenMontage",
      "default_branch": "main",
      "forks": 2414,
      "watchers": 126,
      "archived": false,
      "size_kb": 23852
    },
    "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\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": "mattpocock",
    "name": "skills",
    "full_name": "mattpocock/skills",
    "url": "https://github.com/mattpocock/skills",
    "description": "Skills for Real Engineers. Straight from my .claude directory.",
    "language": "Shell",
    "total_stars": 145960,
    "forks": 12626,
    "stars_this_period": 11581,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 95,
      "created_at": "2026-02-03T11:15:53Z",
      "pushed_at": "2026-06-25T11:48:40Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 12627,
      "watchers": 924,
      "archived": false,
      "size_kb": 365
    },
    "readme_content": "<p>\n  <a href=\"https://www.aihero.dev/s/skills-newsletter\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://res.cloudinary.com/total-typescript/image/upload/v1777382277/skills-repo-dark_2x.png\">\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"https://res.cloudinary.com/total-typescript/image/upload/v1777382277/skill-repo-light_2x.png\">\n      <img alt=\"Skills\" src=\"https://res.cloudinary.com/total-typescript/image/upload/v1777382277/skill-repo-light_2x.png\" width=\"369\">\n    </picture>\n  </a>\n</p>\n\n# Skills For Real Engineers\n\n[![skills.sh](https://skills.sh/b/mattpocock/skills)](https://skills.sh/mattpocock/skills)\n\nMy agent skills that I use every day to do real engineering - not vibe coding.\n\nDeveloping real applications is hard. Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process. But while doing so, they take away your control and make bugs in the process hard to resolve.\n\nThese skills are designed to be small, easy to adapt, and composable. They work with any model. They're based on decades of engineering experience. Hack around with them. Make them your own. Enjoy.\n\nIf you want to keep up with changes to these skills, and any new ones I create, you can join ~60,000 other devs on my newsletter:\n\n[Sign Up To The Newsletter](https://www.aihero.dev/s/skills-newsletter)\n\n## Quickstart (30-second setup)\n\n1. Run the skills.sh installer:\n\n```bash\nnpx skills@latest add mattpocock/skills\n```\n\n2. Pick the skills you want, and which coding agents you want to install them on. **Make sure you select `/setup-matt-pocock-skills`**.\n\n3. Run `/setup-matt-pocock-skills` in your agent. It will:\n   - Ask you which issue tracker you want to use (GitHub, Linear, or local files)\n   - Ask you what labels you apply to tickets when you triage them (`/triage` uses labels)\n   - Ask you where you want to save any docs we create\n\n4. Bam - you're ready to go.\n\n## Why These Skills Exist\n\nI built these skills as a way to fix common failure modes I see with Claude Code, Codex, and other coding agents.\n\n### #1: The Agent Didn't Do What I Want\n\n> \"No-one knows exactly what they want\"\n>\n> David Thomas & Andrew Hunt, [The Pragmatic Programmer](https://www.amazon.co.uk/Pragmatic-Programmer-Anniversary-Journey-Mastery/dp/B0833F1T3V)\n\n**The Problem**. The most common failure mode in software development is misalignment. You think the dev knows what you want. Then you see what they've built - and you realize it didn't understand you at all.\n\nThis is just the same in the AI age. There is a communication gap between you and the agent. The fix for this is a **grilling session** - getting the agent to ask you detailed questions about what you're building.\n\n**The Fix** is to use:\n\n- [`/grill-me`](./skills/productivity/grill-me/SKILL.md) - for non-code uses\n- [`/grill-with-docs`](./skills/engineering/grill-with-docs/SKILL.md) - same as [`/grill-me`](./skills/productivity/grill-me/SKILL.md), but adds more goodies (see below)\n\nThese are my most popular skills. They help you align with the agent before you get started, and think deeply about the change you're making. Use them _every_ time you want to make a change.\n\n### #2: The Agent Is Way Too Verbose\n\n> With a ubiquitous language, conversations among developers and expressions of the code are all derived from the same domain model.\n>\n> Eric Evans, [Domain-Driven-Design](https://www.amazon.co.uk/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215)\n\n**The Problem**: At the start of a project, devs and the people they're building the software for (the domain experts) are usually speaking different languages.\n\nI felt the same tension with my agents. Agents are usually dropped into a project and asked to figure out the jargon as they go. So they use 20 words where 1 will do.\n\n**The Fix** for this is a shared language. It's a document that helps agents decode the jargon used in the project.\n\n<details>\n<summary>\nExample\n</summary>\n\nHere's an example [`CONTEXT.md`](https://github.com/mattpocock/course-video-manager/blob/076a5a7a182db0fe1e62971dd7a68bcadf010f1c/CONTEXT.md), from my `course-video-manager` repo. Which one is easier to read?\n\n- **BEFORE**: \"There's a problem when a lesson inside a section of a course is made 'real' (i.e. given a spot in the file system)\"\n- **AFTER**: \"There's a problem with the materialization cascade\"\n\nThis concision pays off session after session.\n\n</details>\n\nThis is built into [`/grill-with-docs`](./skills/engineering/grill-with-docs/SKILL.md). It's a grilling session, but that helps you build a shared language with the AI, and document hard-to-explain decisions in ADR's.\n\nIt's hard to explain how powerful this is. It might be the single coolest technique in this repo. Try it, and see.\n\n> [!TIP]\n> A shared language has many other benefits than reducing verbosity:\n>\n> - **Variables, functions and files are named consistently**, using the shared language\n> - As a result, the **codebase is easier to navigate** for the agent\n> - The agent also **spends fewer tokens on thinking**, because it has access to a more concise language\n\n### #3: The Code Doesn't Work\n\n> \"Always take small, deliberate steps. The rate of feedback is your speed limit. Never take on a task that’s too big.\"\n>\n> David Thomas & Andrew Hunt, [The Pragmatic Programmer](https://www.amazon.co.uk/Pragmatic-Programmer-Anniversary-Journey-Mastery/dp/B0833F1T3V)\n\n**The Problem**: Let's say that you and the agent are aligned on what to build. What happens when the agent _still_ produces crap?\n\nIt's time to look at your feedback loops. Without feedback on how the code it produces actually runs, the agent will be flying blind.\n\n**The Fix**: You need the usual tranche of feedback loops: static types, browser access, and automated tests.\n\nFor automated tests, a red-green-refactor loop is critical. This is where the agent writes a failing test first, then fixes the test. This helps give the agent a consistent level of feedback that results in far better code.\n\nI've built a **[`/tdd`](./skills/engineering/tdd/SKILL.md) skill** you can slot into any project. It encourages red-green-refactor and gives the agent plenty of guidance on what makes good and bad tests.\n\nFor debugging, I've also built a **[`/diagnosing-bugs`](./skills/engineering/diagnosing-bugs/SKILL.md)** skill that wraps best debugging practices into a simple loop.\n\n### #4: We Built A Ball Of Mud\n\n> \"Invest in the design of the system _every day_.\"\n>\n> Kent Beck, [Extreme Programming Explained](https://www.amazon.co.uk/Extreme-Programming-Explained-Embrace-Change/dp/0321278658)\n\n> \"The best modules are deep. They allow a lot of functionality to be accessed through a simple interface.\"\n>\n> John Ousterhout, [A Philosophy Of Software Design](https://www.amazon.co.uk/Philosophy-Software-Design-2nd/dp/173210221X)\n\n**The Problem**: Most apps built with agents are complex and hard to change. Because agents can radically speed up coding, they also accelerate software entropy. Codebases get more complex at an unprecedented rate.\n\n**The Fix** for this is a radical new approach to AI-powered development: caring about the design of the code.\n\nThis is built in to every layer of these skills:\n\n- [`/to-prd`](./skills/engineering/to-prd/SKILL.md) quizzes you about which modules you're touching before creating a PRD\n\nAnd crucially, [`/improve-codebase-architecture`](./skills/engineering/improve-codebase-architecture/SKILL.md) helps you rescue a codebase that has become a ball of mud. I recommend running it on your codebase once every few days.\n\n### Summary\n\nSoftware engineering fundamentals matter more than ever. These skills are my best effort at condensing these fundamentals into repeatable practices, to help you ship the best apps of your career. Enjoy.\n\n## Reference\n\nThese split on one axis — who can invoke them. **User-invoked** skills are reachable only when you type them (e.g. `/grill-me`); their job is to orchestrate. **Model-invoked** skills can be invoked by you _or_ reached for automatically by the agent when the task fits; they hold the reusable discipline. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.\n\n### Engineering\n\nSkills I use daily for code work.\n\n**User-invoked**\n\n- **[ask-matt](./skills/engineering/ask-matt/SKILL.md)** — Ask which skill or flow fits your situation. A router over the user-invoked skills in this repo.\n- **[grill-with-docs](./skills/engineering/grill-with-docs/SKILL.md)** — Grilling session that also builds your project's domain model, sharpening terminology and updating `CONTEXT.md` and ADRs inline.\n- **[triage](./skills/engineering/triage/SKILL.md)** — Move issues through a state machine of triage roles.\n- **[improve-codebase-architecture](./skills/engineering/improve-codebase-architecture/SKILL.md)** — Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.\n- **[setup-matt-pocock-skills](./skills/engineering/setup-matt-pocock-skills/SKILL.md)** — Configure this repo for the engineering skills (issue tracker, triage labels, domain doc layout). Run once per repo before using the other engineering skills.\n- **[to-issues](./skills/engineering/to-issues/SKILL.md)** — Break any plan, spec, or PRD into independently-grabbable issues using vertical slices.\n- **[to-prd](./skills/engineering/to-prd/SKILL.md)** — Turn the current conversation into a PRD and publish it to the issue tracker. No interview — just synthesizes what you've already discussed.\n- **[prototype](./skills/engineering/prototype/SKILL.md)** — Build a throwaway prototype to flesh out a design — either a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route.\n\n**Model-invoked**\n\n- **[diagnosing-bugs](./skills/engineering/diagnosing-bugs/SKILL.md)** — Disciplined diagnosis loop for hard bugs and performance regressions: reproduce → minimise → hypothesise → instrument → fix → regression-test.\n- **[tdd](./skills/engineering/tdd/SKILL.md)** — Test-driven development with a red-green-refactor loop. Builds features or fixes bugs one vertical slice at a time.\n- **[domain-modeling](./skills/engineering/domain-modeling/SKILL.md)** — Actively build and sharpen a project's domain model — challenge terms against the glossary, stress-test with edge-case scenarios, and update `CONTEXT.md` and ADRs inline.\n- **[codebase-design](./skills/engineering/codebase-design/SKILL.md)** — Shared discipline and vocabulary for designing deep modules: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface.\n\n### Productivity\n\nGeneral workflow tools, not code-specific.\n\n**User-invoked**\n\n- **[grill-me](./skills/productivity/grill-me/SKILL.md)** — Get relentlessly interviewed about a plan or design until every branch of the decision tree is resolved.\n- **[handoff](./skills/productivity/handoff/SKILL.md)** — Compact the current conversation into a handoff document so another agent can continue the work.\n- **[teach](./skills/productivity/teach/SKILL.md)** — Teach the user a new skill or concept over multiple sessions, using the current directory as a stateful teaching workspace.\n- **[writing-great-skills](./skills/productivity/writing-great-skills/SKILL.md)** — Reference for writing and editing skills well: the vocabulary and principles that make a skill predictable.\n\n**Model-invoked**\n\n- **[grilling](./skills/productivity/grilling/SKILL.md)** — Interview the user relentlessly about a plan or design until every branch of the decision tree is resolved. The reusable loop behind `grill-me` and `grill-with-docs`.\n\n### Misc\n\nTools I keep around but rarely use.\n\n- **[git-guardrails-claude-code](./skills/misc/git-guardrails-claude-code/SKILL.md)** — Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, etc.) before they execute.\n- **[migrate-to-shoehorn](",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "DeusData",
    "name": "codebase-memory-mcp",
    "full_name": "DeusData/codebase-memory-mcp",
    "url": "https://github.com/DeusData/codebase-memory-mcp",
    "description": "High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.",
    "language": "C",
    "total_stars": 14605,
    "forks": 1074,
    "stars_this_period": 9589,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "aider",
        "ast",
        "claude-code",
        "code-analysis",
        "code-intelligence",
        "codex",
        "cursor",
        "cypher",
        "developer-tools",
        "gemini-cli",
        "graph-visualization",
        "kilocode",
        "knowledge-graph",
        "mcp",
        "mcp-server",
        "model-context-protocol",
        "opencode",
        "sqlite",
        "tree-sitter",
        "windsurf"
      ],
      "license": "MIT",
      "open_issues": 150,
      "created_at": "2026-02-24T22:01:00Z",
      "pushed_at": "2026-06-24T06:35:12Z",
      "homepage": "https://deusdata.github.io/codebase-memory-mcp/",
      "default_branch": "main",
      "forks": 1074,
      "watchers": 59,
      "archived": false,
      "size_kb": 168764
    },
    "readme_content": "# codebase-memory-mcp\n\n[![GitHub Release](https://img.shields.io/github/v/release/DeusData/codebase-memory-mcp?style=flat&color=blue)](https://github.com/DeusData/codebase-memory-mcp/releases/latest)\n[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![CI](https://img.shields.io/github/actions/workflow/status/DeusData/codebase-memory-mcp/dry-run.yml?label=CI)](https://github.com/DeusData/codebase-memory-mcp/actions/workflows/dry-run.yml)\n[![Tests](https://img.shields.io/badge/tests-5604_passing-brightgreen)](https://github.com/DeusData/codebase-memory-mcp)\n[![Languages](https://img.shields.io/badge/languages-158-orange)](https://github.com/DeusData/codebase-memory-mcp)\n[![Hybrid LSP](https://img.shields.io/badge/Hybrid_LSP-9_languages-blue)](#hybrid-lsp)\n[![Agents](https://img.shields.io/badge/agents-11-purple)](https://github.com/DeusData/codebase-memory-mcp)\n[![Pure C](https://img.shields.io/badge/pure_C-zero_dependencies-blue)](https://github.com/DeusData/codebase-memory-mcp)\n[![Platform](https://img.shields.io/badge/macOS_%7C_Linux_%7C_Windows-supported-lightgrey)](https://github.com/DeusData/codebase-memory-mcp/releases/latest)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/DeusData/codebase-memory-mcp/badge)](https://scorecard.dev/viewer/?uri=github.com/DeusData/codebase-memory-mcp)\n[![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev)\n[![VirusTotal](https://img.shields.io/badge/VirusTotal-scanned_every_release-brightgreen?logo=virustotal)](https://github.com/DeusData/codebase-memory-mcp/releases/latest)\n[![arXiv](https://img.shields.io/badge/arXiv-2603.27277-b31b1b?logo=arxiv)](https://arxiv.org/abs/2603.27277)\n\n**The fastest and most efficient code intelligence engine for AI coding agents.** Full-indexes an average repository in milliseconds, the Linux kernel (28M LOC, 75K files) in 3 minutes. Answers structural queries in under 1ms. Ships as a single static binary for macOS, Linux, and Windows — download, run `install`, done.\n\nHigh-quality parsing through [tree-sitter](https://tree-sitter.github.io/tree-sitter/) AST analysis across all 158 languages, enhanced with [**Hybrid LSP** semantic type resolution](#hybrid-lsp) for Python, TypeScript / JavaScript / JSX / TSX, PHP, C#, Go, C, C++, Java, Kotlin, and Rust — producing a persistent knowledge graph of functions, classes, call chains, HTTP routes, and cross-service links. 14 MCP tools. Zero dependencies. Plug and play across 11 coding agents.\n\n> **Research** — The design and benchmarks behind this project are described in the preprint [*Codebase-Memory: Tree-Sitter-Based Knowledge Graphs for LLM Code Exploration via MCP*](https://arxiv.org/abs/2603.27277) (arXiv:2603.27277). Evaluated across 31 real-world repositories: 83% answer quality, 10× fewer tokens, 2.1× fewer tool calls vs. file-by-file exploration.\n\n> **Security & Trust** — This tool reads your codebase and writes to your agent configuration files. That is what it is designed to do. If you prefer to audit before running, the [full source is here](https://github.com/DeusData/codebase-memory-mcp) — every release binary is signed, checksummed, and scanned by 70+ antivirus engines. All processing happens 100% locally; your code never leaves your machine. Found a security issue? We want to know — see [SECURITY.md](SECURITY.md). Security is Priority #1 for us.\n\n<p align=\"center\">\n  <img src=\"docs/graph-ui-screenshot.png\" alt=\"Graph visualization UI showing the codebase-memory-mcp knowledge graph\" width=\"800\">\n  <br>\n  <em>Built-in 3D graph visualization (UI variant) — explore your knowledge graph at localhost:9749</em>\n</p>\n\n## Why codebase-memory-mcp\n\n- **Extreme indexing speed** — Linux kernel (28M LOC, 75K files) in 3 minutes. RAM-first pipeline: LZ4 compression, in-memory SQLite, fused Aho-Corasick pattern matching. Memory released after indexing.\n- **Plug and play** — single static binary for macOS (arm64/amd64), Linux (arm64/amd64), and Windows (amd64). No Docker, no runtime dependencies, no API keys. Download → `install` → restart agent → done.\n- **158 languages** — vendored tree-sitter grammars compiled into the binary. Nothing to install, nothing that breaks.\n- **120x fewer tokens** — 5 structural queries: ~3,400 tokens vs ~412,000 via file-by-file search. One graph query replaces dozens of grep/read cycles.\n- **11 agents, one command** — `install` auto-detects Claude Code, Codex CLI, Gemini CLI, Zed, OpenCode, Antigravity, Aider, KiloCode, VS Code, OpenClaw, and Kiro — configures MCP entries, instruction files, and pre-tool hooks for each.\n- **Built-in graph visualization** — 3D interactive UI at `localhost:9749` (optional UI binary variant).\n- **Infrastructure-as-code indexing** — Dockerfiles, Kubernetes manifests, and Kustomize overlays indexed as graph nodes with cross-references. `Resource` nodes for K8s kinds, `Module` nodes for Kustomize overlays with `IMPORTS` edges to referenced resources.\n- **14 MCP tools** — search, trace, architecture, impact analysis, Cypher queries, dead code detection, cross-service HTTP linking, ADR management, and more.\n\n## Quick Start\n\n**One-line install** (macOS / Linux):\n```bash\ncurl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash\n```\n\nWith graph visualization UI:\n```bash\ncurl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash -s -- --ui\n```\n\n**Windows** (PowerShell):\n```powershell\n# 1. Download the installer\nInvoke-WebRequest -Uri https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 -OutFile install.ps1\n\n# 2. (Optional but recommended) Inspect the script\nnotepad install.ps1\n\n# 3. Run it\n.\\install.ps1\n\n```\n\nOptions: `--ui` (graph visualization), `--skip-config` (binary only, no agent setup), `--dir=<path>` (custom location).\n\nRestart your coding agent. Say **\"Index this project\"** — done.\n\n<details>\n<summary>Manual install</summary>\n\n1. **Download** the archive for your platform from the [latest release](https://github.com/DeusData/codebase-memory-mcp/releases/latest):\n   - `codebase-memory-mcp-<os>-<arch>.tar.gz` (macOS/Linux) or `.zip` (Windows) — standard\n   - `codebase-memory-mcp-ui-<os>-<arch>.tar.gz` / `.zip` — with graph visualization\n\n2. **Extract and install** (each archive includes `install.sh` or `install.ps1`):\n\n   macOS / Linux:\n   ```bash\n   tar xzf codebase-memory-mcp-*.tar.gz\n   ./install.sh\n   ```\n\n   Windows (PowerShell):\n   ```powershell\n   Expand-Archive codebase-memory-mcp-windows-amd64.zip -DestinationPath .\n   .\\install.ps1\n   ```\n\n3. **Restart** your coding agent.\n\nThe `install` command automatically strips macOS quarantine attributes and ad-hoc signs the binary — no manual `xattr`/`codesign` needed.\n</details>\n\nThe `install` command auto-detects all installed coding agents and configures MCP server entries, instruction files, skills, and pre-tool hooks for each.\n\n### Graph Visualization UI\n\nIf you downloaded the `ui` variant:\n\n```bash\ncodebase-memory-mcp --ui=true --port=9749\n```\n\nOpen `http://localhost:9749` in your browser. The UI runs as a background thread alongside the MCP server — it's available whenever your agent is connected.\n\n### Auto-Index\n\nEnable automatic indexing on MCP session start:\n\n```bash\ncodebase-memory-mcp config set auto_index true\n```\n\nWhen enabled, new projects are indexed automatically on first connection. Previously-indexed projects are registered with the background watcher for ongoing git-based change detection. Configurable file limit: `config set auto_index_limit 50000`.\n\n### Keeping Up to Date\n\n```bash\ncodebase-memory-mcp update\n```\n\nThe MCP server also checks for updates on startup and notifies on the first tool call if a newer release is available.\n\n### Uninstall\n\n```bash\ncodebase-memory-mcp uninstall\n```\n\nRemoves all agent configs, skills, hooks, and instructions. Does not remove the binary or SQLite databases.\n\n## Features\n\n### Graph & analysis\n- **Architecture overview**: `get_architecture` returns languages, packages, entry points, routes, hotspots, boundaries, layers, and clusters in a single call\n- **Architecture Decision Records**: `manage_adr` persists architectural decisions across sessions\n- **Louvain community detection**: Discovers functional modules by clustering call edges\n- **Git diff impact mapping**: `detect_changes` maps uncommitted changes to affected symbols with risk classification\n- **Call graph**: Resolves function calls across files and packages (import-aware, type-inferred)\n- **Dead code detection**: Finds functions with zero callers, excluding entry points\n- **Cypher-like queries**: `MATCH (f:Function)-[:CALLS]->(g) WHERE f.name = 'main' RETURN g.name`\n\n### Search\n- **Semantic search** (`semantic_query`): vector search across the entire graph, powered by bundled Nomic `nomic-embed-code` embeddings (40K tokens, 768d int8) compiled into the binary — no API key, no Ollama, no Docker. 11-signal combined scoring (TF-IDF, RRI, API/Type/Decorator signatures, AST profiles, data flow, Halstead-lite, MinHash, module proximity, graph diffusion).\n- **BM25 full-text search** via SQLite FTS5 with `cbm_camel_split` tokenizer (camelCase / snake_case aware)\n- **Structural search** (`search_graph`): regex name patterns, label filters, min/max degree, file scoping\n- **Code search** (`search_code`): graph-augmented grep over indexed files only\n\n### Cross-service linking\n- **HTTP** route ↔ call-site matching with confidence scoring\n- **gRPC, GraphQL, tRPC** service detection with protobuf Route extraction\n- **Channel detection** (`EMITS` / `LISTENS_ON`) for Socket.IO, EventEmitter, and generic pub-sub patterns across 8 languages with constant resolution\n\n### Cross-repo intelligence\n- **`CROSS_*` edges** link nodes across multiple repos indexed under the same store\n- **Multi-galaxy 3D UI layout** for cross-repo architecture visualization\n- **Cross-repo architecture summary** combining services, routes, and dependencies across the indexed fleet\n\n### Edge types (selected)\n- `CALLS`, `IMPORTS`, `DEFINES`, `IMPLEMENTS`, `INHERITS`\n- `HTTP_CALLS`, `ASYNC_CALLS` (cross-service)\n- `EMITS`, `LISTENS_ON` (channels)\n- `DATA_FLOWS` with arg-to-param mapping + field access chains\n- `SIMILAR_TO` (MinHash + LSH near-clone detection, Jaccard scored)\n- `SEMANTICALLY_RELATED` (vocabulary-mismatch, same-language, score ≥ 0.80)\n\n### Indexing pipeline\n- **158 vendored tree-sitter grammars** compiled into the binary\n- **Generic package / module resolution** — bare specifiers like `@myorg/pkg`, `github.com/foo/bar`, `use my_crate::foo` resolved via manifest scanning (`package.json`, `go.mod`, `Cargo.toml`, `pyproject.toml`, `composer.json`, `pubspec.yaml`, `pom.xml`, `build.gradle`, `mix.exs`, `*.gemspec`)\n- **Infrastructure-as-code indexing** — Dockerfiles, Kubernetes manifests, Kustomize overlays as graph nodes\n- **[Hybrid LSP semantic type resolution](#hybrid-lsp)** for Python, TypeScript / JavaScript / JSX / TSX, PHP, C#, Go, C, C++, Java, Kotlin, and Rust — a lightweight C implementation of language type-resolution algorithms, structurally inspired by and compatible with major language servers including tsserver / typescript-go, pyright, gopls, Roslyn, Eclipse JDT, and rust-analyzer (parameter binding, return-type inference, generic substitution, JSX component dispatch, JSDoc inference for plain JS files, namespace + trait + late-static-binding resolution for PHP, file-scoped namespaces + records + LINQ method syntax for C#, class-hierarchy + overload + lambda resolution for Java, extension-function + scope-function resolution for Kotlin, trait-method + UFCS resolution for Rust)\n- **RAM-first pipeline**: LZ4 compression, in-memory SQLite, single dump at end. Memory released after.\n\n### Distribution & operation\n- **Single static binary, zero infrastructure**: SQLite-backed, persists to `~/.cache/codebase-memory-mcp/`\n- **Auto-sync**: Background watcher detects file changes and re-indexes automatical",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "rag",
      "llm",
      "eval",
      "workflow",
      "protocol"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "tw93",
    "name": "Pake",
    "full_name": "tw93/Pake",
    "url": "https://github.com/tw93/Pake",
    "description": "🤱🏻 Turn any webpage into a desktop app with one command.",
    "language": "Rust",
    "total_stars": 57543,
    "forks": 11457,
    "stars_this_period": 7038,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "chatgpt",
        "claude",
        "desktop",
        "gemini",
        "hight-performance",
        "linux",
        "macos",
        "no-electron",
        "package",
        "rust",
        "tauri",
        "windows",
        "youtube"
      ],
      "license": "GPL-3.0",
      "open_issues": 6,
      "created_at": "2022-10-14T09:32:57Z",
      "pushed_at": "2026-06-22T06:10:36Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 11457,
      "watchers": 267,
      "archived": false,
      "size_kb": 64722
    },
    "readme_content": "<h4 align=\"right\"><strong>English</strong> | <a href=\"README_CN.md\">简体中文</a></h4>\n<p align=\"center\">\n    <img src=https://gw.alipayobjects.com/zos/k/fa/logo-modified.png width=138/>\n</p>\n<h1 align=\"center\">Pake</h1>\n<p align=\"center\"><strong>Turn any webpage into a desktop app with one command, supports macOS, Windows, and Linux</strong></p>\n<div align=\"center\">\n    <a href=\"https://twitter.com/HiTw93\" target=\"_blank\">\n    <img alt=\"twitter\" src=\"https://img.shields.io/badge/follow-Tw93-red?style=flat-square&logo=Twitter\"></a>\n    <a href=\"https://t.me/+9f9gf4ZrFSQ2OWVl\" target=\"_blank\">\n    <img alt=\"telegram\" src=\"https://img.shields.io/badge/chat-telegram-blueviolet?style=flat-square&logo=Telegram\"></a>\n    <a href=\"https://github.com/tw93/Pake/releases\" target=\"_blank\">\n    <img alt=\"GitHub downloads\" src=\"https://img.shields.io/github/downloads/tw93/Pake/total.svg?style=flat-square\"></a>\n    <a href=\"https://github.com/tw93/Pake/commits\" target=\"_blank\">\n    <img alt=\"GitHub commit\" src=\"https://img.shields.io/github/commit-activity/m/tw93/Pake?style=flat-square\"></a>\n    <a href=\"https://github.com/tw93/Pake/issues?q=is%3Aissue+is%3Aclosed\" target=\"_blank\">\n    <img alt=\"GitHub closed issues\" src=\"https://img.shields.io/github/issues-closed/tw93/Pake.svg?style=flat-square\"></a>\n</div>\n\n## Features\n\n- 🎐 **Lightweight**: Installer is nearly 20 times smaller than Electron packages, typically under 10M on disk\n- 🚀 **Fast**: Built with Rust Tauri, much faster than traditional JS frameworks with lower memory usage\n- ⚡ **Easy to use**: One-command packaging via CLI or online building, no complex configuration needed\n- 📦 **Feature-rich**: Supports shortcuts, immersive windows, drag & drop, style customization, ad removal\n\n## Getting Started\n\n- **Beginners**: Download ready-made [Popular Packages](#popular-packages) or use [Online Building](docs/github-actions-usage.md) with no environment setup required\n- **Developers**: Install [CLI Tool](docs/cli-usage.md) for one-command packaging of any website with customizable icons, window settings, and more\n- **Advanced Users**: Clone the project locally for [Custom Development](#development), or check [Advanced Usage](docs/advanced-usage.md) for style customization and feature enhancement\n- **Troubleshooting**: Check [FAQ](docs/faq.md) for common issues and solutions\n\n## Popular Packages\n\n<table>\n    <tr>\n        <td>WeRead\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/WeRead.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/WeRead_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/WeRead_x86_64.deb\">Linux</a>\n        </td>\n        <td>Twitter\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Twitter.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Twitter_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Twitter_x86_64.deb\">Linux</a>\n        </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/WeRead.jpg width=600/></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/Twitter.jpg width=600/></td>\n    </tr>\n    <tr>\n        <td>Grok\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Grok.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Grok_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Grok_x86_64.deb\">Linux</a>\n        </td>\n        <td>DeepSeek\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/DeepSeek.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/DeepSeek_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/DeepSeek_x86_64.deb\">Linux</a>\n        </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/Grok.png width=600/></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/DeepSeek.png width=600/></td>\n    </tr>\n    <tr>\n        <td>ChatGPT\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ChatGPT.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ChatGPT_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ChatGPT_x86_64.deb\">Linux</a>\n        </td>\n        <td>Gemini\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Gemini.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Gemini_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Gemini_x86_64.deb\">Linux</a>\n        </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/ChatGPT.png width=600/></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/Gemini.png width=600/></td>\n    </tr>\n    <tr>\n      <td>YouTube Music\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTubeMusic_x86_64.deb\">Linux</a>\n      </td>\n      <td>YouTube\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTube.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTube_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/YouTube_x86_64.deb\">Linux</a>\n      </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/YouTubeMusic.png width=600 /></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/YouTube.jpg width=600 /></td>\n    </tr>\n    <tr>\n        <td>LiZhi\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/LiZhi.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/LiZhi_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/LiZhi_x86_64.deb\">Linux</a>\n        </td>\n        <td>ProgramMusic\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ProgramMusic.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ProgramMusic_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/ProgramMusic_x86_64.deb\">Linux</a>\n        </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/LiZhi.jpg width=600/></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/ProgramMusic.jpg width=600/></td>\n    </tr>\n    <tr>\n        <td>Excalidraw\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Excalidraw.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Excalidraw_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/Excalidraw_x86_64.deb\">Linux</a>\n        </td>\n        <td>XiaoHongShu\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu.dmg\">Mac</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu_x64.msi\">Windows</a>\n            <a href=\"https://github.com/tw93/Pake/releases/latest/download/XiaoHongShu_x86_64.deb\">Linux</a>\n        </td>\n    </tr>\n    <tr>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/Excalidraw.png width=600/></td>\n        <td><img src=https://raw.githubusercontent.com/tw93/static/main/pake/XiaoHongShu.png width=600/></td>\n    </tr>\n</table>\n\n<details>\n<summary>🏂 You can download more applications from <a href=\"https://github.com/tw93/Pake/releases\">Releases</a>. <b>Click here to expand the shortcuts reference!</b></summary>\n\n<br/>\n\n| Mac                                                       | Windows/Linux                                       | Function                            |\n| --------------------------------------------------------- | --------------------------------------------------- | ----------------------------------- |\n| <kbd>⌘</kbd> + <kbd>[</kbd>                               | <kbd>Ctrl</kbd> + <kbd>←</kbd>                      | Return to the previous page         |\n| <kbd>⌘</kbd> + <kbd>]</kbd>                               | <kbd>Ctrl</kbd> + <kbd>→</kbd>                      | Go to the next page                 |\n| <kbd>⌘</kbd> + <kbd>↑</kbd>                               | <kbd>Ctrl</kbd> + <kbd>↑</kbd>                      | Auto scroll to top of page          |\n| <kbd>⌘</kbd> + <kbd>↓</kbd>                               | <kbd>Ctrl</kbd> + <kbd>↓</kbd>                      | Auto scroll to bottom of page       |\n| <kbd>⌘</kbd> + <kbd>r</kbd>                               | <kbd>Ctrl</kbd> + <kbd>r</kbd>                      | Refresh Page                        |\n| <kbd>⌘</kbd> + <kbd>w</kbd>                               | <kbd>Ctrl</kbd> + <kbd>w</kbd>                      | Hide window, not quit               |\n| <kbd>⌘</kbd> + <kbd>-</kbd>                               | <kbd>Ctrl</kbd> + <kbd>-</kbd>                      | Zoom out the page                   |\n| <kbd>⌘</kbd> + <kbd>=</kbd>                               | <kbd>Ctrl</kbd> + <kbd>=</kbd>                      | Zoom in the Page                    |\n| <kbd>⌘</kbd> + <kbd>0</kbd>                               | <kbd>Ctrl</kbd> + <kbd>0</kbd>                      | Reset the page zoom                 |\n| <kbd>⌘</kbd> + <kbd>L</kbd>                               | <kbd>Ctrl</kbd> + <kbd>L</kbd>                      | Copy Current Page URL               |\n| <kbd>⌘</kbd> + <kbd>⇧</kbd> + <kbd>⌥</kbd> + <kbd>V</kbd> | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>V</kbd>   | Paste and Match Style               |\n| <kbd>⌘</kbd> + <kbd>⇧</kbd> + <kbd>H</kbd>                | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>H</kbd>   | Go to Home Page                     |\n| <kbd>⌘</kbd> + <kbd>⌥</kbd> + <kbd>I</kbd>                | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>I</kbd>   | Toggle Developer Tools (Debug Only) |\n| <kbd>⌘</kbd> + <kbd>⇧</kbd> + <kbd>⌫</kbd>                | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Del</kbd> | Clear Cache & Restart               |\n\nIn addition, double-click the title bar to switch to full-screen mode. For Mac users, you can also use the gesture to go to the previous or next page and drag the title bar to move the window. The new menu also offers options for navigation, zoom, and window controls.\n\n</details>\n\n## Command-Line Packaging\n\n![Pake](https://raw.githubusercontent.com/tw93/static/main/pake/pake1.gif)\n\n```bash\n# Install Pake CLI\npnpm install -g pake-cli\n\n# Basic usage - automatically fetches website icon\npake https://github.com --name GitHub\n\n# Advanced usage with custom options\npake https://weekly.tw93.fun --name Weekly --icon https://cdn.tw93.fun/pake/weekly.icns --width 1200 --height 800 --hide-title-bar\n```\n\nFirst-time packaging requires environment setup and may be slower, subsequent builds are fast. For complete parameter documentation, see [CLI Usage Guide](docs/cli-usage.md). Don't want to use CLI? Try [GitHub Actions Online Building](docs/github-actions-usage.md).\n\n## Development\n\nRequires Rust `>=1.85` and Node `>=22` (recommended LTS; `>=18` also works). For detailed installation guide, see [Tauri documentation](https://v2.tauri.app/start/prerequisites/). If unfamiliar with development environment, use the CLI tool instead.\n\n```bash\n# Install dependencies\npnpm i\n\n# Local development [right-click to open debug mode]\npnpm ru",
    "strategic_keywords": [
      "memory",
      "rag"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 15,
      "productize": 11,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 6,
      "total": 84
    },
    "strategic_score": 84
  },
  {
    "owner": "Panniantong",
    "name": "Agent-Reach",
    "full_name": "Panniantong/Agent-Reach",
    "url": "https://github.com/Panniantong/Agent-Reach",
    "description": "Give your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.",
    "language": "Python",
    "total_stars": 40897,
    "forks": 3232,
    "stars_this_period": 6752,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-infrastructure",
        "ai-agent",
        "ai-search",
        "automation",
        "bilibili",
        "claude-code",
        "cli",
        "cursor",
        "free-api",
        "llm-tools",
        "mcp",
        "python",
        "reddit-scraper",
        "twitter-scraper",
        "web-scraper",
        "xiaohongshu",
        "youtube-transcript"
      ],
      "license": "MIT",
      "open_issues": 102,
      "created_at": "2026-02-24T02:10:24Z",
      "pushed_at": "2026-06-23T13:04:55Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 3232,
      "watchers": 115,
      "archived": false,
      "size_kb": 1571
    },
    "readme_content": "<h1 align=\"center\">👁️ Agent Reach</h1>\n\n<p align=\"center\">\n  <strong>给你的 AI Agent 一键装上互联网能力</strong>\n</p>\n\n<p align=\"center\">\n  当下最稳的接入方式，替你选好、装好、体检好——接入方式会换代，你不用操心\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"></a>\n  <a href=\"https://www.python.org/\"><img src=\"https://img.shields.io/badge/Python-3.10+-green.svg?style=for-the-badge&logo=python&logoColor=white\" alt=\"Python 3.10+\"></a>\n  <a href=\"https://github.com/Panniantong/agent-reach/stargazers\"><img src=\"https://img.shields.io/github/stars/Panniantong/agent-reach?style=for-the-badge\" alt=\"GitHub Stars\"></a>\n  <a href=\"https://trendshift.io/repositories/24387\"><img src=\"https://trendshift.io/api/badge/repositories/24387\" alt=\"Trendshift GitHub Trending #1 Repository of the Day\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#快速上手\">快速开始</a> · <a href=\"docs/README_en.md\">English</a> · <a href=\"docs/README_ja.md\">日本語</a> · <a href=\"docs/README_ko.md\">한국어</a> · <a href=\"#支持的平台\">支持平台</a> · <a href=\"#设计理念\">设计理念</a>\n</p>\n\n---\n\n## 为什么需要 Agent Reach？\n\nAI Agent 已经能帮你写代码、改文档、管项目——但你让它去网上找点东西，它就抓瞎了：\n\n- 📺 \"帮我看看这个 YouTube 教程讲了什么\" → **看不了**，拿不到字幕\n- 🐦 \"帮我搜一下推特上大家怎么评价这个产品\" → **搜不了**，Twitter API 要付费\n- 📖 \"去 Reddit 上看看有没有人遇到过同样的 bug\" → **403 被封**，服务器 IP 被拒\n- 📕 \"帮我看看小红书上这个品的口碑\" → **打不开**，必须登录才能看\n- 📺 \"B站上有个技术视频，帮我总结一下\" → **拿不到**，通用下载工具被 B站风控全面拦截\n- 🔍 \"帮我在网上搜一下最新的 LLM 框架对比\" → **没有好用的搜索**，要么付费要么质量差\n- 🌐 \"帮我看看这个网页写了啥\" → **抓回来一堆 HTML 标签**，根本没法读\n- 📦 \"这个 GitHub 仓库是干嘛的？Issue 里说了什么？\" → 能用，但认证配置很麻烦\n- 📡 \"帮我订阅这几个 RSS 源，有更新告诉我\" → 要自己装库写代码\n\n**这些不难实现，但是需要自己折腾配置**\n\n每个平台都有自己的门槛——要付费的 API、要绕过的封锁、要登录的账号、要清洗的数据。你要一个一个去踩坑、装工具、调配置，光是让 Agent 能读个推特就得折腾半天。\n\n**Agent Reach 把这件事变成一句话：**\n\n```\n帮我安装 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n```\n\n复制给你的 Agent，几分钟后它就能读推特、搜 Reddit、看 YouTube、刷小红书了。\n\n**已经装过了？更新也是一句话：**\n\n```\n帮我更新 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md\n```\n\n> ⭐ **Star 这个项目**，我们会持续追踪各平台的变化、接入新的渠道。你不用自己盯——平台封了我们修，有新渠道我们加。\n\n### ✅ 在你用之前，你可能想知道\n\n| | |\n|---|---|\n| 💰 **完全免费** | 所有工具开源、所有 API 免费。唯一可能花钱的是服务器代理（$1/月），本地电脑不需要 |\n| 🔒 **隐私安全** | Cookie 只存在你本地，不上传不外传。代码完全开源，随时可审查 |\n| 🔄 **持续换代** | 每个平台都是「首选 + 备选」多后端路由。某个接入方式失效了，我们换下一个，你无感（2026-06 实例：yt-dlp 被 B站风控封死 → 已切换 bili-cli，用户零操作） |\n| 🤖 **兼容所有 Agent** | Claude Code、OpenClaw、Cursor、Windsurf……任何能跑命令行的 Agent 都能用 |\n| 🩺 **自带诊断** | `agent-reach doctor` 一条命令告诉你哪个通、哪个不通、怎么修 |\n\n---\n\n## 支持的平台\n\n| 平台 | 装好即用 | 配置后解锁 | 怎么配 |\n|------|---------|-----------|-------|\n| 🌐 **网页** | 阅读任意网页 | — | 无需配置 |\n| 📺 **YouTube** | 字幕提取 + 视频搜索 | — | 无需配置 |\n| 📡 **RSS** | 阅读任意 RSS/Atom 源 | — | 无需配置 |\n| 🔍 **全网搜索** | — | 全网语义搜索 | 自动配置（MCP 接入，免费无需 Key） |\n| 📦 **GitHub** | 读公开仓库 + 搜索 | 私有仓库、提 Issue/PR、Fork | 告诉 Agent「帮我登录 GitHub」 |\n| 🐦 **Twitter/X** | 读单条推文 | 搜索推文、浏览时间线、读长文 | 告诉 Agent「帮我配 Twitter」 |\n| 📺 **B站** | 搜索 + 视频详情（bili-cli，无需登录） | 字幕（OpenCLI） | 告诉 Agent「帮我配 B站」 |\n| 📖 **Reddit** | —（没有零配置路径：匿名接口已被封） | 搜索 + 读帖子和评论 | 桌面装 OpenCLI 用浏览器登录态；或 rdt-cli + Cookie |\n| 📕 **小红书** | — | 搜索、阅读、评论 | 桌面装 OpenCLI（刷过小红书即可用）；服务器用 xiaohongshu-mcp 扫码 |\n| 💼 **LinkedIn** | Jina Reader 读公开页面 | Profile 详情、公司页面、职位搜索 | 告诉 Agent「帮我配 LinkedIn」 |\n| 💻 **V2EX** | 热门帖子、节点帖子、帖子详情+回复、用户信息 | — | 无需配置 |\n| 📈 **雪球** | 股票行情、搜索股票、热门帖子、热门股票排行 | — | 告诉 Agent「帮我配雪球」 |\n| 🎙️ **小宇宙播客** | — | 播客音频转文字（Whisper 转录，免费 Key） | 告诉 Agent「帮我配小宇宙播客」 |\n\n> **不知道怎么配？不用查文档。** 直接告诉 Agent「帮我配 XXX」，它知道需要什么、会一步一步引导你。\n>\n> 🍪 需要 Cookie 的平台（Twitter、小红书等），**优先使用** Chrome 插件 [Cookie-Editor](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) 导出 Cookie，发给 Agent 即可配置。流程统一：浏览器登录 → Cookie-Editor 导出 → 发给 Agent。比扫码更简单可靠。\n>\n> 🔒 Cookie 只存在你本地，不上传不外传。代码完全开源，随时可审查。\n> 💻 本地电脑不需要代理。代理只有部署在服务器上才需要（~$1/月）。\n\n---\n\n## 快速上手\n\n> ⚠️ **OpenClaw 用户请先确认 exec 权限已开启**\n>\n> Agent Reach 依赖 Agent 执行 shell 命令（`pip install`、`mcporter`、`twitter` 等）。如果你的 OpenClaw 使用了默认的 `messaging` 工具配置，Agent 将无法执行命令。**安装前请先开启 exec 权限**：\n>\n> ```bash\n> openclaw config set tools.profile \"coding\"\n> ```\n> 或在 `~/.openclaw/openclaw.json` 中设置 `\"tools\": { \"profile\": \"coding\" }`。\n> 设置后重启 Gateway（`openclaw gateway restart`）并开启新对话即可。其他平台（Claude Code、Cursor、Windsurf 等）不受此限制。\n\n复制这句话给你的 AI Agent（Claude Code、OpenClaw、Cursor 等）：\n\n```\n帮我安装 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n```\n\n就这一步。Agent 会自己完成剩下的所有事情。\n\n> 🔄 **已安装过？** 更新也是一句话：\n> ```\n> 帮我更新 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md\n> ```\n\n> 🛡️ **担心安全？** 可以用安全模式——不会自动装系统包，只告诉你需要什么：\n> ```\n> 帮我安装 Agent Reach（安全模式）：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n> 安装时使用 --safe 参数\n> ```\n\n<details>\n<summary>它会做什么？（点击展开）</summary>\n\n1. **安装 CLI 工具** — `pip install` 装好 `agent-reach` 命令行（自带 yt-dlp、feedparser）\n2. **安装系统基建** — 自动检测并安装 Node.js、gh CLI、mcporter\n3. **配置搜索引擎** — 通过 MCP 接入 Exa（免费，无需 API Key）\n4. **检测环境** — 判断是本地电脑还是服务器，给出对应的配置建议\n5. **注册 SKILL.md** — 在 Agent 的 skills 目录安装使用指南，以后 Agent 遇到\"全网调研\"、\"搜推特\"、\"看视频\"这类需求，会自动知道该调哪个上游工具\n6. **问你要不要更多** — 默认只激活 6 个零配置渠道；小红书、Twitter、Reddit 这些需要登录的，Agent 会列菜单问你要哪些，点名才装\n\n安装完之后，`agent-reach doctor` 一条命令告诉你每个渠道的状态、当前走哪条路。\n</details>\n\n---\n\n## 装好就能用\n\n不需要任何配置，告诉 Agent 就行：\n\n- \"帮我看看这个链接\" → `curl https://r.jina.ai/URL` 读任意网页\n- \"这个 GitHub 仓库是做什么的\" → `gh repo view owner/repo`\n- \"这个 YouTube 视频讲了什么\" → `yt-dlp` 提取字幕\n- \"B站搜一下 AI 教程\" → `bili search`（无需登录）\n- \"全网搜一下 LLM 框架对比\" → Exa 语义搜索\n- \"订阅这个 RSS\" → `feedparser` 解析\n\n**不需要记命令。** Agent 读了 SKILL.md 之后自己知道该调什么。需要登录的平台（小红书、Twitter、Reddit），告诉 Agent「帮我配 XXX」即可解锁。\n\n---\n\n## 能力边界：读内容 vs 操作网页\n\n有些任务超出\"读\"的范围：登录后的网页操作、表单提交、多账号隔离、并行浏览器会话、自动化流程中的登录、验证、风控提示等高摩擦环节的人工接手。这类\"动手\"场景，可以配合 [BrowserAct](https://www.browseract.ai/Agent) 这类浏览器自动化工具——30+ 预制平台技能，支持 Claude Code / OpenClaw / Cursor 等主流 Agent。\n\n---\n\n## 设计理念\n\n**Agent Reach 是一个能力层（capability layer），不是又一个工具。**\n\n它比任何具体实现高一层——负责**选型、安装、体检、路由**，不负责底层读取本身。读取由 Agent 直接调用上游工具完成，没有包装层。\n\n你给一个新 Agent 装环境的时候，总要花时间去找工具、装依赖、调配置——Twitter 用什么读？Reddit 怎么登录？小红书的 CLI 停更了换什么？每次都要重新踩一遍。Agent Reach 做的事情很简单：**当下最稳的接入方式，我们替你选好、装好、体检好。接入方式会换代（2026 年 3 月一批单平台 CLI 集体停更，我们换了路由），你不用操心。**\n\n### 🔌 每个平台 = 首选 + 备选的有序后端列表\n\n换接入方式 = 调整列表顺序，不是重写代码。`agent-reach doctor` 会告诉你每个平台**当前在用哪个后端**。\n\n```\nchannels/\n├── web.py          → Jina Reader\n├── twitter.py      → twitter-cli ▸ OpenCLI ▸ bird\n├── youtube.py      → yt-dlp\n├── github.py       → gh CLI\n├── bilibili.py     → bili-cli ▸ OpenCLI ▸ 搜索 API（yt-dlp 已被 B站风控封死，退役）\n├── reddit.py       → OpenCLI ▸ rdt-cli（无零配置路径，必须登录态）\n├── xiaohongshu.py  → OpenCLI ▸ xiaohongshu-mcp ▸ xhs-cli\n├── linkedin.py     → linkedin-mcp ▸ Jina Reader\n├── rss.py          → feedparser\n├── exa_search.py   → Exa via mcporter\n└── __init__.py     → 渠道注册（doctor 检测用）\n```\n\n每个渠道文件按序**真实探测**各候选后端（不只是看命令存不存在），第一个完整可用的当选；坏掉的会给出修复处方。实际的读取和搜索由 Agent 直接调用上游工具完成。\n\n### 当前选型\n\n| 场景 | 首选 | 备选 | 为什么这么选 |\n|------|------|------|-----------|\n| 读网页 | [Jina Reader](https://github.com/jina-ai/reader) | — | 免费，不需要 API Key |\n| 读推特 | [twitter-cli](https://github.com/public-clis/twitter-cli) | [OpenCLI](https://github.com/jackwener/opencli) | 实测搜索稳定；OpenCLI 走浏览器登录态兜底 |\n| Reddit | [OpenCLI](https://github.com/jackwener/opencli)（桌面） | [rdt-cli](https://github.com/public-clis/rdt-cli) | 匿名接口已被封、官方 API 审批制——只剩登录态路线 |\n| YouTube 字幕 + 搜索 | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | — | 154K Star，YouTube 仍是最佳（注意：不再用于 B站） |\n| B站 | [bili-cli](https://github.com/public-clis/bilibili-cli) | OpenCLI ▸ 搜索 API | yt-dlp 被 B站风控 412 封死（2026-06 实测），bili-cli 无登录可搜可读 |\n| 搜全网 | [Exa](https://exa.ai) via [mcporter](https://github.com/nicobailon/mcporter) | — | AI 语义搜索，MCP 接入免 Key |\n| GitHub | [gh CLI](https://cli.github.com) | — | 官方工具，认证后完整 API 能力 |\n| 读 RSS | [feedparser](https://github.com/kurtmckee/feedparser) | — | Python 生态标准选择 |\n| 小红书 | [OpenCLI](https://github.com/jackwener/opencli)（桌面） | [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)（服务器）▸ xhs-cli | xhs-cli 作者已转投 OpenCLI（24K Star）；浏览器登录态零摩擦 |\n| LinkedIn | [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) | Jina Reader | MCP 服务，浏览器自动化 |\n\n> 📌 这些都是「当前选型」，基于真机实测定期复核。某条路失效了我们换下一条——`agent-reach doctor` 永远告诉你现在走的是哪条。\n\n---\n\n## 安全性\n\nAgent Reach 在设计上重视安全：\n\n| 措施 | 说明 |\n|------|------|\n| 🔒 **凭据本地存储** | Cookie、Token 只存在你本机 `~/.agent-reach/config.yaml`，文件权限 600（仅所有者可读写），不上传不外传 |\n| 🛡️ **安全模式** | `agent-reach install --safe` 不会自动修改系统，只列出需要什么，由你决定装不装 |\n| 👀 **完全开源** | 代码透明，随时可审查。所有依赖工具也是开源项目 |\n| 🔍 **Dry Run** | `agent-reach install --dry-run` 预览所有操作，不做任何改动 |\n| 🧩 **可插拔架构** | 不信任某个组件？换掉对应的 channel 文件即可，不影响其他 |\n\n### 🍪 Cookie 安全建议\n\n> ⚠️ **封号风险提醒：** 使用 Cookie 登录的平台（Twitter、小红书等），通过脚本/API 调用**存在被平台检测并封号的风险**。请务必使用**专用小号**，不要用你的主账号。\n\n需要 Cookie 的平台（Twitter、小红书）建议使用**专用小号**，不要用主账号。原因有二：\n1. **封号风险** — 平台可能检测到非正常浏览器的 API 调用行为，导致账号被限制或封禁\n2. **安全风险** — Cookie 等同于完整登录权限，用小号可以在凭据泄露时限制影响范围\n\n### 📦 安装方式\n\n| 方式 | 命令 | 适合场景 |\n|------|------|---------|\n| 一键全自动（默认） | `agent-reach install --env=auto` | 个人电脑、开发环境 |\n| 安全模式 | `agent-reach install --env=auto --safe` | 生产服务器、多人共用机器 |\n| 仅预览 | `agent-reach install --env=auto --dry-run` | 先看看会做什么 |\n\n### 🗑️ 卸载\n\n```bash\nagent-reach uninstall\n```\n\n会清除：`~/.agent-reach/`（含所有 token/cookie）、各 Agent 的 skill 文件、mcporter 中的 MCP 配置。\n\n```bash\n# 只预览，不实际删除\nagent-reach uninstall --dry-run\n\n# 只删 skill 文件，保留 token 配置（重装时用）\nagent-reach uninstall --keep-config\n```\n\n卸载 Python 包本身：`pip uninstall agent-reach`\n\n---\n\n## 贡献\n\n这个项目是纯 vibe coding 出来的 🎸 可能会有一些不完美的地方，如果遇到问题请多多包涵。有 bug 尽管提 [Issue](https://github.com/Panniantong/agent-reach/issues)，我都会尽快修复。\n\n**想要新渠道？** 直接提 Issue 告诉我们，或者自己提 PR。\n\n**想在本地加？** 让你的 Agent clone 下来改就行，每个渠道就是一个独立文件，加起来很简单。\n\n[PR](https://github.com/Panniantong/agent-reach/pulls) 也随时欢迎！\n\n---\n\n## ⭐ 为什么值得 Star\n\n这个项目我自己每天在用，所以我会一直维护它。\n\n- 有新需求或者大家提了想要的渠道，我会陆续加上\n- 每个渠道我会尽量保证**能用、好用、免费**\n- 平台改了反爬或者 API 变了，我会想办法解决\n\n为 Web 4.0 基建贡献一份自己的力量。\n\nStar 一下，下次需要的时候能找到。⭐\n\n---\n\n## 常见问题 / FAQ\n\n<details>\n<summary><strong>AI Agent 怎么搜索 Twitter / X？不想付 API 费用</strong></summary>\n\nAgent Reach 使用 [twitter-cli](https://github.com/public-clis/twitter-cli) 通过 Cookie 认证访问 Twitter，完全免费。安装：`pipx install twitter-cli`，确保浏览器已登录 x.com，Agent 就可以用 `twitter search \"关键词\"` 搜索、`twitter tweet URL` 读推文了。\n</details>\n\n<details>\n<summary><strong>How to search Twitter/X with AI agent for free (no API)?</strong></summary>\n\nAgent Reach uses twitter-cli with cookie auth — zero API fees. Install with `pipx install twitter-cli`, make sure you're logged into x.com in your browser, then your agent can search with `twitter search \"query\"` and read tweets with `twitter tweet URL`.\n</details>\n\n<details>\n<summary><strong>Reddit 返回 403 怎么办？</strong></summary>\n\nReddit 所有访问都需要登录态（匿名接口已被全面封锁，官方 API 需人工审批）。桌面首选 **OpenCLI**：浏览器里登录过 reddit.com 即可直接 `opencli reddit search \"关键词\"`。备选 [rdt-cli](https://github.com/public-clis/rdt-cli)：`pipx install 'git+https://github.com/public-clis/rdt-cli.git@5e4fb3720d5c174e976cd425ccc3b879d52cac66'`（与代码同一钉定版本，PyPI 落后），然后 `rdt login`。中国大陆网络访问 Reddit 需要代理。\n</details>\n\n<details>\n<summary><strong>How to get YouTube video transcripts for AI?</strong></summary>\n\n`yt-dlp --dump-json \"https://youtube.com/watch?v=xxx\"` extracts video metadata; `yt-dlp --write-sub --skip-download \"URL\"` extracts subtitles. Uses yt-dlp under the hood, supports multiple languages. No API key needed.\n</details>\n\n<details>\n<summary><strong>怎么让 AI Agent 读小红书？</strong></summary>\n\n桌面电脑首选 **OpenCLI**（`agent-reach install --channels opencli`）——它复用你浏览器里的登录态，平时刷过小红书就直接能用，零配置；装完在 Chrome 商店点一次「添加扩展」即可。之后 Agent 用 `opencli xiaohongshu search \"关键词\"` 搜索、`opencli xiaohongshu note URL` 读笔记。服务器上用 [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)（自带无头浏览器，扫码登录）。已装过 xhs-cli 的老用户不受影响，它仍是备选后端（上游 2026-03 起停更，不推荐新装）。\n</details>\n\n<details>\n<summary><strong>Compatible with Claude Code / Cursor / OpenClaw / Windsurf?</strong></summary>\n\nYes! Agent Reach is an installer + configuration tool — any AI coding agent that can run shell commands can use it. Works with Claude Code, Cursor, OpenClaw, Windsurf, Codex, and more. Just `pip install agent-reach`, run `agent-reach install`, and the agent can start using the upstream tools immediately.\n\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"agent-reach\"\nversion = \"1.5.0\"\ndescription = \"Give your AI Agent eyes to see the entire internet. Search + Read 10+ platforms.\"\nreadme = \"README.md\"\nlicense = {text = \"MIT\"}\nrequires-python = \">=3.10\"\nauthors = [{name = \"Neo Reid\"}]\nkeywords = [\n    \"ai-agent\", \"llm-tools\", \"agent-infrastructure\", \"mcp\",\n    \"web-reader\", \"web-scraper\", \"search\",\n    \"twitter-scraper\", \"reddit-scraper\", \"youtube-transcript\",\n    \"bilibili\", \"xiaohongshu\",\n    \"ai-search\", \"cli\", \"automation\",\n    \"claude-code\", \"cursor\", \"openai\",\n    \"free-api\", \"no-api-key\",\n]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: MIT License\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Topic :: Internet :: WWW/HTTP\",\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n]\n\ndependencies = [\n    \"requests>=2.28\",\n    \"feedparser>=6.0\",\n    \"python-dotenv>=1.0\",\n    \"loguru>=0.7\",\n    \"pyyaml>=6.0\",\n    \"rich>=13.0\",\n    \"yt-dlp>=2024.0\",\n]\n\n[project.optional-dependencies]\nbrowser = [\"playwright>=1.40\"]\ncookies = [\"browser-cookie3>=0.19\"]\nall = [\"playwright>=1.40\", \"mcp[cli]>=1.0\", \"browser-cookie3>=0.19\"]\ndev = [\n    \"pytest>=8.0\",\n    \"ruff>=0.8\",\n    \"mypy>=1.12\",\n    \"types-requests>=2.32\",\n    \"types-PyYAML>=6.0\",\n]\n\n[project.scripts]\nagent-reach = \"agent_reach.cli:main\"\n\n[project.urls]\nHomepage = \"https://github.com/Panniantong/agent-reach\"\nRepository = \"https://github.com/Panniantong/agent-reach\"\nIssues = \"https://github.com/Panniantong/agent-reach/issues\"\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.build.targets.wheel]\npackages = [\"agent_reach\"]\n\n[tool.ruff]\ntarget-version = \"py310\"\nline-length = 100\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"I\"]\nignore = [\"E501\"]\n\n[tool.mypy]\npython_version = \"3.10\"\nwarn_unused_configs = true\nwarn_redundant_casts = true\nwarn_unused_ignores = true\ncheck_untyped_defs = true\nignore_missing_imports = true\nexclude = [\"^tests/\"]\n",
    "strategic_keywords": [
      "agent",
      "mcp",
      "llm",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "ZhuLinsen",
    "name": "daily_stock_analysis",
    "full_name": "ZhuLinsen/daily_stock_analysis",
    "url": "https://github.com/ZhuLinsen/daily_stock_analysis",
    "description": "LLM 驱动的多市场股票智能分析系统：多源行情、实时新闻、决策看板与自动推送，支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.",
    "language": "Python",
    "total_stars": 49388,
    "forks": 43406,
    "stars_this_period": 5185,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "a-stock",
        "ai-agent",
        "aigc",
        "llm",
        "quant",
        "quantitative-finance",
        "quantitative-trading"
      ],
      "license": "MIT",
      "open_issues": 49,
      "created_at": "2026-01-10T06:43:20Z",
      "pushed_at": "2026-06-25T14:55:08Z",
      "homepage": "https://dsa.zhulinsen.tech",
      "default_branch": "main",
      "forks": 43406,
      "watchers": 201,
      "archived": false,
      "size_kb": 86470
    },
    "readme_content": "<div align=\"center\">\n\n# 📈 股票智能分析系统\n\n[![GitHub stars](https://img.shields.io/github/stars/ZhuLinsen/daily_stock_analysis?style=social)](https://github.com/ZhuLinsen/daily_stock_analysis/stargazers)\n[![CI](https://github.com/ZhuLinsen/daily_stock_analysis/actions/workflows/ci.yml/badge.svg)](https://github.com/ZhuLinsen/daily_stock_analysis/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-Ready-2088FF?logo=github-actions&logoColor=white)](https://github.com/features/actions)\n[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white)](https://hub.docker.com/r/zhulinsen/daily_stock_analysis)\n\n<p align=\"center\">\n  <img src=\"https://trendshift.io/api/badge/trendshift/repositories/18527/daily?language=Python\" alt=\"#1 Python Repository Of The Day | Trendshift\" width=\"250\" height=\"55\"/>&nbsp;<a href=\"https://hellogithub.com/repository/ZhuLinsen/daily_stock_analysis\" target=\"_blank\"><img src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=6daa16e405ce46ed97b4a57706aeb29f&claim_uid=pfiJMqhR9uvDGlT&theme=neutral\" alt=\"Featured｜HelloGitHub\" width=\"230\" /></a>\n</p>\n\n> 🤖 基于 AI 大模型的 A股/港股/美股/日股/韩股自选股智能分析系统，每日自动分析并推送「决策仪表盘」到企业微信/飞书/Telegram/Discord/Slack/邮箱\n\n[**产品预览**](#-产品预览) · [**功能特性**](#-功能特性) · [**快速开始**](#-快速开始) · [**推送效果**](#-推送效果) · [**文档中心**](docs/INDEX.md) · [**完整指南**](docs/full-guide.md)\n\n简体中文 | [English](docs/README_EN.md) | [繁體中文](docs/README_CHT.md)\n\n</div>\n\n## 💖 赞助商 (Sponsors)\n<div align=\"center\">\n  <p align=\"center\">\n    <a href=\"https://open.anspire.cn/?share_code=QFBC0FYC\" target=\"_blank\"><img src=\"./docs/assets/anspire.png\" alt=\"Anspire Open 一站式模型和搜索服务\" width=\"300\" height=\"141\" style=\"width: 300px; height: 141px; object-fit: contain;\"></a>\n    <a href=\"https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis\" target=\"_blank\"><img src=\"./docs/assets/serpapi_banner_zh.png\" alt=\"轻松抓取搜索引擎上的实时金融新闻数据 - SerpApi\" width=\"300\" height=\"141\" style=\"width: 300px; height: 141px; object-fit: contain;\"></a>\n  </p>\n</div>\n\n\n## 🖥️ 产品预览\n\n<p align=\"center\">\n  <img src=\"docs/assets/readme_workspace_tour_20260510.gif\" alt=\"DSA Web 工作台演示\" width=\"720\">\n</p>\n\n## ✨ 功能特性\n\n| 能力 | 覆盖内容 |\n|------|------|\n| AI 决策报告 | 核心结论、评分、趋势、买卖点位、风险警报、催化因素、操作检查清单 |\n| 多市场数据聚合 | A股、港股、美股、ETF：行情、K 线、技术指标、资金流、筹码、新闻、公告和基本面；日股/韩股（`.T` / `.KS` / `.KQ`）：YFinance 日线与基础行情、技术指标可用，`capital_flow`、`dragon_tiger`、`boards` 与部分高阶区块会按市场边界降级为 `not_supported`（见 [市场支持边界](docs/market-support.md)） |\n| Web / 桌面工作台 | 手动分析、任务进度、历史报告、完整 Markdown、回测、持仓、配置管理、浅色 / 深色主题 |\n| Agent 策略问股 | 多轮追问，支持均线、缠论、波浪、趋势、热点、事件、成长、预期等 15 种内置策略，覆盖 Web/Bot/API |\n| 智能导入与补全 | 图片、CSV/Excel、剪贴板导入；股票代码/名称/拼音/别名补全 |\n| 自动化与推送 | GitHub Actions、Docker、本地定时任务、FastAPI 服务和企业微信/飞书/Telegram/Discord/Slack/邮件推送 |\n\n> 功能细节、字段契约、基本面 P0 超时语义、交易纪律、数据源优先级、Web/API 行为请看 [完整配置与部署指南](docs/full-guide.md)。\n\n### 技术栈与数据来源\n\n| 类型 | 支持 |\n|------|------|\n| AI 模型 | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC)、[AIHubMix](https://aihubmix.com/?aff=CfMq)、Gemini、OpenAI 兼容、DeepSeek、通义千问、Claude、Ollama 本地模型等 |\n| 行情数据 | [TickFlow](https://tickflow.org/auth/register?ref=WDSGSPS5XC)、AkShare、Tushare、Pytdx、Baostock、YFinance、Longbridge |\n| 新闻搜索 | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC)、[SerpAPI](https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis)、[Tavily](https://tavily.com/)、[Bocha](https://open.bocha.cn/)、[Brave](https://brave.com/search/api/)、[MiniMax](https://platform.minimaxi.com/)、SearXNG |\n| 社交舆情 | [Stock Sentiment API](https://api.adanos.org/docs)（Reddit / X / Polymarket，仅美股，可选） |\n\n> 完整规则见 [数据源配置](docs/full-guide.md#数据源配置)。\n\n## 🚀 快速开始\n\n### 方式一：[GitHub Actions（推荐）](https://www.bilibili.com/video/BV11FEb66EXG/)\n\n> 5 分钟完成部署，零成本，无需服务器。\n\n\n#### 1. Fork 本仓库\n\n点击右上角 `Fork` 按钮（顺便点个 Star⭐ 支持一下）\n\n#### 2. 配置 Secrets\n\n`Settings` → `Secrets and variables` → `Actions` → `New repository secret`\n\n**AI 模型配置（至少配置一个）**\n\n默认先选一个模型服务商并填写 API Key；需要多模型、图片识别、本地模型或高级路由时，再参考 [LLM 配置指南](docs/LLM_CONFIG_GUIDE.md)。\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `ANSPIRE_API_KEYS` | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC) API Key，一Key同时启用全球热门大模型和联网搜索，无需科学上网，含免费额度 | **推荐** |\n| `AIHUBMIX_KEY` | [AIHubMix](https://aihubmix.com/?aff=CfMq) API Key，一Key切换使用全系模型，无需科学上网，本项目可享 10% 优惠 | **推荐** |\n| `GEMINI_API_KEY` | Google Gemini API Key | 可选 |\n| `ANTHROPIC_API_KEY` | Anthropic Claude API Key | 可选 |\n| `OPENAI_API_KEY` | OpenAI 兼容 API Key（支持 DeepSeek、通义千问等） | 可选 |\n| `OPENAI_BASE_URL` / `OPENAI_MODEL` | 使用 OpenAI 兼容服务时填写 | 可选 |\n\n> Ollama 更适合本地 / Docker 部署，GitHub Actions 推荐使用云端 API。\n\n**通知渠道配置（至少配置一个）**\n\n| Secret 名称 | 说明 |\n|------------|------|\n| `WECHAT_WEBHOOK_URL` | 企业微信机器人 |\n| `FEISHU_WEBHOOK_URL` | 飞书机器人 |\n| `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID` | Telegram |\n| `DISCORD_WEBHOOK_URL` | Discord Webhook |\n| `SLACK_BOT_TOKEN` + `SLACK_CHANNEL_ID` | Slack Bot |\n| `EMAIL_SENDER` + `EMAIL_PASSWORD` | 邮件推送 |\n\n更多渠道、签名校验、分组邮件、Markdown 转图片等配置见 [通知渠道详细配置](docs/full-guide.md#通知渠道详细配置)。\n\n**自选股配置（必填）**\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `STOCK_LIST` | 自选股代码，如 `600519,hk00700,AAPL,7203.T,005930.KS` | ✅ |\n\n**新闻源配置（推荐）**\n\n新闻源会显著影响舆情、公告、事件和催化因素质量，建议至少配置一个搜索服务。\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `ANSPIRE_API_KEYS` | [Anspire AI Search](https://aisearch.anspire.cn/)：中文内容特别优化，适合 A 股新闻和舆情检索；同一 Key 可复用为 Anspire 大模型 | **推荐** |\n| `SERPAPI_API_KEYS` | [SerpAPI](https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis)：搜索引擎结果补强，适合实时金融新闻 | **推荐** |\n| `TAVILY_API_KEYS` | [Tavily](https://tavily.com/)：通用新闻搜索 API | 可选 |\n| `BOCHA_API_KEYS` | [博查搜索](https://open.bocha.cn/)：中文搜索优化，支持 AI 摘要 | 可选 |\n| `BRAVE_API_KEYS` | [Brave Search](https://brave.com/search/api/)：隐私优先，美股资讯补强 | 可选 |\n| `MINIMAX_API_KEYS` | [MiniMax](https://platform.minimaxi.com/)：结构化搜索结果 | 可选 |\n| `SEARXNG_BASE_URLS` | SearXNG 自建实例：无配额兜底，适合私有部署 | 可选 |\n\n更多搜索源、社交舆情和降级规则见 [搜索服务配置](docs/full-guide.md#搜索服务配置)。\n\n#### 3. 启用 Actions\n\n`Actions` 标签 → `I understand my workflows, go ahead and enable them`\n\n#### 4. 手动测试\n\n`Actions` → `每日股票分析` → `Run workflow` → `Run workflow`\n\n#### 完成\n\n默认每个**工作日 18:00（北京时间）**自动执行，也可手动触发。默认非交易日（含 A/H/US 节假日）不执行；强制运行、交易日检查、断点续传等规则见 [完整指南](docs/full-guide.md#定时任务配置)。\n\n### 方式二：[客户端配置教程](https://www.bilibili.com/video/BV11FEb66Eyr/) / 本地运行 / Docker 部署\n\n```bash\n# 克隆项目\ngit clone https://github.com/ZhuLinsen/daily_stock_analysis.git && cd daily_stock_analysis\n\n# 安装依赖\npip install -r requirements.txt\n\n# 配置环境变量\ncp .env.example .env && vim .env\n\n# 运行分析\npython main.py\n```\n\n常用命令：\n\n```bash\npython main.py --debug\npython main.py --dry-run\npython main.py --stocks 600519,hk00700,AAPL\npython main.py --market-review\npython main.py --schedule\npython main.py --serve-only\n```\n\n> Docker 部署、定时任务、云服务器访问请参考 [完整指南](docs/full-guide.md)；桌面客户端打包请参考 [桌面端打包说明](docs/desktop-package.md)。\n\n## 📱 推送效果\n\n### 决策仪表盘\n```\n🎯 2026-02-08 决策仪表盘\n共分析3只股票 | 🟢买入:0 🟡观望:2 🔴卖出:1\n\n📊 分析结果摘要\n⚪ 中钨高新(000657): 观望 | 评分 65 | 看多\n⚪ 永鼎股份(600105): 观望 | 评分 48 | 震荡\n🟡 新莱应材(300260): 卖出 | 评分 35 | 看空\n\n⚪ 中钨高新 (000657)\n📰 重要信息速览\n💭 舆情情绪: 市场关注其AI属性与业绩高增长，情绪偏积极，但需消化短期获利盘和主力流出压力。\n📊 业绩预期: 基于舆情信息，公司2025年前三季度业绩同比大幅增长，基本面强劲，为股价提供支撑。\n\n🚨 风险警报:\n\n风险点1：2月5日主力资金大幅净卖出3.63亿元，需警惕短期抛压。\n风险点2：筹码集中度高达35.15%，表明筹码分散，拉升阻力可能较大。\n风险点3：舆情中提及公司历史违规记录及重组相关风险提示，需保持关注。\n✨ 利好催化:\n\n利好1：公司被市场定位为AI服务器HDI核心供应商，受益于AI产业发展。\n利好2：2025年前三季度扣非净利润同比暴涨407.52%，业绩表现强劲。\n📢 最新动态: 【最新消息】舆情显示公司是AI PCB微钻领域龙头，深度绑定全球头部PCB/载板厂。2月5日主力资金净卖出3.63亿元，需关注后续资金流向。\n\n---\n生成时间: 18:00\n```\n\n### 大盘复盘\n```\n🎯 2026-01-10 大盘复盘\n\n📊 主要指数\n- 上证指数: 3250.12 (🟢+0.85%)\n- 深证成指: 10521.36 (🟢+1.02%)\n- 创业板指: 2156.78 (🟢+1.35%)\n\n📈 市场概况\n上涨: 3920 | 下跌: 1349 | 涨停: 155 | 跌停: 3\n\n🔥 板块表现\n领涨: 互联网服务、文化传媒、小金属\n领跌: 保险、航空机场、光伏设备\n```\n\n## ⚙️ 配置说明\n\n完整环境变量、模型渠道、通知渠道、数据源优先级、交易纪律、基本面 P0 语义和部署说明请参考 [完整配置指南](docs/full-guide.md)。\n\n## 🖥️ Web 界面\n\nWeb 工作台提供配置管理、任务监控、手动分析、历史报告、完整 Markdown 报告、Agent 问股、回测、持仓管理、智能导入和浅色 / 深色主题。启动方式：\n\n```bash\npython main.py --webui\npython main.py --webui-only\n```\n\n访问 `http://127.0.0.1:8000` 即可使用。认证、智能导入、搜索补全、历史报告复制、云服务器访问等细节见 [本地 WebUI 管理界面](docs/full-guide.md#本地-webui-管理界面)。\n\n## 🤖 Agent 策略问股\n\n配置任意可用 AI API Key 后，Web `/chat` 页面即可使用策略问股；如需显式关闭可设置 `AGENT_MODE=false`。\n\n- 支持均线金叉、缠论、波浪理论、多头趋势、热点题材、事件驱动、成长质量、预期重估等内置策略\n- 支持实时行情、K 线、技术指标、新闻和风险信息调用\n- 支持多轮追问、会话导出、发送到通知渠道和后台执行\n- 支持自定义策略文件与多 Agent 编排（实验性）\n\n> Agent 具体参数、`skill` 命名兼容、多 Agent 模式和预算护栏见 [完整指南](docs/full-guide.md#本地-webui-管理界面) 与 [LLM 配置指南](docs/LLM_CONFIG_GUIDE.md)。\n\n## 🧩 相关项目 (Related Projects)\n\n> DSA 聚焦日常分析报告；下面两个同系列项目分别覆盖选股、策略验证与策略进化，适合按需延伸使用。它们当前独立维护，后续会优先探索与 DSA 的候选股导入、回测验证和报告联动。\n\n| 项目 | 定位 |\n|------|------|\n| [AlphaSift](https://github.com/ZhuLinsen/alphasift) | 多因子选股与全市场扫描，用于从股票池中提取候选标的 |\n| [AlphaEvo](https://github.com/ZhuLinsen/alphaevo) | 策略回测与自我进化，用于验证策略规则，并通过迭代探索策略参数与组合 |\n\n## 📬 联系与合作\n\n<table>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>合作邮箱</strong></td>\n    <td valign=\"top\">\n      <a href=\"mailto:zhuls345@gmail.com\">zhuls345@gmail.com</a><br>\n      项目咨询、部署支持与功能扩展\n    </td>\n    <td align=\"center\" rowspan=\"3\" valign=\"middle\" width=\"148\">\n      <a href=\"http://xhslink.com/m/tU520DWCKT\" target=\"_blank\"><img src=\"./docs/assets/xiaohongshu_tick.jpg\" width=\"112\" alt=\"小红书二维码\"></a><br>\n      <sub>扫码关注小红书</sub>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>小红书</strong></td>\n    <td valign=\"top\"><a href=\"http://xhslink.com/m/tU520DWCKT\">欢迎关注小红书</a></td>\n  </tr>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>问题反馈</strong></td>\n    <td valign=\"top\"><a href=\"https://github.com/ZhuLinsen/daily_stock_analysis/issues\">提交 Issue</a></td>\n  </tr>\n</table>\n\n## 📄 License\n\n[MIT License](LICENSE) © 2026 ZhuLinsen\n\n欢迎在二次开发或引用时注明本仓库来源，感谢支持项目持续维护。\n\n## ⚠️ 免责声明\n\n本项目仅供学习和研究使用，不构成任何投资建议。股市有风险，投资需谨慎。作者不对使用本项目产生的任何损失负责。\n\n---\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[tool.black]\nline-length = 120\ntarget-version = ['py310', 'py311', 'py312']\ninclude = '\\.pyi?$'\nexclude = '''\n/(\n    \\.git\n    | \\.hg\n    | \\.mypy_cache\n    | \\.tox\n    | \\.venv\n    | venv\n    | _build\n    | buck-out\n    | build\n    | dist\n    | __pycache__\n)/\n'''\n\n[tool.isort]\nprofile = \"black\"\nline_length = 120\nskip = [\".git\", \"__pycache__\", \".env\", \"venv\", \".venv\"]\n\n[tool.bandit]\nexclude_dirs = [\"tests\", \"test_*.py\"]\nskips = [\"B101\"]  # assert 语句在测试中是允许的\n",
    "strategic_keywords": [
      "agent",
      "rag",
      "workspace",
      "llm",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "firecrawl",
    "name": "firecrawl",
    "full_name": "firecrawl/firecrawl",
    "url": "https://github.com/firecrawl/firecrawl",
    "description": "The API to search, scrape, and interact with the web at scale. 🔥",
    "language": "TypeScript",
    "total_stars": 139061,
    "forks": 8017,
    "stars_this_period": 4767,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agents",
        "ai-crawler",
        "ai-scraping",
        "ai-search",
        "crawler",
        "data-extraction",
        "html-to-markdown",
        "llm",
        "markdown",
        "scraper",
        "scraping",
        "web-crawler",
        "web-data",
        "web-data-extraction",
        "web-scraper",
        "web-scraping",
        "web-search",
        "webscraping"
      ],
      "license": "AGPL-3.0",
      "open_issues": 356,
      "created_at": "2024-04-15T21:02:29Z",
      "pushed_at": "2026-06-25T11:46:17Z",
      "homepage": "https://firecrawl.dev",
      "default_branch": "main",
      "forks": 8017,
      "watchers": 382,
      "archived": false,
      "size_kb": 93975
    },
    "readme_content": "<h3 align=\"center\">\n  <a name=\"readme-top\"></a>\n  <img\n    src=\"https://raw.githubusercontent.com/firecrawl/firecrawl/main/img/firecrawl_logo.png\"\n    height=\"200\"\n  >\n</h3>\n\n<div align=\"center\">\n  <a href=\"https://github.com/firecrawl/firecrawl/blob/main/LICENSE\">\n    <img src=\"https://img.shields.io/github/license/firecrawl/firecrawl\" alt=\"License\">\n  </a>\n  <a href=\"https://pepy.tech/project/firecrawl-py\">\n    <img src=\"https://static.pepy.tech/badge/firecrawl-py\" alt=\"Downloads\">\n  </a>\n  <a href=\"https://GitHub.com/firecrawl/firecrawl/graphs/contributors\">\n    <img src=\"https://img.shields.io/github/contributors/firecrawl/firecrawl.svg\" alt=\"GitHub Contributors\">\n  </a>\n  <a href=\"https://firecrawl.dev\">\n    <img src=\"https://img.shields.io/badge/Visit-firecrawl.dev-orange\" alt=\"Visit firecrawl.dev\">\n  </a>\n</div>\n\n<div>\n  <p align=\"center\">\n    <a href=\"https://twitter.com/firecrawl\">\n      <img src=\"https://img.shields.io/badge/Follow%20on%20X-000000?style=for-the-badge&logo=x&logoColor=white\" alt=\"Follow on X\" />\n    </a>\n    <a href=\"https://www.linkedin.com/company/104100957\">\n      <img src=\"https://img.shields.io/badge/Follow%20on%20LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white\" alt=\"Follow on LinkedIn\" />\n    </a>\n    <a href=\"https://discord.gg/firecrawl\">\n      <img src=\"https://img.shields.io/badge/Join%20our%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white\" alt=\"Join our Discord\" />\n    </a>\n  </p>\n</div>\n\n---\n\n# **🔥 Firecrawl**\n\n**The API to search, scrape, and interact with the web at scale. 🔥** The web context API to find sources, extract content, and turn it into clean Markdown or structured data your agents can ship with. Open source and available as a [hosted service](https://firecrawl.dev/?ref=github).\n\n_Pst. Hey, you, join our stargazers :)_\n\n<a href=\"https://github.com/firecrawl/firecrawl\">\n  <img src=\"https://img.shields.io/github/stars/firecrawl/firecrawl.svg?style=social&label=Star&maxAge=2592000\" alt=\"GitHub stars\">\n</a>\n\n---\n\n## Why Firecrawl?\n\n- **Industry-leading reliability**: Covers 96% of the web, including JS-heavy pages — no proxy headaches, just clean data ([see benchmarks](https://www.firecrawl.dev/blog/the-worlds-best-web-data-api-v25))\n- **Blazingly fast**: P95 latency of 3.4s across millions of pages, built for real-time agents and dynamic apps\n- **LLM-ready output**: Clean markdown, structured JSON, screenshots, and more — spend fewer tokens, build better AI apps\n- **We handle the hard stuff**: Rotating proxies, orchestration, rate limits, JS-blocked content, and more — zero configuration\n- **Agent ready**: Connect Firecrawl to any AI agent or MCP client with a single command\n- **Media parsing**: Parse and extract content from web-hosted PDFs, DOCX, and more\n- **Actions**: Click, scroll, write, wait, and press before extracting content\n- **Open source**: Developed transparently and collaboratively — [join our community](https://github.com/firecrawl/firecrawl)\n\n---\n\n## Feature Overview\n\n**Core Endpoints**\n\n| Feature | Description |\n|---------|-------------|\n| [**Search**](#search) | Search the web and get full page content from results |\n| [**Scrape**](#scrape) | Convert any URL to markdown, HTML, screenshots, or structured JSON |\n| [**Interact**](#interact) | Scrape a page, then interact with it using AI prompts or code |\n\n**More**\n\n| Feature | Description |\n|---------|-------------|\n| [**Agent**](#agent) | Automated data gathering, just describe what you need |\n| [**Crawl**](#crawl) | Scrape all URLs of a website with a single request |\n| [**Map**](#map) | Discover all URLs on a website instantly |\n| [**Batch Scrape**](#batch-scrape) | Scrape thousands of URLs asynchronously |\n\n---\n\n## Quick Start\n\nSign up at [firecrawl.dev](https://firecrawl.dev) to get your API key. Try the [playground](https://firecrawl.dev/playground) to test it out.\n\n### Search\n\nSearch the web and get full content from results.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nsearch_result = app.search(\"firecrawl\", limit=5)\n```\n\n<details>\n<summary><b>Node.js / cURL / CLI</b></summary>\n\n**Node.js**\n```javascript\nimport { Firecrawl } from 'firecrawl';\n\nconst app = new Firecrawl({apiKey: \"fc-YOUR_API_KEY\"});\n\napp.search(\"firecrawl\", { limit: 5 })\n```\n\n**cURL**\n```bash\ncurl -X POST 'https://api.firecrawl.dev/v2/search' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application/json' \\\n-d '{\n  \"query\": \"firecrawl\",\n  \"limit\": 5\n}'\n```\n\n**CLI**\n```bash\nfirecrawl search \"firecrawl\" --limit 5\n```\n</details>\n\nOutput:\n```json\n[\n  {\n    \"url\": \"https://firecrawl.dev\",\n    \"title\": \"Firecrawl\",\n    \"markdown\": \"Turn websites into...\"\n  },\n  {\n    \"url\": \"https://docs.firecrawl.dev\",\n    \"title\": \"Firecrawl Docs\",\n    \"markdown\": \"# Getting Started...\"\n  }\n]\n```\n\n### Scrape\n\nGet LLM-ready data from any website — markdown, JSON, screenshots, and more.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nresult = app.scrape('firecrawl.dev')\n```\n\n<details>\n<summary><b>Node.js / cURL / CLI</b></summary>\n\n**Node.js**\n```javascript\nimport { Firecrawl } from 'firecrawl';\n\nconst app = new Firecrawl({ apiKey: \"fc-YOUR_API_KEY\" });\n\napp.scrape('firecrawl.dev')\n```\n\n**cURL**\n```bash\ncurl -X POST 'https://api.firecrawl.dev/v2/scrape' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application/json' \\\n-d '{\n  \"url\": \"firecrawl.dev\"\n}'\n```\n\n**CLI**\n```bash\nfirecrawl scrape https://firecrawl.dev\nfirecrawl https://firecrawl.dev --only-main-content\n```\n</details>\n\nOutput:\n```\n# Firecrawl\n\nFirecrawl helps AI systems search, scrape, and interact with the web.\n\n## Features\n- Search: Find information across the web\n- Scrape: Clean data from any page\n- Interact: Click, navigate, and operate pages\n- Agent: Autonomous data gathering\n```\n\n### Interact\n\nScrape a page, then interact with it using AI prompts or code.\n\n```python\nfrom firecrawl import Firecrawl\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nresult = app.scrape(\"https://amazon.com\")\nscrape_id = result.metadata.scrape_id\n\napp.interact(scrape_id, prompt=\"Search for 'mechanical keyboard'\")\napp.interact(scrape_id, prompt=\"Click the first result\")\n```\n\n<details>\n<summary><b>Node.js / cURL / CLI</b></summary>\n\n**Node.js**\n```javascript\nimport { Firecrawl } from 'firecrawl';\n\nconst app = new Firecrawl({apiKey: \"fc-YOUR_API_KEY\"});\n\nconst result = await app.scrape(\"https://amazon.com\");\n\nawait app.interact(result.metadata.scrapeId, {\n  prompt: \"Search for 'mechanical keyboard'\"\n});\nawait app.interact(result.metadata.scrapeId, {\n  prompt: \"Click the first result\"\n});\n```\n\n**cURL**\n```bash\n# 1. Scrape the page\ncurl -X POST 'https://api.firecrawl.dev/v2/scrape' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application/json' \\\n-d '{\"url\": \"https://amazon.com\"}'\n\n# 2. Interact with the page (use scrapeId from step 1)\ncurl -X POST 'https://api.firecrawl.dev/v2/scrape/SCRAPE_ID/interact' \\\n-H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n-H 'Content-Type: application/json' \\\n-d '{\"prompt\": \"Search for mechanical keyboard\"}'\n```\n\n**CLI**\n```bash\nfirecrawl scrape https://amazon.com\nfirecrawl interact exec --prompt \"Search for 'mechanical keyboard'\"\nfirecrawl interact exec --prompt \"Click the first result\"\n```\n</details>\n\nOutput:\n```json\n{\n  \"success\": true,\n  \"output\": \"Keyboard available at $100\",\n  \"liveViewUrl\": \"https://liveview.firecrawl.dev/...\"\n}\n```\n\n---\n\n## Power Your Agent\n\nConnect Firecrawl to any AI agent or MCP client in minutes.\n\n### Skill\n\nGive your agent easy access to real-time web data with one command.\n\n```bash\nnpx -y firecrawl-cli@latest init --all --browser\n```\n\nRestart your agent after installing. Works with [Claude Code](https://claude.ai/code), [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai), and more.\n\n### MCP\n\nConnect any MCP-compatible client to the web in seconds.\n\n```json\n{\n  \"mcpServers\": {\n    \"firecrawl-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"firecrawl-mcp\"],\n      \"env\": {\n        \"FIRECRAWL_API_KEY\": \"fc-YOUR_API_KEY\"\n      }\n    }\n  }\n}\n```\n\n### Agent Onboarding\n\nAre you an AI agent? Fetch this skill to sign up your user, get an API key, and start building with Firecrawl.\n\n```bash\ncurl -s https://firecrawl.dev/agent-onboarding/SKILL.md\n```\n\nSee the [Skill + CLI documentation](https://docs.firecrawl.dev/sdks/cli) for all available commands. For MCP, see [firecrawl-mcp-server](https://github.com/firecrawl/firecrawl-mcp-server).\n\n---\n\n## More Endpoints\n\n### Agent\n\n**The easiest way to get data from the web.** Describe what you need, and our AI agent searches, navigates, and retrieves it. No URLs required.\n\nAgent is the evolution of our `/extract` endpoint: faster, more reliable, and doesn't require you to know the URLs upfront.\n```bash\ncurl -X POST 'https://api.firecrawl.dev/v2/agent' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"prompt\": \"Find the pricing plans for Notion\"\n  }'\n```\n\nResponse:\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": \"Notion offers the following pricing plans:\\n\\n1. Free - $0/month...\\n2. Plus - $10/seat/month...\\n3. Business - $18/seat/month...\",\n    \"sources\": [\"https://www.notion.so/pricing\"]\n  }\n}\n```\n\n#### Agent with Structured Output\n\nUse a schema to get structured data:\n```python\nfrom firecrawl import Firecrawl\nfrom pydantic import BaseModel, Field\nfrom typing import List, Optional\n\napp = Firecrawl(api_key=\"fc-YOUR_API_KEY\")\n\nclass Founder(BaseModel):\n    name: str = Field(description=\"Full name of the founder\")\n    role: Optional[str] = Field(None, description=\"Role or position\")\n\nclass FoundersSchema(BaseModel):\n    founders: List[Founder] = Field(description=\"List of founders\")\n\nresult = app.agent(\n    prompt=\"Find the founders of Firecrawl\",\n    schema=FoundersSchema\n)\n\nprint(result.data)\n```\n```json\n{\n  \"founders\": [\n    {\"name\": \"Eric Ciarla\", \"role\": \"Co-founder\"},\n    {\"name\": \"Nicolas Camara\", \"role\": \"Co-founder\"},\n    {\"name\": \"Caleb Peffer\", \"role\": \"Co-founder\"}\n  ]\n}\n```\n\n#### Agent with URLs (Optional)\n\nFocus the agent on specific pages:\n```python\nresult = app.agent(\n    urls=[\"https://docs.firecrawl.dev\", \"https://firecrawl.dev/pricing\"],\n    prompt=\"Compare the features and pricing information\"\n)\n```\n\n#### Model Selection\n\nChoose between two models based on your needs:\n\n| Model | Cost | Best For |\n|-------|------|----------|\n| `spark-1-mini` (default) | 60% cheaper | Most tasks |\n| `spark-1-pro` | Standard | Complex research, critical data gathering |\n```python\nresult = app.agent(\n    prompt=\"Compare enterprise features across Firecrawl, Apify, and ScrapingBee\",\n    model=\"spark-1-pro\"\n)\n```\n\n\n**When to use Pro:**\n- Comparing data across multiple websites\n- Extracting from sites with complex navigation or auth\n- Research tasks where the agent needs to explore multiple paths\n- Critical data where accuracy is paramount\n\nLearn more about Spark models in our [Agent documentation](https://docs.firecrawl.dev/features/agent).\n\n### Crawl\n\nCrawl an entire website and get content from all pages.\n```bash\ncurl -X POST 'https://api.firecrawl.dev/v2/crawl' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"url\": \"https://docs.firecrawl.dev\",\n    \"limit\": 100,\n    \"scrapeOptions\": {\n      \"formats\": [\"markdown\"]\n    }\n  }'\n```\n\nReturns a job ID:\n```json\n{\n  \"success\": true,\n  \"id\": \"123-456-789\",\n  \"url\": \"https://api.firecrawl.dev/v2/crawl/123-456-789\"\n}\n```\n\n#### Check Crawl Status\n```bash\ncurl -X GET 'https://api.firecrawl.dev/v2/crawl/123-456-789' \\\n  -H 'Authorization: Bearer fc-YOUR_API_KEY'\n```\n```json\n{\n  \"status\": \"completed\",\n  \"total\": 50,\n  \"completed\": 50,\n  \"creditsUsed\": 50,\n  \"data\": [\n    {\n      \"markdown\": \"# Page Title\\n\\nContent...\",\n      \"metadata\": {\"title\": \"Page Title\", \"sourceURL\": \"https://...\"}\n    }\n  ]\n}\n```\n\n**Note:** The [SDKs](#sdks) handle p",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "llm"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 10,
      "total": 93
    },
    "strategic_score": 93
  },
  {
    "owner": "mukul975",
    "name": "Anthropic-Cybersecurity-Skills",
    "full_name": "mukul975/Anthropic-Cybersecurity-Skills",
    "url": "https://github.com/mukul975/Anthropic-Cybersecurity-Skills",
    "description": "817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0",
    "language": "Python",
    "total_stars": 20977,
    "forks": 2423,
    "stars_this_period": 4304,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai-agents",
        "claude-code",
        "cloud-security",
        "cybersecurity",
        "devsecops",
        "ethical-hacking",
        "incident-response",
        "infosec",
        "llm",
        "malware-analysis",
        "mcp",
        "mitre-attack",
        "nist-csf",
        "osint",
        "penetration-testing",
        "red-team",
        "security",
        "security-automation",
        "threat-hunting",
        "threat-intelligence"
      ],
      "license": "Apache-2.0",
      "open_issues": 31,
      "created_at": "2026-02-25T09:47:50Z",
      "pushed_at": "2026-06-22T17:11:47Z",
      "homepage": "https://mahipal.engineer/Anthropic-Cybersecurity-Skills/",
      "default_branch": "main",
      "forks": 2423,
      "watchers": 144,
      "archived": false,
      "size_kb": 9977
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"assets/banner.png\" alt=\"Anthropic Cybersecurity Skills\" width=\"100%\">\n</p>\n\n<div align=\"center\">\n\n#  Anthropic Cybersecurity Skills\n\n### The largest open-source cybersecurity skills library for AI agents\n\n[![GARS-2026 Survey](https://img.shields.io/badge/GARS--2026-Take%20the%20Survey-E8B84B?style=for-the-badge&logo=googleforms&logoColor=black)](https://mahipal.engineer/survey?utm_source=github_badge&utm_medium=readme&utm_campaign=gars2026)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=flat-square)](LICENSE)\n[![Skills](https://img.shields.io/badge/skills-817-brightgreen?style=flat-square)](#whats-inside--29-security-domains)\n[![Frameworks](https://img.shields.io/badge/frameworks-6-orange?style=flat-square)](#six-frameworks-one-skill-library)\n[![MITRE F3](https://img.shields.io/badge/MITRE-F3_v1.1-blue?style=flat-square)](https://ctid.mitre.org/fraud/)\n[![Domains](https://img.shields.io/badge/domains-29-9cf?style=flat-square)](#whats-inside--29-security-domains)\n[![Platforms](https://img.shields.io/badge/platforms-26%2B-blueviolet?style=flat-square)](#compatible-platforms)\n[![GitHub stars](https://img.shields.io/github/stars/mukul975/Anthropic-Cybersecurity-Skills?style=flat-square)](https://github.com/mukul975/Anthropic-Cybersecurity-Skills/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/mukul975/Anthropic-Cybersecurity-Skills?style=flat-square)](https://github.com/mukul975/Anthropic-Cybersecurity-Skills/network/members)\n[![Last Commit](https://img.shields.io/github/last-commit/mukul975/Anthropic-Cybersecurity-Skills?style=flat-square)](https://github.com/mukul975/Anthropic-Cybersecurity-Skills/commits/main)\n[![agentskills.io](https://img.shields.io/badge/standard-agentskills.io-ff6600?style=flat-square)](https://agentskills.io)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](CONTRIBUTING.md)\n[![Playground](https://img.shields.io/badge/Playground-Casky.ai-blue)](https://casky.ai/?utm_source=github&utm_medium=readme&utm_campaign=cohort_launch#waitlist)\n[![Hermes Agent](https://img.shields.io/badge/Hermes_Agent-compatible-blueviolet?style=flat)](https://github.com/NousResearch/hermes-agent)\n\n\n**817 production-grade cybersecurity skills · 29 security domains · 6 framework mappings · 26+ AI platforms**\n\n[Get Started](#quick-start) · [What's Inside](#whats-inside--29-security-domains) · [Frameworks](#five-frameworks-one-skill-library) · [Platforms](#compatible-platforms) · [Contributing](#contributing)\n\n</div>\n\n---\n\n> ⚠️ **Community Project** — This is an independent, community-created project. Not affiliated with Anthropic PBC. \n\n## Give any AI agent the security skills of a senior analyst\n\nA junior analyst knows which Volatility3 plugin to run on a suspicious memory dump, which Sigma rules catch Kerberoasting, and how to scope a cloud breach across three providers. **Your AI agent doesn't — unless you give it these skills.**\n\nThis repo contains **817 structured cybersecurity skills** spanning **29 security domains**, each following the [agentskills.io](https://agentskills.io) open standard.  Every skill is mapped to **six industry frameworks** — MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, MITRE D3FEND, NIST AI RMF, and the MITRE Fight Fraud Framework (F3) — making this the only open-source skills library with unified cross-framework coverage.  Clone it, point your agent at it, and your next security investigation gets expert-level guidance in seconds.\n\n## Six frameworks, one skill library\n\nNo other open-source skills library maps every skill to all of these frameworks.  One skill, six compliance checkboxes. \n\n| Framework | Version | Scope in this repo | What it maps |\n|---|---|---|---|\n| [MITRE ATT&CK](https://attack.mitre.org) | v19.1 | 15 tactics · 286 techniques | Adversary behaviors and TTPs |\n| [NIST CSF 2.0](https://www.nist.gov/cyberframework) | 2.0 | 6 functions · 22 categories | Organizational security posture |\n| [MITRE ATLAS](https://atlas.mitre.org) | v5.4 | 16 tactics · 84 techniques | AI/ML adversarial threats |\n| [MITRE D3FEND](https://d3fend.mitre.org) | v1.3 | 7 categories · 267 techniques | Defensive countermeasures |\n| [NIST AI RMF](https://airc.nist.gov/AI_RMF) | 1.0 | 4 functions · 72 subcategories | AI risk management |\n| [MITRE F3 (Fight Fraud Framework)](https://ctid.mitre.org/fraud/) | v1.1 (2026-04-09) | 8 tactics · 123 techniques · 94 fraud-relevant skills | Cyber-enabled financial fraud TTPs |\n\n**Example — a single skill maps across all six:**\n\n| Skill | ATT&CK | NIST CSF | ATLAS | D3FEND | AI RMF | F3 |\n|---|---|---|---|---|---|---|\n| `analyzing-network-traffic-of-malware` | T1071 | DE.CM | AML.T0047 | D3-NTA | MEASURE-2.6 | — |\n| `detecting-business-email-compromise` | T1566 | DE.AE | — | — | — | F1005.006 · monetization |\n\n### 🆕 MITRE Fight Fraud Framework (F3) — 94 fraud-relevant skills\n\n[![MITRE F3](https://img.shields.io/badge/MITRE-F3_v1.1-blue?style=flat-square)](https://ctid.mitre.org/fraud/)\n\nThe **[MITRE Fight Fraud Framework (F3)](https://ctid.mitre.org/fraud/)** was released **April 9, 2026** by MITRE's Center for Threat-Informed Defense (CTID), co-developed with JPMorganChase, Citigroup, Lloyds Banking Group, Standard Chartered, CrowdStrike, Verizon Business, FS-ISAC, and others. It is an ATT&CK-compatible TTP catalog for **cyber-enabled financial fraud** — filling the gap ATT&CK leaves after initial compromise.\n\nF3 v1.1 adds **two fraud-specific tactics** that ATT&CK does not enumerate:\n- **Positioning** (`FA0001`) — actions taken after access to collect/manipulate data and prepare the fraud (synthetic-identity seeding, account warming, beneficiary setup, SIM-swap pre-positioning, banking-session hijack).\n- **Monetization** (`FA0002`) — converting stolen assets into usable funds (money-mule layering, APP fraud, crypto off-ramping, card cash-out, refund/chargeback abuse).\n\nFraud-specific techniques use `F1XXX` IDs (e.g. `F1005.003` Add Beneficiary, `F1025.003` Wire Transfer, `F1007` Adversary-in-the-Browser); reused ATT&CK techniques keep their `T1XXX` IDs. Mappings live in each skill's `mitre_f3:` frontmatter block — all 123 F3 v1.1 technique IDs were verified against the upstream STIX bundle. See [`docs/mitre-f3-mapping.md`](docs/mitre-f3-mapping.md) for the schema.\n\n### MITRE ATT&CK v19.1 — 754/754 skills mapped\n\nEvery skill carries a `mitre_attack` frontmatter list validated against **MITRE ATT&CK v19.1** (the latest release) using the official `mitreattack-python` library — 286 distinct techniques across all 15 Enterprise tactics, plus ICS and Mobile techniques where relevant. Zero revoked or deprecated IDs. v19.1's restructured Defense Evasion (now split into **Stealth** and **Defense Impairment**) is reflected below.\n\n| Tactic | ID | Skills |\n|--------|----|--------|\n| Reconnaissance | TA0043 | 103 |\n| Resource Development | TA0042 | 22 |\n| Initial Access | TA0001 | 467 |\n| Execution | TA0002 | 350 |\n| Persistence | TA0003 | 444 |\n| Privilege Escalation | TA0004 | 464 |\n| Stealth | TA0005 | 442 |\n| Defense Impairment | TA0112 | 92 |\n| Credential Access | TA0006 | 202 |\n| Discovery | TA0007 | 237 |\n| Lateral Movement | TA0008 | 68 |\n| Collection | TA0009 | 172 |\n| Command and Control | TA0011 | 123 |\n| Exfiltration | TA0010 | 82 |\n| Impact | TA0040 | 50 |\n\n## Quick start\n\n```bash\n# Option 1: npx (recommended)\nnpx skills add mukul975/Anthropic-Cybersecurity-Skills\n\n# Option 2: Git clone\ngit clone https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git\ncd Anthropic-Cybersecurity-Skills\n```\n\nWorks immediately with Claude Code, GitHub Copilot, OpenAI Codex CLI, Cursor, Gemini CLI, and any [agentskills.io](https://agentskills.io)-compatible platform. \n\n## 🌍 GARS-2026 — Global Agentic AI Readiness Survey\n\nI'm running a global academic study measuring how ready security professionals,\ndevelopers, and enterprise teams actually are for agentic AI — MCP servers,\ntool calling, governance, and human-in-the-loop workflows.\n\n**If you use this repo, your response would be a genuinely valuable data point.**\n\n📋 **Take the survey (10 min):**\n[Survey Link](https://mahipal.engineer/survey?utm_source=github_repo&utm_medium=readme&utm_campaign=gars2026)\n\n- 60 questions · Anonymous · Supervised by SRH Berlin\n- You get **50 Casky Tokens** for early access to [casky.ai](https://casky.ai)\n- Results published open access under CC-BY 4.0\n\n## 🚀 Try it on the Playground\n\nExperience Casky.ai hands-on — no setup required.\n\n**[→ Launch Playground on Casky.ai](https://casky.ai/?utm_source=github&utm_medium=readme&utm_campaign=cohort_launch#waitlist)**\n\nThe playground lets you:\n- Run live cybersecurity skill exercises against real targets\n- See AI agents execute structured skills in real time\n- Explore MITRE ATT&CK mapped workflows interactively\n- Test threat hunting, DFIR, and penetration testing scenarios\n\nNo installation. No configuration. Just open and start.\n## Why this exists\n\nThe cybersecurity workforce gap hit **4.8 million unfilled roles** globally in 2024 (ISC2). AI agents can help close that gap — but only if they have structured domain knowledge to work from. Today's agents can write code and search the web, but they lack the practitioner playbooks that turn a generic LLM into a capable security analyst.\n\nExisting security tool repos give you wordlists, payloads, or exploit code. None of them give an AI agent the structured decision-making workflow a senior analyst follows: when to use each technique, what prerequisites to check, how to execute step-by-step, and how to verify results. That is the gap this project fills.\n\n**Anthropic Cybersecurity Skills** is not a collection of scripts or checklists. It is an **AI-native knowledge base** built from the ground up for the agentskills.io standard  — YAML frontmatter for sub-second discovery, structured Markdown for step-by-step execution, and reference files for deep technical context.  Every skill encodes real practitioner workflows, not generated summaries. \n\n## What's inside — 29 security domains\n\n| Domain | Skills | Key capabilities |\n|---|---|---|\n| Cloud Security | 66 | AWS, Azure, GCP hardening · CSPM · cloud attack emulation · cloud forensics |\n| Threat Hunting | 58 | Hypothesis-driven hunts · LOTL detection · EVTX hunting · fleet hunting |\n| Threat Intelligence | 52 | STIX/TAXII · MISP · OpenCTI · feed integration · actor profiling |\n| Network Security | 43 | IDS/IPS · firewall rules · VLAN segmentation · traffic analysis |\n| Web Application Security | 42 | OWASP Top 10 · SQLi · XSS · SSRF · deserialization |\n| Digital Forensics | 41 | Disk imaging · memory forensics · Hayabusa/KAPE/Plaso timelines |\n| Malware Analysis | 39 | Static/dynamic analysis · reverse engineering · sandboxing |\n| Identity & Access Management | 37 | Entra ID/ROADtools · device-code phishing · PAM · zero trust identity |\n| SOC Operations | 35 | Playbooks · escalation workflows · Graph-log detection · tabletop exercises |\n| Red Teaming | 33 | ADCS/Certipy · BloodHound CE · Sliver/Havoc C2 · NTLM relay |\n| Container Security | 33 | K8s RBAC · image scanning · Falco · container escape |\n| Security Operations | 28 | SIEM correlation · log analysis · alert triage |\n| OT/ICS Security | 28 | Modbus · DNP3 · IEC 62443 · historian defense · SCADA |\n| API Security | 28 | GraphQL · REST · OWASP API Top 10 · WAF bypass |\n| Incident Response | 26 | Breach containment · ransomware response · IR playbooks |\n| Vulnerability Management | 25 | Nessus · scanning workflows · patch prioritization · CVSS |\n| Penetration Testing | 21 | Network · web · cloud · mobile · NetExec lateral movement |\n| DevSecOps | 18 | CI/CD security · Trivy IaC/image scanning · code signing |\n| Zero Trust Architecture | 17 | BeyondCorp · CISA maturity model · microsegmentation |\n| Endpoint Security | 17 | EDR · LOTL detection · fileless malware · persistence hunting |\n| Cryptography | 16 | TLS · Ed25519 · post-quantum migration · key manage",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "rag",
      "skill",
      "llm",
      "automation"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 93
    },
    "strategic_score": 93
  },
  {
    "owner": "google-research",
    "name": "timesfm",
    "full_name": "google-research/timesfm",
    "url": "https://github.com/google-research/timesfm",
    "description": "TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting.",
    "language": "Python",
    "total_stars": 25531,
    "forks": 2427,
    "stars_this_period": 3915,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 228,
      "created_at": "2024-04-29T21:26:26Z",
      "pushed_at": "2026-06-23T18:50:53Z",
      "homepage": "https://research.google/blog/a-decoder-only-foundation-model-for-time-series-forecasting/",
      "default_branch": "master",
      "forks": 2427,
      "watchers": 174,
      "archived": false,
      "size_kb": 5192
    },
    "readme_content": "# TimesFM\n\nTimesFM (Time Series Foundation Model) is a pretrained time-series foundation\nmodel developed by Google Research for time-series forecasting.\n\n*   Paper:\n    [A decoder-only foundation model for time-series forecasting](https://arxiv.org/abs/2310.10688),\n    ICML 2024.\n*   All checkpoints:\n    [TimesFM Hugging Face Collection](https://huggingface.co/collections/google/timesfm-release-66e4be5fdb56e960c1e482a6).\n*   [Google Research blog](https://research.google/blog/a-decoder-only-foundation-model-for-time-series-forecasting/).\n*   TimesFM in Google 1P Products:\n    *   [BigQuery ML](https://cloud.google.com/bigquery/docs/timesfm-model): Enterprise level SQL queries for scalability and reliability.\n    *   [Google Sheets](https://workspaceupdates.googleblog.com/2026/02/forecast-data-in-connected-sheets-BigQueryML-TimesFM.html): For your daily spreadsheet. \n    *   [Vertex Model Garden](https://pantheon.corp.google.com/vertex-ai/publishers/google/model-garden/timesfm): Dockerized endpoint for agentic calling.\n\nThis open version is not an officially supported Google product.\n\n**Latest Model Version:** TimesFM 2.5\n\n**Archived Model Versions:**\n\n-   1.0 and 2.0: relevant code archived in the sub directory `v1`. You can `pip\n    install timesfm==1.3.0` to install an older version of this package to load\n    them.\n## Update - June 5, 2026\n\nUpdated PyPI to `timesfm=2.0.0`. See [Install](https://github.com/google-research/timesfm#from-pypi).\n\n## Update - Apr. 9, 2026\n\nAdded fine-tuning example using HuggingFace Transformers + PEFT (LoRA) — see\n[`timesfm-forecasting/examples/finetuning/`](timesfm-forecasting/examples/finetuning/).\nAlso added unit tests (`tests/`) and incorporated several community fixes.\n\nShoutout to [@kashif](https://github.com/kashif) and [@darkpowerxo](https://github.com/darkpowerxo). \n\n## Update - Mar. 19, 2026\n\nHuge shoutout to [@borealBytes](https://github.com/borealBytes) for adding the support for [AGENTS](https://github.com/google-research/timesfm/blob/master/AGENTS.md)! TimesFM [SKILL.md](https://github.com/google-research/timesfm/tree/master/timesfm-forecasting) is out.\n\n## Update - Oct. 29, 2025\n\nAdded back the covariate support through XReg for TimesFM 2.5.\n\n\n## Update - Sept. 15, 2025\n\nTimesFM 2.5 is out!\n\nComparing to TimesFM 2.0, this new 2.5 model:\n\n-   uses 200M parameters, down from 500M.\n-   supports up to 16k context length, up from 2048.\n-   supports continuous quantile forecast up to 1k horizon via an optional 30M\n    quantile head.\n-   gets rid of the `frequency` indicator.\n-   has a couple of new forecasting flags.\n\nSince the Sept. 2025 launch, the following improvements have been completed:\n\n1.  ✅ Flax version of the model for faster inference.\n2.  ✅ Covariate support via XReg (see Oct. 2025 update).\n3.  ✅ Documentation, examples, and agent skill (see `timesfm-forecasting/`).\n4.  ✅ Fine-tuning example with LoRA via HuggingFace Transformers + PEFT (see `timesfm-forecasting/examples/finetuning/`).\n5.  ✅ Unit tests for core layers, configs, and utilities (see `tests/`).\n\n### Install\n\n#### From `PyPI`\n\n```shell\n# Install the package with torch\npip install timesfm[torch]\n# Or with Flax\npip install timesfm[flax]\n# And when XReg is needed\npip install timesfm[xreg]\n```\n\n#### Local Install\n\n1.  Clone the repository:\n    ```shell\n    git clone https://github.com/google-research/timesfm.git\n    cd timesfm\n    ```\n\n2.  Create a virtual environment and install dependencies using `uv`:\n    ```shell\n    # Create a virtual environment\n    uv venv\n    \n    # Activate the environment\n    source .venv/bin/activate\n    \n    # Install the package in editable mode with torch\n    uv pip install -e .[torch]\n    # Or with flax\n    uv pip install -e .[flax]\n    # And when XReg is needed\n    uv pip install -e .[xreg]\n    ```\n\n3. [Optional] Install your preferred `torch` / `jax` backend based on your OS and accelerators\n(CPU, GPU, TPU or Apple Silicon).:\n\n-   [Install PyTorch](https://pytorch.org/get-started/locally/).\n-   [Install Jax](https://docs.jax.dev/en/latest/installation.html#installation)\n    for Flax.\n\n### Code Example\n\n```python\nimport torch\nimport numpy as np\nimport timesfm\n\ntorch.set_float32_matmul_precision(\"high\")\n\nmodel = timesfm.TimesFM_2p5_200M_torch.from_pretrained(\"google/timesfm-2.5-200m-pytorch\")\n\nmodel.compile(\n    timesfm.ForecastConfig(\n        max_context=1024,\n        max_horizon=256,\n        normalize_inputs=True,\n        use_continuous_quantile_head=True,\n        force_flip_invariance=True,\n        infer_is_positive=True,\n        fix_quantile_crossing=True,\n    )\n)\npoint_forecast, quantile_forecast = model.forecast(\n    horizon=12,\n    inputs=[\n        np.linspace(0, 1, 100),\n        np.sin(np.linspace(0, 20, 67)),\n    ],  # Two dummy inputs\n)\npoint_forecast.shape  # (2, 12)\nquantile_forecast.shape  # (2, 12, 10): mean, then 10th to 90th quantiles.\n```\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"timesfm\"\nversion = \"2.0.1\"\ndescription = \"A time series foundation model.\"\nauthors = [\n    {name = \"Rajat Sen\", email = \"senrajat@google.com\"},\n    {name = \"Yichen Zhou\", email = \"yichenzhou@google.com\"},\n    {name = \"Abhimanyu Das\", email = \"abhidas@google.com\"},\n    {name = \"Petros Mol\", email = \"pmol@google.com\"},\n    {name = \"Michael Chertushkin\", email = \"chertushkinmichael@gmail.com\"},\n]\nlicense = {text = \"Apache-2.0\"}\nreadme = \"README.md\"\nrequires-python = \">=3.10\"\ndependencies = [\n    \"numpy>=1.26.4\",\n    \"huggingface_hub[cli]>=0.23.0\",\n    \"safetensors>=0.5.3\",\n]\n\n[project.optional-dependencies]\ntorch = [\n    \"torch>=2.0.0\",\n]\nflax = [\n    \"flax\",\n    \"optax\",\n    \"einshape\",\n    \"orbax-checkpoint\",\n    \"jaxtyping\",\n    \"jax[cuda]\"\n]\nxreg = [\n    \"jax[cuda]\",\n    \"scikit-learn\",\n]\n\n[tool.ruff]\nline-length = 88\nindent-width = 2\n\n[build-system]\nrequires = [\"setuptools>=61.0\"]\nbuild-backend = \"setuptools.build_meta\"\n\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "workspace",
      "inference"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 97
    },
    "strategic_score": 97
  },
  {
    "owner": "Kilo-Org",
    "name": "kilocode",
    "full_name": "Kilo-Org/kilocode",
    "url": "https://github.com/Kilo-Org/kilocode",
    "description": "Kilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.",
    "language": "TypeScript",
    "total_stars": 24581,
    "forks": 2794,
    "stars_this_period": 3676,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-age",
        "ai-coding",
        "ai-developer-tools",
        "chatgpt",
        "claude",
        "cli",
        "gemini",
        "jetbrains",
        "sonnet",
        "vscode",
        "vscode-extension"
      ],
      "license": "MIT",
      "open_issues": 846,
      "created_at": "2025-03-10T15:34:26Z",
      "pushed_at": "2026-06-25T15:41:09Z",
      "homepage": "https://kilo.ai/",
      "default_branch": "main",
      "forks": 2794,
      "watchers": 105,
      "archived": false,
      "size_kb": 464340
    },
    "readme_content": "<p align=\"center\">\n  English | <a href=\"README.zh.md\">简体中文</a> | <a href=\"README.zht.md\">繁體中文</a> | <a href=\"README.ko.md\">한국어</a> | <a href=\"README.de.md\">Deutsch</a> | <a href=\"README.es.md\">Español</a> | <a href=\"README.fr.md\">Français</a> | <a href=\"README.it.md\">Italiano</a> | <a href=\"README.da.md\">Dansk</a> | <a href=\"README.ja.md\">日本語</a> | <a href=\"README.pl.md\">Polski</a> | <a href=\"README.ru.md\">Русский</a> | <a href=\"README.bs.md\">Bosanski</a> | <a href=\"README.ar.md\">العربية</a> | <a href=\"README.no.md\">Norsk</a> | <a href=\"README.br.md\">Português (Brasil)</a> | <a href=\"README.th.md\">ไทย</a> | <a href=\"README.tr.md\">Türkçe</a> | <a href=\"README.uk.md\">Українська</a> | <a href=\"README.bn.md\">বাংলা</a> | <a href=\"README.gr.md\">Ελληνικά</a> | <a href=\"README.vi.md\">Tiếng Việt</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://kilo.ai\"><img width=\"250\" alt=\"Kilo Code logo\" src=\"https://github.com/user-attachments/assets/bdb0c174-b9fd-40ad-a47b-f3aab9b54e8d\" /></a>\n</p>\n\n<p align=\"center\">The open source coding agent for building with AI in VS Code, JetBrains, or the CLI.</p>\n\n<p align=\"center\">\n  <a href=\"https://marketplace.visualstudio.com/items?itemName=kilocode.Kilo-Code\"><img src=\"https://raster.shields.io/badge/VS_Code_Marketplace-007ACC?style=flat&logo=visualstudiocode&logoColor=white\" alt=\"VS Code Marketplace\" height=\"20\"></a>\n  <a href=\"https://www.npmjs.com/package/@kilocode/cli\"><img alt=\"npm\" src=\"https://raster.shields.io/npm/v/@kilocode/cli?style=flat\" height=\"20\" /></a>\n  <a href=\"https://x.com/kilocode\"><img src=\"https://raster.shields.io/badge/kilocode-000000?style=flat&logo=x&logoColor=white\" alt=\"X (Twitter)\" height=\"20\"></a>\n  <a href=\"https://blog.kilo.ai\"><img src=\"https://raster.shields.io/badge/Blog-555?style=flat&logo=substack&logoColor=white\" alt=\"Blog\" height=\"20\"></a>\n  <a href=\"https://kilo.ai/discord\"><img src=\"https://raster.shields.io/badge/Join%20Discord-5865F2?style=flat&logo=discord&logoColor=white\" alt=\"Discord\" height=\"20\"></a>\n  <a href=\"https://www.reddit.com/r/kilocode/\"><img src=\"https://raster.shields.io/badge/Join%20r%2Fkilocode-D84315?style=flat&logo=reddit&logoColor=white\" alt=\"Reddit\" height=\"20\"></a>\n</p>\n\n![Kilo-in-VS-Code-and-CLI](https://github.com/user-attachments/assets/0536ca59-ed81-4512-9e05-d186187a1b52)\n\n---\n\nKilo Code is an AI coding agent that meets you everywhere you work: [VS Code](https://kilo.ai/landing/vs-code), [JetBrains](https://kilo.ai/features/jetbrains-native), and the [CLI](https://kilo.ai/cli). It's open source with open pricing. You pick from 500+ models, switch between them mid-task, and pay the model provider's rate with zero markup. No API keys required to start.\n\n### Installation\n\nPick where you want to run Kilo.\n\n<details open>\n<summary><strong>VS Code</strong></summary>\n\n<br>\n\nInstall the [Kilo Code extension](vscode:extension/kilocode.kilo-code) directly, or grab it from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=kilocode.Kilo-Code). Create an account and you'll have access to 500+ models including GPT-5.5, Claude Opus 4.7, Claude Sonnet 4.6, and Gemini 3.1 Pro Preview, all at provider pricing.\n\n</details>\n\n<details open>\n<summary><strong>CLI</strong></summary>\n\n<br>\n\n```bash\n# npm\nnpm install -g @kilocode/cli\n\n# curl\ncurl -fsSL https://kilo.ai/cli/install | bash\n\n# pnpm\npnpm add -g @kilocode/cli\n\n# bun\nbun add -g @kilocode/cli\n\n# Homebrew (macOS / Linux)\nbrew install Kilo-Org/tap/kilo\n\n# Arch Linux (AUR)\nparu -S kilo-bin\n```\n\nThen run `kilo` in any project directory to start.\n\n</details>\n\n<details>\n<summary><strong>JetBrains</strong></summary>\n\n<br>\n\nInstall the [Kilo Code plugin](https://plugins.jetbrains.com/plugin/28350-kilo-code) from the JetBrains Marketplace, or search \"Kilo Code\" in `Settings → Plugins` inside any JetBrains IDE.\n\n</details>\n\n<details>\n<summary><strong>Cloud Agent</strong></summary>\n\n<br>\n\nRun Kilo from the web, no local machine needed, at [app.kilo.ai/cloud](https://app.kilo.ai/cloud).\n\n</details>\n\n<details>\n<summary><strong>Code Reviews</strong></summary>\n\n<br>\n\nSet up automated AI code reviews on your pull requests at [app.kilo.ai/code-reviews](https://app.kilo.ai/code-reviews).\n\n</details>\n\n<details>\n<summary><strong>KiloClaw</strong></summary>\n\n<br>\n\nSpin up your always-on AI agent at [app.kilo.ai/claw](https://app.kilo.ai/claw).\n\n</details>\n\n<details>\n<summary>Install the CLI from GitHub Releases (binaries)</summary>\n\nDownload the latest binary from the [Releases page](https://github.com/Kilo-Org/kilocode/releases).\n\n| Platform | Asset |\n|---|---|\n| Windows (most PCs) | `kilo-windows-x64.zip` |\n| macOS (Apple Silicon) | `kilo-darwin-arm64.zip` |\n| macOS (Intel) | `kilo-darwin-x64.zip` |\n| Linux x64 | `kilo-linux-x64.tar.gz` |\n| Linux ARM | `kilo-linux-arm64.tar.gz` |\n\nNotes: `x64-baseline` is a compatibility build for older CPUs without AVX. `musl` is the statically linked build for Alpine or minimal Docker images without glibc. `kilo-vscode-*.vsix` is the VS Code extension package, not the CLI. `Source code` archives are for building from source.\n\n</details>\n\n### Agents\n\nKilo ships with specialized agents you switch between depending on the task. You can also build your own custom agents.\n\n- **Code** - The default. Implements and edits code from natural language.\n- **Plan** - Designs architecture and writes implementation plans before any code gets written.\n- **Ask** - Answers questions about your codebase without touching any files.\n- **Debug** - Troubleshoots and traces issues.\n- **Review** - Reviews your changes and surfaces issues across performance, security, style, and test coverage.\n\nLearn more about [agents and custom agents](https://kilo.ai/docs/code-with-ai/agents/using-agents).\n\n### What it does\n\n- **Code generation** from natural language, across multiple files.\n- **Inline autocomplete** with ghost-text suggestions and tab to accept.\n- **Self-checking** so the agent reviews and corrects its own work.\n- **Terminal and browser control** to run commands and automate the web.\n- **MCP marketplace** to find and wire up MCP servers that extend what the agent can do.\n- **500+ models** with mid-task switching, so you can match latency, cost, and reasoning to the job.\n\n### Autonomous Mode (CI/CD)\n\nRun `kilo run` with `--auto` for fully autonomous operation with no prompts, built for CI/CD pipelines:\n\n```bash\nkilo run --auto \"run tests and fix any failures\"\n```\n\n`--auto` disables all permission prompts and lets the agent execute any action without confirmation. Only use it in trusted environments.\n\n### Documentation\n\nFor configuration and everything else, [head over to the docs](https://kilo.ai/docs).\n\n### Contributing\n\nContributions are welcome from developers, writers, and everyone in between. Start with the [Contributing Guide](/CONTRIBUTING.md) for environment setup, coding standards, and how to open a pull request. See [RELEASING.md](RELEASING.md) for the VS Code extension and CLI release process, and [packages/kilo-jetbrains/RELEASING.md](packages/kilo-jetbrains/RELEASING.md) for the JetBrains plugin.\n\nPlease review our [Code of Conduct](/CODE_OF_CONDUCT.md) before getting involved.\n\n### License\n\nMIT. You're free to use, modify, and distribute this code, including commercially, as long as you keep the attribution and license notices. See [License](/LICENSE).\n\n### FAQ\n\n<details>\n<summary>Where did Kilo CLI come from?</summary>\n\nKilo CLI is a fork of [OpenCode](https://github.com/Kilo-Org/kilocode), enhanced to work within the Kilo agentic engineering platform.\n\n</details>\n\n---\n\n**Join the community** [Discord](https://kilo.ai/discord) | [X](https://x.com/kilocode) | [Reddit](https://www.reddit.com/r/kilocode/)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"$schema\": \"https://json.schemastore.org/package.json\",\n  \"name\": \"@kilocode/kilo\",\n  \"description\": \"AI-powered development tool\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"packageManager\": \"bun@1.3.14\",\n  \"scripts\": {\n    \"dev\": \"bun run --cwd packages/opencode --conditions=browser src/index.ts\",\n    \"dev:storybook\": \"bun --cwd packages/storybook storybook\",\n    \"lint\": \"oxlint\",\n    \"typecheck\": \"bun turbo typecheck\",\n    \"upgrade-opentui\": \"bun run script/upgrade-opentui.ts\",\n    \"postinstall\": \"bun run --cwd packages/opencode fix-node-pty && bun run script/setup-git.ts\",\n    \"prepare\": \"husky\",\n    \"random\": \"echo 'Random script'\",\n    \"hello\": \"echo 'Hello World!'\",\n    \"test\": \"echo 'do not run tests from root' && exit 1\",\n    \"extension\": \"bun --cwd packages/kilo-vscode script/launch.ts\",\n    \"dev-setup\": \"bun run --cwd packages/opencode --conditions=browser src/index.ts dev-setup\"\n  },\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/*\",\n      \"packages/sdk/js\"\n    ],\n    \"catalog\": {\n      \"@effect/opentelemetry\": \"4.0.0-beta.66\",\n      \"@effect/platform-node\": \"4.0.0-beta.66\",\n      \"@npmcli/arborist\": \"9.4.0\",\n      \"@types/bun\": \"1.3.14\",\n      \"@types/cross-spawn\": \"6.0.6\",\n      \"@octokit/rest\": \"22.0.0\",\n      \"@opentui/core\": \"0.2.15\",\n      \"@opentui/solid\": \"0.2.15\",\n      \"ulid\": \"3.0.1\",\n      \"@kobalte/core\": \"0.13.11\",\n      \"@types/luxon\": \"3.7.1\",\n      \"@types/node\": \"24.12.4\",\n      \"@types/semver\": \"7.7.1\",\n      \"@tsconfig/node22\": \"22.0.2\",\n      \"@tsconfig/bun\": \"1.0.9\",\n      \"@cloudflare/workers-types\": \"4.20251008.0\",\n      \"@openauthjs/openauth\": \"0.0.0-20250322224806\",\n      \"@pierre/diffs\": \"1.1.22\",\n      \"opentui-spinner\": \"0.0.6\",\n      \"@solid-primitives/storage\": \"4.3.3\",\n      \"@tailwindcss/vite\": \"4.1.11\",\n      \"diff\": \"8.0.4\",\n      \"dompurify\": \"3.4.2\",\n      \"drizzle-kit\": \"1.0.0-rc.2\",\n      \"drizzle-orm\": \"1.0.0-rc.2\",\n      \"effect\": \"4.0.0-beta.66\",\n      \"ai\": \"6.0.168\",\n      \"cross-spawn\": \"7.0.6\",\n      \"hono\": \"4.12.12\",\n      \"hono-openapi\": \"1.1.2\",\n      \"fuzzysort\": \"3.1.0\",\n      \"luxon\": \"3.6.1\",\n      \"marked\": \"17.0.1\",\n      \"marked-shiki\": \"1.2.1\",\n      \"remend\": \"1.3.0\",\n      \"@playwright/test\": \"1.59.1\",\n      \"semver\": \"7.7.4\",\n      \"typescript\": \"5.8.2\",\n      \"@typescript/native-preview\": \"7.0.0-dev.20260316.1\",\n      \"zod\": \"4.1.8\",\n      \"remeda\": \"2.26.0\",\n      \"shiki\": \"3.20.0\",\n      \"solid-list\": \"0.3.0\",\n      \"tailwindcss\": \"4.1.11\",\n      \"virtua\": \"0.42.3\",\n      \"vite\": \"7.3.2\",\n      \"@solidjs/meta\": \"0.29.4\",\n      \"@solidjs/router\": \"0.15.4\",\n      \"@solidjs/start\": \"https://pkg.pr.new/@solidjs/start@dfb2020\",\n      \"solid-js\": \"1.9.12\",\n      \"vite-plugin-solid\": \"2.11.10\",\n      \"@lydell/node-pty\": \"1.2.0-beta.12\",\n      \"@opentui/keymap\": \"0.2.15\",\n      \"@effect/sql-sqlite-bun\": \"4.0.0-beta.66\"\n    }\n  },\n  \"devDependencies\": {\n    \"@tsconfig/bun\": \"catalog:\",\n    \"@types/mime-types\": \"3.0.1\",\n    \"@typescript/native-preview\": \"catalog:\",\n    \"glob\": \"13.0.5\",\n    \"husky\": \"9.1.7\",\n    \"oxlint\": \"1.60.0\",\n    \"oxlint-tsgolint\": \"0.21.0\",\n    \"prettier\": \"3.6.2\",\n    \"semver\": \"^7.6.0\",\n    \"turbo\": \"2.9.14\",\n    \"@types/bun\": \"catalog:\",\n    \"@changesets/changelog-github\": \"^0.5.1\",\n    \"@changesets/cli\": \"^2.27.10\"\n  },\n  \"dependencies\": {\n    \"@kilocode/plugin\": \"workspace:*\",\n    \"@opencode-ai/script\": \"workspace:*\",\n    \"@kilocode/sdk\": \"workspace:*\",\n    \"typescript\": \"catalog:\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/Kilo-Org/kilocode\"\n  },\n  \"license\": \"MIT\",\n  \"prettier\": {\n    \"semi\": false,\n    \"printWidth\": 120\n  },\n  \"trustedDependencies\": [\n    \"esbuild\",\n    \"node-pty\",\n    \"protobufjs\",\n    \"tree-sitter\",\n    \"tree-sitter-bash\",\n    \"tree-sitter-powershell\",\n    \"web-tree-sitter\",\n    \"electron\"\n  ],\n  \"overrides\": {\n    \"@types/bun\": \"catalog:\",\n    \"@types/node\": \"catalog:\",\n    \"effect\": \"catalog:\",\n    \"@effect/platform-node-shared\": \"4.0.0-beta.46\",\n    \"path-to-regexp\": \">=8.4.0\",\n    \"picomatch\": \">=2.3.2\",\n    \"defu\": \"6.1.6\",\n    \"lodash\": \"4.18.1\",\n    \"@xmldom/xmldom\": \">=0.8.12\",\n    \"smol-toml\": \">=1.6.1\",\n    \"fastify\": \">=5.8.3\",\n    \"diff\": \"8.0.4\",\n    \"dompurify\": \"3.4.2\",\n    \"happy-dom\": \">=20.8.9\",\n    \"@opentui/core\": \"catalog:\",\n    \"@opentui/solid\": \"catalog:\",\n    \"solid-js\": \"catalog:\",\n    \"@opentui/keymap\": \"catalog:\"\n  },\n  \"patchedDependencies\": {\n    \"@npmcli/agent@4.0.0\": \"patches/@npmcli%2Fagent@4.0.0.patch\",\n    \"@silvia-odwyer/photon-node@0.3.4\": \"patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch\",\n    \"@standard-community/standard-openapi@0.2.9\": \"patches/@standard-community%2Fstandard-openapi@0.2.9.patch\",\n    \"solid-js@1.9.10\": \"patches/solid-js@1.9.10.patch\",\n    \"mammoth@1.12.0\": \"patches/mammoth@1.12.0.patch\"\n  },\n  \"version\": \"7.3.54\",\n  \"peerDependencies\": {}\n}\n",
    "strategic_keywords": [
      "agent",
      "workspace"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "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": 22191,
    "forks": 2139,
    "stars_this_period": 3631,
    "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": 224,
      "created_at": "2023-08-16T16:16:33Z",
      "pushed_at": "2026-06-25T15:20:09Z",
      "homepage": "https://www.cognee.ai",
      "default_branch": "main",
      "forks": 2139,
      "watchers": 72,
      "archived": false,
      "size_kb": 191510
    },
    "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\n<div style=\"text-align: center\">\n  <img src=\"https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/main/assets/cognee_benefits.png\" alt=\"Why cognee?\" width=\"80%\" />\n</div>\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\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### Product Features\n\n<p align=\"center\">\n  <img src=\"assets/cognee_products.png\" alt=\"Cognee Products\" 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 automatically captures tool calls into session memory via hooks and syncs to the permanent knowledge graph at session end.\n\n**Setup:**\n\n```bash\n# Install cognee\npip install cognee\n\n# Configure\nexport LLM_API_KEY=\"your-openai-key\"\n\n# Clone the plugin\ngit clone https://github.com/topoteretes/cognee-integrations.git\n\n# Enable it (add to ~/.zshrc for permanent use)\nclaude --plugin-dir ./cognee-integrations/integrations/claude-code\n```\n\nOr connect to Cognee Cloud instead of running locally:\n\n```bash\nexport COGNEE_SERVICE_URL=\"https://your-instance.cognee.ai\"\nexport COGNEE_API_KEY=\"ck_...\"\n```\n\nThe plugin hooks into Claude Code's lifecycle — `SessionStart` initializes memory, `PostToolUse` captures actions, `UserPromptSubmit` injects relevant context, `PreCompact` preserves memory across context resets, and `SessionEnd` bridges session data into the permanent graph.\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 sync delay between payment\n        and invoice systems — a fix was applied on your account.\"\n\n# What happens under the hood:\n- Unifies data sources from various company channels\n- Reconstructs the interaction timeline and tracks outcomes\n- Retrieves similar resolved cases\n- Maps to the best resolution strategy\n- Updates memory after execution so the agent never repeats the same mistake\n```\n\n**Use Case 2 — Expert Knowledge Distillation (SQL Copilot)**\n\n```python\nGoal: Help junior analysts solve tasks by reusing expert-level queries, patterns, and reasoning.\n\nUser: \"How do I calculate customer retention for this dataset?\"\n\nCognee tracks: expert SQL queries, workflow patterns, schema structures, successful implementations\n\n# Agent response:\nAgent: \"Here's how senior analysts solved a similar retention query.\n        Cognee matched your schema to a known structure and adapted\n        the expert's logic to fit your dataset.\"\n\n# What happens under the hood:\n- Extracts and stores pattern",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"cognee\"\n\nversion = \"1.2.1\"\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": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 97
    },
    "strategic_score": 97
  },
  {
    "owner": "penpot",
    "name": "penpot",
    "full_name": "penpot/penpot",
    "url": "https://github.com/penpot/penpot",
    "description": "Penpot: The open-source design tool for design and code collaboration",
    "language": "Clojure",
    "total_stars": 53633,
    "forks": 3456,
    "stars_this_period": 3593,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "clojure",
        "clojurescript",
        "design",
        "prototyping",
        "ui",
        "ux-design",
        "ux-experience"
      ],
      "license": "MPL-2.0",
      "open_issues": 658,
      "created_at": "2015-12-29T22:09:07Z",
      "pushed_at": "2026-06-25T15:15:55Z",
      "homepage": "https://penpot.app",
      "default_branch": "develop",
      "forks": 3456,
      "watchers": 271,
      "archived": false,
      "size_kb": 381874
    },
    "readme_content": "<img width=\"100%\" src=\"https://github.com/user-attachments/assets/da17b160-f289-436f-b140-972083a08602\" />\n\n[uri_license]: https://www.mozilla.org/en-US/MPL/2.0\n[uri_license_image]: https://img.shields.io/badge/MPL-2.0-blue.svg\n\n<p align=\"center\">\n  <a href=\"https://www.digitalpublicgoods.net/r/penpot\" rel=\"nofollow\">\n    <img alt=\"Verified DPG\" src=\"https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\">\n  </a>\n  <a href=\"https://community.penpot.app\" rel=\"nofollow\">\n    <img alt=\"Penpot Community\" src=\"https://img.shields.io/discourse/posts?server=https%3A%2F%2Fcommunity.penpot.app\">\n  </a>\n  <a href=\"https://tree.taiga.io/project/penpot/\" rel=\"nofollow\">\n    <img alt=\"Managed with Taiga.io\" src=\"https://img.shields.io/badge/managed%20with-TAIGA.io-709f14.svg\">\n  </a>\n  <a href=\"https://gitpod.io/#https://github.com/penpot/penpot\" rel=\"nofollow\">\n    <img alt=\"Gitpod ready-to-code\" src=\"https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://penpot.app/\"><b>Website</b></a>  •\n  <a href=\"https://help.penpot.app/user-guide/\"><b>User Guide</b></a>  •\n  <a href=\"https://penpot.app/learning-center\"><b>Learning Center</b></a>  •\n  <a href=\"https://community.penpot.app/\"><b>Community</b></a>\n</p>\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/@Penpot\"><b>Youtube</b></a>  •\n  <a href=\"https://peertube.kaleidos.net/a/penpot_app/video-channels\"><b>Peertube</b></a>  •\n  <a href=\"https://www.linkedin.com/company/penpot/\"><b>Linkedin</b></a>  •\n  <a href=\"https://instagram.com/penpot.app\"><b>Instagram</b></a>  •\n  <a href=\"https://fosstodon.org/@penpot/\"><b>Mastodon</b></a>  •\n  <a href=\"https://bsky.app/profile/penpot.app\"><b>Bluesky</b></a>  •\n  <a href=\"https://twitter.com/penpotapp\"><b>X</b></a>\n</p>\n\n[Penpot video](https://github.com/user-attachments/assets/7c67fd7c-04d3-4c9b-88ec-b6f5e23f8332)\n\nPenpot is the open-source design platform for teams that build digital products at scale.\n\nPenpot’s key strength lies in giving you **full ownership of your design infrastructure**. Built on open source and designed for [self-hosting](https://help.penpot.app/technical-guide/getting-started/), it puts teams in complete control of their design environment supporting strict compliance and governance requirements. Whether used in the **browser or deployed on your own servers**, Penpot **works with open standards** like SVG, CSS, HTML, and JSON. \n\nReal-time collaboration strengthens this foundation, helping teams scale and bring design closer to the product through top-tier capabilities. Additionally, developers feel at home using Penpot, because design is expressed as code, enabling a direct translation and shipping products faster. \n\nBest-in-class native [Design Tokens](https://penpot.dev/collaboration/design-tokens) provide a single source of truth between design and development. They ensure consistency, improve collaboration, and make it easier to manage complex design systems.\n\nThe [MCP server](https://penpot.app/penpot-mcp-server) takes it further by enabling multi-directional workflows between design and code. A [powerful open API](https://help.penpot.app/mcp/#quick-start) and plugin system makes the workspace programmable, enabling automation, AI-driven workflows, and integrations with the tools and systems you already use.\n\nWith [CSS Grid and Flex Layout](https://help.penpot.app/user-guide/designing/flexible-layouts/), teams can design responsive interfaces that behave like real code from the start.\n\nCombined, these features turn Penpot into a **full-stack design platform** for building scalable design systems and fully integrated product development processes.\n\nIf your organization is scaling and needs extra support, we’re here to help. [Talk to us](https://penpot.app/talk-to-us)\n\n## Table of contents ##\n\n- [Why Penpot](#why-penpot)\n- [Getting Started](#getting-started)\n- [Community](#community)\n- [Contributing](#contributing)\n- [Resources](#resources)\n- [License](#license)\n\n## Why Penpot ##\n\nPenpot connects design, code, and AI workflows through a code-based approach, making designs readable by developers and AI via the MCP server. This approach helps teams ship what’s actually designed and manage design systems at scale with powerful design tokens. As a self-hosted, open-source and real-time collaboration platform, Penpot offers full flexibility, security, and ownership without vendor lock-in. Learn more about [why Penpot](https://penpot.app/why-penpot) is the platform for your team.\n\n### Plugin system ###\n\n[Penpot plugins](https://penpot.app/penpothub/plugins) let you expand the platform's capabilities, give you the flexibility to integrate it with other apps, and design custom solutions.\n\n### Designed for developers ###\n\nPenpot was built to serve both designers and developers and create a fluid design-code process. You have the choice to enjoy real-time collaboration or play \"solo\".\n\n### Inspect mode ###\n\nWork with ready-to-use code and make your workflow easy and fast. The inspect tab gives instant access to SVG, CSS and HTML code.\n\n### Integrations ###\n\nPenpot offers [integration](https://penpot.app/integrations-api) into the development toolchain, thanks to its support for webhooks and an API accessible through access tokens.\n\n### Building Design Systems: design tokens, components and variants ###\n\nPenpot brings [design systems](https://penpot.app/design/design-systems) to code-minded teams: a single source of truth with native Design Tokens, Components, and Variants for scalable, reusable, and consistent UI across projects and platforms.\n\n<img width=\"100%\" alt=\"Penpot Design Systems\" src=\"https://github.com/user-attachments/assets/cce75ad6-f783-473f-8803-da9eb8255fef\">\n\n## Getting started ##\n\nPenpot is the only design & prototype platform that is deployment agnostic. You can use it in our [SAAS](https://design.penpot.app) or deploy it anywhere.\n\nLearn how to install it with Docker, Kubernetes, Elestio or other options on [our website](https://penpot.app/self-host).\n\n## Community ##\n\nWe love the Open Source software community. Contributing is our passion and if it’s yours too, participate and [improve](https://community.penpot.app/c/help-us-improve-penpot/7) Penpot. All your designs, code and ideas are welcome!\n\nWant to go a step further? Become a [Penpot Ambassador](https://penpot.app/ambassador-program) and help grow the Penpot community in your region while contributing to a global, open design ecosystem.\n\nIf you need help or have any questions; if you’d like to share your experience using Penpot or get inspired; if you’d rather meet our community of developers and designers, [join our Community](https://community.penpot.app/)!\n\nCategories include:\n\n- [Ask the Community](https://community.penpot.app/c/ask-for-help-using-penpot/6)\n- [Troubleshooting](https://community.penpot.app/c/technical/8)\n- [Help us Improve Penpot](https://community.penpot.app/c/help-us-improve-penpot/7)\n- [Events and Announcements](https://community.penpot.app/c/announcements/5)\n- [Penpot in your language](https://community.penpot.app/c/penpot-in-your-language/12)\n- [Education](https://community.penpot.app/c/education/28)\n\n<img width=\"100%\" alt=\"Pentpot Community\" src=\"https://github.com/user-attachments/assets/4b2a4360-12b5-4994-bd45-641449f86c4e\" />\n\n### Code of Conduct ###\n\nAnyone who contributes to Penpot, whether through code, in the community, or at an event, must adhere to the\n[code of conduct](https://help.penpot.app/contributing-guide/coc/) and foster a positive and safe environment.\n\n### Contributing ###\n\nAny contribution will make a difference to improve Penpot. How can you get involved?\n\nChoose your way:\n\n- Create and [share Libraries & Templates](https://penpot.app/libraries-templates.html) that will be helpful for the community.\n- Invite your [team to join](https://design.penpot.app/#/auth/register).\n- Give this repo a star and follow us on Social Media: [Mastodon](https://fosstodon.org/@penpot/), [Youtube](https://www.youtube.com/c/Penpot), [Instagram](https://instagram.com/penpot.app), [Linkedin](https://www.linkedin.com/company/penpotdesign),  [Peertube](https://peertube.kaleidos.net/a/penpot_app), [X](https://twitter.com/penpotapp) and [BlueSky](https://bsky.app/profile/penpot.app).\n- Participate in the [Community](https://community.penpot.app/) space by asking and answering questions; reacting to others’ articles;  opening your own conversations and following along on decisions affecting the project.\n- Report bugs with our easy [guide for bugs hunting](https://help.penpot.app/contributing-guide/reporting-bugs/) or [GitHub issues](https://github.com/penpot/penpot/issues).\n- Become a [translator](https://help.penpot.app/contributing-guide/translations).\n- Give feedback: [Email us](mailto:support@penpot.app).\n- **Contribute to Penpot's code:** [Watch this video](https://www.youtube.com/watch?v=TpN0osiY-8k) by Alejandro Alonso, CIO and developer at Penpot, where he gives us a hands-on demo of how to use Penpot’s repository and make changes in both front and back end.\n\nTo find (almost) everything you need to know on how to contribute to Penpot, refer to the [contributing guide](https://help.penpot.app/contributing-guide/).\n\n<img width=\"100%\" alt=\"Penpot hub\" src=\"https://github.com/user-attachments/assets/0abc02f0-625c-45ab-ad81-4927bec7a055\" />\n\n## Resources ##\n\nYou can ask and answer questions, have open-ended conversations, and follow along on decisions affecting the project.\n\n💾 [Documentation](https://help.penpot.app/technical-guide/)\n\n🚀 [Getting Started](https://help.penpot.app/technical-guide/getting-started/)\n\n✏️ [Tutorials](https://www.youtube.com/playlist?list=PLgcCPfOv5v54WpXhHmNO7T-YC7AE-SRsr)\n\n🏘️ [Architecture](https://help.penpot.app/technical-guide/developer/architecture/)\n\n📚 [Dev Diaries](https://penpot.app/dev-diaries.html)\n\n🧑‍🏫​ [UI Design Course](https://penpot.app/courses/)\n\n\n## License ##\n\n```\nThis Source Code Form is subject to the terms of the Mozilla Public\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\nfile, You can obtain one at http://mozilla.org/MPL/2.0/.\n\nCopyright (c) KALEIDOS INC Sucursal en España SL\n```\nPenpot is a Kaleidos’ [open source project](https://kaleidos.net/)\n",
    "strategic_keywords": [
      "mcp",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 11,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 8,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "jamiepine",
    "name": "voicebox",
    "full_name": "jamiepine/voicebox",
    "url": "https://github.com/jamiepine/voicebox",
    "description": "The open-source AI voice studio. Clone, dictate, create.",
    "language": "TypeScript",
    "total_stars": 34112,
    "forks": 4102,
    "stars_this_period": 3583,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "cuda",
        "mlx",
        "qwen3-tts",
        "qwen3-tts-ui",
        "voice-ai",
        "voice-clone",
        "whisper"
      ],
      "license": "MIT",
      "open_issues": 485,
      "created_at": "2026-01-25T12:27:03Z",
      "pushed_at": "2026-04-26T20:29:17Z",
      "homepage": "https://voicebox.sh",
      "default_branch": "main",
      "forks": 4102,
      "watchers": 179,
      "archived": false,
      "size_kb": 107737
    },
    "readme_content": "<p align=\"center\">\n  <img src=\".github/assets/icon-dark.webp\" alt=\"Voicebox\" width=\"120\" height=\"120\" />\n</p>\n\n<h1 align=\"center\">Voicebox</h1>\n\n<p align=\"center\">\n  <strong>The open-source AI voice studio.</strong><br/>\n  Clone any voice. Generate speech. Dictate into any app. Talk to agents in voices you own.<br/>\n  The full voice I/O stack, running locally on your machine.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/jamiepine/voicebox/releases\">\n    <img src=\"https://img.shields.io/github/downloads/jamiepine/voicebox/total?style=flat&color=blue\" alt=\"Downloads\" />\n  </a>\n  <a href=\"https://github.com/jamiepine/voicebox/releases/latest\">\n    <img src=\"https://img.shields.io/github/v/release/jamiepine/voicebox?style=flat\" alt=\"Release\" />\n  </a>\n  <a href=\"https://github.com/jamiepine/voicebox/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/jamiepine/voicebox?style=flat\" alt=\"Stars\" />\n  </a>\n  <a href=\"https://github.com/jamiepine/voicebox/blob/main/LICENSE\">\n    <img src=\"https://img.shields.io/github/license/jamiepine/voicebox?style=flat\" alt=\"License\" />\n  </a>\n  <a href=\"https://deepwiki.com/jamiepine/voicebox\">\n    <img src=\"https://img.shields.io/static/v1?label=Ask&message=DeepWiki&color=5B6EF7\" alt=\"Ask DeepWiki\" />\n  </a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://trendshift.io/repositories/21213\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/21213\" alt=\"jamiepine%2Fvoicebox | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://voicebox.sh\">voicebox.sh</a> •\n  <a href=\"https://docs.voicebox.sh\">Docs</a> •\n  <a href=\"#download\">Download</a> •\n  <a href=\"#features\">Features</a> •\n  <a href=\"#api\">API</a> •\n  <a href=\"docs/content/docs/overview/troubleshooting.mdx\">Troubleshooting</a>\n</p>\n\n<br/>\n\n<p align=\"center\">\n  <a href=\"https://voicebox.sh\">\n    <img src=\"landing/public/assets/app-screenshot-1.webp\" alt=\"Voicebox App Screenshot\" width=\"800\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <em>Click the image above to watch the demo video on <a href=\"https://voicebox.sh\">voicebox.sh</a></em>\n</p>\n\n<br/>\n\n<p align=\"center\">\n  <img src=\"landing/public/assets/app-screenshot-2.webp\" alt=\"Voicebox Screenshot 2\" width=\"800\" />\n</p>\n\n<p align=\"center\">\n  <img src=\"landing/public/assets/app-screenshot-3.webp\" alt=\"Voicebox Screenshot 3\" width=\"800\" />\n</p>\n\n<br/>\n\n## What is Voicebox?\n\nVoicebox is a **local-first AI voice studio** — a free and open-source alternative to **ElevenLabs** and **WisprFlow** in one app. Clone voices from a few seconds of audio, generate speech in 23 languages across 7 TTS engines, dictate into any text field with a global hotkey, and give any MCP-aware AI agent a voice of your choosing.\n\nThe two cloud incumbents sit on opposite halves of the voice I/O loop — ElevenLabs on output, WisprFlow on input. Voicebox does both, bridges them with a bundled local LLM for refinement and per-profile personas, and runs the whole thing on your machine.\n\n- **Complete privacy** — models, voice data, and captures never leave your machine\n- **7 TTS engines** — Qwen3-TTS, Qwen CustomVoice, LuxTTS, Chatterbox Multilingual, Chatterbox Turbo, HumeAI TADA, and Kokoro\n- **Voice cloning and preset voices** — zero-shot cloning from a reference sample, or 50+ curated preset voices via Kokoro and Qwen CustomVoice\n- **23 languages** — from English to Arabic, Japanese, Hindi, Swahili, and more\n- **Post-processing effects** — pitch shift, reverb, delay, chorus, compression, and filters\n- **Expressive speech** — paralinguistic tags like `[laugh]`, `[sigh]`, `[gasp]` via Chatterbox Turbo; natural-language delivery control via Qwen CustomVoice\n- **Unlimited length** — auto-chunking with crossfade for scripts, articles, and chapters\n- **Stories editor** — multi-track timeline for conversations, podcasts, and narratives\n- **Voice input** — global dictation hotkey with push-to-talk and toggle modes, accessibility-verified auto-paste on macOS, in-app mic on every text field, Whisper-based STT\n- **Agent voice output** — one tool call (`voicebox.speak`) and any MCP-aware agent (Claude Code, Cursor, Cline) speaks to you in a voice you've cloned\n- **Voice personalities** — attach a free-form persona to any voice profile, then Compose, Rewrite, or Respond via a bundled local LLM — agents can invoke the same modes over MCP\n- **API-first** — REST API plus a built-in MCP server for integrating voice I/O into your own apps and agents\n- **Native performance** — built with Tauri (Rust), not Electron\n- **Runs everywhere** — macOS (MLX/Metal), Windows (CUDA), Linux, AMD ROCm, Intel Arc, Docker\n\n---\n\n## Download\n\n| Platform              | Download                                               |\n| --------------------- | ------------------------------------------------------ |\n| macOS (Apple Silicon) | [Download DMG](https://voicebox.sh/download/mac-arm)   |\n| macOS (Intel)         | [Download DMG](https://voicebox.sh/download/mac-intel) |\n| Windows               | [Download MSI](https://voicebox.sh/download/windows)   |\n| Docker                | `docker compose up`                                    |\n\n> **[View all binaries →](https://github.com/jamiepine/voicebox/releases/latest)**\n\n> **Linux** — Pre-built binaries are not yet available. See [voicebox.sh/linux-install](https://voicebox.sh/linux-install) for build-from-source instructions.\n\n> **Having trouble?** See the [Troubleshooting Guide](docs/content/docs/overview/troubleshooting.mdx) for common install, generation, model-download, and GPU issues.\n\n---\n\n## Features\n\n### Multi-Engine Voice Cloning\n\nSeven TTS engines with different strengths, switchable per-generation:\n\n| Engine                      | Languages | Strengths                                                                                                                                |\n| --------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |\n| **Qwen3-TTS** (0.6B / 1.7B) | 10        | High-quality multilingual cloning, delivery instructions (\"speak slowly\", \"whisper\")                                                     |\n| **Qwen CustomVoice**        | 10        | 9 curated preset voices with natural-language delivery control — no reference audio required                                             |\n| **LuxTTS**                  | English   | Lightweight (~1GB VRAM), 48kHz output, 150x realtime on CPU                                                                              |\n| **Chatterbox Multilingual** | 23        | Broadest language coverage — Arabic, Danish, Finnish, Greek, Hebrew, Hindi, Malay, Norwegian, Polish, Swahili, Swedish, Turkish and more |\n| **Chatterbox Turbo**        | English   | Fast 350M model with paralinguistic emotion/sound tags                                                                                   |\n| **TADA** (1B / 3B)          | 10        | HumeAI speech-language model — 700s+ coherent audio, text-acoustic dual alignment                                                        |\n| **Kokoro**                  | 8         | 50 curated preset voices, tiny 82M model, fast CPU inference                                                                             |\n\n### Emotions & Paralinguistic Tags\n\nOnly **Chatterbox Turbo** interprets paralinguistic tags like `[laugh]` and\n`[sigh]`. Qwen3-TTS, LuxTTS, Chatterbox Multilingual, and HumeAI TADA read them\nliterally as text.\n\nWith **Chatterbox Turbo** selected, type `/` in the text input to open the tag\ninserter and add expressive tags inline with speech:\n\n`[laugh]` `[chuckle]` `[gasp]` `[cough]` `[sigh]` `[groan]` `[sniff]` `[shush]` `[clear throat]`\n\n### Post-Processing Effects\n\n8 audio effects powered by Spotify's `pedalboard` library. Apply after generation, preview in real time, build reusable presets.\n\n| Effect           | Description                                   |\n| ---------------- | --------------------------------------------- |\n| Pitch Shift      | Up or down by up to 12 semitones              |\n| Reverb           | Configurable room size, damping, wet/dry mix  |\n| Delay            | Echo with adjustable time, feedback, and mix  |\n| Chorus / Flanger | Modulated delay for metallic or lush textures |\n| Compressor       | Dynamic range compression                     |\n| Gain             | Volume adjustment (-40 to +40 dB)             |\n| High-Pass Filter | Remove low frequencies                        |\n| Low-Pass Filter  | Remove high frequencies                       |\n\nShips with 4 built-in presets (Robotic, Radio, Echo Chamber, Deep Voice) and supports custom presets. Effects can be assigned per-profile as defaults.\n\n### Unlimited Generation Length\n\nText is automatically split at sentence boundaries and each chunk is generated independently, then crossfaded together. Works with all engines.\n\n- Configurable auto-chunking limit (100–5,000 chars)\n- Crossfade slider (0–200ms) for smooth transitions\n- Max text length: 50,000 characters\n- Smart splitting respects abbreviations, CJK punctuation, and `[tags]`\n\n### Generation Versions\n\nEvery generation supports multiple versions with provenance tracking:\n\n- **Original** — clean TTS output, always preserved\n- **Effects versions** — apply different effects chains from any source version\n- **Takes** — regenerate with a new seed for variation\n- **Source tracking** — each version records its lineage\n- **Favorites** — star generations for quick access\n\n### Async Generation Queue\n\nGeneration is non-blocking. Submit and immediately start typing the next one.\n\n- Serial execution queue prevents GPU contention\n- Real-time SSE status streaming\n- Failed generations can be retried\n- Stale generations from crashes auto-recover on startup\n\n### Voice Profile Management\n\n- Create profiles from audio files or record directly in-app\n- Import/export profiles to share or back up\n- Multi-sample support for higher quality cloning\n- Per-profile default effects chains\n- Organize with descriptions and language tags\n\n### Stories Editor\n\nMulti-voice timeline editor for conversations, podcasts, and narratives.\n\n- Multi-track composition with drag-and-drop\n- Inline audio trimming and splitting\n- Auto-playback with synchronized playhead\n- Version pinning per track clip\n\n### Global Dictation & Voice Input\n\nThe other half of the voice I/O loop. Hold a hotkey anywhere on your system, speak, release — on macOS the transcript pastes straight into the focused text field. Or hit the mic on any Voicebox text input and dictate directly into the app.\n\n- **Configurable chord bindings** — hold-to-speak and tap-to-toggle chords, each rebindable in the in-app chord picker. Holding push-to-talk and tapping `Space` mid-hold upgrades into a toggle session without a gap in audio\n- **Target-aware paste (macOS)** — accessibility-verified injection into the focused text field, with atomic clipboard save/restore so your clipboard isn't clobbered\n- **First-run permissions UX** — in-app gates walk you through the macOS Accessibility and Input Monitoring grants with deep-links to System Settings\n- **In-app mic button** on every Voicebox text field — generation form, profile descriptions, story titles, anywhere you'd type\n- **LLM refinement** — optional cleanup of ums, stutters, and false starts before paste\n- **On-screen pill** — floating overlay surfacing `recording`, `transcribing`, `refining`, and `speaking` states. Same pill agents use when they speak to you, so there's one mental model for both directions of the loop\n\n### Speech-to-Text\n\nVoicebox runs OpenAI Whisper for transcription — the same model that backs dictation, the Captures tab, and the `/transcribe` API. Running on MLX (Apple Silicon) or PyTorch (CUDA / ROCm / DirectML / CPU) depending on your platform.\n\n| Size                          | Notes                                            ",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"voicebox\",\n  \"version\": \"0.5.0\",\n  \"private\": true,\n  \"workspaces\": [\n    \"app\",\n    \"tauri\",\n    \"web\",\n    \"landing\"\n  ],\n  \"scripts\": {\n    \"dev\": \"bun run setup:dev && cd tauri && bun run tauri dev\",\n    \"dev:web\": \"cd web && bun run dev\",\n    \"dev:landing\": \"cd landing && bun run dev\",\n    \"dev:server\": \"uvicorn backend.main:app --reload --port 17493\",\n    \"setup:dev\": \"bun run scripts/setup-dev-sidecar.js\",\n    \"build\": \"./scripts/build-server.sh && cd tauri && bun run tauri build\",\n    \"build:web\": \"cd web && bun run build\",\n    \"build:landing\": \"cd landing && bun run build\",\n    \"build:release\": \"./scripts/prepare-release.sh\",\n    \"generate:api\": \"./scripts/generate-api.sh\",\n    \"generate:keys\": \"cd tauri && bun tauri signer generate -w ~/.tauri/voicebox.key\",\n    \"build:server\": \"./scripts/build-server.sh\",\n    \"update:icons\": \"./scripts/update-icons.sh\",\n    \"convert:assets\": \"./scripts/convert-assets.sh\",\n    \"lint\": \"biome lint .\",\n    \"typecheck\": \"bunx tsc -p app/tsconfig.json --noEmit && cd web && bunx tsc --noEmit\",\n    \"lint:fix\": \"biome lint --write .\",\n    \"format\": \"biome format --write .\",\n    \"format:check\": \"biome format .\",\n    \"check\": \"biome check .\",\n    \"check:fix\": \"biome check --write .\",\n    \"ci\": \"bun run typecheck && bun run build:web\"\n  },\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"2.3.12\",\n    \"@types/node\": \"^20.0.0\",\n    \"tailwindcss\": \"^4.1.18\",\n    \"typescript\": \"^5.6.0\"\n  },\n  \"engines\": {\n    \"bun\": \">=1.0.0\"\n  },\n  \"packageManager\": \"bun@1.3.8\",\n  \"dependencies\": {\n    \"loaders.css\": \"^0.1.2\",\n    \"react-loaders\": \"^3.0.1\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "workspace",
      "llm"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 97
    },
    "strategic_score": 97
  },
  {
    "owner": "OpenCut-app",
    "name": "OpenCut",
    "full_name": "OpenCut-app/OpenCut",
    "url": "https://github.com/OpenCut-app/OpenCut",
    "description": "The open-source CapCut alternative",
    "language": "TypeScript",
    "total_stars": 59699,
    "forks": 6484,
    "stars_this_period": 3550,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "editor",
        "oss",
        "videoeditor"
      ],
      "license": "MIT",
      "open_issues": 329,
      "created_at": "2025-06-22T08:02:17Z",
      "pushed_at": "2026-06-21T13:15:27Z",
      "homepage": "https://opencut.app",
      "default_branch": "main",
      "forks": 6484,
      "watchers": 290,
      "archived": false,
      "size_kb": 27523
    },
    "readme_content": "<table width=\"100%\">\n  <tr>\n    <td align=\"left\" width=\"120\">\n      <img src=\"https://assets.opencut.app/branding/symbol.svg\" alt=\"OpenCut Logo\" width=\"100\" />\n    </td>\n    <td align=\"right\">\n      <h1>OpenCut</h1>\n      <h3 style=\"margin-top: -10px;\">A free and open source video editor for web, desktop, and mobile.</h3>\n    </td>\n  </tr>\n</table>\n\n[![Discord](https://img.shields.io/discord/1386309140057690133?label=Discord&logo=discord&logoColor=fff&color=5865F2&style=flat)](https://discord.gg/zmR9N35cjK)\n[![X](https://img.shields.io/badge/follow-%40opencutapp-000?logo=x&logoColor=fff&style=flat)](https://x.com/opencutapp)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green?style=flat)](LICENSE)\n\n## Status\n\n**OpenCut is being rewritten from the ground up.** What's coming:\n\n- An Editor API\n- First-class third party plugins (made possible by a plugin-first architecture)\n- Desktop, mobile, and browser from one codebase (Rust core)\n- MCP server (for AI agents)\n- Headless mode (automation, batch rendering)\n- A scripting tab directly in the editor\n\nYou can still find the previous version at [opencut-app/opencut-classic](https://github.com/opencut-app/opencut-classic), which is the one to reach for today. [opencut.app](https://opencut.app) still runs the classic version; the rewrite will live at [new.opencut.app](https://new.opencut.app) until it's ready to take over.\n\n## Development\n\nInstall [proto](https://moonrepo.dev/proto) if you haven't already:\n\n```sh\nbash <(curl -fsSL https://moonrepo.dev/install/proto.sh)\n```\n\nFrom the repo root:\n\n```sh\nproto use    # installs bun + moon at the versions pinned in .prototools\nbun install\n```\n\n```sh\nmoon run web:dev   # localhost:5173\nmoon run api:dev   # localhost:8787\n```\n\n## Contributing\n\nWe're not set up to take outside contributions yet while the architecture is being designed. If you want to follow along, ask questions, or just hang out, [join the Discord](https://discord.gg/zmR9N35cjK) or [open an issue](https://github.com/opencut-app/opencut/issues).\n\n## Sponsors\n\nOpenCut is supported by companies that believe in open source creator tools.\n\n- [**fal.ai**](https://fal.ai?utm_source=github-opencut&utm_campaign=oss): Generative image, video, and audio models all in one place.\n\nWant your logo here? Reach out at [sponsor@opencut.app](mailto:sponsor@opencut.app).\n\n## License\n\n[MIT](LICENSE)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "iptv-org",
    "name": "iptv",
    "full_name": "iptv-org/iptv",
    "url": "https://github.com/iptv-org/iptv",
    "description": "Collection of publicly available IPTV channels from all over the world",
    "language": "TypeScript",
    "total_stars": 128458,
    "forks": 7075,
    "stars_this_period": 3543,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "iptv",
        "m3u",
        "playlist",
        "streams",
        "tv"
      ],
      "license": "Unlicense",
      "open_issues": 44,
      "created_at": "2018-11-14T22:00:57Z",
      "pushed_at": "2026-06-25T00:39:07Z",
      "homepage": "https://iptv-org.github.io",
      "default_branch": "master",
      "forks": 7075,
      "watchers": 2218,
      "archived": false,
      "size_kb": 1270273
    },
    "readme_content": "# IPTV [![update](https://github.com/iptv-org/iptv/actions/workflows/update.yml/badge.svg)](https://github.com/iptv-org/iptv/actions/workflows/update.yml)\r\n\r\nCollection of publicly available IPTV (Internet Protocol television) channels from all over the world.\r\n\r\n## Table of contents\r\n\r\n- 🚀 [How to use?](#how-to-use)\r\n- 📺 [Playlists](#playlists)\r\n- 🗓 [EPG](#epg)\r\n- 🗄 [Database](#database)\r\n- 👨‍💻 [API](#api)\r\n- 📚 [Resources](#resources)\r\n- 💬 [Discussions](#discussions)\r\n- ❓ [FAQ](#faq)\r\n- 🛠 [Contribution](#contribution)\r\n- ⚖ [Legal](#legal)\r\n- © [License](#license)\r\n\r\n## How to use?\r\n\r\nSimply paste the link to one of the playlists into [any video player](https://github.com/iptv-org/awesome-iptv#apps) that supports live streaming and press _Open_.\r\n\r\n![VLC Network Panel](https://github.com/iptv-org/iptv/raw/master/.readme/preview.png)\r\n\r\n## Playlists\r\n\r\nThe main playlist containing all channels available in the repository can be found at:\r\n\r\n```\r\nhttps://iptv-org.github.io/iptv/index.m3u\r\n```\r\n\r\nLinks to other playlists can be found in the [PLAYLISTS.md](PLAYLISTS.md) file.\r\n\r\n## EPG\r\n\r\n[Electronic Program Guide](https://en.wikipedia.org/wiki/Electronic_program_guide) for most of the channels can be downloaded using utilities published in the [iptv-org/epg](https://github.com/iptv-org/epg) repository.\r\n\r\n## Database\r\n\r\nAll channel data is taken from the [iptv-org/database](https://github.com/iptv-org/database) repository. If you find any errors please open a new [issue](https://github.com/iptv-org/database/issues) there.\r\n\r\n## API\r\n\r\nThe API documentation can be found in the [iptv-org/api](https://github.com/iptv-org/api) repository.\r\n\r\n## Resources\r\n\r\nLinks to other useful IPTV-related resources can be found in the [iptv-org/awesome-iptv](https://github.com/iptv-org/awesome-iptv) repository.\r\n\r\n## Discussions\r\n\r\nIf you have a question or idea, welcome to the [Discussions](https://github.com/orgs/iptv-org/discussions).\r\n\r\n## FAQ\r\n\r\nThe answers to the most popular questions can be found in the [FAQ.md](FAQ.md) file.\r\n\r\n## Contribution\r\n\r\nPlease make sure to read the [Contributing Guide](CONTRIBUTING.md) before sending an issue or making a pull request.\r\n\r\nAnd thank you to everyone who has already contributed!\r\n\r\n### Backers\r\n\r\n<a href=\"https://opencollective.com/iptv-org\"><img src=\"https://opencollective.com/iptv-org/backers.svg?width=890\" /></a>\r\n\r\n### Contributors\r\n\r\n<a href=\"https://github.com/iptv-org/iptv/graphs/contributors\"><img src=\"https://opencollective.com/iptv-org/contributors.svg?width=890\" /></a>\r\n\r\n## Legal\r\n\r\nNo video files are stored in this repository. The repository simply contains user-submitted links to publicly available video stream URLs, which to the best of our knowledge have been intentionally made publicly by the copyright holders. If any links in these playlists infringe on your rights as a copyright holder, they may be removed by opening an [issue](https://github.com/iptv-org/iptv/issues/new?template=6_copyright-claim.yml). However, note that we have **no control** over the destination of the link, and just removing the link from the playlist will not remove its contents from the web. Note that linking does not directly infringe copyright because no copy is made on the site providing the link, and thus this is **not** a valid reason to send a DMCA notice to GitHub. To remove this content from the web, you should contact the web host that's actually hosting the content (**not** GitHub, nor the maintainers of this repository).\r\n\r\n## License\r\n\r\n[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](LICENSE)\r\n\r\n",
    "manifest_file": "package.json",
    "manifest_content": "{\r\n  \"name\": \"iptv\",\r\n  \"scripts\": {\r\n    \"act:check\": \"gh act pull_request -W .github/workflows/check.yml\",\r\n    \"act:format\": \"gh act workflow_dispatch -W .github/workflows/format.yml\",\r\n    \"act:update\": \"gh act workflow_dispatch -W .github/workflows/update.yml\",\r\n    \"api:load\": \"tsx scripts/commands/api/load.ts\",\r\n    \"playlist:format\": \"tsx scripts/commands/playlist/format.ts\",\r\n    \"playlist:update\": \"tsx scripts/commands/playlist/update.ts\",\r\n    \"playlist:generate\": \"tsx scripts/commands/playlist/generate.ts\",\r\n    \"playlist:validate\": \"tsx scripts/commands/playlist/validate.ts\",\r\n    \"playlist:lint\": \"npx m3u-linter -c m3u-linter.json\",\r\n    \"playlist:test\": \"tsx scripts/commands/playlist/test.ts\",\r\n    \"playlist:edit\": \"tsx scripts/commands/playlist/edit.ts\",\r\n    \"playlist:export\": \"tsx scripts/commands/playlist/export.ts\",\r\n    \"readme:update\": \"tsx scripts/commands/readme/update.ts\",\r\n    \"report:create\": \"tsx scripts/commands/report/create.ts\",\r\n    \"lint\": \"npx eslint \\\"scripts/**/*.{ts,js}\\\" \\\"tests/**/*.{ts,js}\\\"\",\r\n    \"test\": \"jest --runInBand\",\r\n    \"postinstall\": \"npm run api:load\"\r\n  },\r\n  \"jest\": {\r\n    \"transform\": {\r\n      \"^.+\\\\.ts$\": \"@swc/jest\"\r\n    },\r\n    \"testRegex\": \"tests/(.*?/)?.*test.ts$\",\r\n    \"setupFilesAfterEnv\": [\r\n      \"jest-expect-message\"\r\n    ]\r\n  },\r\n  \"author\": \"Arhey\",\r\n  \"private\": true,\r\n  \"license\": \"MIT\",\r\n  \"dependencies\": {\r\n    \"@alex_neo/jest-expect-message\": \"^1.0.5\",\r\n    \"@eslint/eslintrc\": \"^3.3.1\",\r\n    \"@eslint/js\": \"^9.32.0\",\r\n    \"@freearhey/core\": \"^0.14.3\",\r\n    \"@freearhey/storage-js\": \"^0.1.0\",\r\n    \"@inquirer/prompts\": \"^7.8.0\",\r\n    \"@iptv-org/sdk\": \"^1.5.0\",\r\n    \"@octokit/core\": \"^7.0.3\",\r\n    \"@octokit/plugin-paginate-graphql\": \"^6.0.0\",\r\n    \"@octokit/plugin-paginate-rest\": \"^13.1.1\",\r\n    \"@octokit/plugin-rest-endpoint-methods\": \"^16.0.0\",\r\n    \"@octokit/types\": \"^14.1.0\",\r\n    \"@stylistic/eslint-plugin\": \"^5.2.2\",\r\n    \"@swc/jest\": \"^0.2.39\",\r\n    \"@types/async\": \"^3.2.25\",\r\n    \"@types/cli-progress\": \"^3.11.6\",\r\n    \"@types/fs-extra\": \"^11.0.4\",\r\n    \"@types/jest\": \"^30.0.0\",\r\n    \"@types/lodash.uniqueid\": \"^4.0.9\",\r\n    \"@types/node-cleanup\": \"^2.1.5\",\r\n    \"@typescript-eslint/eslint-plugin\": \"^8.38.0\",\r\n    \"@typescript-eslint/parser\": \"^8.38.0\",\r\n    \"async\": \"^3.2.6\",\r\n    \"axios\": \"^1.15.2\",\r\n    \"chalk\": \"^5.4.1\",\r\n    \"cli-progress\": \"^3.12.0\",\r\n    \"commander\": \"^14.0.0\",\r\n    \"console-table-printer\": \"^2.14.6\",\r\n    \"cross-env\": \"^10.0.0\",\r\n    \"es-toolkit\": \"^1.45.1\",\r\n    \"eslint\": \"^9.32.0\",\r\n    \"glob\": \"^11.0.3\",\r\n    \"globals\": \"^16.3.0\",\r\n    \"hls-parser\": \"^0.16.0\",\r\n    \"iptv-playlist-parser\": \"^0.15.1\",\r\n    \"jest\": \"^30.0.5\",\r\n    \"jest-expect-message\": \"^1.1.3\",\r\n    \"lodash.uniqueid\": \"^4.0.1\",\r\n    \"m3u-linter\": \"^0.4.3\",\r\n    \"mediainfo.js\": \"^0.3.6\",\r\n    \"mpd-parser\": \"^1.3.1\",\r\n    \"node-cleanup\": \"^2.1.2\",\r\n    \"normalize-url\": \"^8.1.0\",\r\n    \"socks-proxy-agent\": \"^8.0.5\",\r\n    \"tsx\": \"^4.20.3\"\r\n  },\r\n  \"overrides\": {\r\n    \"esbuild\": \"0.23.1\",\r\n    \"@xmldom/xmldom\": \">=0.8.13 <1.0.0\"\r\n  }\r\n}\r\n",
    "strategic_keywords": [
      "workflow",
      "protocol"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 14,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "bytedance",
    "name": "deer-flow",
    "full_name": "bytedance/deer-flow",
    "url": "https://github.com/bytedance/deer-flow",
    "description": "An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.",
    "language": "Python",
    "total_stars": 74625,
    "forks": 10064,
    "stars_this_period": 3068,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agentic",
        "agentic-framework",
        "agentic-workflow",
        "ai",
        "ai-agents",
        "deep-research",
        "harness",
        "langchain",
        "langgraph",
        "langmanus",
        "llm",
        "multi-agent",
        "nodejs",
        "podcast",
        "python",
        "superagent",
        "typescript"
      ],
      "license": "MIT",
      "open_issues": 950,
      "created_at": "2025-05-07T02:50:19Z",
      "pushed_at": "2026-06-25T15:32:30Z",
      "homepage": "https://deerflow.tech",
      "default_branch": "main",
      "forks": 10064,
      "watchers": 319,
      "archived": false,
      "size_kb": 40098
    },
    "readme_content": "# 🦌 DeerFlow - 2.0\n\nEnglish | [中文](./README_zh.md) | [日本語](./README_ja.md) | [Français](./README_fr.md) | [Русский](./README_ru.md)\n\n[![Python](https://img.shields.io/badge/Python-3.12%2B-3776AB?logo=python&logoColor=white)](./backend/pyproject.toml)\n[![Node.js](https://img.shields.io/badge/Node.js-22%2B-339933?logo=node.js&logoColor=white)](./Makefile)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n\n<a href=\"https://trendshift.io/repositories/14699\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/14699\" alt=\"bytedance%2Fdeer-flow | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n> On February 28th, 2026, DeerFlow claimed the 🏆 #1 spot on GitHub Trending following the launch of version 2. Thanks a million to our incredible community — you made this happen! 💪🔥\n\nDeerFlow (**D**eep **E**xploration and **E**fficient **R**esearch **Flow**) is an open-source **super agent harness** that orchestrates **sub-agents**, **memory**, and **sandboxes** to do almost anything — powered by **extensible skills**.\n\nhttps://github.com/user-attachments/assets/a8bcadc4-e040-4cf2-8fda-dd768b999c18\n\n> [!NOTE]\n> **DeerFlow 2.0 is a ground-up rewrite.** It shares no code with v1. If you're looking for the original Deep Research framework, it's maintained on the [`1.x` branch](https://github.com/bytedance/deer-flow/tree/main-1.x) — contributions there are still welcome. Active development has moved to 2.0.\n\n## Official Website\n\nLearn more and see **real demos** on our [**official website**](https://deerflow.tech).\n\n## Coding Plan from ByteDance Volcengine\n\n- We strongly recommend using Doubao-Seed-2.0-Code, DeepSeek v3.2 and Kimi 2.5 to run DeerFlow\n- [Learn more](https://www.byteplus.com/en/activity/codingplan?utm_campaign=deer_flow&utm_content=deer_flow&utm_medium=devrel&utm_source=OWO&utm_term=deer_flow)\n- [中国大陆地区的开发者请点击这里](https://www.volcengine.com/activity/codingplan?utm_campaign=deer_flow&utm_content=deer_flow&utm_medium=devrel&utm_source=OWO&utm_term=deer_flow)\n\n## InfoQuest\n\nDeerFlow has newly integrated the intelligent search and crawling toolset independently developed by BytePlus--[InfoQuest (supports free online experience)](https://docs.byteplus.com/en/docs/InfoQuest/What_is_Info_Quest)\n\n<a href=\"https://docs.byteplus.com/en/docs/InfoQuest/What_is_Info_Quest\" target=\"_blank\">\n  <img\n    src=\"https://sf16-sg.tiktokcdn.com/obj/eden-sg/hubseh7bsbps/20251208-160108.png\"   alt=\"InfoQuest_banner\"\n  />\n</a>\n\n---\n\n## Table of Contents\n\n- [🦌 DeerFlow - 2.0](#-deerflow---20)\n  - [Official Website](#official-website)\n  - [Coding Plan from ByteDance Volcengine](#coding-plan-from-bytedance-volcengine)\n  - [InfoQuest](#infoquest)\n  - [Table of Contents](#table-of-contents)\n  - [One-Line Agent Setup](#one-line-agent-setup)\n  - [Quick Start](#quick-start)\n    - [Configuration](#configuration)\n    - [Running the Application](#running-the-application)\n      - [Deployment Sizing](#deployment-sizing)\n      - [Option 1: Docker (Recommended)](#option-1-docker-recommended)\n      - [Option 2: Local Development](#option-2-local-development)\n    - [Advanced](#advanced)\n      - [Sandbox Mode](#sandbox-mode)\n      - [MCP Server](#mcp-server)\n      - [IM Channels](#im-channels)\n      - [LangSmith Tracing](#langsmith-tracing)\n      - [Langfuse Tracing](#langfuse-tracing)\n      - [Using Both Providers](#using-both-providers)\n  - [From Deep Research to Super Agent Harness](#from-deep-research-to-super-agent-harness)\n  - [Core Features](#core-features)\n    - [Skills \\& Tools](#skills--tools)\n      - [Claude Code Integration](#claude-code-integration)\n    - [Sub-Agents](#sub-agents)\n    - [Sandbox \\& File System](#sandbox--file-system)\n    - [Context Engineering](#context-engineering)\n    - [Long-Term Memory](#long-term-memory)\n  - [Recommended Models](#recommended-models)\n  - [Embedded Python Client](#embedded-python-client)\n  - [Terminal Workbench (TUI)](#terminal-workbench-tui)\n  - [Documentation](#documentation)\n  - [⚠️ Security Notice](#️-security-notice)\n    - [Improper Deployment May Introduce Security Risks](#improper-deployment-may-introduce-security-risks)\n    - [Security Recommendations](#security-recommendations)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n    - [Key Contributors](#key-contributors)\n  - [Star History](#star-history)\n\n## One-Line Agent Setup\n\nIf you use Claude Code, Codex, Cursor, Windsurf, or another coding agent, you can hand it the setup instructions in one sentence:\n\n```text\nHelp me clone DeerFlow if needed, then bootstrap it for local development by following https://raw.githubusercontent.com/bytedance/deer-flow/main/Install.md\n```\n\nThat prompt is intended for coding agents. It tells the agent to clone the repo if needed, choose Docker when available, and stop with the exact next command plus any missing config the user still needs to provide.\n\n## Quick Start\n\n### Configuration\n\n1. **Clone the DeerFlow repository**\n\n   ```bash\n   git clone https://github.com/bytedance/deer-flow.git\n   cd deer-flow\n   ```\n\n2. **Run the setup wizard**\n\n   From the project root directory (`deer-flow/`), run:\n\n   ```bash\n   make setup\n   ```\n\n   This launches an interactive wizard that guides you through choosing an LLM provider, optional web search, and execution/safety preferences such as sandbox mode, bash access, and file-write tools. It generates a minimal `config.yaml` and writes your keys to `.env`. Takes about 2 minutes.\n\n   The wizard also lets you configure an optional web search provider, or skip it for now.\n\n   Run `make doctor` at any time to verify your setup and get actionable fix hints.\n\n   > **Advanced / manual configuration**: If you prefer to edit `config.yaml` directly, run `make config` instead to copy the full template. See `config.example.yaml` for the complete reference including CLI-backed providers (Codex CLI, Claude Code OAuth), OpenRouter, Responses API, and more.\n\n   <details>\n   <summary>Manual model configuration examples</summary>\n\n   ```yaml\n   models:\n     - name: gpt-4o\n       display_name: GPT-4o\n       use: langchain_openai:ChatOpenAI\n       model: gpt-4o\n       api_key: $OPENAI_API_KEY\n\n     - name: openrouter-gemini-2.5-flash\n       display_name: Gemini 2.5 Flash (OpenRouter)\n       use: langchain_openai:ChatOpenAI\n       model: google/gemini-2.5-flash-preview\n       api_key: $OPENROUTER_API_KEY\n       base_url: https://openrouter.ai/api/v1\n\n     - name: gpt-5-responses\n       display_name: GPT-5 (Responses API)\n       use: langchain_openai:ChatOpenAI\n       model: gpt-5\n       api_key: $OPENAI_API_KEY\n       use_responses_api: true\n       output_version: responses/v1\n\n     - name: qwen3-32b-vllm\n       display_name: Qwen3 32B (vLLM)\n       use: deerflow.models.vllm_provider:VllmChatModel\n       model: Qwen/Qwen3-32B\n       api_key: $VLLM_API_KEY\n       base_url: http://localhost:8000/v1\n       supports_thinking: true\n       when_thinking_enabled:\n         extra_body:\n           chat_template_kwargs:\n             enable_thinking: true\n   ```\n\n   OpenRouter and similar OpenAI-compatible gateways should be configured with `langchain_openai:ChatOpenAI` plus `base_url`. If you prefer a provider-specific environment variable name, point `api_key` at that variable explicitly (for example `api_key: $OPENROUTER_API_KEY`).\n\n   To route OpenAI models through `/v1/responses`, keep using `langchain_openai:ChatOpenAI` and set `use_responses_api: true` with `output_version: responses/v1`.\n\n   For vLLM 0.19.0, use `deerflow.models.vllm_provider:VllmChatModel`. For Qwen-style reasoning models, DeerFlow toggles reasoning with `extra_body.chat_template_kwargs.enable_thinking` and preserves vLLM's non-standard `reasoning` field across multi-turn tool-call conversations. Legacy `thinking` configs are normalized automatically for backward compatibility. Reasoning models may also require the server to be started with `--reasoning-parser ...`. If your local vLLM deployment accepts any non-empty API key, you can still set `VLLM_API_KEY` to a placeholder value.\n\n   CLI-backed provider examples:\n\n   ```yaml\n   models:\n     - name: gpt-5.4\n       display_name: GPT-5.4 (Codex CLI)\n       use: deerflow.models.openai_codex_provider:CodexChatModel\n       model: gpt-5.4\n       supports_thinking: true\n       supports_reasoning_effort: true\n\n     - name: claude-sonnet-4.6\n       display_name: Claude Sonnet 4.6 (Claude Code OAuth)\n       use: deerflow.models.claude_provider:ClaudeChatModel\n       model: claude-sonnet-4-6\n       max_tokens: 4096\n       supports_thinking: true\n   ```\n\n   - Codex CLI reads `~/.codex/auth.json`\n   - Claude Code accepts `CLAUDE_CODE_OAUTH_TOKEN`, `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_CREDENTIALS_PATH`, or `~/.claude/.credentials.json`\n   - ACP agent entries are separate from model providers — if you configure `acp_agents.codex`, point it at a Codex ACP adapter such as `npx -y @zed-industries/codex-acp`\n   - On macOS, export Claude Code auth explicitly if needed:\n\n   ```bash\n   eval \"$(python3 scripts/export_claude_code_oauth.py --print-export)\"\n   ```\n\n   API keys can also be set manually in `.env` (recommended) or exported in your shell:\n\n   ```bash\n   OPENAI_API_KEY=your-openai-api-key\n   TAVILY_API_KEY=your-tavily-api-key\n   ```\n\n   </details>\n\n### Running the Application\n\n#### Deployment Sizing\n\nUse the table below as a practical starting point when choosing how to run DeerFlow:\n\n| Deployment target | Starting point | Recommended | Notes |\n|---------|-----------|------------|-------|\n| Local evaluation / `make dev` | 4 vCPU, 8 GB RAM, 20 GB free SSD | 8 vCPU, 16 GB RAM | Good for one developer or one light session with hosted model APIs. `2 vCPU / 4 GB` is usually not enough. |\n| Docker development / `make docker-start` | 4 vCPU, 8 GB RAM, 25 GB free SSD | 8 vCPU, 16 GB RAM | Image builds, bind mounts, and sandbox containers need more headroom than pure local dev. |\n| Long-running server / `make up` | 8 vCPU, 16 GB RAM, 40 GB free SSD | 16 vCPU, 32 GB RAM | Preferred for shared use, multi-agent runs, report generation, or heavier sandbox workloads. |\n\n- These numbers cover DeerFlow itself. If you also host a local LLM, size that service separately.\n- Linux plus Docker is the recommended deployment target for a persistent server. macOS and Windows are best treated as development or evaluation environments.\n- If CPU or memory usage stays pinned, reduce concurrent runs first, then move to the next sizing tier.\n\n#### Option 1: Docker (Recommended)\n\n**Development** (hot-reload, source mounts):\n\n```bash\nmake docker-init    # Pull sandbox image (only once or when image updates)\nmake docker-start   # Start services (auto-detects sandbox mode from config.yaml)\n```\n\n`make docker-start` starts `provisioner` only when `config.yaml` uses provisioner mode (`sandbox.use: deerflow.community.aio_sandbox:AioSandboxProvider` with `provisioner_url`).\n\nDocker builds use the upstream `uv` registry by default. If you need faster mirrors in restricted networks, export `UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple` and `NPM_REGISTRY=https://registry.npmmirror.com` before running `make docker-init` or `make docker-start`.\n\nBackend processes automatically pick up `config.yaml` changes on the next config access, so model metadata updates do not require a manual restart during development.\n\n> [!TIP]\n> On Linux, if Docker-based commands fail with `permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock`, add your user to the `docker` group and re-login before retrying. See [CONTRIBUTING.md](CONTRIBUTING.md#linux-docker-daemon-permission-denied) for the full fix.\n\n**Production** (builds images locally, mounts runtime config and data):\n\n```bash\nmake up     # Build images and start all production services\nmake down   # Stop and remove containers\n```\n\nAccess: http://localhost:2026\n\nThe unified nginx endpoint i",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "rag",
      "skill",
      "llm",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "NVIDIA",
    "name": "SkillSpector",
    "full_name": "NVIDIA/SkillSpector",
    "url": "https://github.com/NVIDIA/SkillSpector",
    "description": "Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, and security risks.",
    "language": "Python",
    "total_stars": 10594,
    "forks": 848,
    "stars_this_period": 2980,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 83,
      "created_at": "2026-03-21T00:28:43Z",
      "pushed_at": "2026-06-25T00:23:50Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 848,
      "watchers": 38,
      "archived": false,
      "size_kb": 630
    },
    "readme_content": "# SkillSpector\n\n**Security scanner for AI agent skills.** Detect vulnerabilities, malicious patterns, and security risks before installing agent skills.\n\n[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\n## Overview\n\nAI agent skills (used by Claude Code, Codex CLI, Gemini CLI, etc.) execute with implicit trust and minimal vetting. Research shows that **26.1% of skills contain vulnerabilities** and **5.2% show likely malicious intent**.\n\nSkillSpector helps you answer: **\"Is this skill safe to install?\"**\n\n## Documentation\n\n- **[Development guide](docs/DEVELOPMENT.md)** — Architecture, package layout, and how to extend the analyzer pipeline.\n- **[Pi extension](docs/PI_EXTENSION.md)** — Install SkillSpector as a Pi tool for scanning skills from inside agent sessions.\n\n## Features\n\n- **Multi-format input**: Scan Git repos, URLs, zip files, directories, or single files\n- **68 vulnerability patterns** across 17 categories: prompt injection, data exfiltration, privilege escalation, supply chain, excessive agency, output handling, system prompt leakage, memory poisoning, tool misuse, rogue agent, anti-refusal, trigger abuse, dangerous code (AST), taint tracking, YARA signatures, MCP least privilege, and MCP tool poisoning\n- **Two-stage analysis**: Fast static analysis + optional LLM semantic evaluation\n- **Live vulnerability lookups**: SC4 queries [OSV.dev](https://osv.dev) for real-time CVE data with automatic offline fallback\n- **Multiple output formats**: Terminal, JSON, Markdown, and SARIF reports\n- **Risk scoring**: 0-100 score with severity labels and clear recommendations\n- **Baseline / false-positive suppression**: Accept known findings via a glob-rule or fingerprint baseline so re-scans surface only *new* issues ([docs](docs/SUPPRESSION.md))\n\n## Quick Start\n\n### Installation\n\nCreate and activate a virtual environment first (all `make` targets assume the venv is active). Use **uv** or **pip**; the Makefile uses `uv` if available, otherwise `pip`.\n\n**Quick install with uv (no clone required):**\n\n```bash\nuv tool install git+https://github.com/NVIDIA/skillspector.git\n# Update later: uv tool update skillspector\n```\n\n**From source:**\n\n```bash\n# Clone the repository\ngit clone https://github.com/NVIDIA/skillspector.git\ncd skillspector\n\n# Create and activate virtual environment\nuv venv .venv && source .venv/bin/activate\n# or: python3 -m venv .venv && source .venv/bin/activate\n\n# Install for production use\nmake install\n\n# Or install with development dependencies\nmake install-dev\n```\n\n### Docker (no Python required)\n\nRun SkillSpector without installing Python by building it locally from the included [Dockerfile](Dockerfile). The image is based on the Docker Official Python `3.12-slim-bookworm` image.\n\n**Build the image:**\n\n```bash\nmake docker-build\n# or: docker build -t skillspector .\n```\n\n**Scan a local directory** by mounting your current directory into `/scan`, the container's working directory:\n\n```bash\ndocker run --rm -v \"$PWD:/scan\" skillspector scan ./my-skill/ --no-llm\n```\n\n**Scan with LLM analysis** by passing credentials with a local `.env` file:\n\n```bash\ncat > .env <<'EOF'\nSKILLSPECTOR_PROVIDER=anthropic\nANTHROPIC_API_KEY=sk-ant-...\nEOF\n```\n\n```bash\ndocker run --rm \\\n  -v \"$PWD:/scan\" \\\n  --env-file .env \\\n  skillspector scan ./my-skill/\n```\n\nOr pass credentials directly from your shell environment:\n\n```bash\ndocker run --rm \\\n  -v \"$PWD:/scan\" \\\n  -e SKILLSPECTOR_PROVIDER=anthropic \\\n  -e ANTHROPIC_API_KEY=\"$ANTHROPIC_API_KEY\" \\\n  skillspector scan ./my-skill/\n```\n\n**Write a report to the host filesystem** by writing to the mounted directory:\n\n```bash\ndocker run --rm \\\n  -v \"$PWD:/scan\" \\\n  skillspector scan ./my-skill/ --no-llm --format json --output report.json\n```\n\n**Optional alias** for repeated static scans:\n\n```bash\nalias skillspector-docker='docker run --rm -v \"$PWD:/scan\" skillspector'\nskillspector-docker scan ./my-skill/ --no-llm\n```\n\n### Basic Usage\n\n```bash\n# Scan a local skill directory\nskillspector scan ./my-skill/\n\n# Scan a single SKILL.md file\nskillspector scan ./SKILL.md\n\n# Scan a Git repository\nskillspector scan https://github.com/user/my-skill\n\n# Scan a zip file\nskillspector scan ./my-skill.zip\n```\n\n### Output Formats\n\n```bash\n# Terminal output (default) - pretty formatted\nskillspector scan ./my-skill/\n\n# JSON output - machine readable\nskillspector scan ./my-skill/ --format json --output report.json\n\n# Markdown output - for documentation\nskillspector scan ./my-skill/ --format markdown --output report.md\n\n# SARIF output - for CI/CD integration and IDE tooling\nskillspector scan ./my-skill/ --format sarif --output report.sarif\n```\n\n### Suppressing False Positives (baseline)\n\nSuppress known/accepted findings so the risk score reflects only un-triaged\nissues and re-scans surface only *new* findings. See the\n[suppression guide](docs/SUPPRESSION.md) for the full reference.\n\n```bash\n# Accept all current findings into a baseline (run once), then commit it.\nskillspector baseline ./my-skill/ -o .skillspector-baseline.yaml\n\n# Scan against the baseline — only NEW findings are reported and scored.\nskillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml\n\n# Review what was suppressed (still excluded from the score).\nskillspector scan ./my-skill/ --baseline .skillspector-baseline.yaml --show-suppressed\n```\n\nA baseline can also use drift-tolerant glob rules (by rule id, file path, or\nmessage) — see [`.skillspector-baseline.example.yaml`](.skillspector-baseline.example.yaml).\n\n### LLM Analysis\n\nFor the best results, configure an OpenAI-compatible LLM endpoint for\nsemantic analysis. Pick a provider with `SKILLSPECTOR_PROVIDER`; each\nships its own bundled default model. SkillSpector also works against\nlocal OpenAI-compatible servers (Ollama, vLLM, llama.cpp) and managed\ninference gateways.\n\n| Provider (`SKILLSPECTOR_PROVIDER`) | Credential env var | Endpoint | Default model |\n| ---------- | ---- | ---- | ---- |\n| `openai` | `OPENAI_API_KEY` (+ optional `OPENAI_BASE_URL`) | api.openai.com (or any OpenAI-compatible URL) | `gpt-5.4` |\n| `anthropic` | `ANTHROPIC_API_KEY` | api.anthropic.com | `claude-opus-4-6` |\n| `anthropic_proxy` | `ANTHROPIC_PROXY_API_KEY` + `ANTHROPIC_PROXY_ENDPOINT_URL` | Any Vertex-style raw-predict proxy | `claude-sonnet-4-6` |\n| `nv_build` | `NVIDIA_INFERENCE_KEY` | build.nvidia.com | `deepseek-ai/deepseek-v4-flash` |\n\n```bash\n# Stock OpenAI\nexport SKILLSPECTOR_PROVIDER=openai\nexport OPENAI_API_KEY=sk-...\nskillspector scan ./my-skill/\n\n# Anthropic\nexport SKILLSPECTOR_PROVIDER=anthropic\nexport ANTHROPIC_API_KEY=sk-ant-...\nskillspector scan ./my-skill/\n\n# Anthropic via Vertex-style proxy (corporate gateways, GCP Vertex AI)\nexport SKILLSPECTOR_PROVIDER=anthropic_proxy\nexport ANTHROPIC_PROXY_ENDPOINT_URL=https://my-gateway.example.com/models/claude-sonnet-4-6:streamRawPredict\nexport ANTHROPIC_PROXY_API_KEY=your-bearer-token\nexport SKILLSPECTOR_MODEL=claude-sonnet-4-6\nskillspector scan ./my-skill/\n\n# NVIDIA build.nvidia.com\nexport SKILLSPECTOR_PROVIDER=nv_build\nexport NVIDIA_INFERENCE_KEY=nvapi-...\nskillspector scan ./my-skill/\n\n# Local Ollama or any OpenAI-compatible endpoint\nexport SKILLSPECTOR_PROVIDER=openai\nexport OPENAI_API_KEY=ollama\nexport OPENAI_BASE_URL=http://localhost:11434/v1\nexport SKILLSPECTOR_MODEL=llama3.1:8b\nskillspector scan ./my-skill/\n\n# Override the provider's default model\nexport SKILLSPECTOR_MODEL=gpt-5.2\nskillspector scan ./my-skill/\n\n# Skip LLM analysis (faster, static analysis only)\nskillspector scan ./my-skill/ --no-llm\n```\n\n### MCP Server\n\nRun SkillSpector as a [Model Context Protocol](https://modelcontextprotocol.io)\nserver so any MCP-capable agent (Claude Code, Codex CLI, Gemini CLI) or remote\nruntime can call scanning as a tool and **gate skill/MCP installs on the\nresult** — turning SkillSpector into a runtime guardrail instead of an\nout-of-band audit step.\n\n```bash\n# Install the optional MCP dependency\npip install \"skillspector[mcp]\"\n\n# stdio transport — for local CLI agents\nskillspector mcp\n\n# streamable HTTP/SSE transport — for remote / A2A callers\nskillspector mcp --transport http --host 127.0.0.1 --port 8000\n```\n\nThe server exposes a single tool:\n\n- **`scan_skill(target, use_llm=true, output_format=\"json\")`** — scans a Git\n  URL, file URL, `.zip`, `.md` file, or directory and returns a structured\n  verdict: `risk_score` (0-100), `severity`, `recommendation`,\n  `safe_to_install`, and `findings`. It also reports `llm_used` / `scan_mode`\n  so a low score from a static-only scan is never mistaken for a clean full\n  scan.\n\nRegister it with Claude Code via:\n\n```bash\nclaude mcp add skillspector -- skillspector mcp\n```\n\n## Vulnerability Patterns\n\nSkillSpector detects **68 vulnerability patterns** across 17 categories:\n\n### Prompt Injection (5 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| P1 | Instruction Override | HIGH | Commands to ignore safety constraints |\n| P2 | Hidden Instructions | HIGH | Malicious directives in comments/invisible text |\n| P3 | Exfiltration Commands | HIGH | Instructions to transmit context externally |\n| P4 | Behavior Manipulation | MEDIUM | Subtle instructions altering agent decisions |\n| P5 | Harmful Content | CRITICAL | Instructions that could cause physical harm |\n\n### Anti-Refusal (3 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| AR1 | Refusal Suppression | HIGH | Instructions to never refuse or always comply (e.g. \"never refuse\", \"always comply\") |\n| AR2 | Disclaimer Suppression | HIGH | Instructions to omit warnings, disclaimers, or ethical commentary (e.g. \"no disclaimers\", \"do not moralize\") |\n| AR3 | Safety Policy Nullification | HIGH | Jailbreak framing that nullifies guardrails (e.g. \"you have no restrictions\", \"ignore your guidelines\", \"do anything now\") |\n\n### Data Exfiltration (4 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| E1 | External Transmission | MEDIUM | Sending data to external URLs |\n| E2 | Env Variable Harvesting | HIGH | Collecting API keys and secrets |\n| E3 | File System Enumeration | MEDIUM | Scanning directories for sensitive files |\n| E4 | Context Leakage | HIGH | Transmitting conversation context externally |\n\n### Privilege Escalation (3 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| PE1 | Excessive Permissions | LOW | Requesting access beyond stated functionality |\n| PE2 | Sudo/Root Execution | MEDIUM | Invoking elevated system privileges |\n| PE3 | Credential Access | HIGH | Reading SSH keys, tokens, passwords |\n\n### Supply Chain (6 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| SC1 | Unpinned Dependencies | LOW | No version constraints on packages |\n| SC2 | External Script Fetching | HIGH | curl \\| bash and remote code execution |\n| SC3 | Obfuscated Code | HIGH | Base64/hex encoded execution |\n| SC4 | Known Vulnerable Dependencies | HIGH | Dependencies with known CVEs (live OSV.dev lookup) |\n| SC5 | Abandoned Dependencies | MEDIUM | Unmaintained packages without security updates |\n| SC6 | Typosquatting | HIGH | Package names similar to popular packages |\n\n### Excessive Agency (4 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|-------------|\n| EA1 | Unrestricted Tool Access | HIGH | Unfettered tool access without constraints |\n| EA2 | Autonomous Decision Making | HIGH | High-impact decisions without human-in-the-loop |\n| EA3 | Scope Creep | MEDIUM | Capabilities extending beyond stated purpose |\n| EA4 | Unbounded Resource Access | MEDIUM | No rate limits or quotas on resource consumption |\n\n### Output Handling (3 patterns)\n\n| ID | Pattern | Severity | Description |\n|----|---------|----------|---",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"skillspector\"\nversion = \"2.3.7\"\ndescription = \"SkillSpector: Security scanner for AI agent skills (Claude Code, Cursor, and similar). Scans skills for vulnerabilities, malicious patterns, and security risks before installation. Supports Git repos, URLs, zips, and local directories; runs static pattern checks and optional LLM semantic analysis; outputs terminal, JSON, and Markdown reports with risk scoring.\"\nreadme = \"README.md\"\nlicense = \"Apache-2.0\"\nrequires-python = \">=3.12,<3.14\"\nkeywords = [\n    \"security\",\n    \"ai-agents\",\n    \"vulnerability-scanner\",\n    \"claude-code\",\n    \"skills\",\n]\nclassifiers = [\n    \"Development Status :: 3 - Alpha\",\n    \"Environment :: Console\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Topic :: Security\",\n    \"Topic :: Software Development :: Quality Assurance\",\n]\ndependencies = [\n    # Typer <0.24 uses click>=8.0.0; 0.24+ requires click>=8.2.1 which conflicts with semgrep (click 8.1.x)\n    \"typer>=0.23.0,<0.24\",\n    \"rich>=14.3.0\",\n    \"httpx>=0.28.0\",\n    \"pyyaml>=6.0.1\",\n    \"pydantic>=2.12.0\",\n    \"openai>=2.25.0\",\n    \"langgraph>=1.0.10\",\n    \"langgraph-cli[inmem]>=0.4.14\",\n    \"langchain-anthropic>=1.4.5\",\n    \"langchain-core>=1.2.17\",\n    \"langchain-openai>=1.1.10\",\n    \"langsmith>=0.7.30\",\n    \"yara-python>=4.5.0\",\n]\n\n[project.optional-dependencies]\nmcp = [\n    \"mcp>=1.2.0\",\n]\ndev = [\n    \"skillspector[mcp]\",\n    \"pytest>=9.0.0\",\n    \"pytest-asyncio>=1.3.0\",\n    \"pytest-cov>=7.0.0\",\n    \"ruff>=0.15.0\",\n    \"mypy>=1.19.0\",\n    \"build>=1.4.0\",\n    \"twine>=6.2.0\",\n    \"poetry>=2.3.0\",\n]\n\n[project.scripts]\nskillspector = \"skillspector.cli:app\"\n\n[tool.uv]\n# Enable `uv tool install git+https://github.com/NVIDIA/skillspector.git`\n# for a simpler single-command installation without cloning.\n\n[project.urls]\nHomepage = \"https://github.com/NVIDIA/skillspector\"\nDocumentation = \"https://github.com/NVIDIA/skillspector#readme\"\nIssues = \"https://github.com/NVIDIA/skillspector/issues\"\n\n[tool.hatch.build]\nexclude = [\".claude/\", \".cursor/\", \".agents/\"]\n\n[tool.hatch.build.targets.wheel]\npackages = [\"src/skillspector\"]\nartifacts = [\n    \"src/skillspector/yara_rules/*.yar\",\n    \"src/skillspector/yara_rules/*.yara\",\n    \"src/skillspector/providers/*/model_registry.yaml\",\n]\n\n[tool.ruff]\nline-length = 100\ntarget-version = \"py312\"\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"W\", \"I\", \"N\", \"UP\", \"B\", \"C4\"]\nignore = [\"E501\"]\n\n[tool.mypy]\npython_version = \"3.12\"\nwarn_return_any = true\nwarn_unused_ignores = true\ndisallow_untyped_defs = true\n\n[tool.coverage.run]\nbranch = true\nrelative_files = true\nsource = [\"src/skillspector\"]\n\n[tool.pytest.ini_options]\ntestpaths = [\"tests\"]\nasyncio_mode = \"auto\"\nmarkers = [\n    \"integration: end-to-end tests that invoke the full graph (may call LLMs)\",\n    \"provider: live OpenAI/Anthropic/NVIDIA Build provider endpoint tests\",\n]\naddopts = \"-m 'not integration and not provider'\"\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "skill",
      "llm",
      "eval"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "owner": "koala73",
    "name": "worldmonitor",
    "full_name": "koala73/worldmonitor",
    "url": "https://github.com/koala73/worldmonitor",
    "description": "Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface",
    "language": "TypeScript",
    "total_stars": 59744,
    "forks": 9335,
    "stars_this_period": 2899,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "dashboard",
        "geopolitics",
        "monitoring",
        "news",
        "opensource",
        "osint",
        "palantir",
        "situation"
      ],
      "license": "NOASSERTION",
      "open_issues": 167,
      "created_at": "2026-01-08T17:26:06Z",
      "pushed_at": "2026-06-25T15:40:29Z",
      "homepage": "https://worldmonitor.app",
      "default_branch": "main",
      "forks": 9335,
      "watchers": 366,
      "archived": false,
      "size_kb": 108985
    },
    "readme_content": "# World Monitor\n\n**Real-time global intelligence dashboard** — AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface.\n\n[![GitHub stars](https://img.shields.io/github/stars/koala73/worldmonitor?style=social)](https://github.com/koala73/worldmonitor/stargazers)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=flat&logo=discord&logoColor=white)](https://discord.gg/re63kWKxaz)\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![Last commit](https://img.shields.io/github/last-commit/koala73/worldmonitor)](https://github.com/koala73/worldmonitor/commits/main)\n[![Latest release](https://img.shields.io/github/v/release/koala73/worldmonitor?style=flat)](https://github.com/koala73/worldmonitor/releases/latest)\n\n<p align=\"center\">\n  <a href=\"https://worldmonitor.app\"><img src=\"https://img.shields.io/badge/Web_App-worldmonitor.app-blue?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Web App\"></a>&nbsp;\n  <a href=\"https://tech.worldmonitor.app\"><img src=\"https://img.shields.io/badge/Tech_Variant-tech.worldmonitor.app-0891b2?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Tech Variant\"></a>&nbsp;\n  <a href=\"https://finance.worldmonitor.app\"><img src=\"https://img.shields.io/badge/Finance_Variant-finance.worldmonitor.app-059669?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Finance Variant\"></a>&nbsp;\n  <a href=\"https://commodity.worldmonitor.app\"><img src=\"https://img.shields.io/badge/Commodity_Variant-commodity.worldmonitor.app-b45309?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Commodity Variant\"></a>&nbsp;\n  <a href=\"https://happy.worldmonitor.app\"><img src=\"https://img.shields.io/badge/Happy_Variant-happy.worldmonitor.app-f59e0b?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Happy Variant\"></a>&nbsp;\n  <a href=\"https://energy.worldmonitor.app\"><img src=\"https://img.shields.io/badge/Energy_Variant-energy.worldmonitor.app-eab308?style=for-the-badge&logo=googlechrome&logoColor=white\" alt=\"Energy Variant\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://worldmonitor.app/api/download?platform=windows-exe\"><img src=\"https://img.shields.io/badge/Download-Windows_(.exe)-0078D4?style=for-the-badge&logo=windows&logoColor=white\" alt=\"Download Windows\"></a>&nbsp;\n  <a href=\"https://worldmonitor.app/api/download?platform=macos-arm64\"><img src=\"https://img.shields.io/badge/Download-macOS_Apple_Silicon-000000?style=for-the-badge&logo=apple&logoColor=white\" alt=\"Download macOS ARM\"></a>&nbsp;\n  <a href=\"https://worldmonitor.app/api/download?platform=macos-x64\"><img src=\"https://img.shields.io/badge/Download-macOS_Intel-555555?style=for-the-badge&logo=apple&logoColor=white\" alt=\"Download macOS Intel\"></a>&nbsp;\n  <a href=\"https://worldmonitor.app/api/download?platform=linux-appimage\"><img src=\"https://img.shields.io/badge/Download-Linux_(.AppImage)-FCC624?style=for-the-badge&logo=linux&logoColor=black\" alt=\"Download Linux\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.worldmonitor.app/docs/documentation\"><strong>Documentation</strong></a> &nbsp;·&nbsp;\n  <a href=\"https://github.com/koala73/worldmonitor/releases/latest\"><strong>Releases</strong></a> &nbsp;·&nbsp;\n  <a href=\"https://www.worldmonitor.app/docs/contributing\"><strong>Contributing</strong></a>\n</p>\n\n![World Monitor Dashboard](docs/images/worldmonitor-7-mar-2026.jpg)\n\n---\n\n## What It Does\n\n- **500+ curated news feeds** across 15 categories, AI-synthesized into briefs\n- **Dual map engine** — 3D globe (globe.gl) and WebGL flat map (deck.gl) with 56 map layer types\n- **Cross-stream correlation** — military, economic, disaster, and escalation signal convergence\n- **Country Instability Index (CII)** — server-authoritative CII v8 stress scoring for 31 Tier-1 countries\n- **Finance radar** — 29 stock exchanges, commodities, crypto, and 7-signal market composite\n- **Local AI** — run everything with Ollama, no API keys required\n- **6 site variants** from a single codebase (world, tech, finance, commodity, happy, energy)\n- **Native desktop app** (Tauri 2) for macOS, Windows, and Linux\n- **24 languages** with native-language feeds and RTL support\n\nFor the full feature list, architecture, data sources, and algorithms, see the **[documentation](https://www.worldmonitor.app/docs/documentation)**.\n\n---\n\n## Support Status\n\nAll site variants and desktop binaries are built from a single codebase and ship from the same release process. The table below clarifies maintenance status so you know which surfaces are safe to depend on.\n\n| Surface | Status | Notes |\n|---------|--------|-------|\n| `worldmonitor.app`, `tech.`, `finance.`, `commodity.`, `happy.`, `energy.` | Stable | Public deployments built from this repo, actively maintained |\n| Desktop binaries (Windows / macOS Apple Silicon / macOS Intel / Linux AppImage) | Stable | One Tauri binary that switches variants in-app; current CI release targets are `full` and `tech` |\n\nIssues filed against any of the above are triaged from the same backlog — see the [issues board](https://github.com/koala73/worldmonitor/issues) for currently-open work.\n\n---\n\n## Quick Start\n\n```bash\ngit clone https://github.com/koala73/worldmonitor.git\ncd worldmonitor\nnpm install\nnpm run dev\n```\n\nOpen [localhost:3000](http://localhost:3000). The app runs with no environment variables.\n\nFeature-specific data sources may require credentials — for example, the flight-price command (`fly LON DXB`) needs `TRAVELPAYOUTS_API_TOKEN` to return live quotes; without it the command shows a \"credentials required\" message rather than synthetic data. See `.env.example` for the full list.\n\nFor variant-specific development:\n\n```bash\nnpm run dev:tech       # tech.worldmonitor.app\nnpm run dev:finance    # finance.worldmonitor.app\nnpm run dev:commodity  # commodity.worldmonitor.app\nnpm run dev:happy      # happy.worldmonitor.app\nnpm run dev:energy     # energy.worldmonitor.app\n```\n\nSee the **[self-hosting guide](https://www.worldmonitor.app/docs/getting-started)** for deployment options (Vercel, Docker, static).\n\n---\n\n## Tech Stack\n\n| Category | Technologies |\n|----------|-------------|\n| **Frontend** | Vanilla TypeScript, Vite, globe.gl + Three.js, deck.gl + MapLibre GL |\n| **Desktop** | Tauri 2 (Rust) with Node.js sidecar |\n| **AI/ML** | Ollama / Groq / OpenRouter, Transformers.js (browser-side) |\n| **API Contracts** | Protocol Buffers (276 protos, 34 services), sebuf HTTP annotations |\n| **Deployment** | Vercel Edge Functions (60+), Railway relay, Tauri, PWA |\n| **Caching** | Redis (Upstash), 3-tier cache, CDN, service worker |\n\nFull stack details in the **[architecture docs](https://www.worldmonitor.app/docs/architecture)**.\n\n---\n\n## Flight Data\n\nFlight data provided gracefully by [Wingbits](https://wingbits.com?utm_source=worldmonitor&utm_medium=referral&utm_campaign=worldmonitor), the most advanced ADS-B flight data solution.\n\n---\n\n## Data Sources\n\nWorldMonitor aggregates 65+ external providers and APIs across geopolitics, finance, energy, climate, aviation, cyber, military, infrastructure, and news intelligence — surfaced through 500+ curated feeds and tracked by a freshness monitor covering 35 source groups. See the full [data sources catalog](https://www.worldmonitor.app/docs/data-sources) for providers, feed tiers, and collection methods.\n\n---\n\n## Contributing\n\nContributions welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n```bash\nnpm run typecheck        # Type checking\nnpm run build:full       # Production build\n```\n\n---\n\n## License\n\n**AGPL-3.0-only** for the source code. Commercial use is permitted under the AGPL when you comply with its copyleft and source-availability terms.\n\n| Use Case | Allowed? |\n|----------|----------|\n| Personal / research / educational | Yes, under AGPL-3.0-only |\n| Self-hosted instance | Yes, under AGPL-3.0-only |\n| Fork and modify | Yes, share source under AGPL-3.0-only when required |\n| Commercial use / SaaS | Yes, under AGPL-3.0-only when you comply with AGPL obligations |\n| Private-source proprietary use or official branding rights | Separate commercial or trademark permission needed |\n\nSee [LICENSE](LICENSE) for the full code license and [docs/license.mdx](docs/license.mdx) for a plain-language summary. Commercial licensing is available as an alternative option for teams that need non-AGPL terms.\n\nCopyright (C) 2024-2026 Elie Habib. All rights reserved.\n\n---\n\n## Author\n\n**Elie Habib** — [GitHub](https://github.com/koala73)\n\n## Contributors\n\n<a href=\"https://github.com/koala73/worldmonitor/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=koala73/worldmonitor\" />\n</a>\n\n## Security Acknowledgments\n\nWe thank the following researchers for responsibly disclosing security issues:\n\n- **Cody Richard** — Disclosed three security findings covering IPC command exposure, renderer-to-sidecar trust boundary analysis, and fetch patch credential injection architecture (2026)\n\nSee our [Security Policy](./SECURITY.md) for responsible disclosure guidelines.\n\n---\n\n<p align=\"center\">\n  <a href=\"https://worldmonitor.app\">worldmonitor.app</a> &nbsp;·&nbsp;\n  <a href=\"https://www.worldmonitor.app/docs/documentation\">docs.worldmonitor.app</a> &nbsp;·&nbsp;\n  <a href=\"https://finance.worldmonitor.app\">finance.worldmonitor.app</a> &nbsp;·&nbsp;\n  <a href=\"https://commodity.worldmonitor.app\">commodity.worldmonitor.app</a>\n</p>\n\n## Star History\n\n<a href=\"https://api.star-history.com/svg?repos=koala73/worldmonitor&type=Date\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=koala73/worldmonitor&type=Date&type=Date&theme=dark\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=koala73/worldmonitor&type=Date&type=Date\" />\n </picture>\n</a>\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"world-monitor\",\n  \"private\": true,\n  \"version\": \"2.8.0\",\n  \"license\": \"AGPL-3.0-only\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"lint\": \"biome lint ./src ./server ./api ./tests ./e2e ./scripts ./middleware.ts && npm run lint:safe-html\",\n    \"lint:fix\": \"biome check ./src ./server ./api ./tests ./e2e ./scripts ./middleware.ts --fix\",\n    \"lint:boundaries\": \"node scripts/lint-boundaries.mjs\",\n    \"lint:api-contract\": \"node scripts/enforce-sebuf-api-contract.mjs\",\n    \"lint:safe-html\": \"node scripts/enforce-safe-html.mjs\",\n    \"lint:rate-limit-policies\": \"tsx scripts/enforce-rate-limit-policies.mjs\",\n    \"lint:premium-fetch\": \"tsx scripts/enforce-premium-fetch.mjs\",\n    \"lint:mintlify-slugs\": \"node scripts/enforce-mintlify-reserved-slugs.mjs\",\n    \"lint:unicode\": \"node scripts/check-unicode-safety.mjs\",\n    \"lint:unicode:staged\": \"node scripts/check-unicode-safety.mjs --staged\",\n    \"security:local-env-dumps\": \"node scripts/check-local-secret-dumps.mjs\",\n    \"worktree:bootstrap\": \"node scripts/bootstrap-worktree.mjs\",\n    \"worktree:bootstrap:test-only\": \"node scripts/bootstrap-worktree.mjs --ignore-scripts\",\n    \"worktree:env\": \"node scripts/bootstrap-worktree.mjs --skip-install\",\n    \"lint:md\": \"markdownlint-cli2 '**/*.md' '!**/node_modules/**' '!.agent/**' '!.agents/**' '!.claude/**' '!.factory/**' '!.windsurf/**' '!skills/**' '!docs/internal/**' '!docs/Docs_To_Review/**' '!docs/archive/**' '!todos/**' '!docs/plans/**' '!docs/brainstorms/**' '!docs/ideation/**'\",\n    \"version:sync\": \"node scripts/sync-desktop-version.mjs\",\n    \"version:check\": \"node scripts/sync-desktop-version.mjs --check\",\n    \"sync:locales\": \"node scripts/sync-locale-keys.mjs\",\n    \"sync:locales:check\": \"node scripts/sync-locale-keys.mjs --check\",\n    \"docs:stats\": \"node scripts/docs-stats.mjs\",\n    \"docs:check\": \"node scripts/docs-stats.mjs --check\",\n    \"dev\": \"vite\",\n    \"dev:tech\": \"cross-env VITE_VARIANT=tech vite\",\n    \"dev:finance\": \"cross-env VITE_VARIANT=finance vite\",\n    \"dev:happy\": \"cross-env VITE_VARIANT=happy vite\",\n    \"dev:commodity\": \"cross-env VITE_VARIANT=commodity vite\",\n    \"dev:energy\": \"cross-env VITE_VARIANT=energy vite\",\n    \"postinstall\": \"cd blog-site && npm ci --prefer-offline\",\n    \"build:blog\": \"cd blog-site && npm run build && rm -rf ../public/blog && mkdir -p ../public/blog && cp -r dist/* ../public/blog/\",\n    \"build:pro\": \"cd pro-test && npm ci && npm run build\",\n    \"build:openapi\": \"node -e \\\"require('fs').cpSync('docs/api/worldmonitor.openapi.yaml', 'public/openapi.yaml')\\\"\",\n    \"build:agent-skills\": \"node scripts/build-agent-skills-index.mjs\",\n    \"prebuild\": \"npm run build:openapi && npm run build:agent-skills\",\n    \"build\": \"npm run build:blog && tsc && vite build\",\n    \"build:sidecar-sebuf\": \"node scripts/build-sidecar-sebuf.mjs\",\n    \"build:desktop\": \"node scripts/build-sidecar-sebuf.mjs && node scripts/build-sidecar-handlers.mjs && tsc && vite build\",\n    \"build:full\": \"npm run build:openapi && npm run build:agent-skills && npm run build:blog && cross-env-shell VITE_VARIANT=full \\\"tsc && vite build\\\"\",\n    \"build:tech\": \"npm run build:openapi && npm run build:agent-skills && cross-env-shell VITE_VARIANT=tech \\\"tsc && vite build\\\"\",\n    \"build:finance\": \"npm run build:openapi && npm run build:agent-skills && cross-env-shell VITE_VARIANT=finance \\\"tsc && vite build\\\"\",\n    \"build:happy\": \"npm run build:openapi && npm run build:agent-skills && cross-env-shell VITE_VARIANT=happy \\\"tsc && vite build\\\"\",\n    \"build:commodity\": \"npm run build:openapi && npm run build:agent-skills && cross-env-shell VITE_VARIANT=commodity \\\"tsc && vite build\\\"\",\n    \"build:energy\": \"npm run build:openapi && npm run build:agent-skills && cross-env-shell VITE_VARIANT=energy \\\"tsc && vite build\\\"\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"typecheck:api\": \"tsc --noEmit -p tsconfig.api.json && node scripts/audit-convex-string-calls.cjs\",\n    \"typecheck:all\": \"tsc --noEmit && tsc --noEmit -p tsconfig.api.json && node scripts/audit-convex-string-calls.cjs\",\n    \"audit:convex-string-calls\": \"node scripts/audit-convex-string-calls.cjs\",\n    \"audit:dodo-catalog\": \"node scripts/audit-dodo-catalog.cjs\",\n    \"tauri\": \"tauri\",\n    \"preview\": \"vite preview\",\n    \"test:e2e:full\": \"cross-env VITE_VARIANT=full playwright test\",\n    \"test:e2e:tech\": \"cross-env VITE_VARIANT=tech playwright test\",\n    \"test:e2e:finance\": \"cross-env VITE_VARIANT=finance playwright test\",\n    \"test:e2e:commodity\": \"cross-env VITE_VARIANT=commodity playwright test\",\n    \"test:e2e:energy\": \"cross-env VITE_VARIANT=energy playwright test\",\n    \"test:e2e:happy\": \"cross-env VITE_VARIANT=happy playwright test\",\n    \"test:e2e:runtime\": \"cross-env VITE_VARIANT=full playwright test e2e/runtime-fetch.spec.ts\",\n    \"test:e2e:variant-smoke:full\": \"cross-env VITE_VARIANT=full playwright test e2e/variant-live-smoke.spec.ts\",\n    \"test:e2e:variant-smoke:tech\": \"cross-env VITE_VARIANT=tech playwright test e2e/variant-live-smoke.spec.ts\",\n    \"test:e2e:variant-smoke:f",
    "strategic_keywords": [],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 6,
      "risk_signal": 6,
      "total": 64
    },
    "strategic_score": 64
  },
  {
    "owner": "tursodatabase",
    "name": "turso",
    "full_name": "tursodatabase/turso",
    "url": "https://github.com/tursodatabase/turso",
    "description": "Turso is an in-process SQL database, compatible with SQLite.",
    "language": "Rust",
    "total_stars": 22163,
    "forks": 1114,
    "stars_this_period": 2861,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "database",
        "embedded-database",
        "sql",
        "sqlite3",
        "webassembly"
      ],
      "license": "MIT",
      "open_issues": 746,
      "created_at": "2023-08-26T09:21:36Z",
      "pushed_at": "2026-06-25T15:13:40Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 1114,
      "watchers": 90,
      "archived": false,
      "size_kb": 80207
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"assets/turso.png\" alt=\"Turso Database\" width=\"800\"/>\n  <h1 align=\"center\">Turso Database</h1>\n</p>\n\n<p align=\"center\">\n  An in-process SQL database, compatible with SQLite.\n</p>\n\n<p align=\"center\">\n  <a title=\"Build Status\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/actions/workflows/rust.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/tursodatabase/turso/rust.yml?style=flat-square\"></a>\n  <a title=\"Releases\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/releases\"><img src=\"https://img.shields.io/github/release/tursodatabase/turso?style=flat-square&color=9CF\"></a>\n  <a title=\"Rust\" target=\"_blank\" href=\"https://crates.io/crates/turso\"><img alt=\"Crate\" src=\"https://img.shields.io/crates/v/turso\"></a>\n  <a title=\"JavaScript\" target=\"_blank\" href=\"https://www.npmjs.com/package/@tursodatabase/database\"><img alt=\"NPM\" src=\"https://img.shields.io/npm/v/@tursodatabase/database\"></a>\n  <a title=\"Python\" target=\"_blank\" href=\"https://pypi.org/project/pyturso/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/pyturso\"></a>\n  <a title=\"Java\" target=\"_blank\" href=\"https://central.sonatype.com/artifact/tech.turso/turso\"><img alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/tech.turso/turso\"></a>\n  <a title=\"MIT\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/blob/main/LICENSE.md\"><img src=\"http://img.shields.io/badge/license-MIT-orange.svg?style=flat-square\"></a>\n  <br>\n  <a title=\"GitHub Pull Requests\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/pulls\"><img src=\"https://img.shields.io/github/issues-pr-closed/tursodatabase/turso.svg?style=flat-square&color=FF9966\"></a>\n  <a title=\"GitHub Commits\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/commits/main\"><img src=\"https://img.shields.io/github/commit-activity/m/tursodatabase/turso.svg?style=flat-square\"></a>\n  <a title=\"Last Commit\" target=\"_blank\" href=\"https://github.com/tursodatabase/turso/commits/main\"><img src=\"https://img.shields.io/github/last-commit/tursodatabase/turso.svg?style=flat-square&color=FF9900\"></a>\n</p>\n<p align=\"center\">\n  <a title=\"Developer's Discord\" target=\"_blank\" href=\"https://discord.gg/jgjmyYgHwB\"><img alt=\"Chat with the Core Developers on Discord\" src=\"https://img.shields.io/discord/1258658826257961020?label=Discord&logo=Discord&style=social&label=Core%20Developers\"></a>\n</p>\n<p align=\"center\">\n  <a title=\"Users's Discord\" target=\"_blank\" href=\"https://tur.so/discord\"><img alt=\"Chat with other users of Turso (and Turso Cloud) on Discord\" src=\"https://img.shields.io/discord/933071162680958986?label=Discord&logo=Discord&style=social&label=Users\"></a>\n</p>\n\n---\n\n## About\n\nTurso Database is an in-process SQL database written in Rust, compatible with SQLite.\n\n> **⚠️ Warning:** This software is in BETA. It may still contain bugs and unexpected behavior. Use caution with production data and ensure you have backups.\n\n## Features and Roadmap\n\n* **SQLite compatibility** for SQL dialect, file formats, and the C API [see [document](COMPAT.md) for details]\n* **`BEGIN CONCURRENT`** for improved write throughput using multi-version concurrency control (MVCC).\n* **Change data capture (CDC)** for real-time tracking of database changes.\n* **Multi-language support** for\n  * [Go](bindings/go)\n  * [JavaScript](bindings/javascript)\n  * [Java](bindings/java)\n  * [.NET](bindings/dotnet)\n  * [Python](bindings/python)\n  * [Rust](bindings/rust)\n  * [WebAssembly](bindings/javascript)\n* **Asynchronous I/O** support on Linux with `io_uring`\n* **Cross-platform** support for Linux, macOS, Windows and browsers (through WebAssembly)\n* **Vector support** support including exact search and vector manipulation\n* **Improved schema management** including extended `ALTER` support and faster schema changes.\n\nThe database has the following experimental features:\n\n* **Encryption at rest** for protecting the data locally.\n* **Incremental computation** using DBSP for incremental view maintenance and query subscriptions.\n* **Full-Text-Search** powered by the awesome [tantivy](https://github.com/quickwit-oss/tantivy) library\n* **Multi-process WAL coordination** via the `.tshm` sidecar for cross-process WAL readers and writers.\n\nThe following features are on our current roadmap:\n\n* **Vector indexing** for fast approximate vector search, similar to [libSQL vector search](https://turso.tech/vector).\n\n## Getting Started\n\nPlease see the [Turso Database Manual](docs/manual.md) for more information.\n\n<details>\n<summary>💻 Command Line</summary>\n<br>\nYou can install the latest `turso` release with:\n\n```shell\ncurl --proto '=https' --tlsv1.2 -LsSf \\\n  https://github.com/tursodatabase/turso/releases/latest/download/turso_cli-installer.sh | sh\n```\n\nThen launch the interactive shell:\n\n```shell\n$ tursodb\n```\n\nThis will start the Turso interactive shell where you can execute SQL statements:\n\n```console\nTurso\nEnter \".help\" for usage hints.\nConnected to a transient in-memory database.\nUse \".open FILENAME\" to reopen on a persistent database\nturso> CREATE TABLE users (id INT, username TEXT);\nturso> INSERT INTO users VALUES (1, 'alice');\nturso> INSERT INTO users VALUES (2, 'bob');\nturso> SELECT * FROM users;\n1|alice\n2|bob\n```\n\nYou can also build and run the latest development version with:\n\n```shell\ncargo run\n```\n\nIf you like docker, we got you covered. Simply run this in the root folder:\n\n```bash\nmake docker-cli-build && \\\nmake docker-cli-run\n```\n\n</details>\n\n<details>\n<summary>🦀 Rust</summary>\n<br>\n\n```console\ncargo add turso\n```\n\nExample usage:\n\n```rust\nlet db = Builder::new_local(\"sqlite.db\").build().await?;\nlet conn = db.connect()?;\n\nlet res = conn.query(\"SELECT * FROM users\", ()).await?;\n```\n</details>\n\n<details>\n<summary>✨ JavaScript</summary>\n<br>\n\n```console\nnpm i @tursodatabase/database\n```\n\nExample usage:\n\n```js\nimport { connect } from '@tursodatabase/database';\n\nconst db = await connect('sqlite.db');\nconst stmt = db.prepare('SELECT * FROM users');\nconst users = stmt.all();\nconsole.log(users);\n```\n</details>\n\n<details>\n<summary>🐍 Python</summary>\n<br>\n\n```console\nuv pip install pyturso\n```\n\nExample usage:\n\n```python\nimport turso\n\ncon = turso.connect(\"sqlite.db\")\ncur = con.cursor()\nres = cur.execute(\"SELECT * FROM users\")\nprint(res.fetchone())\n```\n</details>\n\n<details>\n<summary>🦫 Go</summary>\n<br>\n\n```console\ngo get turso.tech/database/tursogo\ngo install turso.tech/database/tursogo\n```\n\nExample usage:\n```go\nimport (\n    \"database/sql\"\n    _ \"turso.tech/database/tursogo\"\n)\n\nconn, _ = sql.Open(\"turso\", \"sqlite.db\")\ndefer conn.Close()\n\nstmt, _ := conn.Prepare(\"select * from users\")\ndefer stmt.Close()\n\nrows, _ = stmt.Query()\nfor rows.Next() {\n    var id int\n    var username string\n    rows.Scan(&id, &username)\n    fmt.Printf(\"User: ID: %d, Username: %s\\n\", id, username)\n}\n```\n</details>\n\n\n<details>\n\n<summary>️#️⃣ .NET</summary>\n<br>\n\nExample usage:\n```cs\nusing Turso;\n\nusing var connection = new TursoConnection(\"Data Source=:memory:\");\nconnection.Open();\n\nconnection.ExecuteNonQuery(\"CREATE TABLE t(a, b)\");\nvar rowsAffected = connection.ExecuteNonQuery(\"INSERT INTO t(a, b) VALUES (1, 2), (3, 4)\");\nConsole.WriteLine($\"RowsAffected: {rowsAffected}\");\n\nusing var command = connection.CreateCommand();\ncommand.CommandText = \"SELECT * FROM t\";\nusing var reader = command.ExecuteReader();\nwhile (reader.Read())\n{\n    var a = reader.GetInt32(0);\n    var b = reader.GetInt32(1);\n    Console.WriteLine($\"Value1: {a}, Value2: {b}\");\n}\n```\n</details>\n\n\n<details>\n\n<summary>☕️ Java</summary>\n<br>\n\nWe integrated Turso Database into JDBC. For detailed instructions on how to use Turso Database with java, please refer to\nthe [README.md under bindings/java](bindings/java/README.md).\n</details>\n\n<details>\n<summary>🤖 MCP Server Mode</summary>\n<br>\n\n\nThe Turso CLI includes a built-in [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that allows AI assistants to interact with your databases.\n\nStart the MCP server with:\n\n```shell\ntursodb your_database.db --mcp\n```\n\n### Configuration\n\nAdd Turso to your MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"turso\": {\n      \"command\": \"/path/to/.turso/tursodb\",\n      \"args\": [\"/path/to/your/database.db\", \"--mcp\"]\n    }\n  }\n}\n```\n\n### Available Tools\n\nThe MCP server provides nine tools for database interaction:\n\n1. **`open_database`** - Open a new database\n2. **`current_database`** - Describe the current database\n3. **`list_tables`** - List all tables in the database\n4. **`describe_table`** - Describe the structure of a specific table\n5. **`execute_query`** - Execute read-only SELECT queries\n6. **`insert_data`** - Insert new data into tables\n7. **`update_data`** - Update existing data in tables\n8. **`delete_data`** - Delete data from tables\n9. **`schema_change`** - Execute schema modification statements (CREATE TABLE, ALTER TABLE, DROP TABLE)\n\nOnce connected, you can ask your AI assistant:\n\n- \"Show me all tables in the database\"\n- \"What's the schema for the users table?\"\n- \"Find all posts with more than 100 upvotes\"\n- \"Insert a new user with name 'Alice' and email 'alice@example.com'\"\n\n### MCP Clients\n\n<details>\n<summary>Claude Code</summary>\n\nIf you're using [Claude Code](https://claude.ai/code), you can easily connect to your Turso MCP server using the built-in MCP management commands:\n\n#### Quick Setup\n\n1. **Add the MCP server** to Claude Code:\n\n   ```bash\n   claude mcp add my-database -- tursodb ./path/to/your/database.db --mcp\n   ```\n\n2. **Restart Claude Code** to activate the connection\n\n3. **Start querying** your database through natural language!\n\n#### Command Breakdown\n\n```bash\nclaude mcp add my-database -- tursodb ./path/to/your/database.db --mcp\n#              ↑            ↑       ↑                           ↑\n#              |            |       |                           |\n#              Name         |       Database path               MCP flag\n#                          Separator\n```\n\n- **`my-database`** - Choose any name for your MCP server\n- **`--`** - Required separator between Claude options and your command\n- **`tursodb`** - The Turso database CLI\n- **`./path/to/your/database.db`** - Path to your SQLite database file\n- **`--mcp`** - Enables MCP server mode\n\n#### Example Usage\n\n```bash\n# For a local project database\ncd /your/project\nclaude mcp add my-project-db -- tursodb ./data/app.db --mcp\n\n# For an absolute path\nclaude mcp add analytics-db -- tursodb /Users/you/databases/analytics.db --mcp\n\n# For a specific project (local scope)\nclaude mcp add project-db --local -- tursodb ./database.db --mcp\n```\n\n#### Managing MCP Servers\n\n```bash\n# List all configured MCP servers\nclaude mcp list\n\n# Get details about a specific server\nclaude mcp get my-database\n\n# Remove an MCP server\nclaude mcp remove my-database\n```\n\n</details>\n\n<details>\n<summary>Claude Desktop</summary>\n\nFor Claude Desktop, add the configuration to your `claude_desktop_config.json` file:\n\n```json\n{\n  \"mcpServers\": {\n    \"turso\": {\n      \"command\": \"/path/to/.turso/tursodb\",\n      \"args\": [\"./path/to/your/database.db\", \"--mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Cursor</summary>\n\nFor Cursor, configure MCP in your settings:\n\n1. Open Cursor settings\n2. Navigate to Extensions → MCP\n3. Add a new server with:\n   - **Name**: `turso`\n   - **Command**: `/path/to/.turso/tursodb`\n   - **Args**: `[\"./path/to/your/database.db\", \"--mcp\"]`\n\nAlternatively, you can add it to your Cursor configuration file directly.\n\n</details>\n\n### Direct JSON-RPC Usage\n\nThe MCP server runs as a single process that handles multiple JSON-RPC requests over stdin/stdout. Here's how to interact with it directly:\n\n#### Example with In-Memory Database\n\n```bash\ncat << 'EOF' | tursodb --mcp\n{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"initialize\", \"params\": {\"protocolVersion\": \"2024-11-05\", \"capabilities\": {}, \"clientInfo\": {\"name\": \"client\", \"version\": \"1.0\"}}}\n{\"jsonrpc\": \"2.0\", \"id\": 2, \"method\": \"tools/call\", \"params\": {\"name\": \"sc",
    "manifest_file": "Cargo.toml",
    "manifest_content": "# Copyright 2023-2026 the Turso authors. All rights reserved. MIT license.\n\n[workspace]\nresolver = \"2\"\nmembers = [\n    \"bindings/java\",\n    \"bindings/javascript\",\n    \"bindings/javascript/sync\",\n    \"bindings/python\",\n    \"bindings/rust\",\n    \"cli\",\n    \"core\",\n    \"extensions/completion\",\n    \"extensions/core\",\n    \"extensions/crypto\",\n    \"extensions/csv\",\n    \"extensions/ipaddr\",\n    \"extensions/regexp\",\n    \"extensions/tests\",\n    \"extensions/fuzzy\",\n    \"macros\",\n    \"testing/simulator\",\n    \"bindings/c\",\n    \"testing/stress\",\n    \"testing/sqlite_test_ext\",\n    \"tests\",\n    \"sqlite/parser\",\n    \"sync/engine\",\n    \"sync/sdk-kit\",\n    \"sql_generation\",\n    \"testing/concurrent-simulator\",\n    \"perf/throughput/turso\",\n    \"perf/throughput/rusqlite\",\n    \"perf/encryption\",\n    \"perf/memory\",\n    \"perf/memory/codspeed\",\n    \"perf/query-batch\",\n    \"tools/dbhash\",\n    \"sdk-kit\",\n    \"sdk-kit-macros\",\n    \"testing/differential-oracle/sql_gen_prop\",\n    \"testing/differential-oracle/sql_gen\",\n    \"testing/differential-oracle/fuzzer\",\n    \"testing/sqltests\"\n]\nexclude = [\"perf/latency/limbo\"]\n\ndefault-members = [\n    \"bindings/java\",\n    \"bindings/javascript\",\n    \"bindings/javascript/sync\",\n    \"bindings/python\",\n    \"bindings/rust\",\n    \"cli\",\n    \"core\",\n    \"extensions/completion\",\n    \"extensions/core\",\n    \"extensions/crypto\",\n    \"extensions/csv\",\n    \"extensions/ipaddr\",\n    \"extensions/regexp\",\n    \"extensions/tests\",\n    \"extensions/fuzzy\",\n    \"macros\",\n    \"testing/simulator\",\n    \"bindings/c\",\n    \"testing/stress\",\n    \"testing/sqlite_test_ext\",\n    \"tests\",\n    \"sqlite/parser\",\n    \"sync/engine\",\n    \"sync/sdk-kit\",\n    \"sql_generation\",\n    \"testing/concurrent-simulator\",\n    \"perf/throughput/turso\",\n    \"perf/throughput/rusqlite\",\n    \"perf/encryption\",\n    \"tools/dbhash\",\n    \"sdk-kit\",\n    \"sdk-kit-macros\",\n    \"testing/differential-oracle/sql_gen_prop\",\n    \"testing/differential-oracle/sql_gen\",\n    \"testing/differential-oracle/fuzzer\",\n    \"testing/sqltests\"\n]\n\n[workspace.package]\nversion = \"0.7.0-pre.13\"\nauthors = [\"the Turso authors\"]\nedition = \"2021\"\nlicense = \"MIT\"\nrepository = \"https://github.com/tursodatabase/turso\"\n\n[workspace.dependencies]\nturso = { path = \"bindings/rust\", version = \"0.7.0-pre.13\" }\nturso_node = { path = \"bindings/javascript\", version = \"0.7.0-pre.13\" }\nturso_sdk_kit = { path = \"sdk-kit\", version = \"0.7.0-pre.13\" }\nturso_sdk_kit_macros = { path = \"sdk-kit-macros\", version = \"0.7.0-pre.13\" }\nturso_sync_sdk_kit = { path = \"sync/sdk-kit\", version = \"0.7.0-pre.13\" }\nlimbo_completion = { path = \"extensions/completion\", version = \"0.7.0-pre.13\" }\nturso_core = { path = \"core\", version = \"0.7.0-pre.13\" }\nturso_sync_engine = { path = \"sync/engine\", version = \"0.7.0-pre.13\" }\nturso_ext = { path = \"extensions/core\", version = \"0.7.0-pre.13\" }\nturso_macros = { path = \"macros\", version = \"0.7.0-pre.13\" }\nturso_parser = { path = \"sqlite/parser\", version = \"0.7.0-pre.13\" }\nsql_generation = { path = \"sql_generation\" }\nturso-dbhash = { path = \"tools/dbhash\" }\nstrum = { version = \"0.26\", features = [\"derive\"] }\nstrum_macros = \"0.26\"\nserde = \"1.0\"\nserde_json = \"1.0\"\nanyhow = \"1.0.98\"\nmimalloc = { version = \"0.1.47\", default-features = false }\nrusqlite = { version = \"0.37.0\", features = [\"bundled\"] }\nitertools = \"0.14.0\"\nrand = \"0.9.2\"\nrand_chacha = \"0.9.0\"\ntracing = \"0.1.41\"\nschemars = \"1.0.4\"\ngarde = \"0.22\"\nparking_lot = \"0.12.4\"\ntokio = { version = \"1.0\", default-features = false }\ntracing-subscriber = \"0.3.20\"\nfutures = \"0.3\"\nclap = \"4.5.47\"\nthiserror = \"2.0.16\"\ntempfile = \"3.20.0\"\nindexmap = \"2.11.1\"\nindicatif = \"0.17\"\nmiette = \"7.6.0\"\nbitflags = \"2.9.4\"\nfallible-iterator = \"0.3.0\"\nallocator-api2 = \"0.4\"\n\ncriterion = \"0.5.0\"\ncodspeed-criterion-compat = \"4.2.1\"\ndivan = { package = \"codspeed-divan-compat\", version = \"4.2.1\" }\n\nchrono = { version = \"0.4.42\", default-features = false }\nhex = \"0.4\"\nantithesis_sdk = { version = \"0.2\", default-features = false }\ncfg-if = \"1.0.0\"\ntracing-appender = \"0.2.3\"\nenv_logger = { version = \"0.11.6\", default-features = false }\nregex = \"1.11.1\"\nregex-syntax = { version = \"0.8.5\", default-features = false }\nsimilar = { version = \"2.7.0\" }\nsimilar-asserts = { version = \"1.7.0\" }\nbitmaps = { version = \"3.2.1\", default-features = false }\nconsole-subscriber = { version = \"0.4.1\" }\neither = { version = \"1.15\" }\n\n# Multi threading testing\nloom = { version = \"0.7\" }\nshuttle = { version = \"0.8.1\" }\n\n[profile.dev.package.similar]\nopt-level = 3\n\n[profile.release]\ndebug = \"line-tables-only\"\ncodegen-units = 4\npanic = \"abort\"\nlto = \"thin\"\n\n# Official release profile - maximum optimization for published binaries\n# Use for CLI releases, PyPI, npm, Maven, NuGet, etc.\n[profile.release-official]\ninherits = \"release\"\ncodegen-units = 1\nlto = true\n\n# override settings for sdk-kit release profiles in order to reduce size of produced binaries\n# otherwise, some platforms will have enormous libs (150MB+)\n[profile.lib-release]\ninherits = \"release\"\ndebug = false\ncodegen-units = 16",
    "strategic_keywords": [
      "memory",
      "workspace",
      "workflow",
      "vector"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "Stirling-Tools",
    "name": "Stirling-PDF",
    "full_name": "Stirling-Tools/Stirling-PDF",
    "url": "https://github.com/Stirling-Tools/Stirling-PDF",
    "description": "#1 PDF Application on GitHub that lets you edit PDFs on any device anywhere",
    "language": "Java",
    "total_stars": 84282,
    "forks": 7342,
    "stars_this_period": 2793,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "docker",
        "hacktoberfest",
        "java",
        "pdf",
        "pdf-converter",
        "pdf-editor",
        "pdf-manipulation",
        "pdf-merger",
        "pdf-ocr",
        "pdf-tools",
        "pdf-web-apps",
        "pdfmerger",
        "self-hosted"
      ],
      "license": "NOASSERTION",
      "open_issues": 449,
      "created_at": "2023-01-27T18:22:42Z",
      "pushed_at": "2026-06-25T15:41:03Z",
      "homepage": "https://stirling.com",
      "default_branch": "main",
      "forks": 7342,
      "watchers": 241,
      "archived": false,
      "size_kb": 315053
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/main/docs/stirling.png\" width=\"80\" alt=\"Stirling PDF logo\">\n</p>\n\n<h1 align=\"center\">Stirling PDF - The Open-Source PDF Platform</h1>\n\nStirling PDF is a powerful, open-source PDF editing platform. Run it as a personal desktop app, in the browser, or deploy it on your own servers with a private API. Edit, sign, redact, convert, and automate PDFs without sending documents to external services.\n\n<p align=\"center\">\n  <a href=\"https://hub.docker.com/r/stirlingtools/stirling-pdf\">\n    <img src=\"https://img.shields.io/docker/pulls/frooodle/s-pdf\" alt=\"Docker Pulls\">\n  </a>\n  <a href=\"https://discord.gg/HYmhKj45pU\">\n    <img src=\"https://img.shields.io/discord/1068636748814483718?label=Discord\" alt=\"Discord\">\n  </a>\n  <a href=\"https://scorecard.dev/viewer/?uri=github.com/Stirling-Tools/Stirling-PDF\">\n    <img src=\"https://api.scorecard.dev/projects/github.com/Stirling-Tools/Stirling-PDF/badge\" alt=\"OpenSSF Scorecard\">\n  </a>\n  <a href=\"https://github.com/Stirling-Tools/stirling-pdf\">\n    <img src=\"https://img.shields.io/github/stars/stirling-tools/stirling-pdf?style=social\" alt=\"GitHub Repo stars\">\n  </a>\n</p>\n\n![Stirling PDF - Dashboard](images/home-light.png)\n\n## Key Capabilities\n\n- **Everywhere you work** - Desktop client, browser UI, and self-hosted server with a private API.\n- **50+ PDF tools** - Edit, merge, split, sign, redact, convert, OCR, compress, and more.\n- **Automation & workflows** - No-code pipelines direct in UI with APIs to process millions of PDFs.\n- **Enterprise‑grade** - SSO, auditing, and flexible on‑prem deployments.\n- **Developer platform** - REST APIs available for nearly all tools to integrate into your existing systems.\n- **Global UI** - Interface available in 40+ languages.\n\nFor a full feature list, see the docs: **https://docs.stirlingpdf.com**\n\n## Quick Start\n\n```bash\ndocker run -p 8080:8080 docker.stirlingpdf.com/stirlingtools/stirling-pdf\n```\n\nThen open: http://localhost:8080\n\nFor full installation options (including desktop and Kubernetes), see our [Documentation Guide](https://docs.stirlingpdf.com/#documentation-guide).\n\n## Resources\n\n- [**Documentation**](https://docs.stirlingpdf.com)\n- [**Homepage**](https://stirling.com)\n- [**API Docs**](https://registry.scalar.com/@stirlingpdf/apis/stirling-pdf-processing-api/)\n- [**Server Plan & Enterprise**](https://docs.stirlingpdf.com/Paid-Offerings)\n\n## Support\n\n- **Community** [Discord](https://discord.gg/HYmhKj45pU)\n- **Bug Reports**: [Github issues](https://github.com/Stirling-Tools/Stirling-PDF/issues)\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\nThis project uses [Task](https://taskfile.dev/) as a unified command runner for all build, dev, and test commands. Run `task dev` to get started running the editor, run `task` to see the most common commands, or see the [Developer Guide](DeveloperGuide.md) for full details.\n\nFor adding translations, see the [Translation Guide](devGuide/HowToAddNewLanguage.md).\n\n## License\n\nStirling PDF is open-core. See [LICENSE](LICENSE) for details.\n",
    "strategic_keywords": [
      "workflow",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 8,
      "total": 82
    },
    "strategic_score": 82
  },
  {
    "owner": "asgeirtj",
    "name": "system_prompts_leaks",
    "full_name": "asgeirtj/system_prompts_leaks",
    "url": "https://github.com/asgeirtj/system_prompts_leaks",
    "description": "Extracted system prompts from Anthropic - Claude Fable 5, Opus 4.8, Claude Code, Claude Design. OpenAI - ChatGPT 5.5 Thinking, GPT 5.5 Instant, Codex. Google - Gemini 3.5 Flash, 3.1 Pro, Antigravity. xAI - Grok, Cursor, Copilot, VS Code, Perplexity, and more. Updated regularly.",
    "language": "JavaScript",
    "total_stars": 45980,
    "forks": 7540,
    "stars_this_period": 2662,
    "source_slice": "all",
    "source_slices": [
      "all",
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agents",
        "anthropic",
        "awesome",
        "chatbot",
        "chatgpt",
        "claude",
        "claude-code",
        "codex",
        "deep-learning",
        "education",
        "gemini",
        "generative-ai",
        "google",
        "llm",
        "machine-learning",
        "nlp",
        "open-source",
        "openai",
        "prompt-engineering"
      ],
      "license": "CC0-1.0",
      "open_issues": 22,
      "created_at": "2025-05-03T02:43:56Z",
      "pushed_at": "2026-06-25T00:27:10Z",
      "homepage": "https://asgeirtj.github.io/system_prompts_leaks/",
      "default_branch": "main",
      "forks": 7540,
      "watchers": 547,
      "archived": false,
      "size_kb": 7288
    },
    "readme_content": "> **As seen in The Washington Post:** [See the hidden rules behind AI. Then use them to rewrite this article.](https://wapo.st/49t4gSb) (May 11, 2026)\n# System Prompts Leaks\nThe purpose of this repo is to document the System Prompt instructions for all the AI chatbots out there - Claude, ChatGPT, Gemini etc.\n\n<img alt=\"ChatGPT leaking its system prompt after being asked to repeat all of the above\" src=\"https://github.com/user-attachments/assets/0037a6c5-2ae4-4d34-8be0-0d679773172b\" />\n\n[![GitHub Views per Week](https://raw.githubusercontent.com/asgeirtj/system_prompts_leaks/traffic/traffic-system_prompts_leaks/views_per_week.svg)](https://github.com/asgeirtj/system_prompts_leaks)\n![Last Commit](https://img.shields.io/github/last-commit/asgeirtj/system_prompts_leaks?style=flat)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen)](http://makeapullrequest.com)\n\n> 🆕 **[Diff: Claude Opus 4.8 → Claude Fable 5](https://www.diffchecker.com/QJn9jFNk/)** — see exactly what changed in the claude.ai system prompt for Anthropic's newest model\n\n\n\n\n\n## Recently Updated\n\n| What | Date | Link |\n|------|------|------|\n| **Claude Design (Opus 4.8 — full prompt + 50 tools + 16 skills + 8 starter sources)** | June 23, 2026 | [System prompt](Anthropic/claude-design.md) |\n| **GitHub Copilot for macOS (app)** | June 18, 2026 | [System prompt](Microsoft/copilot-macos-app.md) |\n| **GPT-5.5 Codex (full prompt)** | June 18, 2026 | [System prompt](OpenAI/Codex/gpt-5.5.md) |\n| **Claude Fable 5** | June 9, 2026 | [System prompt](Anthropic/claude-fable-5.md) · [Diff vs Opus 4.8](https://www.diffchecker.com/QJn9jFNk/) |\n| **Claude Opus 4.8** | June 9, 2026 | [System prompt](Anthropic/claude-opus-4.8.md) · [Official](Anthropic/Official/2026-05-28-claude-opus-4.8.md) |\n| **Claude Code Glob & Grep tools** | June 9, 2026 | [Glob](Anthropic/Claude%20Code/glob-tool.md) · [Grep](Anthropic/Claude%20Code/grep-tool.md) |\n| **Claude Code (Opus 4.8)** | May 28, 2026 | [System prompt](Anthropic/Claude%20Code/claude-code-opus-4.8.md) |\n| **Claude Code & Cowork** | May 28, 2026 | [Claude Code](Anthropic/Claude%20Code/claude-code-opus-4.6.md) · [Cowork](Anthropic/claude-cowork.md) · [Cowork Dispatch](Anthropic/claude-cowork-dispatch.md) |\n| **GPT-5.5** | May 24, 2026 | [Thinking](OpenAI/gpt-5.5-thinking.md) · [Instant](OpenAI/gpt-5.5-instant.md) · [API](OpenAI/gpt-5.5-api.md) · [Pro API](OpenAI/gpt-5.5-pro-api.md) |\n| **Perplexity Computer** | May 21, 2026 | [System prompt](Perplexity/perplexity-computer.md) |\n| **VS Code Copilot Agent** | May 21, 2026 | [System prompt](Microsoft/vscode-copilot-agent.md) |\n| **Docker Gordon AI** | May 21, 2026 | [System prompt](Misc/docker-gordon-ai.md) |\n| **Gemini 3.5 Flash** | May 20, 2026 | [System prompt](Google/gemini-3.5-flash.md) · [AI Studio](Google/gemini-3.5-flash-ai-studio.md) · [Tools](Google/gemini-3.5-flash-tools.json) |\n| **Antigravity CLI** | May 20, 2026 | [System prompt](Google/antigravity-cli.md) |\n| **Zed AI** | May 16, 2026 | [System prompt](Misc/zed.md) |\n| **Grok Expert** | May 11, 2026 | [System prompt](xAI/grok-expert.md) |\n\n---\n![Anthropic](https://shieldcn.dev/badge/Anthropic-D97757.svg?logo=anthropic&logoColor=fff&variant=secondary&mode=light)\n\n## Anthropic — Claude\n\n| Model | Prompt |\n|-------|--------|\n| **Claude Fable 5** | [**System prompt**](Anthropic/claude-fable-5.md) |\n| **Claude Opus 4.8** | [**System prompt**](Anthropic/claude-opus-4.8.md) |\n| **Claude Code (Opus 4.8)** | [**System prompt**](Anthropic/Claude%20Code/claude-code-opus-4.8.md) |\n| **Claude Opus 4.7** | [**System prompt**](Anthropic/claude-opus-4.7.md) |\n| **Claude Code (Opus 4.6)** | [**System prompt**](Anthropic/Claude%20Code/claude-code-opus-4.6.md) |\n| **Claude Opus 4.6** | [**System prompt**](Anthropic/claude-opus-4.6.md) |\n| **Claude Sonnet 4.6** | [**System prompt**](Anthropic/claude-sonnet-4.6.md) |\n| Claude.ai | [Anthropic Reminders](Anthropic/anthropic_reminders.md) |\n\n<details><summary>Integrations, official prompts & older versions</summary>\n\n| | |\n|--|--|\n| Integrations | [Cowork](Anthropic/claude-cowork.md) · [Cowork Dispatch](Anthropic/claude-cowork-dispatch.md) · [Desktop Code](Anthropic/claude-desktop-code.md) · [Design](Anthropic/claude-design.md) · [Mobile iOS](Anthropic/claude-mobile-ios.md) · [In Chrome](Anthropic/claude-in-chrome.md) · [For Excel](Anthropic/claude-for-excel.md) · [For Word](Anthropic/claude-for-word.md) · [In PowerPoint](Anthropic/claude-in-powerpoint.md) · [Default Styles](Anthropic/default-styles.md) |\n| Claude Code extras | [Glob tool](Anthropic/Claude%20Code/glob-tool.md) · [Grep tool](Anthropic/Claude%20Code/grep-tool.md) · [Deferred tools](Anthropic/Claude%20Code/deferred-tools.md) · [Docs assistant](Anthropic/Claude%20Code/claude-code-docs-assistant.md) · [Bundled skills](Anthropic/Claude%20Code/bundled-skills/) |\n| Published (`claude_behavior` at release date, not updated) | [Opus 4.8](Anthropic/Official/2026-05-28-claude-opus-4.8.md) · [Opus 4.7](Anthropic/Official/2026-04-16-claude-opus-4.7.md) · [Opus 4.6](Anthropic/Official/2026-02-05-claude-opus-4.6.md) · [Sonnet 4.6](Anthropic/Official/2026-02-17-claude-sonnet-4.6.md) · [All versions](Anthropic/Official/) |\n| Without tools | [Opus 4.6](Anthropic/claude-opus-4.6-no-tools.md) · [Sonnet 4.6](Anthropic/claude-sonnet-4.6-no-tools.md) |\n| Raw prompts | [Opus 4.6](Anthropic/raw/claude-opus-4.6-raw.md) · [Opus 4.6 (no tools)](Anthropic/raw/claude-opus-4.6-no-tools-raw.md) · [Sonnet 4.6](Anthropic/raw/claude-sonnet-4.6-raw.md) · [Sonnet 4.6 (no tools)](Anthropic/raw/claude-sonnet-4.6-no-tools-raw.md) |\n| Visualize | [Visualization](Anthropic/visualize.md) |\n| Opus 4.5 | [System prompt](Anthropic/old/claude-opus-4.5.md) |\n| Sonnet 4.5 | [System prompt](Anthropic/old/claude-4.5-sonnet.md) |\n| Sonnet 4 | [System prompt](Anthropic/old/claude-sonnet-4.md) |\n| Opus 4.1 Thinking | [System prompt](Anthropic/old/claude-4.1-opus-thinking.md) |\n| Sonnet 3.7 | [System prompt](Anthropic/old/claude-3.7-sonnet.md) · [With tools](Anthropic/old/claude-3.7-sonnet-w-tools.md) · [Full w/ tools](Anthropic/old/claude-3.7-full-system-message-with-all-tools.md) · [Human-readable](Anthropic/old/claude-3.7-sonnet-full-system-message-humanreadable.md) |\n\n</details>\n\n![OpenAI](https://shieldcn.dev/badge/OpenAI-412991.svg?logo=ri%3ASiOpenai&variant=secondary&mode=light)\n\n## OpenAI — ChatGPT\n\n| Model | Prompt |\n|-------|--------|\n| **GPT-5.5** | [**Thinking**](OpenAI/gpt-5.5-thinking.md) · [**Instant**](OpenAI/gpt-5.5-instant.md) · [API](OpenAI/gpt-5.5-api.md) · [Pro API](OpenAI/gpt-5.5-pro-api.md) · [**Codex**](OpenAI/Codex/gpt-5.5.md) · [Friendly](OpenAI/Codex/personality_friendly_gpt-5.5.md) · [Pragmatic](OpenAI/Codex/personality_pragmatic_gpt-5.5.md) |\n| **GPT-5.4** | [**API**](OpenAI/gpt-5.4-api.md) · [**Thinking**](OpenAI/gpt-5.4-thinking.md) · [**Codex**](OpenAI/Codex/gpt-5.4.md) · [Codex Mini](OpenAI/Codex/gpt-5.4-mini.md) |\n| **GPT-5.3** | [**Codex**](OpenAI/Codex/gpt-5.3-codex.md) · [Spark](OpenAI/Codex/gpt-5.3-codex-spark.md) · [Codex API](OpenAI/gpt-5.3-codex-api.md) · [Chat API](OpenAI/gpt-5.3-chat-api.md) · [Instant](OpenAI/gpt-5.3-instant.md) |\n| **Codex CLI** | [Per-model prompts](OpenAI/Codex/) · [Spark](OpenAI/Codex/gpt-5.3-codex-spark.md) · [Plan mode](OpenAI/Codex/plan_mode.md) · [Personas](OpenAI/Codex/personality_friendly.md) · [Auto-review](OpenAI/Codex/codex-auto-review.md) |\n| **Tools** | [Web search](OpenAI/tool-web-search.md) · [Deep research](OpenAI/tool-deep-research.md) · [Python](OpenAI/tool-python.md) · [Python code](OpenAI/tool-python-code.md) · [Canvas](OpenAI/tool-canvas-canmore.md) · [Image gen](OpenAI/tool-create-image-image_gen.md) · [Memory](OpenAI/tool-memory-bio.md) · [Advanced memory](OpenAI/tool-advanced-memory.md) · [File search](OpenAI/tool-file_search.md) |\n| **Policies** | [Image safety](OpenAI/prompt-image-safety-policies.md) · [Automation context](OpenAI/prompt-automation-context.md) |\n\n<details><summary>Older models & variants</summary>\n\n| | |\n|--|--|\n| GPT-5.2 | [Mini (free)](OpenAI/gpt-5.2-mini-free-account.md) · [Thinking](OpenAI/gpt-5.2-thinking.md) · [Codex](OpenAI/Codex/gpt-5.2-codex.md) |\n| o4-mini | [System prompt](OpenAI/o4-mini.md) · [High](OpenAI/o4-mini-high.md) |\n| o3 | [System prompt](OpenAI/o3.md) |\n| ChatGPT Atlas | [System prompt](OpenAI/chatgpt-atlas.md) |\n| GPT-5.1 personalities | [Default](OpenAI/gpt-5.1-default.md) · [Friendly](OpenAI/gpt-5.1-friendly.md) · [Professional](OpenAI/gpt-5.1-professional.md) · [Candid](OpenAI/gpt-5.1-candid.md) · [Cynical](OpenAI/gpt-5.1-cynical.md) · [Efficient](OpenAI/gpt-5.1-efficient.md) · [Nerdy](OpenAI/gpt-5.1-nerdy.md) · [Quirky](OpenAI/gpt-5.1-quirky.md) |\n| GPT-5 | [Agent mode](OpenAI/chatgpt-gpt-5-agent-mode.md) · [Thinking](OpenAI/gpt-5-thinking.md) · [Cynic](OpenAI/gpt-5-cynic-personality.md) · [Listener](OpenAI/gpt-5-listener-personality.md) · [Nerdy](OpenAI/gpt-5-nerdy-personality.md) · [Robot](OpenAI/gpt-5-robot-personality.md) · [Codex](OpenAI/Codex/gpt-5-codex.md) · [Codex Mini](OpenAI/Codex/gpt-5-codex-mini.md) |\n| GPT-4.5 | [System prompt](OpenAI/gpt-4.5.md) |\n| GPT-4.1 | [Full](OpenAI/gpt-4.1.md) · [Mini](OpenAI/gpt-4.1-mini.md) |\n| GPT-4o | [System prompt](OpenAI/gpt-4o.md) · [WhatsApp](OpenAI/gpt-4o-whatsapp.md) · [Advanced voice](OpenAI/gpt-4o-advanced-voice-mode.md) · [Legacy voice](OpenAI/gpt-4o-legacy-voice-mode.md) |\n| Monday GPT | [System prompt](OpenAI/monday-gpt.md) |\n| GPT-4o new personality | [System prompt](OpenAI/4o-2025-09-03-new-personality.md) |\n| Study and learn | [System prompt](OpenAI/study-and-learn.md) |\n| Image safety policies | [System prompt](OpenAI/image-safety-policies.md) |\n| API variants | [GPT-5 reasoning (high)](OpenAI/API/gpt-5-reasoning-effort-high-api.md) · [o3 high](OpenAI/API/o3-high-api.md) · [o3 med](OpenAI/API/o3-medium-api.md) · [o3 low](OpenAI/API/o3-low-api.md) · [o4-mini high](OpenAI/API/o4-mini-high.md) · [o4-mini med](OpenAI/API/o4-mini-medium-api.md) · [o4-mini low](OpenAI/API/o4-mini-low-api.md) |\n| Old o4-mini | [System prompt](OpenAI/Old/chatgpt.com-o4-mini.md) |\n| Codex (older) | [GPT-5](OpenAI/Codex/gpt-5.md) · [GPT-5.1](OpenAI/Codex/gpt-5.1.md) · [GPT-5.1 Codex](OpenAI/Codex/gpt-5.1-codex.md) · [GPT-5.1 Mini](OpenAI/Codex/gpt-5.1-codex-mini.md) · [GPT-5.1 Max](OpenAI/Codex/gpt-5.1-codex-max.md) · [GPT-5.2](OpenAI/Codex/gpt-5.2.md) · [5.2 Friendly](OpenAI/Codex/personality_friendly_gpt-5.2-codex.md) · [5.2 Pragmatic](OpenAI/Codex/personality_pragmatic_gpt-5.2-codex.md) |\n\n</details>\n\n![Google Gemini](https://shieldcn.dev/badge/Google%20Gemini-8E75B2.svg?logo=googlegemini&logoColor=fff&variant=secondary&mode=light)\n\n## Google — Gemini\n\n| Model | Prompt |\n|-------|--------|\n| **Gemini 3.5 Flash** | [**System prompt**](Google/gemini-3.5-flash.md) · [AI Studio](Google/gemini-3.5-flash-ai-studio.md) · [Tools](Google/gemini-3.5-flash-tools.json) |\n| **Gemini 3.1 Pro** | [**System prompt**](Google/gemini-3.1-pro.md) · [API](Google/gemini-3.1-pro-api.md) |\n| Gemini CLI | [System prompt](Google/gemini-cli.md) |\n| Antigravity CLI | [System prompt](Google/antigravity-cli.md) |\n| Jules | [System prompt](Google/jules.md) |\n\n<details><summary>Older models & variants</summary>\n\n| | |\n|--|--|\n| Gemini 3 | [Flash](Google/gemini-3-flash.md) · [Pro](Google/gemini-3-pro.md) |\n| Gemini Diffusion | [System prompt](Google/gemini-diffusion.md) |\n| Google Search AI Mode | [System prompt](Google/google-search-ai-mode.md) |\n| Gemini YouTube | [System prompt](Google/gemini-youtube.md) |\n| Gemini in Chrome | [System prompt](Google/gemini-in-chrome.md) |\n| Gemini Workspace | [System prompt](Google/gemini-workspace.md) |\n| Gemini 2.5 Pro | [API](Google/gemini-2.5-pro-api.md) · [Webapp](Google/gemini-2.5-pro-webapp.md) · [Guided learning](Google/gemini-2.5-pro-guided-learning.md) |\n| Gemini 2.5 Flash | [Image preview](Google/gemini-2.5-flash-image-preview.md) |\n| Gemini 2.0 Flash | [Webapp](Google/gemini-2.0-flash-webapp.md) |\n| AI Studio Build | [System prompt](Goog",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "llm"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "JCodesMore",
    "name": "ai-website-cloner-template",
    "full_name": "JCodesMore/ai-website-cloner-template",
    "url": "https://github.com/JCodesMore/ai-website-cloner-template",
    "description": "Clone any website with one command using AI coding agents",
    "language": "TypeScript",
    "total_stars": 20091,
    "forks": 2967,
    "stars_this_period": 2022,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agents",
        "ai-tools",
        "automation",
        "boilerplate",
        "claude",
        "claude-code",
        "clone",
        "developer-tools",
        "nextjs",
        "react",
        "reverse-engineering",
        "shadcn-ui",
        "skills",
        "tailwindcss",
        "template",
        "typescript",
        "web-scraping",
        "website-clone"
      ],
      "license": "MIT",
      "open_issues": 16,
      "created_at": "2026-03-13T11:14:39Z",
      "pushed_at": "2026-06-01T04:09:21Z",
      "homepage": "https://dsc.gg/jcodesmore",
      "default_branch": "master",
      "forks": 2967,
      "watchers": 96,
      "archived": false,
      "size_kb": 940
    },
    "readme_content": "# AI Website Cloner Template\n\n<a href=\"https://github.com/JCodesMore/ai-website-cloner-template/blob/master/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT License\" /></a> <a href=\"https://github.com/JCodesMore/ai-website-cloner-template/stargazers\"><img src=\"https://img.shields.io/github/stars/JCodesMore/ai-website-cloner-template?style=flat\" alt=\"Stars\" /></a> <a href=\"https://discord.gg/hrTSX5yTpB\"><img src=\"https://img.shields.io/discord/1400896964597383279?label=discord\" alt=\"Discord\" /></a>\n\nA reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. \n\n**Recommended: [Claude Code](https://docs.anthropic.com/en/docs/claude-code) with Opus 4.7 for best results** — but works with a variety of AI coding agents.\n\nPoint it at a URL, run `/clone-website`, and your AI agent will inspect the site, extract design tokens and assets, write component specs, and dispatch parallel builders to reconstruct every section.\n\n## Demo\n\n[![Watch the demo](docs/design-references/comparison.png)](https://youtu.be/O669pVZ_qr0)\n\n> Click the image above to watch the full demo on YouTube.\n\n## Quick Start\n\n> **Important:** Start by making your own copy with GitHub's **Use this template** button. Do not clone this template repository directly for your website project, and do not open pull requests here with your generated website.\n\n1. **Create your own repository from this template**\n\n   On the GitHub page for this project, click **Use this template**, then click **Create a new repository**.\n\n   Give your new repository a name, choose whether it should be public or private, then click **Create repository**. If GitHub shows an **Include all branches** option, you can leave it off.\n\n   This gives you your own separate project to work in, so your website changes stay in your account instead of coming back to the main template.\n\n2. **Open your new repository on your computer**\n\n   After GitHub creates your copy, open that new repository. Click **Code** and open or clone your new repository with your preferred coding tool.\n\n   If you use the terminal, the command will look like this:\n\n   ```bash\n   git clone https://github.com/YOUR-USERNAME/YOUR-NEW-REPOSITORY.git\n   cd YOUR-NEW-REPOSITORY\n   ```\n\n3. **Install dependencies**\n   ```bash\n   npm install\n   ```\n4. **Start your AI agent** — Claude Code recommended:\n   ```bash\n   claude --chrome\n   ```\n5. **Run the skill**:\n   ```\n   /clone-website <target-url1> [<target-url2> ...]\n   ```\n6. **Customize** (optional) — after the base clone is built, modify as needed\n\n> Using a different agent? Open `AGENTS.md` for project instructions — most agents pick it up automatically.\n\n## Supported Platforms\n\n| Agent                                                         | Status                     |\n| ------------------------------------------------------------- | -------------------------- |\n| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |\n| [Codex CLI](https://github.com/openai/codex)                  | Supported                  |\n| [OpenCode](https://opencode.ai/)                              | Supported                  |\n| [GitHub Copilot](https://github.com/features/copilot)         | Supported                  |\n| [Cursor](https://cursor.com/)                                 | Supported                  |\n| [Windsurf](https://codeium.com/windsurf)                      | Supported                  |\n| [Gemini CLI](https://github.com/google-gemini/gemini-cli)     | Supported                  |\n| [Cline](https://github.com/cline/cline)                       | Supported                  |\n| [Roo Code](https://github.com/RooCodeInc/Roo-Code)            | Supported                  |\n| [Continue](https://continue.dev/)                             | Supported                  |\n| [Amazon Q](https://aws.amazon.com/q/developer/)               | Supported                  |\n| [Augment Code](https://www.augmentcode.com/)                  | Supported                  |\n| [Aider](https://aider.chat/)                                  | Supported                  |\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 24+\n- An AI coding agent (see [Supported Platforms](#supported-platforms))\n\n## Tech Stack\n\n- **Next.js 16** — App Router, React 19, TypeScript strict\n- **shadcn/ui** — Radix primitives + Tailwind CSS v4\n- **Tailwind CSS v4** — oklch design tokens\n- **Lucide React** — default icons (replaced by extracted SVGs during cloning)\n\n## How It Works\n\nThe `/clone-website` skill runs a multi-phase pipeline:\n\n1. **Reconnaissance** — screenshots, design token extraction, interaction sweep (scroll, click, hover, responsive)\n2. **Foundation** — updates fonts, colors, globals, downloads all assets\n3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact computed CSS values, states, behaviors, and content\n4. **Parallel Build** — dispatches builder agents in git worktrees, one per section/component\n5. **Assembly & QA** — merges worktrees, wires up the page, runs visual diff against the original\n\nEach builder agent receives the full component specification inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, and asset paths. No guessing.\n\n## Use Cases\n\n- **Platform migration** — rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase\n- **Lost source code** — your site is live but the repo is gone, the developer left, or the stack is legacy. Get the code back in a modern format\n- **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior by working with real code\n\n## Not Intended For\n\n- **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law.\n- **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners.\n- **Violating terms of service** — some sites explicitly prohibit scraping or reproduction. Check first.\n\n## Project Structure\n\n```\nsrc/\n  app/              # Next.js routes\n  components/       # React components\n    ui/             # shadcn/ui primitives\n    icons.tsx       # Extracted SVG icons\n  lib/utils.ts      # cn() utility\n  types/            # TypeScript interfaces\n  hooks/            # Custom React hooks\npublic/\n  images/           # Downloaded images from target\n  videos/           # Downloaded videos from target\n  seo/              # Favicons, OG images\ndocs/\n  research/         # Extraction output & component specs\n  design-references/ # Screenshots\nscripts/\n  sync-agent-rules.sh  # Regenerate agent instruction files\n  sync-skills.mjs      # Regenerate /clone-website for all platforms\nAGENTS.md           # Agent instructions (single source of truth)\nCLAUDE.md           # Claude Code config (imports AGENTS.md)\nGEMINI.md           # Gemini CLI config (imports AGENTS.md)\n```\n\n## Commands\n\n```bash\nnpm run dev    # Start dev server\nnpm run build  # Production build\nnpm run lint   # ESLint check\nnpm run typecheck # TypeScript check\nnpm run check  # Run lint + typecheck + build\n```\n\n### If using docker\n\n```bash\ndocker compose up app --build # build and run the app\ndocker compose up dev --build # run the app in dev mode on port 3001\n```\n\n## Updating for Other Platforms\n\nTwo source-of-truth files power all platform support. Edit the source, then run the sync script:\n\n| What                   | Source of truth                         | Sync command                       |\n| ---------------------- | --------------------------------------- | ---------------------------------- |\n| Project instructions   | `AGENTS.md`                             | `bash scripts/sync-agent-rules.sh` |\n| `/clone-website` skill | `.claude/skills/clone-website/SKILL.md` | `node scripts/sync-skills.mjs`     |\n\nEach script regenerates the platform-specific copies automatically. Agents that read the source files natively need no regeneration.\n\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=JCodesMore/ai-website-cloner-template&type=Date)](https://star-history.com/#JCodesMore/ai-website-cloner-template&Date)\n\n## License\n\nMIT\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"ai-website-clone-template\",\n  \"version\": \"0.3.1\",\n  \"private\": true,\n  \"description\": \"Clone any website into a clean, modern Next.js codebase using AI coding agents\",\n  \"author\": \"JCodesMore\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/JCodesMore/ai-website-cloner-template.git\"\n  },\n  \"homepage\": \"https://github.com/JCodesMore/ai-website-cloner-template\",\n  \"bugs\": {\n    \"url\": \"https://github.com/JCodesMore/ai-website-cloner-template/issues\"\n  },\n  \"keywords\": [\n    \"claude-code\",\n    \"website-clone\",\n    \"reverse-engineering\",\n    \"nextjs\",\n    \"ai\",\n    \"template\",\n    \"tailwindcss\",\n    \"shadcn-ui\"\n  ],\n  \"engines\": {\n    \"node\": \">=24\"\n  },\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"eslint\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"check\": \"npm run lint && npm run typecheck && npm run build\"\n  },\n  \"dependencies\": {\n    \"@base-ui/react\": \"^1.3.0\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^1.6.0\",\n    \"next\": \"16.2.1\",\n    \"react\": \"19.2.4\",\n    \"react-dom\": \"19.2.4\",\n    \"shadcn\": \"^4.1.0\",\n    \"tailwind-merge\": \"^3.5.0\",\n    \"tw-animate-css\": \"^1.4.0\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/node\": \"^24\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"16.2.1\",\n    \"tailwindcss\": \"^4\",\n    \"typescript\": \"^5\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "google-labs-code",
    "name": "design.md",
    "full_name": "google-labs-code/design.md",
    "url": "https://github.com/google-labs-code/design.md",
    "description": "A format specification for describing a visual identity to coding agents. DESIGN.md gives agents a persistent, structured understanding of a design system.",
    "language": "TypeScript",
    "total_stars": 18507,
    "forks": 1622,
    "stars_this_period": 1956,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 31,
      "created_at": "2026-04-10T17:54:59Z",
      "pushed_at": "2026-06-15T22:22:46Z",
      "homepage": "https://stitch.withgoogle.com/docs/design-md/specification",
      "default_branch": "main",
      "forks": 1622,
      "watchers": 107,
      "archived": false,
      "size_kb": 199
    },
    "readme_content": "# DESIGN.md\n\nA format specification for describing a visual identity to coding agents. DESIGN.md gives agents a persistent, structured understanding of a design system.\n\n## The Format\n\nA DESIGN.md file combines machine-readable design tokens (YAML front matter) with human-readable design rationale (markdown prose). Tokens give agents exact values. Prose tells them *why* those values exist and how to apply them.\n\n```md\n---\nname: Heritage\ncolors:\n  primary: \"#1A1C1E\"\n  secondary: \"#6C7278\"\n  tertiary: \"#B8422E\"\n  neutral: \"#F7F5F2\"\ntypography:\n  h1:\n    fontFamily: Public Sans\n    fontSize: 3rem\n  body-md:\n    fontFamily: Public Sans\n    fontSize: 1rem\n  label-caps:\n    fontFamily: Space Grotesk\n    fontSize: 0.75rem\nrounded:\n  sm: 4px\n  md: 8px\nspacing:\n  sm: 8px\n  md: 16px\n---\n\n## Overview\n\nArchitectural Minimalism meets Journalistic Gravitas. The UI evokes a\npremium matte finish — a high-end broadsheet or contemporary gallery.\n\n## Colors\n\nThe palette is rooted in high-contrast neutrals and a single accent color.\n\n- **Primary (#1A1C1E):** Deep ink for headlines and core text.\n- **Secondary (#6C7278):** Sophisticated slate for borders, captions, metadata.\n- **Tertiary (#B8422E):** \"Boston Clay\" — the sole driver for interaction.\n- **Neutral (#F7F5F2):** Warm limestone foundation, softer than pure white.\n```\n\nAn agent that reads this file will produce a UI with deep ink headlines in Public Sans, a warm limestone background, and Boston Clay call-to-action buttons.\n\n## Getting Started\n\nValidate a DESIGN.md against the spec, catch broken token references, check WCAG contrast ratios, and surface structural findings — all as structured JSON that agents can act on.\n\n```bash\nnpx @google/design.md lint DESIGN.md\n```\n\n```json\n{\n  \"findings\": [\n    {\n      \"severity\": \"warning\",\n      \"path\": \"components.button-primary\",\n      \"message\": \"textColor (#ffffff) on backgroundColor (#1A1C1E) has contrast ratio 15.42:1 — passes WCAG AA.\"\n    }\n  ],\n  \"summary\": { \"errors\": 0, \"warnings\": 1, \"info\": 1 }\n}\n```\n\nCompare two versions of a design system to detect token-level and prose regressions:\n\n```bash\nnpx @google/design.md diff DESIGN.md DESIGN-v2.md\n```\n\n```json\n{\n  \"tokens\": {\n    \"colors\": { \"added\": [\"accent\"], \"removed\": [], \"modified\": [\"tertiary\"] },\n    \"typography\": { \"added\": [], \"removed\": [], \"modified\": [] }\n  },\n  \"regression\": false\n}\n```\n\n## The Specification\n\nThe full DESIGN.md spec lives at [`docs/spec.md`](docs/spec.md). What follows is a condensed reference.\n\n### File Structure\n\nA DESIGN.md file has two layers:\n\n1. **YAML front matter** — Machine-readable design tokens, delimited by `---` fences at the top of the file.\n2. **Markdown body** — Human-readable design rationale organized into `##` sections.\n\nThe tokens are the normative values. The prose provides context for how to apply them.\n\n### Token Schema\n\n```yaml\nversion: <string>          # optional, current: \"alpha\"\nname: <string>\ndescription: <string>      # optional\ncolors:\n  <token-name>: <Color>\ntypography:\n  <token-name>: <Typography>\nrounded:\n  <scale-level>: <Dimension>\nspacing:\n  <scale-level>: <Dimension | number>\ncomponents:\n  <component-name>:\n    <token-name>: <string | token reference>\n```\n\n### Token Types\n\n| Type | Format | Example |\n|:-----|:-------|:--------|\n| Color | Any CSS color (hex, `rgb()`, `oklch()`, named, etc.) | `\"#1A1C1E\"`, `\"oklch(62% 0.18 250)\"` |\n| Dimension | number + unit (`px`, `em`, `rem`) | `48px`, `-0.02em` |\n| Token Reference | `{path.to.token}` | `{colors.primary}` |\n| Typography | object with `fontFamily`, `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`, `fontFeature`, `fontVariation` | See example above |\n\n### Section Order\n\nSections use `##` headings. They can be omitted, but those present must appear in this order:\n\n| # | Section | Aliases |\n|:--|:--------|:--------|\n| 1 | Overview | Brand & Style |\n| 2 | Colors | |\n| 3 | Typography | |\n| 4 | Layout | Layout & Spacing |\n| 5 | Elevation & Depth | Elevation |\n| 6 | Shapes | |\n| 7 | Components | |\n| 8 | Do's and Don'ts | |\n\n### Component Tokens\n\nComponents map a name to a group of sub-token properties:\n\n```yaml\ncomponents:\n  button-primary:\n    backgroundColor: \"{colors.tertiary}\"\n    textColor: \"{colors.on-tertiary}\"\n    rounded: \"{rounded.sm}\"\n    padding: 12px\n  button-primary-hover:\n    backgroundColor: \"{colors.tertiary-container}\"\n```\n\nValid component properties: `backgroundColor`, `textColor`, `typography`, `rounded`, `padding`, `size`, `height`, `width`.\n\nVariants (hover, active, pressed) are expressed as separate component entries with a related key name.\n\n### Consumer Behavior for Unknown Content\n\n| Scenario | Behavior |\n|:---------|:---------|\n| Unknown section heading | Preserve; do not error |\n| Unknown color token name | Accept if value is valid |\n| Unknown typography token name | Accept as valid typography |\n| Unknown component property | Accept with warning |\n| Duplicate section heading | Error; reject the file |\n\n## CLI Reference\n\n### Installation\n\n```bash\nnpm install @google/design.md\n```\n\nOn **Windows**, quote the package name if your shell treats `@` specially (PowerShell, some terminals):\n\n```bash\nnpm install \"@google/design.md\"\n```\n\nOr run directly (always resolves from the public npm registry):\n\n```bash\nnpx @google/design.md lint DESIGN.md\n```\n\nOn **Windows/PowerShell**, this direct form can produce no output (or open\n`DESIGN.md` in your Markdown editor) because the `.md` suffix in the `design.md`\nbin name collides with the Windows Markdown file association during command\nresolution. Run the dot-free `designmd` alias instead — point `npx` at the\npackage with `-p`, then invoke `designmd`:\n\n```bash\nnpx -p @google/design.md designmd lint DESIGN.md\n```\n\nThe `designmd` shim resolves to the same entrypoint and works identically across\nall platforms.\n\n#### `npm error ENOVERSIONS` (“No versions available for @google/design.md”)\n\nThe CLI is published as [`@google/design.md` on npm](https://www.npmjs.com/package/@google/design.md). `ENOVERSIONS` almost always means npm is not querying the public registry (custom `registry=` in `.npmrc`, a corporate mirror that has not synced this package, or a misconfigured `@google:registry` for the `@google` scope).\n\nCheck your effective registry:\n\n```bash\nnpm config get registry\n```\n\nFor a normal install from the internet it should be `https://registry.npmjs.org/`. After fixing config, retry with `npm cache clean --force` if a stale 404 was cached.\n\nAll commands accept a file path or `-` for stdin. Output defaults to JSON.\n\n> **Windows tip**: when invoking the CLI directly from a `package.json` script\n> (rather than through `npx`), use the `designmd` alias instead of `design.md`.\n> The `.md` suffix in the original bin name confuses Windows command resolution\n> with the file association for Markdown files. The `designmd` shim resolves to\n> the same entrypoint and works identically across all platforms.\n>\n> ```jsonc\n> // package.json\n> {\n>   \"scripts\": {\n>     \"design:lint\": \"designmd lint DESIGN.md\"\n>   }\n> }\n> ```\n\n### `lint`\n\nValidate a DESIGN.md file for structural correctness.\n\n```bash\nnpx @google/design.md lint DESIGN.md\nnpx @google/design.md lint --format json DESIGN.md\ncat DESIGN.md | npx @google/design.md lint -\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `file` | positional | required | Path to DESIGN.md (or `-` for stdin) |\n| `--format` | `json` | `json` | Output format |\n\nExit code `1` if errors are found, `0` otherwise.\n\n### `diff`\n\nCompare two DESIGN.md files and report token-level changes.\n\n```bash\nnpx @google/design.md diff DESIGN.md DESIGN-v2.md\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `before` | positional | required | Path to the \"before\" DESIGN.md |\n| `after` | positional | required | Path to the \"after\" DESIGN.md |\n| `--format` | `json` | `json` | Output format |\n\nExit code `1` if regressions are detected (more errors or warnings in the \"after\" file).\n\n### `export`\n\nExport DESIGN.md tokens to other formats.\n\n```bash\nnpx @google/design.md export --format json-tailwind DESIGN.md > tailwind.theme.json\nnpx @google/design.md export --format css-tailwind DESIGN.md > theme.css\nnpx @google/design.md export --format dtcg DESIGN.md > tokens.json\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `file` | positional | required | Path to DESIGN.md (or `-` for stdin) |\n| `--format` | `json-tailwind` \\| `css-tailwind` \\| `tailwind` \\| `dtcg` | required | Output format |\n\n| Format | Output | Description |\n|:-------|:-------|:------------|\n| `json-tailwind` | JSON | Tailwind v3 `theme.extend` config object |\n| `css-tailwind` | CSS | Tailwind v4 `@theme { ... }` block with CSS custom properties |\n| `tailwind` | JSON | Alias for `json-tailwind` |\n| `dtcg` | JSON | W3C Design Tokens Format Module |\n\n### `spec`\n\nOutput the DESIGN.md format specification (useful for injecting spec context into agent prompts).\n\n```bash\nnpx @google/design.md spec\nnpx @google/design.md spec --rules\nnpx @google/design.md spec --rules-only --format json\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `--rules` | boolean | `false` | Append the active linting rules table |\n| `--rules-only` | boolean | `false` | Output only the linting rules table |\n| `--format` | `markdown` \\| `json` | `markdown` | Output format |\n\n## Linting Rules\n\nThe linter runs nine rules against a parsed DESIGN.md. Each rule produces findings at a fixed severity level.\n\n| Rule | Severity | What it checks |\n|:-----|:---------|:---------------|\n| `broken-ref` | error | Token references (`{colors.primary}`) that don't resolve to any defined token |\n| `missing-primary` | warning | Colors are defined but no `primary` color exists — agents will auto-generate one |\n| `contrast-ratio` | warning | Component `backgroundColor`/`textColor` pairs below WCAG AA minimum (4.5:1) |\n| `orphaned-tokens` | warning | Color tokens defined but never referenced by any component |\n| `token-summary` | info | Summary of how many tokens are defined in each section |\n| `missing-sections` | info | Optional sections (spacing, rounded) absent when other tokens exist |\n| `missing-typography` | warning | Colors are defined but no typography tokens exist — agents will use default fonts |\n| `section-order` | warning | Sections appear out of the canonical order defined by the spec |\n| `unknown-key` | warning | A top-level YAML key looks like a typo of a known schema key (e.g. `colours:` → `colors:`); custom extension keys stay silent |\n\n### Programmatic API\n\nThe linter is also available as a library:\n\n```typescript\nimport { lint } from '@google/design.md/linter';\n\nconst report = lint(markdownString);\n\nconsole.log(report.findings);       // Finding[]\nconsole.log(report.summary);        // { errors, warnings, info }\nconsole.log(report.designSystem);   // Parsed DesignSystemState\n```\n\n## Design Token Interoperability\n\nDESIGN.md tokens are inspired by the [W3C Design Token Format](https://www.designtokens.org/). The `export` command converts tokens to other formats:\n\n- **Tailwind v3 config (JSON)** — `npx @google/design.md export --format json-tailwind DESIGN.md` — emits a `theme.extend` JSON object for `tailwind.config.js`. `--format tailwind` is a backwards-compatible alias.\n- **Tailwind v4 theme (CSS)** — `npx @google/design.md export --format css-tailwind DESIGN.md` — emits a CSS `@theme { ... }` block using Tailwind v4's CSS-variable token namespaces (`--color-*`, `--font-*`, `--text-*`, `--leading-*`, `--tracking-*`, `--font-weight-*`, `--radius-*`, `--spacing-*`).\n- **DTCG tokens.json** ([W3C Design Tokens Format Module](https://tr.designtokens.org/format/)) — `npx @google/design.md export --format dtcg DESIGN.md`\n\n## Status\n\nThe DESIGN.md format is at version `alpha`. The spec, token schema, and CLI are under active development. Expect changes to the format as it matures.\n\n## D",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"design-monorepo\",\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"packageManager\": \"bun@1.3.9\",\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"test\": \"turbo test\",\n    \"lint\": \"turbo lint\",\n    \"cli\": \"bun run packages/cli/src/index.ts\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^25.6.0\",\n    \"bun-types\": \"^1.3.12\",\n    \"turbo\": \"latest\",\n    \"typescript\": \"latest\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "makeplane",
    "name": "plane",
    "full_name": "makeplane/plane",
    "url": "https://github.com/makeplane/plane",
    "description": "🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, docs, and triage.",
    "language": "TypeScript",
    "total_stars": 52988,
    "forks": 4727,
    "stars_this_period": 1871,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "boards",
        "bug-tracker",
        "django",
        "docker",
        "gantt",
        "issue-tracker",
        "jira",
        "jira-alternative",
        "kanban",
        "linear",
        "postgresql",
        "product-management",
        "project-management",
        "project-planning",
        "python",
        "react",
        "redis",
        "typescipt",
        "vite",
        "work-management"
      ],
      "license": "AGPL-3.0",
      "open_issues": 945,
      "created_at": "2022-11-19T12:55:01Z",
      "pushed_at": "2026-06-25T10:19:26Z",
      "homepage": "http://plane.so",
      "default_branch": "preview",
      "forks": 4727,
      "watchers": 168,
      "archived": false,
      "size_kb": 211794
    },
    "readme_content": "<br /><br />\n\n<p align=\"center\">\n<a href=\"https://plane.so\">\n  <img src=\"https://media.docs.plane.so/logo/plane_github_readme.png\" alt=\"Plane Logo\" width=\"400\">\n</a>\n</p>\n<p align=\"center\"><b>Modern project management for all teams</b></p>\n\n<p align=\"center\">\n    <a href=\"https://plane.so/\"><b>Website</b></a> •\n    <a href=\"https://forum.plane.so\"><b>Forum</b></a> •\n    <a href=\"https://x.com/planepowers\"><b>X</b></a> •\n    <a href=\"https://docs.plane.so/\"><b>Documentation</b></a>\n</p>\n\n<p>\n    <a href=\"https://app.plane.so/#gh-light-mode-only\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-top.webp\"\n        alt=\"Plane Screens\"\n        width=\"100%\"\n      />\n    </a>\n</p>\n\nMeet [Plane](https://plane.so/), an open-source project management tool to track issues, run ~sprints~ cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘‍♀️\n\n> Plane is evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on [Forum](https://forum.plane.so) or raise a GitHub issue. We read everything and respond to most.\n\n## 🚀 Installation\n\nGetting started with Plane is simple. Choose the setup that works best for you:\n\n- **Plane Cloud**\n  Sign up for a free account on [Plane Cloud](https://app.plane.so)—it's the fastest way to get up and running without worrying about infrastructure.\n\n- **Self-host Plane**\n  Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed [deployment guides](https://developers.plane.so/self-hosting/overview) to get started.\n\n| Installation methods | Docs link                                                                                                                                                                               |\n| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Docker               | [![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)](https://developers.plane.so/self-hosting/methods/docker-compose)         |\n| Kubernetes           | [![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge&logo=kubernetes&logoColor=white)](https://developers.plane.so/self-hosting/methods/kubernetes) |\n\n`Instance admins` can configure instance settings with [God mode](https://developers.plane.so/self-hosting/govern/instance-admin).\n\n## 🌟 Features\n\n- **Work Items**\n  Efficiently create and manage tasks with a robust rich text editor that supports file uploads. Enhance organization and tracking by adding sub-properties and referencing related issues.\n\n- **Cycles**\n  Maintain your team’s momentum with Cycles. Track progress effortlessly using burn-down charts and other insightful tools.\n\n- **Modules**\n  Simplify complex projects by dividing them into smaller, manageable modules.\n\n- **Views**\n  Customize your workflow by creating filters to display only the most relevant issues. Save and share these views with ease.\n\n- **Pages**\n  Capture and organize ideas using Plane Pages, complete with AI capabilities and a rich text editor. Format text, insert images, add hyperlinks, or convert your notes into actionable items.\n\n- **Analytics**\n  Access real-time insights across all your Plane data. Visualize trends, remove blockers, and keep your projects moving forward.\n\n## 🛠️ Local development\n\nSee [CONTRIBUTING](./CONTRIBUTING.md)\n\n## ⚙️ Built with\n\n[![React Router](https://img.shields.io/badge/-React%20Router-CA4245?logo=react-router&style=for-the-badge&logoColor=white)](https://reactrouter.com/)\n[![Django](https://img.shields.io/badge/Django-092E20?style=for-the-badge&logo=django&logoColor=green)](https://www.djangoproject.com/)\n[![Node JS](https://img.shields.io/badge/node.js-339933?style=for-the-badge&logo=Node.js&logoColor=white)](https://nodejs.org/en)\n\n## 📸 Screenshots\n\n  <p>\n    <a href=\"https://plane.so\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-work-items.webp\"\n        alt=\"Plane Views\"\n        width=\"100%\"\n      />\n    </a>\n  </p>\n  <p>\n    <a href=\"https://plane.so\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-cycles.webp\"\n        width=\"100%\"\n      />\n    </a>\n  </p>\n  <p>\n    <a href=\"https://plane.so\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-modules.webp\"\n        alt=\"Plane Cycles and Modules\"\n        width=\"100%\"\n      />\n    </a>\n  </p>\n  <p>\n    <a href=\"https://plane.so\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-views.webp\"\n        alt=\"Plane Analytics\"\n        width=\"100%\"\n      />\n    </a>\n  </p>\n   <p>\n    <a href=\"https://plane.so\" target=\"_blank\">\n      <img\n        src=\"https://media.docs.plane.so/GitHub-readme/github-analytics.webp\"\n        alt=\"Plane Pages\"\n        width=\"100%\"\n      />\n    </a>\n  </p>\n</p>\n\n## 📝 Documentation\n\nExplore Plane's [product documentation](https://docs.plane.so/) and [developer documentation](https://developers.plane.so/) to learn about features, setup, and usage.\n\n## ❤️ Community\n\nJoin the Plane community on [GitHub Discussions](https://github.com/orgs/makeplane/discussions) and our [Forum](https://forum.plane.so). We follow a [Code of conduct](https://github.com/makeplane/plane/blob/master/CODE_OF_CONDUCT.md) in all our community channels.\n\nFeel free to ask questions, report bugs, participate in discussions, share ideas, request features, or showcase your projects. We’d love to hear from you!\n\n## 🛡️ Security\n\nIf you discover a security vulnerability in Plane, please report it responsibly instead of opening a public issue. We take all legitimate reports seriously and will investigate them promptly. See [Security policy](https://github.com/makeplane/plane/blob/master/SECURITY.md) for more info.\n\nTo disclose any security issues, please email us at security@plane.so.\n\n## 🤝 Contributing\n\nThere are many ways you can contribute to Plane:\n\n- Report [bugs](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%F0%9F%90%9Bbug&projects=&template=--bug-report.yaml&title=%5Bbug%5D%3A+) or submit [feature requests](https://github.com/makeplane/plane/issues/new?assignees=srinivaspendem%2Cpushya22&labels=%E2%9C%A8feature&projects=&template=--feature-request.yaml&title=%5Bfeature%5D%3A+).\n- Review the [documentation](https://docs.plane.so/) and submit [pull requests](https://github.com/makeplane/docs) to improve it—whether it's fixing typos or adding new content.\n- Talk or write about Plane or any other ecosystem integration and [let us know](https://forum.plane.so)!\n- Show your support by upvoting [popular feature requests](https://github.com/makeplane/plane/issues).\n\nPlease read [CONTRIBUTING.md](https://github.com/makeplane/plane/blob/master/CONTRIBUTING.md) for details on the process for submitting pull requests to us.\n\n### Repo activity\n\n![Plane Repo Activity](https://repobeats.axiom.co/api/embed/2523c6ed2f77c082b7908c33e2ab208981d76c39.svg \"Repobeats analytics image\")\n\n### We couldn't have done this without you.\n\n<a href=\"https://github.com/makeplane/plane/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=makeplane/plane\" />\n</a>\n\n## License\n\nThis project is licensed under the [GNU Affero General Public License v3.0](https://github.com/makeplane/plane/blob/master/LICENSE.txt).\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"plane\",\n  \"version\": \"1.3.1\",\n  \"private\": true,\n  \"description\": \"Open-source project management that unlocks customer value\",\n  \"license\": \"AGPL-3.0\",\n  \"repository\": \"https://github.com/makeplane/plane.git\",\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev --concurrency=18\",\n    \"start\": \"turbo run start\",\n    \"clean\": \"turbo run clean && rm -rf .turbo && rm -rf .next && rm -rf node_modules && rm -rf dist\",\n    \"fix\": \"turbo run fix\",\n    \"fix:format\": \"turbo run fix:format\",\n    \"fix:lint\": \"turbo run fix:lint\",\n    \"check\": \"turbo run check\",\n    \"check:lint\": \"turbo run check:lint\",\n    \"check:format\": \"turbo run check:format\",\n    \"check:types\": \"turbo run check:types\",\n    \"prepare\": \"husky\",\n    \"doctor\": \"npx react-doctor@latest\"\n  },\n  \"devDependencies\": {\n    \"husky\": \"catalog:\",\n    \"lint-staged\": \"catalog:\",\n    \"oxfmt\": \"catalog:\",\n    \"oxlint\": \"catalog:\",\n    \"react-doctor\": \"^0.4.2\",\n    \"turbo\": \"catalog:\"\n  },\n  \"lint-staged\": {\n    \"*.{js,jsx,ts,tsx,cjs,mjs,cts,mts,json,css,md}\": [\n      \"pnpm exec oxfmt --no-error-on-unmatched-pattern\"\n    ],\n    \"*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}\": [\n      \"pnpm exec oxlint --fix --deny-warnings\"\n    ]\n  },\n  \"engines\": {\n    \"node\": \">=22.18.0\"\n  },\n  \"packageManager\": \"pnpm@11.3.0+sha512.2c403d6594527287672b1f7056343a1f7c3634036a67ffabfcc2b3d7595d843768f8787148d1b57cf7956c90606bbd192857c363af19e96d2d0ec9ec5741d215\"\n}\n",
    "strategic_keywords": [
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 8,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 71
    },
    "strategic_score": 71
  },
  {
    "owner": "openai",
    "name": "codex",
    "full_name": "openai/codex",
    "url": "https://github.com/openai/codex",
    "description": "Lightweight coding agent that runs in your terminal",
    "language": "Rust",
    "total_stars": 93642,
    "forks": 13848,
    "stars_this_period": 1717,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 7827,
      "created_at": "2025-04-13T05:37:54Z",
      "pushed_at": "2026-06-25T15:13:37Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 13848,
      "watchers": 509,
      "archived": false,
      "size_kb": 500665
    },
    "readme_content": "<p align=\"center\"><strong>Codex CLI</strong> is a coding agent from OpenAI that runs locally on your computer.\n<p align=\"center\">\n  <img src=\"https://github.com/openai/codex/blob/main/.github/codex-cli-splash.png\" alt=\"Codex CLI splash\" width=\"80%\" />\n</p>\n</br>\nIf you want Codex in your code editor (VS Code, Cursor, Windsurf), <a href=\"https://developers.openai.com/codex/ide\">install in your IDE.</a>\n</br>If you want the desktop app experience, run <code>codex app</code> or visit <a href=\"https://chatgpt.com/codex?app-landing-page=true\">the Codex App page</a>.\n</br>If you are looking for the <em>cloud-based agent</em> from OpenAI, <strong>Codex Web</strong>, go to <a href=\"https://chatgpt.com/codex\">chatgpt.com/codex</a>.</p>\n\n---\n\n## Quickstart\n\n### Installing and running Codex CLI\n\nRun the following on Mac or Linux to install Codex CLI:\n\n```shell\ncurl -fsSL https://chatgpt.com/codex/install.sh | sh\n```\n\nRun the following on Windows to install Codex CLI:\n\n```\npowershell -ExecutionPolicy ByPass -c \"irm https://chatgpt.com/codex/install.ps1 | iex\"\n```\n\nCodex CLI can also be installed via the following package managers:\n\n```shell\n# Install using npm\nnpm install -g @openai/codex\n```\n\n```shell\n# Install using Homebrew\nbrew install --cask codex\n```\n\nThen simply run `codex` to get started.\n\n<details>\n<summary>You can also go to the <a href=\"https://github.com/openai/codex/releases/latest\">latest GitHub Release</a> and download the appropriate binary for your platform.</summary>\n\nEach GitHub Release contains many executables, but in practice, you likely want one of these:\n\n- macOS\n  - Apple Silicon/arm64: `codex-aarch64-apple-darwin.tar.gz`\n  - x86_64 (older Mac hardware): `codex-x86_64-apple-darwin.tar.gz`\n- Linux\n  - x86_64: `codex-x86_64-unknown-linux-musl.tar.gz`\n  - arm64: `codex-aarch64-unknown-linux-musl.tar.gz`\n\nEach archive contains a single entry with the platform baked into the name (e.g., `codex-x86_64-unknown-linux-musl`), so you likely want to rename it to `codex` after extracting it.\n\n</details>\n\n### Using Codex with your ChatGPT plan\n\nRun `codex` and select **Sign in with ChatGPT**. We recommend signing into your ChatGPT account to use Codex as part of your Plus, Pro, Business, Edu, or Enterprise plan. [Learn more about what's included in your ChatGPT plan](https://help.openai.com/en/articles/11369540-codex-in-chatgpt).\n\nYou can also use Codex with an API key, but this requires [additional setup](https://developers.openai.com/codex/auth#sign-in-with-an-api-key).\n\n## Docs\n\n- [**Codex Documentation**](https://developers.openai.com/codex)\n- [**Contributing**](./docs/contributing.md)\n- [**Installing & building**](./docs/install.md)\n- [**Open source fund**](./docs/open-source-fund.md)\n\nThis repository is licensed under the [Apache-2.0 License](LICENSE).\n",
    "strategic_keywords": [
      "agent"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 8,
      "novelty": 4,
      "productize": 11,
      "adoption": 8,
      "relation": 7,
      "risk_signal": 8,
      "total": 66
    },
    "strategic_score": 66
  },
  {
    "owner": "BuilderIO",
    "name": "agent-native",
    "full_name": "BuilderIO/agent-native",
    "url": "https://github.com/BuilderIO/agent-native",
    "description": "A framework for building agent-native applications.",
    "language": "TypeScript",
    "total_stars": 2288,
    "forks": 219,
    "stars_this_period": 1596,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agents",
        "ai",
        "react"
      ],
      "license": "NOASSERTION",
      "open_issues": 14,
      "created_at": "2026-03-12T14:57:10Z",
      "pushed_at": "2026-06-25T15:42:19Z",
      "homepage": "https://agent-native.com",
      "default_branch": "main",
      "forks": 219,
      "watchers": 5,
      "archived": false,
      "size_kb": 108170
    },
    "readme_content": "# Agent-Native\n\n## The framework for agent-native apps\n\nAgent-Native is an open-source framework for building robust agents that act inside real apps, not just chat next to them. It gives you primitives for product-grade agentic software: shared actions, SQL-backed state, identity, tools, skills, jobs, observability, and UI surfaces that all work together. Bring your own database, hosting provider, model stack, and app code.\n\n```ts\n// One action powers UI, agent, HTTP, MCP, A2A, and CLI.\nexport default defineAction({\n  schema: z.object({\n    emailId: z.string(),\n    body: z.string(),\n  }),\n  run: async ({ emailId, body }) => {\n    await db.insert(replies).values({ emailId, body });\n  },\n});\n```\n\n- **Actions**: Define work once. Use it from UI, agent, API, MCP, A2A, and CLI.\n- **Agent runtime**: Chat, tools, skills, memory, jobs, observability, and handoffs ship together.\n- **Backend agnostic**: Plug in any Drizzle-supported SQL database and Nitro-compatible host.\n\n## Templates\n\nStart with a full featured template. Each one is a complete, 100% free and open-source SaaS app: cloneable, not scaffolded, except you own the code and can customize everything.\n\n<table>\n<tr>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Clips**\n\n<a href=\"https://agent-native.com/templates/clips\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F189ebd9b2f2b4f0ead3b33138d4e4c10?format=webp&width=800\" alt=\"Clips template\" width=\"100%\" /></a>\n\n**Agent-Native Loom + Jam**\n\nRecord your screen with auto-transcripts and captured browser debug logs, share a link, and let an agent read the transcript, see timestamped frames, and fix the bug.\n\n</td>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Plans**\n\n<a href=\"https://agent-native.com/templates/plan\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fb6f4213ac7cc42eeb10c12e8ccda8936?format=webp&width=800\" alt=\"Plans template\" width=\"100%\" /></a>\n\n**Visual plan mode for coding agents**\n\nInstall `/visual-plan` and `/visual-recap` so your coding agent can plan before it builds and recap changes after they land. High-level code reviews with diagrams, wireframes, annotations, and review links.\n\n</td>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Design**\n\n<a href=\"https://agent-native.com/templates/design\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2F348da13fcd8b414c87de9066196f7266%2F961bedb713a94463b834c1f2f4643bcf?format=webp&width=800\" alt=\"Design template\" width=\"100%\" /></a>\n\n**Agent-Native design prototyping**\n\nGenerate interactive HTML prototypes, compare variants, refine controls, and export the result.\n\n</td>\n</tr>\n<tr>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Content**\n\n<a href=\"https://agent-native.com/templates/content\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F89bcfc6106304bfbaf8ec8a7ccd721eb?format=webp&width=800\" alt=\"Content template\" width=\"100%\" /></a>\n\n**Open-source Obsidian for MDX**\n\nEdit local Markdown/MDX files, generate rich interactive custom blocks, and draft, rewrite, or publish with an agent.\n\n</td>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Slides**\n\n<a href=\"https://agent-native.com/templates/slides\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F2c09b451d40c4a74a89a38d69170c2d8?format=webp&width=800\" alt=\"Slides template\" width=\"100%\" /></a>\n\n**Agent-Native Google Slides, Pitch**\n\nGenerate and edit React-based presentations via prompt or point-and-click.\n\n</td>\n<td width=\"33%\" align=\"center\" valign=\"top\">\n\n**Analytics**\n\n<a href=\"https://agent-native.com/templates/analytics\"><img src=\"https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F4933a80cc3134d7e874631f688be828a?format=webp&width=800\" alt=\"Analytics template\" width=\"100%\" /></a>\n\n**Agent-Native Amplitude, Mixpanel**\n\nConnect analytics data sources, prompt for real charts, and build reusable dashboards.\n\n</td>\n</tr>\n</table>\n\nView the full template gallery at **[agent-native.com/templates](https://agent-native.com/templates)**.\n\n## Agents and UIs, Fully Connected\n\nThe agent and the UI are equal citizens of one system. Every action works both ways: click it or ask for it.\n\n![Agents and UIs fully connected](https://cdn.builder.io/api/v1/file/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fadc1e9e9368e4a8cb1b4dbb5aae5aaa2)\n\n- **Everything syncs**: One database, one state. Changes from either side show up instantly on the other.\n- **Real-time multiplayer**: Humans and agents edit the same document together, with the agent as a first-class peer.\n- **Context-aware**: The agent knows what you're looking at. Select text, hit Cmd+I, and tell it what to do.\n- **Agents call agents**: Tag another agent from any app and they coordinate over A2A.\n- **Self-improving**: The agent can add features, fix bugs, and refine the UI over time.\n\n## Try it with a skill\n\nDon't want to scaffold a whole app yet? Add visual planning and PR recaps to Claude Code, Codex, Cursor, Pi, OpenCode, GitHub Copilot / VS Code, and similar agents with one command:\n\n```bash\nnpx @agent-native/core@latest skills add visual-plan\n```\n\n![Visual plan and recap in action](https://raw.githubusercontent.com/builderio/skills/main/media/visual-recap.gif)\n\nYou get two slash commands:\n\n- **`/visual-plan`**: before the agent writes code, it opens a structured, reviewable plan with inline diagrams, UI wireframes, file-by-file implementation maps, and annotations you can comment on and approve.\n- **`/visual-recap`**: after changes land, it turns a PR or git diff into a high-altitude visual recap with a shareable review link instead of a raw diff.\n\nSee the **[Skills Guide](https://agent-native.com/docs/skills-guide#app-backed-skills)** for more.\n\n## Quick Start\n\nOne command to start a new project locally.\n\n```bash\nnpx @agent-native/core@latest create my-app\ncd my-app\npnpm install\npnpm dev\n```\n\n`create` first asks how you want to start:\n\n- **Full template(s)**: clone one or more complete apps into a workspace. Pick Mail + Calendar + Forms and you get all three wired up and sharing auth.\n- **Chat**: a single app with a minimal chat UI and the browser shell already wired, the simplest way to get a UI.\n- **Headless**: a single action-first app with no UI shell. The CLI walks you through calling your first action and agent, and you can add a UI later.\n\nPrefer flags? `create my-app --template mail`, `--headless`, or `--standalone` skip the prompt.\n\n## The Best of Both Worlds\n\n|                   | SaaS Tools         | Raw AI Agents           | Internal Tools             | Agent-Native            |\n| ----------------- | ------------------ | ----------------------- | -------------------------- | ----------------------- |\n| **UI**            | Polished but rigid | None                    | Mixed quality              | Full UI, fork & go      |\n| **AI**            | Bolted on          | Powerful                | Shallowly connected        | Agent-first, integrated |\n| **Customization** | Can't              | Instructions and skills | Full, but high maintenance | Agent modifies the app  |\n| **Ownership**     | Rented             | Somewhat yours          | You own the code           | You own the code        |\n\n## Community\n\nJoin the **[Discord](https://discord.gg/qm82StQ2NC)** to ask questions, share what you're building, and get help.\n\n## Docs\n\nFull documentation at **[agent-native.com](https://agent-native.com)**.\n\n## License\n\nMIT\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"agentnative\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"description\": \"Don't choose between rich user interfaces and autonomous agents. Every Agent-Native app is both.\",\n  \"keywords\": [],\n  \"homepage\": \"https://github.com/BuilderIO/agent-native#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/BuilderIO/agent-native/issues\"\n  },\n  \"license\": \"ISC\",\n  \"author\": \"\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/BuilderIO/agent-native.git\"\n  },\n  \"directories\": {\n    \"doc\": \"docs\"\n  },\n  \"type\": \"module\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"postinstall\": \"pnpm --filter @agent-native/shared-app-config --filter @agent-native/core --filter @agent-native/code-agents-ui --filter @agent-native/migrate --filter @agent-native/pinpoint --filter @agent-native/scheduling --filter @agent-native/embedding --filter @agent-native/dispatch run build && pnpm rebuild better-sqlite3\",\n    \"setup\": \"pnpm install\",\n    \"build\": \"pnpm -r build\",\n    \"dev\": \"node scripts/dev-lazy.ts\",\n    \"typecheck\": \"tsx scripts/workspace-run.ts typecheck\",\n    \"fmt\": \"oxfmt --write .\",\n    \"fmt:check\": \"oxfmt --check .\",\n    \"fix:imports\": \"oxfmt --write .\",\n    \"test\": \"tsx scripts/workspace-run.ts test\",\n    \"test:brain-evals\": \"pnpm --filter brain eval:ci\",\n    \"qa:cli\": \"tsx scripts/qa-cli-smoke.ts\",\n    \"qa:headless-onramp\": \"tsx scripts/qa-headless-onramp-smoke.ts\",\n    \"qa:standalone-chat-dev\": \"tsx scripts/qa-standalone-chat-dev-smoke.ts\",\n    \"qa:composer-geometry\": \"tsx scripts/qa-composer-geometry-smoke.ts\",\n    \"qa:dispatch-workspace-resources\": \"tsx scripts/qa-dispatch-workspace-resources-smoke.ts\",\n    \"qa:dispatch-automations\": \"tsx scripts/qa-dispatch-automations-smoke.ts\",\n    \"qa:template-routes\": \"tsx scripts/qa-template-route-matrix.ts\",\n    \"actions:audit\": \"node scripts/audit-template-actions.mjs\",\n    \"test:mcp:e2e\": \"tsx scripts/e2e-mcp-test.ts\",\n    \"lint\": \"pnpm fmt:check && pnpm oxlint && pnpm typecheck\",\n    \"oxlint\": \"oxlint --config .oxlintrc.json .\",\n    \"dev:cli\": \"tsx packages/core/src/cli/index.ts\",\n    \"guard:no-drizzle-push\": \"node scripts/guard-no-drizzle-push.mjs\",\n    \"guard:no-unscoped-queries\": \"node scripts/guard-no-unscoped-queries.mjs\",\n    \"guard:no-env-credentials\": \"node scripts/guard-no-env-credentials.mjs\",\n    \"guard:no-unscoped-credentials\": \"node scripts/guard-no-unscoped-credentials.mjs\",\n    \"guard:no-env-mutation\": \"node scripts/guard-no-env-mutation.mjs\",\n    \"guard:no-localhost-fallback\": \"node scripts/guard-no-localhost-fallback.mjs\",\n    \"guard:google-auth-redirects\": \"node scripts/guard-google-auth-redirects.mjs\",\n    \"guard:db-tool-scoping\": \"node scripts/guard-db-tool-scoping.mjs\",\n    \"guard:template-list\": \"node scripts/guard-template-list.mjs\",\n    \"guard:workspace-skills\": \"tsx scripts/sync-workspace-core-skills.ts --check\",\n    \"guard:public-packages\": \"tsx scripts/guard-public-packages.ts\",\n    \"guard:no-generated-artifacts\": \"node scripts/guard-no-generated-artifacts.mjs\",\n    \"guard:extension-no-public\": \"node scripts/guard-extension-no-public.mjs\",\n    \"guard:no-one-off-mcp-app-html\": \"node scripts/guard-no-one-off-mcp-app-html.mjs\",\n    \"guard:i18n-catalogs\": \"tsx scripts/guard-i18n-catalogs.ts\",\n    \"guard:plan-marketplace\": \"tsx scripts/sync-plan-marketplace.ts --check\",\n    \"guard:no-error-string-returns\": \"node scripts/guard-no-error-string-returns.mjs\",\n    \"guard:no-action-twin-routes\": \"node scripts/guard-no-action-twin-routes.mjs\",\n    \"guards\": \"tsx scripts/run-guards.ts\",\n    \"sync:netlify-env\": \"tsx scripts/sync-template-netlify-env.ts\",\n    \"sync:workspace-skills\": \"tsx scripts/sync-workspace-core-skills.ts\",\n    \"sync:plan-marketplace\": \"tsx scripts/sync-plan-marketplace.ts\",\n    \"changeset\": \"changeset\",\n    \"changeset:add\": \"changeset add\",\n    \"changeset:status\": \"changeset status --since=origin/main\",\n    \"changeset:version\": \"changeset version\",\n    \"changeset:publish\": \"pnpm -r build && changeset publish\",\n    \"prep\": \"pnpm fmt && concurrently -n types,test,guard -c cyan,green,yellow \\\"pnpm typecheck\\\" \\\"pnpm test\\\" \\\"pnpm guards\\\"\",\n    \"dev:lazy\": \"node scripts/dev-lazy.ts\",\n    \"dev:desktop\": \"node scripts/dev-lazy.ts --desktop --electron\",\n    \"dev:lazy:desktop\": \"node scripts/dev-lazy.ts --desktop --electron\",\n    \"dev:eager\": \"node scripts/dev-all.ts\",\n    \"dev:eager:desktop\": \"node scripts/dev-all.ts --desktop\",\n    \"dev:all\": \"node scripts/dev-all.ts\",\n    \"dev:all:desktop\": \"node scripts/dev-all.ts --desktop\",\n    \"dev:docs\": \"pnpm --filter @agent-native/docs dev\",\n    \"dev:electron\": \"node scripts/dev-electron.ts\",\n    \"dev:electron:lazy\": \"node scripts/dev-lazy.ts --electron\",\n    \"dev:electron:apps\": \"node scripts/dev-electron.ts --apps\"\n  },\n  \"devDependencies\": {\n    \"@changesets/cli\": \"2.31.0\",\n    \"@cloudflare/vite-plugin\": \"^1.31.0\",\n    \"@libsql/linux-x64-gnu\": \"^0.5.29\",\n    \"@playwright/test\": \"^1.60.0\",\n    \"@typescript/native-preview\": \"7.0.0-dev.20260624.1\",\n    \"concurrently\": \"^9.1.0\"",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "runtime",
      "skill",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "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": "withastro",
    "name": "flue",
    "full_name": "withastro/flue",
    "url": "https://github.com/withastro/flue",
    "description": "The sandbox agent framework.",
    "language": "TypeScript",
    "total_stars": 6679,
    "forks": 371,
    "stars_this_period": 1415,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 13,
      "created_at": "2026-02-07T22:27:04Z",
      "pushed_at": "2026-06-25T10:13:52Z",
      "homepage": "https://www.flueframework.com",
      "default_branch": "main",
      "forks": 371,
      "watchers": 21,
      "archived": false,
      "size_kb": 13524
    },
    "readme_content": "# Flue — The Agent Harness Framework\n\nNot another SDK. Build autonomous agents and powerful AI workflows with Flue's programmable TypeScript harness.\n\n```ts\n// agents/triage.ts\nimport { defineAgent, type AgentRouteHandler } from '@flue/runtime';\nimport { local } from '@flue/runtime/node';\nimport triage from '../skills/triage/SKILL.md' with { type: 'skill' };\nimport verify from '../skills/verify/SKILL.md' with { type: 'skill' };\nimport * as githubTools from '../tools/github.ts';\n\n// Give agents the context and autonomy to solve complex tasks:\nconst instructions = `\nTriage a bug report end-to-end: reproduce the bug,\ndiagnose the root cause, verify whether the behavior is\nintentional, and attempt a fix.\n\n...`;\n\n// Expose (and protect) your agents over HTTP:\nexport const route: AgentRouteHandler = async (_c, next) => next();\n\n// Compose the complete harness your agent needs to do real work,\n// complete with virtual, local, or remote container sandbox.\nexport default defineAgent(() => ({\n  model: 'anthropic/claude-sonnet-4-6',\n  tools: [...githubTools],\n  skills: [triage, verify],\n  sandbox: local(),\n  instructions,\n}));\n```\n\n## The framework for building the next generation of agents.\n\nThe first agents were built with raw LLM API calls. This worked for simple chatbots and scripted tasks, but not much else.\n\nAgents like Claude Code and Codex broke the mold. These were _real agents._ Autonomous. You give them a task — not a pre-defined series of steps — and trust them to complete it using the context and tools that you provide.\n\n**Flue unlocks this new architecture for agents.** Its built-in TypeScript harness gives any model the context and environment it needs for truly autonomous work: sessions, tools, skills, instructions, filesystem access, and a secure sandbox to run in. Run your agents locally via CLI or deploy them to your hosted runtime of choice.\n\n## Features\n\nBuild agents that can safely take action, maintain continuity, and connect to the systems where work already happens.\n\n- **[Agents](https://flueframework.com/docs/guide/building-agents/)** — Build agents that can keep context across conversations and events as they autonomously work toward a goal.\n- **[Workflows](https://flueframework.com/docs/guide/workflows/)** — Run structured automations where your code guides agent reasoning from a clear input to a finished result.\n- **[Sandboxes](https://flueframework.com/docs/guide/sandboxes/)** — Give agents a secure environment where they can use tools, modify files, and autonomously complete real work.\n- **[Durable Execution](https://flueframework.com/docs/guide/durable-execution/)** — Learn how agents preserve progress through failures and restarts with durable recovery for accepted work.\n- **[Subagents](https://flueframework.com/docs/guide/subagents/)** — Define specialized roles for different tasks, then let your agent delegate work to the right expert.\n- **[Tools](https://flueframework.com/docs/guide/tools/)** — Give agents typed actions for calling APIs, querying data, and making controlled changes through your application.\n- **[Skills](https://flueframework.com/docs/guide/skills/)** — Package reusable expertise and workflows that agents can load whenever a task needs specialized guidance.\n- **[MCP Servers](https://flueframework.com/docs/guide/tools/#connect-mcp-tools)** — Connect agents to authenticated tools and services through the open Model Context Protocol ecosystem.\n- **[Observability](https://flueframework.com/docs/guide/observability/)** — Monitor your agents and export telemetry with [OpenTelemetry](https://flueframework.com/docs/ecosystem/tooling/opentelemetry/), [Braintrust](https://flueframework.com/docs/ecosystem/tooling/braintrust/), [Sentry](https://flueframework.com/docs/ecosystem/tooling/sentry/), or your own observer.\n- **[Channels](https://flueframework.com/docs/guide/channels/)** — Receive verified events from Slack, Teams, Discord, GitHub, and more.\n\n## Deploy Anywhere\n\n- **[Node.js](https://flueframework.com/docs/ecosystem/deploy/node/)**\n- **[Cloudflare Workers](https://flueframework.com/docs/ecosystem/deploy/cloudflare/)**\n- **[GitHub Actions](https://flueframework.com/docs/ecosystem/deploy/github-actions/)**\n- **[GitLab CI/CD](https://flueframework.com/docs/ecosystem/deploy/gitlab-ci/)**\n- **[Daytona](https://flueframework.com/docs/ecosystem/sandboxes/daytona/)**\n- **[Render](https://flueframework.com/docs/ecosystem/deploy/render/)**\n\n## Packages\n\n| Package                                         | Description                                            |\n| ----------------------------------------------- | ------------------------------------------------------ |\n| [`@flue/runtime`](packages/runtime)             | Runtime: harness, sessions, tools, sandbox             |\n| [`@flue/cli`](packages/cli)                     | CLI and build/dev tooling (`flue` binary)              |\n| [`@flue/sdk`](packages/sdk)                     | Client SDK for consuming deployed agents and workflows |\n| [`@flue/opentelemetry`](packages/opentelemetry) | OpenTelemetry tracing adapter                          |\n| [`@flue/postgres`](packages/postgres)           | Postgres persistence adapter                           |\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n\t\"name\": \"flue\",\n\t\"type\": \"module\",\n\t\"private\": true,\n\t\"license\": \"Apache-2.0\",\n\t\"packageManager\": \"pnpm@11.1.1\",\n\t\"engines\": {\n\t\t\"node\": \">=22\",\n\t\t\"pnpm\": \">=11 <12\"\n\t},\n\t\"scripts\": {\n\t\t\"dev\": \"turbo dev\",\n\t\t\"build\": \"turbo build\",\n\t\t\"test\": \"turbo test\",\n\t\t\"test:integration\": \"pnpm --dir packages/cli run test:integration:cloudflare\",\n\t\t\"check\": \"turbo run build check:lint check:types && turbo run test\",\n\t\t\"check:lint\": \"biome lint . && knip\",\n\t\t\"check:knip\": \"knip\",\n\t\t\"check:types\": \"turbo run check:types --filter=!apps-www\",\n\t\t\"format\": \"turbo run format:lint format:style\",\n\t\t\"format:lint\": \"biome check . --write\",\n\t\t\"format:style\": \"prettier . --cache --write --list-different\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@biomejs/biome\": \"^2.2.0\",\n\t\t\"@flue/runtime\": \"workspace:*\",\n\t\t\"@types/node\": \"^22.10.10\",\n\t\t\"bgproc\": \"^0.3.0\",\n\t\t\"knip\": \"^6.14.2\",\n\t\t\"prettier\": \"^3.4.2\",\n\t\t\"turbo\": \"^2.3.3\",\n\t\t\"typescript\": \"^6.0.3\"\n\t},\n\t\"dependencies\": {\n\t\t\"just-bash\": \"^3.0.1\",\n\t\t\"valibot\": \"^1.1.0\"\n\t},\n\t\"pnpm\": {\n\t\t\"overrides\": {\n\t\t\t\"typescript\": \"6.0.3\"\n\t\t}\n\t}\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "runtime",
      "skill",
      "workspace",
      "llm",
      "workflow",
      "automation",
      "protocol"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "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": 28588,
    "forks": 1587,
    "stars_this_period": 1411,
    "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": 121,
      "created_at": "2026-03-02T19:46:06Z",
      "pushed_at": "2026-06-24T20:36:16Z",
      "homepage": "https://developers.google.com/workspace",
      "default_branch": "main",
      "forks": 1587,
      "watchers": 94,
      "archived": false,
      "size_kb": 10749
    },
    "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": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 97
    },
    "strategic_score": 97
  },
  {
    "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": 7277,
    "forks": 523,
    "stars_this_period": 1397,
    "source_slice": "all",
    "source_slices": [
      "all",
      "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": 673,
      "created_at": "2026-03-17T03:28:57Z",
      "pushed_at": "2026-06-25T11:16:54Z",
      "homepage": "https://onOrca.dev",
      "default_branch": "main",
      "forks": 523,
      "watchers": 17,
      "archived": false,
      "size_kb": 178093
    },
    "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.98-rc.1\",\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": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 93
    },
    "strategic_score": 93
  },
  {
    "owner": "n0-computer",
    "name": "iroh",
    "full_name": "n0-computer/iroh",
    "url": "https://github.com/n0-computer/iroh",
    "description": "IP addresses break, dial keys instead. Modular networking stack in Rust.",
    "language": "Rust",
    "total_stars": 10749,
    "forks": 492,
    "stars_this_period": 1196,
    "source_slice": "all",
    "source_slices": [
      "all",
      "rust"
    ],
    "metadata": {
      "topics": [
        "does-anyone-read-these",
        "holepunching",
        "memes",
        "multipath",
        "p2p",
        "quic",
        "realtime",
        "rust",
        "tags",
        "tagsoftags"
      ],
      "license": "Apache-2.0",
      "open_issues": 147,
      "created_at": "2022-03-14T19:30:08Z",
      "pushed_at": "2026-06-25T13:22:31Z",
      "homepage": "https://iroh.computer",
      "default_branch": "main",
      "forks": 492,
      "watchers": 69,
      "archived": false,
      "size_kb": 352212
    },
    "readme_content": "<h1 align=\"center\"><a href=\"https://iroh.computer\"><img alt=\"iroh\" src=\"./.img/iroh_wordmark.svg\" width=\"100\" /></a></h1>\n\n<h3 align=\"center\">\nless net work for networks\n</h3>\n\n[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square)](https://docs.rs/iroh/)\n[![Crates.io](https://img.shields.io/crates/v/iroh.svg?style=flat-square)](https://crates.io/crates/iroh)\n[![downloads](https://img.shields.io/crates/d/iroh.svg?style=flat-square)](https://crates.io/crates/iroh)\n[![Chat](https://img.shields.io/discord/1161119546170687619?logo=discord&style=flat-square)](https://discord.com/invite/DpmJgtU7cW)\n[![Youtube](https://img.shields.io/badge/YouTube-red?logo=youtube&logoColor=white&style=flat-square)](https://www.youtube.com/@n0computer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE-MIT)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](LICENSE-APACHE)\n[![CI](https://img.shields.io/github/actions/workflow/status/n0-computer/iroh/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/n0-computer/iroh/actions/workflows/ci.yml)\n\n<div align=\"center\">\n  <h3>\n    <a href=\"https://iroh.computer/docs\">\n      Docs Site\n    </a>\n    <span> | </span>\n    <a href=\"https://docs.rs/iroh\">\n      Rust Docs\n    </a>\n  </h3>\n</div>\n<br/>\n\n## What is iroh?\n\nIroh gives you an API for dialing by public key.\nYou say “connect to that phone”, iroh will find & maintain the fastest connection for you, regardless of where it is.\n\n### Hole-punching\n\nThe fastest route is a direct connection, so if necessary, iroh tries to hole-punch.\nShould this fail, it can fall back to an open ecosystem of public relay servers.\nTo ensure these connections are as fast as possible, we [continuously measure iroh][iroh-perf].\n\n### Built on [QUIC]\n\nIroh uses [noq] to establish [QUIC] connections between endpoints.\nThis way you get authenticated encryption, concurrent streams with stream priorities, a datagram transport and avoid head-of-line-blocking out of the box.\n\n## Compose Protocols\n\nUse pre-existing protocols built on iroh instead of writing your own:\n- [iroh-blobs] for [BLAKE3]-based content-addressed blob transfer scaling from kilobytes to terabytes\n- [iroh-gossip] for establishing publish-subscribe overlay networks that scale, requiring only resources that your average phone can handle\n- [iroh-docs] for an eventually-consistent key-value store of [iroh-blobs] blobs\n\n## Getting Started\n\n### Rust Library\n\nIt's easiest to use iroh from rust.\nInstall it using `cargo add iroh`, then on the connecting side:\n\n```rs\nconst ALPN: &[u8] = b\"iroh-example/echo/0\";\n\nlet endpoint = Endpoint::bind().await?;\n\n// Open a connection to the accepting endpoint\nlet conn = endpoint.connect(addr, ALPN).await?;\n\n// Open a bidirectional QUIC stream\nlet (mut send, mut recv) = conn.open_bi().await?;\n\n// Send some data to be echoed\nsend.write_all(b\"Hello, world!\").await?;\nsend.finish()?;\n\n// Receive the echo\nlet response = recv.read_to_end(1000).await?;\nassert_eq!(&response, b\"Hello, world!\");\n\n// As the side receiving the last application data - say goodbye\nconn.close(0u32.into(), b\"bye!\");\n\n// Close the endpoint and all its connections\nendpoint.close().await;\n```\n\nAnd on the accepting side:\n```rs\nlet endpoint = Endpoint::bind().await?;\n\nlet router = Router::builder(endpoint)\n    .accept(ALPN.to_vec(), Arc::new(Echo))\n    .spawn()\n    .await?;\n\n// The protocol definition:\n#[derive(Debug, Clone)]\nstruct Echo;\n\nimpl ProtocolHandler for Echo {\n    async fn accept(&self, connection: Connection) -> Result<()> {\n        let (mut send, mut recv) = connection.accept_bi().await?;\n\n        // Echo any bytes received back directly.\n        let bytes_sent = tokio::io::copy(&mut recv, &mut send).await?;\n\n        send.finish()?;\n        connection.closed().await;\n\n        Ok(())\n    }\n}\n```\n\nThe full example code with more comments can be found at [`echo.rs`][echo-rs].\n\nOr use one of the pre-existing protocols, e.g. [iroh-blobs] or [iroh-gossip].\n\n### Other Languages\n\nIf you want to use iroh from other languages, make sure to check out [iroh-ffi], the repository for FFI bindings.\n\n### Links\n\n- [Introducing Iroh (video)][iroh-yt-video]\n- [Iroh Documentation][docs]\n- [Iroh Examples]\n- [Iroh Experiments]\n\n## Repository Structure\n\nThis repository contains a workspace of crates:\n- `iroh`: The core library for hole-punching & communicating with relays.\n- `iroh-relay`: The relay client and server implementation. This is the code we run in production for the public relays (and you can, too!).\n- `iroh-base`: Common types like `EndpointId` or `RelayUrl`.\n- `iroh-dns-server`: DNS server implementation powering the DNS/Pkarr address lookup for EndpointIds, running at dns.iroh.link.\n\n## License\n\nCopyright 2025 N0, INC.\n\nThis project is licensed under either of\n\n * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or\n   https://www.apache.org/licenses/LICENSE-2.0)\n * MIT license ([LICENSE-MIT](LICENSE-MIT) or\n   https://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n\n[QUIC]: https://en.wikipedia.org/wiki/QUIC\n[BLAKE3]: https://github.com/BLAKE3-team/BLAKE3\n[noq]: https://github.com/n0-computer/noq\n[iroh-blobs]: https://github.com/n0-computer/iroh-blobs\n[iroh-gossip]: https://github.com/n0-computer/iroh-gossip\n[iroh-docs]: https://github.com/n0-computer/iroh-docs\n[iroh-doctor]: https://github.com/n0-computer/iroh-doctor\n[willow protocol]: https://willowprotocol.org\n[iroh-ffi]: https://github.com/n0-computer/iroh-ffi\n[iroh-yt-video]: https://www.youtube.com/watch?v=RwAt36Xe3UI_\n[Iroh Examples]: https://github.com/n0-computer/iroh-examples\n[Iroh Experiments]: https://github.com/n0-computer/iroh-experiments\n[echo-rs]: /iroh/examples/echo.rs\n[iroh-perf]: https://perf.iroh.computer\n[docs]: https://docs.iroh.computer\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nmembers = [\n  \"iroh-base\",\n  \"iroh-dns\",\n  \"iroh-dns-server\",\n  \"iroh\",\n  \"iroh/bench\",\n  \"iroh-relay\",\n]\nresolver = \"2\"\n\n[profile.release]\ndebug = true\n\n[profile.dev-ci]\ninherits = 'dev'\nopt-level = 1\n\n[profile.optimized-release]\ninherits = 'release'\ndebug = false\nlto = true\ndebug-assertions = false\nopt-level = 3\npanic = 'abort'\nincremental = false\n\n[workspace.lints.rust]\nmissing_debug_implementations = \"warn\"\n\n# We use this --cfg for documenting the cargo features on which an API\n# is available.  To preview this locally use: RUSTDOCFLAGS=\"--cfg\n# iroh_docsrs\" cargo +nightly doc --all-features.  We use our own\n# iroh_docsrs instead of the common docsrs to avoid also enabling this\n# feature in any dependencies, because some indirect dependencies\n# require a feature enabled when using `--cfg docsrs` which we can not\n# do.  To enable for a crate set `#![cfg_attr(iroh_docsrs,\n# feature(doc_cfg))]` in the crate.\n# We also have our own `iroh_loom` cfg to enable tokio-rs/loom testing.\nunexpected_cfgs = { level = \"warn\", check-cfg = [\"cfg(iroh_docsrs)\", \"cfg(iroh_loom)\", \"cfg(skip_patchbay)\"] }\n\n[workspace.lints.clippy]\nunused-async = \"warn\"\n",
    "strategic_keywords": [
      "rag",
      "workspace",
      "workflow",
      "protocol"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "NanmiCoder",
    "name": "MediaCrawler",
    "full_name": "NanmiCoder/MediaCrawler",
    "url": "https://github.com/NanmiCoder/MediaCrawler",
    "description": "小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 ｜ 评论爬虫、微博帖子 ｜ 评论爬虫、百度贴吧帖子 ｜ 百度贴吧评论回复爬虫 | 知乎问答文章｜评论爬虫",
    "language": "Python",
    "total_stars": 52658,
    "forks": 10908,
    "stars_this_period": 1179,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 174,
      "created_at": "2023-06-09T12:14:34Z",
      "pushed_at": "2026-06-18T09:22:51Z",
      "homepage": "https://nanmicoder.github.io/MediaCrawler/",
      "default_branch": "main",
      "forks": 10908,
      "watchers": 223,
      "archived": false,
      "size_kb": 29212
    },
    "readme_content": "# 🔥 MediaCrawler - 自媒体平台爬虫 🕷️\n\n<div align=\"center\">\n\n<a href=\"https://trendshift.io/repositories/8291\" target=\"_blank\">\n  <img src=\"https://trendshift.io/api/badge/repositories/8291\" alt=\"NanmiCoder%2FMediaCrawler | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n</a>\n\n[![GitHub Stars](https://img.shields.io/github/stars/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/network/members)\n[![GitHub Issues](https://img.shields.io/github/issues/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/pulls)\n[![License](https://img.shields.io/github/license/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/blob/main/LICENSE)\n[![中文](https://img.shields.io/badge/🇨🇳_中文-当前-blue)](README.md)\n[![English](https://img.shields.io/badge/🇺🇸_English-Available-green)](README_en.md)\n[![Español](https://img.shields.io/badge/🇪🇸_Español-Available-green)](README_es.md)\n</div>\n\n\n\n> **免责声明：**\n> \n> 大家请以学习为目的使用本仓库⚠️⚠️⚠️⚠️，[爬虫违法违规的案件](https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)  <br>\n>\n>本仓库的所有内容仅供学习和参考之用，禁止用于商业用途。任何人或组织不得将本仓库的内容用于非法用途或侵犯他人合法权益。本仓库所涉及的爬虫技术仅用于学习和研究，不得用于对其他平台进行大规模爬虫或其他非法行为。对于因使用本仓库内容而引起的任何法律责任，本仓库不承担任何责任。使用本仓库的内容即表示您同意本免责声明的所有条款和条件。\n>\n> 点击查看更为详细的免责声明。[点击跳转](#disclaimer)\n\n\n\n\n## 📖 项目简介\n\n一个功能强大的**多平台自媒体数据采集工具**，支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。\n\n### 🔧 技术原理\n\n- **核心技术**：基于 [Playwright](https://playwright.dev/) 浏览器自动化框架登录保存登录态\n- **无需JS逆向**：利用保留登录态的浏览器上下文环境，通过 JS 表达式获取签名参数\n- **优势特点**：无需逆向复杂的加密算法，大幅降低技术门槛\n\n\n## ✨ 功能特性\n| 平台   | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |\n| ------ | ---------- | -------------- | -------- | -------------- | ---------- | -------- | -------------- |\n| 小红书 | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 抖音   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 快手   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| B 站   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 微博   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 贴吧   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 知乎   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n\n\n\n<strong>MediaCrawlerPro 重磅发布！开源不易，欢迎订阅支持</strong>\n\n> 专注于学习成熟项目的架构设计，不仅仅是爬虫技术，Pro 版本的代码设计思路同样值得深入学习！\n\n[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 相较于开源版本的核心优势：\n\n#### 🎯 核心功能升级\n- ✅ **自媒体内容拆解Agent**（新增功能）\n- ✅ **断点续爬功能**（重点特性）\n- ✅ **多账号 + IP代理池支持**（重点特性）\n- ✅ **去除 Playwright 依赖**，使用更简单\n- ✅ **完整 Linux 环境支持**\n\n#### 🏗️ 架构设计优化\n- ✅ **代码重构优化**，更易读易维护（解耦 JS 签名逻辑）\n- ✅ **企业级代码质量**，适合构建大型爬虫项目\n- ✅ **完美架构设计**，高扩展性，源码学习价值更大\n\n#### 🎁 额外功能\n- ✅ **自媒体视频下载器桌面端**（适合学习全栈开发）\n- ✅ **多平台首页信息流推荐**（HomeFeed）\n- ✅ **AI Agent Skill 支持**（[OpenClaw](https://openclaw.ai/) 🦞 / Claude Code / Cursor 一键安装，让 Agent 自动爬取数据）\n- [ ] **基于评论分析AI Agent正在开发中 🚀🚀**\n\n点击查看：[MediaCrawlerPro 项目主页](https://github.com/MediaCrawlerPro) 更多介绍\n\n\n\n## 🚀 快速开始\n\n> 💡 **如果这个项目对您有帮助，请给个 ⭐ Star 支持一下！**\n\n## 📋 前置依赖\n\n### 🚀 uv 安装（推荐）\n\n在进行下一步操作之前，请确保电脑上已经安装了 uv：\n\n- **安装地址**：[uv 官方安装指南](https://docs.astral.sh/uv/getting-started/installation)\n- **验证安装**：终端输入命令 `uv --version`，如果正常显示版本号，证明已经安装成功\n- **推荐理由**：uv 是目前最强的 Python 包管理工具，速度快、依赖解析准确\n\n### 🟢 Node.js 安装\n\n项目依赖 Node.js，请前往官网下载安装：\n\n- **下载地址**：https://nodejs.org/en/download/\n- **版本要求**：>= 16.0.0\n\n### 📦 Python 包安装\n\n```shell\n# 进入项目目录\ncd MediaCrawler\n\n# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性\nuv sync\n```\n\n### 🌐 浏览器驱动安装（可选）\n\n> 如果使用默认的 CDP 模式（连接已有 Chrome 浏览器），**无需安装浏览器驱动**。仅在使用标准 Playwright 模式时需要安装。\n\n```shell\n# 仅在标准 Playwright 模式下需要安装浏览器驱动\nuv run playwright install\n```\n\n### 🌍 Chrome 浏览器配置（推荐）\n\n项目默认使用 CDP 模式连接用户已有的 Chrome 浏览器，可以复用浏览器已有的登录状态、Cookie、扩展等，**大幅降低平台风控检测风险**。\n\n使用前需要：\n\n1. **安装最新版 Chrome 浏览器**（版本 >= 144），[下载地址](https://www.google.com/chrome/)\n2. **开启远程调试功能**：在 Chrome 地址栏输入 `chrome://inspect/#remote-debugging`，勾选 **\"Allow remote debugging for this browser instance\"**\n3. 页面显示 `Server running at: 127.0.0.1:9222` 表示已就绪\n\n> 💡 **提示**：运行爬虫后，Chrome 浏览器会弹出确认对话框，点击\"接受\"即可。程序会等待用户确认，60秒内操作完成即可。\n>\n> 如果不想使用 CDP 模式，可以在 `config/base_config.py` 中设置 `ENABLE_CDP_MODE = False` 切换为标准 Playwright 模式。\n\n## 🚀 运行爬虫程序\n\n```shell\n# 在 config/base_config.py 查看配置项目功能，写的有中文注释\n\n# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论\nuv run main.py --platform xhs --lt qrcode --type search\n\n# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息\nuv run main.py --platform xhs --lt qrcode --type detail\n\n# 打开对应APP扫二维码登录\n\n# 其他平台爬虫使用示例，执行下面的命令查看\nuv run main.py --help\n```\n\n<details>\n<summary>🖥️ <strong>WebUI 可视化操作界面</strong></summary>\n\nMediaCrawler 提供了基于 Web 的可视化操作界面，无需命令行也能轻松使用爬虫功能。\n\n#### 启动 WebUI 服务\n\n```shell\n# 启动 API 服务器（默认端口 8080）\nuv run uvicorn api.main:app --port 8080 --reload\n\n# 或者使用模块方式启动\nuv run python -m api.main\n```\n\n启动成功后，访问 `http://localhost:8080` 即可打开 WebUI 界面。\n\n#### WebUI 功能特性\n\n- 可视化配置爬虫参数（平台、登录方式、爬取类型等）\n- 实时查看爬虫运行状态和日志\n- 数据预览和导出\n\n#### 界面预览\n\n<img src=\"docs/static/images/img_8.png\" alt=\"WebUI 界面预览\">\n\n</details>\n\n<details>\n<summary>🔗 <strong>使用 Python 原生 venv 管理环境（不推荐）</strong></summary>\n\n#### 创建并激活 Python 虚拟环境\n\n> 如果是爬取抖音和知乎，需要提前安装 nodejs 环境，版本大于等于：`16` 即可\n\n```shell\n# 进入项目根目录\ncd MediaCrawler\n\n# 创建虚拟环境\n# 我的 python 版本是：3.11 requirements.txt 中的库是基于这个版本的\n# 如果是其他 python 版本，可能 requirements.txt 中的库不兼容，需自行解决\npython -m venv venv\n\n# macOS & Linux 激活虚拟环境\nsource venv/bin/activate\n\n# Windows 激活虚拟环境\nvenv\\Scripts\\activate\n```\n\n#### 安装依赖库\n\n```shell\npip install -r requirements.txt\n```\n\n#### 安装 playwright 浏览器驱动\n\n```shell\nplaywright install\n```\n\n#### 运行爬虫程序（原生环境）\n\n```shell\n# 项目默认是没有开启评论爬取模式，如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改\n# 一些其他支持项，也可以在 config/base_config.py 查看功能，写的有中文注释\n\n# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论\npython main.py --platform xhs --lt qrcode --type search\n\n# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息\npython main.py --platform xhs --lt qrcode --type detail\n\n# 打开对应APP扫二维码登录\n\n# 其他平台爬虫使用示例，执行下面的命令查看\npython main.py --help\n```\n\n</details>\n\n\n## 💾 数据保存\n\nMediaCrawler 支持多种数据存储方式，包括 CSV、JSON、JSONL、Excel、SQLite 和 MySQL 数据库。\n\n📖 **详细使用说明请查看：[数据存储指南](docs/data_storage_guide.md)**\n\n\n[🚀 MediaCrawlerPro 重磅发布 🚀！更多的功能，更好的架构设计！开源不易，欢迎订阅支持！](https://github.com/MediaCrawlerPro)\n\n\n## 💬 交流群组\n- **微信交流群**：[点击加入](https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html)\n- **B站账号**：[关注我](https://space.bilibili.com/434377496)，分享AI与爬虫技术知识\n\n\n## 💰 赞助商展示\n\n<a href=\"https://tikhub.io/?utm_source=github.com/NanmiCoder/MediaCrawler&utm_medium=marketing_social&utm_campaign=retargeting&utm_content=carousel_ad\">\n<img width=\"500\" src=\"docs/static/images/tikhub_banner_zh.png\">\n<br>\nTikHub.io 提供 900+ 高稳定性数据接口，覆盖 TK、DY、XHS、Y2B、Ins、X 等 14+ 海内外主流平台，支持用户、内容、商品、评论等多维度公开数据 API，并配套 4000 万+ 已清洗结构化数据集，使用邀请码 <code>cfzyejV9</code> 注册并充值，即可额外获得 $2 赠送额度。\n</a>\n<br>\n<br>\n\n<a href=\"https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=mei%27da%27c%27rmeidacrawler\">\n<img width=\"500\" alt=\"Atlas Cloud\" src=\"docs/static/images/atlas_cloud_logo_black.png#gh-light-mode-only\">\n<img width=\"500\" alt=\"Atlas Cloud\" src=\"docs/static/images/atlas_cloud_logo_white.png#gh-dark-mode-only\">\n</a>\n<br>\n<a href=\"https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=mei%27da%27c%27rmeidacrawler\">Atlas Cloud</a> 是一个全模态 AI 推理平台，让开发者通过统一的 AI API 访问视频生成、图像生成和 LLM API，无需分别维护多个厂商集成，即可调用 300+ 精选模型。Atlas Cloud 最新推出 <a href=\"https://www.atlascloud.ai/console/coding-plan\">coding plan 优惠</a>，为开发者提供更具性价比的 API 访问预算。\n\n---\n\n## 🤝 成为赞助者\n\n成为赞助者，可以将您的产品展示在这里，每天获得大量曝光！\n\n**联系方式**：\n- 微信：`relakkes`\n- 邮箱：`relakkes@gmail.com`\n---\n\n## ☕ 请作者喝杯咖啡\n\n如果这个项目对您有帮助，欢迎打赏支持，您的每一份支持都是我持续更新的动力 ❤️\n\n<table>\n<tr>\n<td align=\"center\" width=\"33%\">\n<img src=\"docs/static/images/wechat_pay.jpeg\" width=\"250\" alt=\"微信赞赏\"><br>\n<b>微信赞赏</b>\n</td>\n<td align=\"center\" width=\"33%\">\n<img src=\"docs/static/images/zfb_pay.png\" width=\"250\" alt=\"支付宝\"><br>\n<b>支付宝</b>\n</td>\n<td align=\"center\" width=\"33%\">\n<a href=\"https://buymeacoffee.com/relakkes\" target=\"_blank\">\n<img src=\"docs/static/images/bmc_button.png\" width=\"250\" alt=\"Buy Me a Coffee\">\n</a><br>\n<b>Buy Me a Coffee</b>\n</td>\n</tr>\n</table>\n\n---\n\n## 📚 其他\n- **常见问题**：[MediaCrawler 完整文档](https://nanmicoder.github.io/MediaCrawler/)\n- **爬虫入门教程**：[CrawlerTutorial 免费教程](https://github.com/NanmiCoder/CrawlerTutorial)\n- **新闻爬虫开源项目**：[NewsCrawlerCollection](https://github.com/NanmiCoder/NewsCrawlerCollection)\n\n\n## ⭐ Star 趋势图\n\n如果这个项目对您有帮助，请给个 ⭐ Star 支持一下，让更多的人看到 MediaCrawler！\n\n[![Star History Chart](https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date)](https://star-history.com/#NanmiCoder/MediaCrawler&Date)\n\n\n## 📚 参考\n\n- **小红书签名仓库**：[Cloxl 的 xhs 签名仓库](https://github.com/Cloxl/xhshow)\n- **小红书客户端**：[ReaJason 的 xhs 仓库](https://github.com/ReaJason/xhs)\n- **短信转发**：[SmsForwarder 参考仓库](https://github.com/pppscn/SmsForwarder)\n- **内网穿透工具**：[ngrok 官方文档](https://ngrok.com/docs/)\n\n\n# 免责声明\n<div id=\"disclaimer\"> \n\n## 1. 项目目的与性质\n本项目（以下简称“本项目”）是作为一个技术研究与学习工具而创建的，旨在探索和学习网络数据采集技术。本项目专注于自媒体平台的数据爬取技术研究，旨在提供给学习者和研究者作为技术交流之用。\n\n## 2. 法律合规性声明\n本项目开发者（以下简称“开发者”）郑重提醒用户在下载、安装和使用本项目时，严格遵守中华人民共和国相关法律法规，包括但不限于《中华人民共和国网络安全法》、《中华人民共和国反间谍法》等所有适用的国家法律和政策。用户应自行承担一切因使用本项目而可能引起的法律责任。\n\n## 3. 使用目的限制\n本项目严禁用于任何非法目的或非学习、非研究的商业行为。本项目不得用于任何形式的非法侵入他人计算机系统，不得用于任何侵犯他人知识产权或其他合法权益的行为。用户应保证其使用本项目的目的纯属个人学习和技术研究，不得用于任何形式的非法活动。\n\n## 4. 免责声明\n开发者已尽最大努力确保本项目的正当性及安全性，但不对用户使用本项目可能引起的任何形式的直接或间接损失承担责任。包括但不限于由于使用本项目而导致的任何数据丢失、设备损坏、法律诉讼等。\n\n## 5. 知识产权声明\n本项目的知识产权归开发者所有。本项目受到著作权法和国际著作权条约以及其他知识产权法律和条约的保护。用户在遵守本声明及相关法律法规的前提下，可以下载和使用本项目。\n\n## 6. 最终解释权\n关于本项目的最终解释权归开发者所有。开发者保留随时更改或更新本免责声明的权利，恕不另行通知。\n</div>\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"mediacrawler\"\nauthor = \"程序员阿江-Relakkes <relakkes@gmail.com>\"\nversion = \"0.1.0\"\ndescription = \"A social media crawler project, support Xiaohongshu, Weibo, Zhihu, Bilibili, Douyin, BaiduTieBa etc.\"\nreadme = \"README.md\"\nrequires-python = \">=3.11\"\ndependencies = [\n    \"aiofiles~=23.2.1\",\n    \"aiomysql==0.2.0\",\n    \"aiosqlite>=0.21.0\",\n    \"alembic>=1.16.5\",\n    \"asyncmy>=0.2.10\",\n    \"cryptography>=45.0.7\",\n    \"fastapi==0.110.2\",\n    \"httpx==0.28.1\",\n    \"jieba==0.42.1\",\n    \"matplotlib==3.9.0\",\n    \"motor>=3.3.0\",\n    \"opencv-python>=4.11.0.86\",\n    \"pandas==2.2.3\",\n    \"parsel==1.9.1\",\n    \"pillow==9.5.0\",\n    \"playwright==1.45.0\",\n    \"pydantic==2.5.2\",\n    \"pyexecjs==1.5.1\",\n    \"pyhumps>=3.8.0\",\n    \"python-dotenv==1.0.1\",\n    \"redis~=4.6.0\",\n    \"requests==2.32.3\",\n    \"sqlalchemy>=2.0.43\",\n    \"tenacity==8.2.2\",\n    \"typer>=0.12.3\",\n    \"uvicorn==0.29.0\",\n    \"wordcloud==1.9.3\",\n    \"pre-commit>=3.5.0\",\n    \"openpyxl>=3.1.2\",\n    \"pytest>=7.4.0\",\n    \"pytest-asyncio>=0.21.0\",\n    \"websockets>=15.0.1\",\n    \"asyncpg>=0.31.0\",\n    \"xhshow>=0.1.9\",\n]\n\n[[tool.uv.index]]\nurl = \"https://pypi.tuna.tsinghua.edu.cn/simple\"\ndefault = true\n",
    "strategic_keywords": [
      "agent",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "Kong",
    "name": "insomnia",
    "full_name": "Kong/insomnia",
    "url": "https://github.com/Kong/insomnia",
    "description": "The open-source, cross-platform API client for GraphQL, REST, WebSockets, SSE and gRPC. With Cloud, Local and Git storage.",
    "language": "TypeScript",
    "total_stars": 39706,
    "forks": 2346,
    "stars_this_period": 1167,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "api",
        "api-client",
        "api-design",
        "curl",
        "electron-app",
        "graphql",
        "grpc",
        "http-client",
        "rest-api",
        "websockets"
      ],
      "license": "Apache-2.0",
      "open_issues": 853,
      "created_at": "2016-04-23T03:54:26Z",
      "pushed_at": "2026-06-25T15:40:09Z",
      "homepage": "https://insomnia.rest",
      "default_branch": "develop",
      "forks": 2346,
      "watchers": 244,
      "archived": false,
      "size_kb": 155262
    },
    "readme_content": "# Insomnia API Client\n\n[![Website](https://img.shields.io/badge/Get%20started%20for%20free-8A2BE2)](https://insomnia.rest)\n![Stars](https://img.shields.io/github/stars/Kong/insomnia?style=flat-square)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Kong/insomnia?style=flat-square)\n[![Slack Channel](https://chat.insomnia.rest/badge.svg)](https://chat.insomnia.rest/)\n[![license](https://img.shields.io/github/license/Kong/insomnia.svg)](LICENSE)\n![Twitter Follow](https://img.shields.io/twitter/follow/GetInsomnia?style=social)\n\nInsomnia is an open-source, cross-platform API client for GraphQL, REST, WebSockets, Server-Sent Events (SSE), gRPC and any other HTTP compatible protocol.\n\nWith Insomnia you can:\n\n- **Debug APIs** using the most popular protocols and formats.\n- **Design APIs** using the native OpenAPI editor and visual preview.\n- **Test APIs** using native test suites and collection runner.\n- **Mock APIs** using a cloud or self-hosted mocking server.\n- **Build CI/CD pipelines** using the native Insomnia CLI for linting and testing.\n- **Collaborate with others** using the many collaboration features.\n- **And more** including the ability to use 3rd party plugins.\n\nThe following storage options are supported for your Insomnia projects, collections, design specs and all other resources:\n\n- **Local Vault**: for 100% local storage of collections, design specs and every other resource.\n- **Git Sync**: for Git storage using any 3rd party Git repository, without going through the cloud.\n- **Cloud Sync**: for cloud collaboration, optionally end-to-end encrypted (E2EE) in the cloud.\n\n![Insomnia API Client](https://raw.githubusercontent.com/Kong/insomnia/develop/screenshots/main.png)\n\n## Get started for free\n\nInsomnia is available for Mac, Windows, and Linux and can be downloaded from the website:\n\n**[https://insomnia.rest](https://insomnia.rest)**\n\n## Account & Subscriptions\n\nYou can use Insomnia without an account with the local **Scratch Pad**, or you can [create an account for free](https://insomnia.rest/pricing) to get access to the full capabilities of the product.\n\nEven with an account, Insomnia only stores your projects and files accordingly to the **storage backend** that you have selected, which can be Local Vault, Cloud Sync, Git Sync or any combination of them. As such - for example - you have the freedom to choose to store sensitive projects 100% locally or in a Git repository, while still being able to collaborate on others in the cloud. It's the best of both worlds.\n\nFor added security, Insomnia also offers a **Private Environments** feature, where your environments configuration is always stored locally and never in the cloud, independently from the storage option that you have chosen for your project.\n\n## Premium features and support\n\nInsomnia has a very generous free plan that will be satisfactory for most users, but if you need to get access to premium capabilities like unlimited collaboration, the Git Sync feature, the ability to create organizations for your projects, using a 3rd party IDP for logins (SAML, OIDC) and many other features, then you can explore the other subscription plans.\n\nYou can [compare all subscription plans](https://insomnia.rest/pricing) and get started for free.\n\n## Why does Insomnia require an account?\n\nInsomnia does not require an account if you decide to use the local **Scratch Pad**, but to access most capabilities of the product we require an account. Your account data is securely stored in compliance with ISO27001, SOC 2 Type II, ISO27018, Gold CSA STAR regulations and in accordance with our terms of service and privacy policy.\n\nWe require an account to sustainably build and improve the product, and to make sure we can continue to offer the many core capabilities in a free and open-source distribution. While open source software is free to use, it is unfortunately not free to build, and our ability to continue working on Insomnia is dependent on our ability to convert a subset of free users (that need premium features) to become paying customers of our product.\n\nIf you are a user that cannot share API data like collections and design specifications to the cloud, this is still possible by selecting \"Local Vault\" as the storage of your Insomnia projects: having an Insomnia account is not tied to how you wish to store your sensitive API data (which can be stored 100% locally via Local Vault, on a 3rd party Git repository without any cloud storage via Git Sync, or in the cloud for ease of collaboration via Cloud Sync).\n\n## Bugs and Feature Requests\n\nHave a bug or a feature request? First, read the\n[issue guidelines](CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/Kong/insomnia/issues).\n\nFor more generic product questions and feedback, join the [Slack Team](https://chat.insomnia.rest).\n\n## Contributing\n\nPlease read through our [contributing guidelines](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md). Included are directions for opening issues, coding standards, and notes on development.\n\n## Documentation\n\nCheck out our official [Insomnia Documentation](https://docs.insomnia.rest/).\n\n## Develop Insomnia\n\nDevelopment on Insomnia can be done on Mac, Windows, or Linux as long as you have [Node.js](https://nodejs.org) and [Git](https://git-scm.com/). See the `.nvmrc` file located in the project for the correct Node version.\n\n<details>\n<summary>Initial Dev Setup</summary>\n\nThis repository is structured as a monorepo and contains many Node.JS packages. Each package has its own set of commands, but the most common commands are available from the root [`package.json`](package.json) and can be accessed using the `npm run …` command. Here are the only three commands you should need to start developing on the app.\n\n```shell\n# Install and Link Dependencies\nnpm i\n\n# Run Lint\nnpm run lint\n\n# Run type checking\nnpm run type-check\n\n# Run Tests\nnpm test\n\n# Start App with Live Reload\nnpm run dev\n\n# Start App with both renderer process live reload and main process auto restart\nnpm run dev:autoRestart\n```\n\n### Linux\n\nIf you are on Linux, you may need to install the following supporting packages:\n\n<details>\n<summary>Ubuntu/Debian</summary>\n\n```shell\n# Update library\nsudo apt-get update\n\n# Install font configuration library & support\nsudo apt-get install libfontconfig-dev\n```\n\n</details>\n\n<details>\n<summary>Fedora</summary>\n\n```shell\n# Install libcurl for node-libcurl\nsudo dnf install libcurl-devel\n```\n\n</details>\n\nAlso on Linux, if Electron is failing during the install process, run the following\n\n```shell\n# Clear Electron install conflicts\nrm -rf ~/.cache/electron\n```\n\n### Windows\n\nIf you are on Windows and have problems, you may need to install [Windows Build Tools](https://github.com/felixrieseberg/windows-build-tools)\n\n</details>\n\n<details>\n<summary>Editor Requirements</summary>\n\nYou can use any editor you'd like, but make sure to have support/plugins for the following tools:\n\n- [ESLint](http://eslint.org/) - For catching syntax problems and common errors\n- [JSX Syntax](https://facebook.github.io/react/docs/jsx-in-depth.html) - For React components\n\n</details>\n\n## Develop Inso CLI\n\n- `npm i`\n- Start the compiler in watch mode: `npm run inso-start`\n- Run: `./packages/insomnia-inso/bin/inso -v`\n\n## Plugins\n\nSearch for, discover, and install plugins from the Insomnia [Plugin Hub](https://insomnia.rest/plugins/)!\n\n## Community Projects\n\n- [Insomnia Documenter](https://github.com/jozsefsallai/insomnia-documenter) - Generate beautiful API documentation pages using the [documenter plugin](https://insomnia.rest/plugins/insomnia-plugin-documenter) or your Insomnia export file.\n- [GitHub API Spec Importer](https://github.com/swinton/github-rest-apis-for-insomnia) - A complete set of GitHub REST API route specifications that can be imported straight into Insomnia.\n- [Swaggymnia](https://github.com/mlabouardy/swaggymnia) - Generate [Swagger](https://swagger.io/) documentation for your existing API in Insomnia.\n\n## License\n\n[Apache-2.0](LICENSE) &copy; [Insomnia](https://insomnia.rest)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"insomnia\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"author\": \"Kong <office@konghq.com>\",\n  \"description\": \"Insomnia is a cross-platform REST client, built on top of Electron.\",\n  \"license\": \"Apache-2.0\",\n  \"repository\": \"https://github.com/kong/insomnia\",\n  \"bugs\": {\n    \"url\": \"https://github.com/kong/insomnia/issues\"\n  },\n  \"homepage\": \"https://github.com/kong/insomnia#readme\",\n  \"engines\": {\n    \"node\": \">=24\",\n    \"npm\": \">=11\"\n  },\n  \"workspaces\": [\n    \"packages/insomnia-testing\",\n    \"packages/insomnia\",\n    \"packages/insomnia-data\",\n    \"packages/insomnia-analytics\",\n    \"packages/insomnia-api\",\n    \"packages/insomnia-inso\",\n    \"packages/insomnia-smoke-test\",\n    \"packages/insomnia-scripting-environment\"\n  ],\n  \"scripts\": {\n    \"dev\": \"npm start -w insomnia\",\n    \"dev:autoRestart\": \"npm run start:autoRestart -w insomnia\",\n    \"lint\": \"npm run lint --workspaces --if-present\",\n    \"type-check\": \"npm run type-check --workspaces --if-present\",\n    \"test\": \"npm run test --workspaces --if-present\",\n    \"clean\": \"git clean -dfX\",\n    \"install-libcurl-electron\": \"node-pre-gyp install --directory node_modules/@getinsomnia/node-libcurl --update-binary --runtime=electron --target=41.0.3\",\n    \"install-libcurl-node\": \"node-pre-gyp install --directory node_modules/@getinsomnia/node-libcurl --update-binary --runtime=node --target=24.14.0\",\n    \"inso-start\": \"npm start -w insomnia-inso\",\n    \"inso-package\": \"npm run build -w insomnia-inso && npm run package -w insomnia-inso\",\n    \"watch:app\": \"npm run build:electron-entrypoints -w insomnia && npm run start:dev-server -w insomnia\",\n    \"app-build\": \"npm run build -w insomnia\",\n    \"app-package\": \"npm run package -w insomnia\",\n    \"test:smoke:dev\": \"npm run test:dev -w insomnia-smoke-test -- --project=Smoke\",\n    \"test:smoke:build\": \"npm run test:build -w insomnia-smoke-test -- --project=Smoke\",\n    \"test:smoke:package\": \"npm run test:package -w insomnia-smoke-test -- --project=Smoke\",\n    \"test:crit:package\": \"npm run test:package -w insomnia-smoke-test -- --project=Critical\",\n    \"test:crit:dev\": \"npm run test:dev -w insomnia-smoke-test -- --project=Critical\",\n    \"postinstall\": \"patch-package && npm run verify-bundle-plugins -w insomnia && npm run install-libcurl-electron\",\n    \"check-cycle-references\": \"madge --circular --extensions ts,tsx packages\"\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.23.0\",\n    \"@types/chai\": \"^4.3.14\",\n    \"@types/har-format\": \"^1.2.15\",\n    \"@types/mocha\": \"^10.0.6\",\n    \"@types/node\": \"^24.2.1\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.29.0\",\n    \"@typescript-eslint/parser\": \"^8.29.0\",\n    \"esbuild\": \"^0.25.10\",\n    \"esbuild-runner\": \"^2.2.2\",\n    \"eslint\": \"^9.39.1\",\n    \"eslint-config-prettier\": \"^10.1.8\",\n    \"eslint-plugin-playwright\": \"^2.3.0\",\n    \"eslint-plugin-react\": \"^7.37.5\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"eslint-plugin-simple-import-sort\": \"^12.1.1\",\n    \"eslint-plugin-unicorn\": \"^62.0.0\",\n    \"globals\": \"^16.5.0\",\n    \"madge\": \"^8.0.0\",\n    \"patch-package\": \"^8.0.0\",\n    \"prettier\": \"3.6.2\",\n    \"prettier-plugin-tailwindcss\": \"^0.7.1\",\n    \"tslib\": \"2.0.1\",\n    \"type-fest\": \"^4.15.0\",\n    \"typescript\": \"5.8.3\",\n    \"typescript-eslint\": \"^8.29.0\",\n    \"vitest\": \"^3.2.4\"\n  },\n  \"overrides\": {\n    \"ajv-draft-04\": {\n      \"ajv\": \"$ajv\"\n    },\n    \"jshint\": {\n      \"lodash\": \"4.18.1\"\n    }\n  },\n  \"dependencies\": {\n    \"@getinsomnia/node-libcurl\": \"3.2.2\",\n    \"ajv\": \"^8.17.1\"\n  }\n}\n",
    "strategic_keywords": [
      "rag",
      "workspace",
      "protocol"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "coreyhaines31",
    "name": "marketingskills",
    "full_name": "coreyhaines31/marketingskills",
    "url": "https://github.com/coreyhaines31/marketingskills",
    "description": "Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.",
    "language": "JavaScript",
    "total_stars": 34955,
    "forks": 5712,
    "stars_this_period": 1115,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "claude",
        "codex",
        "marketing"
      ],
      "license": "MIT",
      "open_issues": 35,
      "created_at": "2026-01-15T19:45:23Z",
      "pushed_at": "2026-06-17T06:35:43Z",
      "homepage": "https://marketing-skills.com",
      "default_branch": "main",
      "forks": 5712,
      "watchers": 341,
      "archived": false,
      "size_kb": 2375
    },
    "readme_content": "# Marketing Skills for AI Agents\n\nA collection of AI agent skills focused on marketing tasks. Built for technical marketers and founders who want AI coding agents to help with conversion optimization, copywriting, SEO, analytics, and growth engineering. Works with Claude Code, OpenAI Codex, Cursor, Windsurf, and any agent that supports the [Agent Skills spec](https://agentskills.io).\n\nBuilt by [Corey Haines](https://corey.co?ref=marketingskills). Need hands-on help? Check out [Conversion Factory](https://conversionfactory.co?ref=marketingskills) — Corey's agency for conversion optimization, landing pages, and growth strategy. Want to learn more about marketing? Subscribe to [Swipe Files](https://swipefiles.com?ref=marketingskills). Want to get dangerously good at using AI for marketing? Check out [AI Marketing Training](https://conversionfactory.co/offers/ai-marketing-training?ref=marketingskills). Want an autonomous AI agent that uses these skills to be your CMO? Try [Magister](https://magistermarketing.com?ref=marketingskills).\n\nNew to the terminal and coding agents? Check out the companion guide [Coding for Marketers](https://codingformarketers.com?ref=marketingskills).\n\n**Contributions welcome!** Found a way to improve a skill or have a new one to add? [Open a PR](#contributing).\n\nRun into a problem or have a question? [Open an issue](https://github.com/coreyhaines31/marketingskills/issues) — we're happy to help.\n\n## What are Skills?\n\nSkills are markdown files that give AI agents specialized knowledge and workflows for specific tasks. When you add these to your project, your agent can recognize when you're working on a marketing task and apply the right frameworks and best practices.\n\n## How Skills Work Together\n\nSkills reference each other and build on shared context. The `product-marketing` skill is the foundation — every other skill checks it first to understand your product, audience, and positioning before doing anything.\n\n```\n                            ┌──────────────────────────────────────┐\n                            │          product-marketing           │\n                            │    (read by all other skills first)  │\n                            └──────────────────┬───────────────────┘\n                                               │\n    ┌──────────────┬─────────────┬─────────────┼─────────────┬──────────────┬──────────────┐\n    ▼              ▼             ▼             ▼             ▼              ▼              ▼\n┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐ ┌──────────┐ ┌─────────────┐ ┌───────────┐\n│  SEO &   │ │   CRO    │ │Content & │ │  Paid &    │ │ Growth & │ │  Sales &    │ │ Strategy  │\n│ Content  │ │          │ │   Copy   │ │Measurement │ │Retention │ │    GTM      │ │           │\n├──────────┤ ├──────────┤ ├──────────┤ ├────────────┤ ├──────────┤ ├─────────────┤ ├───────────┤\n│seo-audit │ │cro       │ │copywritng│ │ads         │ │referrals │ │revops       │ │mktg-ideas │\n│ai-seo    │ │signup    │ │copy-edit │ │ad-creative │ │free-tools│ │sales-enable │ │mktg-psych │\n│site-arch │ │onboarding│ │cold-email│ │ab-testing  │ │churn-    │ │launch       │ │customer-  │\n│programm  │ │popups    │ │emails    │ │analytics   │ │ prevent  │ │pricing      │ │ research  │\n│schema    │ │paywalls  │ │social    │ │            │ │community │ │competitors  │ │           │\n│content   │ │          │ │video     │ │            │ │lead-magnt│ │comp-profile │ │           │\n│aso       │ │          │ │image     │ │            │ │co-mktg   │ │directory    │ │           │\n│          │ │          │ │sms       │ │            │ │          │ │prospecting  │ │           │\n└────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬──────┘ └────┬─────┘ └──────┬──────┘ └─────┬─────┘\n     │            │            │              │             │              │              │\n     └────────────┴─────┬──────┴──────────────┴─────────────┴──────────────┴──────────────┘\n                        │\n         Skills cross-reference each other:\n           copywriting ↔ cro ↔ ab-testing\n           revops ↔ sales-enablement ↔ cold-email\n           seo-audit ↔ schema ↔ ai-seo\n           customer-research → copywriting, cro, competitors\n```\n\nSee each skill's **Related Skills** section for the full dependency map.\n\n## Available Skills\n\n<!-- SKILLS:START -->\n| Skill | Description |\n|-------|-------------|\n| [ab-testing](skills/ab-testing/) | When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program.... |\n| [ad-creative](skills/ad-creative/) | When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad... |\n| [ads](skills/ads/) | When the user wants help with paid advertising campaigns on Google Ads, Meta (Facebook/Instagram), LinkedIn, Twitter/X,... |\n| [ai-seo](skills/ai-seo/) | When the user wants to optimize content for AI search engines, get cited by LLMs, or appear in AI-generated answers.... |\n| [analytics](skills/analytics/) | When the user wants to set up, improve, or audit analytics tracking and measurement. Also use when the user mentions... |\n| [aso](skills/aso/) | When the user wants to audit or optimize an App Store or Google Play listing. Also use when the user mentions 'ASO... |\n| [churn-prevention](skills/churn-prevention/) | When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or... |\n| [co-marketing](skills/co-marketing/) | When the user wants to find co-marketing partners, plan joint campaigns, or brainstorm partnership opportunities. Use... |\n| [cold-email](skills/cold-email/) | Write B2B cold emails and follow-up sequences that get replies. Use when the user wants to write cold outreach emails,... |\n| [community-marketing](skills/community-marketing/) | Build and leverage online communities to drive product growth and brand loyalty. Use when the user wants to create a... |\n| [competitor-profiling](skills/competitor-profiling/) | When the user wants to research, profile, or analyze competitors from their URLs. Also use when the user mentions... |\n| [competitors](skills/competitors/) | When the user wants to create competitor comparison or alternative pages for SEO and sales enablement. Also use when... |\n| [content-strategy](skills/content-strategy/) | When the user wants to plan a content strategy, decide what content to create, or figure out what topics to cover. Also... |\n| [copy-editing](skills/copy-editing/) | When the user wants to edit, review, or improve existing marketing copy, or refresh outdated content. Also use when the... |\n| [copywriting](skills/copywriting/) | When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages,... |\n| [cro](skills/cro/) | When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage,... |\n| [customer-research](skills/customer-research/) | When the user wants to conduct, analyze, or synthesize customer research. Use when the user mentions \"customer... |\n| [directory-submissions](skills/directory-submissions/) | When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for... |\n| [emails](skills/emails/) | When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email... |\n| [free-tools](skills/free-tools/) | When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or... |\n| [image](skills/image/) | When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product... |\n| [launch](skills/launch/) | When the user wants to plan a product launch, feature announcement, or release strategy. Also use when the user... |\n| [lead-magnets](skills/lead-magnets/) | When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation. Also use when the... |\n| [marketing-ideas](skills/marketing-ideas/) | When the user needs marketing ideas, inspiration, or strategies for their SaaS or software product. Also use when the... |\n| [marketing-plan](skills/marketing-plan/) | When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product. Also use... |\n| [marketing-psychology](skills/marketing-psychology/) | When the user wants to apply psychological principles, mental models, or behavioral science to marketing. Also use when... |\n| [offers](skills/offers/) | When the user wants to design, construct, or improve an offer — the thing they actually sell — including value framing,... |\n| [onboarding](skills/onboarding/) | When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value. Also... |\n| [paywalls](skills/paywalls/) | When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use... |\n| [popups](skills/popups/) | When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also... |\n| [pricing](skills/pricing/) | When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions... |\n| [product-marketing](skills/product-marketing/) | When the user wants to create or update their product marketing context document. Also use when the user mentions... |\n| [programmatic-seo](skills/programmatic-seo/) | When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions... |\n| [prospecting](skills/prospecting/) | When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or... |\n| [public-relations](skills/public-relations/) | When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy... |\n| [referrals](skills/referrals/) | When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy.... |\n| [revops](skills/revops/) | When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes.... |\n| [sales-enablement](skills/sales-enablement/) | When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also... |\n| [schema](skills/schema/) | When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user... |\n| [seo-audit](skills/seo-audit/) | When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions \"SEO... |\n| [signup](skills/signup/) | When the user wants to optimize signup, registration, account creation, or trial activation flows. Also use when the... |\n| [site-architecture](skills/site-architecture/) | When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal... |\n| [sms](skills/sms/) | When the user wants to plan, build, or optimize SMS or MMS marketing — including welcome flows, abandoned cart texts,... |\n| [social](skills/social/) | When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram,... |\n| [video](skills/video/) | When the user wants to create, generate, or produce video content using AI tools or programmatic frameworks. Also use... |\n<!-- SKILLS:END -->\n\n## Installation\n\n### Option 1: CLI Install (Recommended)\n\nUse [npx skills](https://github.com/vercel-labs/skills) to install skills directly:\n\n```bash\n# Install all skills\nnpx skills add coreyhaines31/marketingskills\n\n# Install specific skills\nnpx skills add coreyhaines31/marketingskills --skill cro copywriting\n\n# List available skills\nnpx skills add coreyhaines31/marketingskills --list\n```\n\nThis au",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "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": 7262,
    "forks": 443,
    "stars_this_period": 998,
    "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": 22,
      "created_at": "2026-03-27T17:54:33Z",
      "pushed_at": "2026-06-25T14:59:18Z",
      "homepage": "https://herdr.dev",
      "default_branch": "master",
      "forks": 443,
      "watchers": 18,
      "archived": false,
      "size_kb": 29337
    },
    "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": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "cjpais",
    "name": "Handy",
    "full_name": "cjpais/Handy",
    "url": "https://github.com/cjpais/Handy",
    "description": "A free, open source, and extensible speech-to-text application that works completely offline.",
    "language": "Rust",
    "total_stars": 24890,
    "forks": 2100,
    "stars_this_period": 924,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "accessibility",
        "cross-platform",
        "speech-to-text",
        "tauri-v2"
      ],
      "license": "MIT",
      "open_issues": 174,
      "created_at": "2025-02-13T02:42:29Z",
      "pushed_at": "2026-06-25T14:12:15Z",
      "homepage": "https://handy.computer",
      "default_branch": "main",
      "forks": 2100,
      "watchers": 75,
      "archived": false,
      "size_kb": 10227
    },
    "readme_content": "# Handy\n\n[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/WVBeWsNXK4)\n\n**A free, open source, and extensible speech-to-text application that works completely offline.**\n\nHandy is a cross-platform desktop application that provides simple, privacy-focused speech transcription. Press a shortcut, speak, and have your words appear in any text field. This happens on your own computer without sending any information to the cloud.\n\n## Why Handy?\n\nHandy was created to fill the gap for a truly open source, extensible speech-to-text tool. As stated on [handy.computer](https://handy.computer):\n\n- **Free**: Accessibility tooling belongs in everyone's hands, not behind a paywall\n- **Open Source**: Together we can build further. Extend Handy for yourself and contribute to something bigger\n- **Private**: Your voice stays on your computer. Get transcriptions without sending audio to the cloud\n- **Simple**: One tool, one job. Transcribe what you say and put it into a text box\n\nHandy isn't trying to be the best speech-to-text app—it's trying to be the most forkable one.\n\n## How It Works\n\n1. **Press** a configurable keyboard shortcut to start/stop recording (or use push-to-talk mode)\n2. **Speak** your words while the shortcut is active\n3. **Release** and Handy processes your speech using Whisper\n4. **Get** your transcribed text pasted directly into whatever app you're using\n\nThe process is entirely local:\n\n- Silence is filtered using VAD (Voice Activity Detection) with Silero\n- Transcription uses your choice of models:\n  - **Whisper models** (Small/Medium/Turbo/Large) with GPU acceleration when available\n  - **Parakeet V3** - CPU-optimized model with excellent performance and automatic language detection\n- Works on Windows, macOS, and Linux\n\n## Quick Start\n\n### Installation\n\n1. Download the latest release from the [releases page](https://github.com/cjpais/Handy/releases) or the [website](https://handy.computer)\n   - **macOS**: Also available via [Homebrew cask](https://formulae.brew.sh/cask/handy): `brew install --cask handy`\n   - **Windows**: Also available via [winget](https://github.com/microsoft/winget-pkgs): `winget install cjpais.Handy` \\\n     **Note:** The Homebrew cask and winget package are not maintained by the Handy developers.\n2. Install the application\n3. Launch Handy and grant necessary system permissions (microphone, accessibility)\n4. Configure your preferred keyboard shortcuts in Settings\n5. Start transcribing!\n\n### Development Setup\n\nFor detailed build instructions including platform-specific requirements, see [BUILD.md](BUILD.md).\n\n## Integrations\n\n<a href=\"https://www.raycast.com/mattiacolombomc/handy\" title=\"Install Handy Raycast Extension\"><img src=\"https://www.raycast.com/mattiacolombomc/handy/install_button@2x.png?v=1.1\" height=\"64\" style=\"height: 64px;\" alt=\"Install handy Raycast Extension\" /></a>\n\nControl Handy from [Raycast](https://www.raycast.com) — start/stop recording, browse transcript history, manage dictionary, switch models and languages.\n\n[Source](https://github.com/mattiacolombomc/raycast-handy) · by [@mattiacolombomc](https://github.com/mattiacolombomc)\n\n## Architecture\n\nHandy is built as a Tauri application combining:\n\n- **Frontend**: React + TypeScript with Tailwind CSS for the settings UI\n- **Backend**: Rust for system integration, audio processing, and ML inference\n- **Core Libraries**:\n  - `whisper-rs`: Local speech recognition with Whisper models\n  - `transcribe-rs`: CPU-optimized speech recognition with Parakeet models\n  - `cpal`: Cross-platform audio I/O\n  - `vad-rs`: Voice Activity Detection\n  - `rdev`: Global keyboard shortcuts and system events\n  - `rubato`: Audio resampling\n\n### Debug Mode\n\nHandy includes an advanced debug mode for development and troubleshooting. Access it by pressing:\n\n- **macOS**: `Cmd+Shift+D`\n- **Windows/Linux**: `Ctrl+Shift+D`\n\n### CLI Parameters\n\nHandy supports command-line flags for controlling a running instance and customizing startup behavior. These work on all platforms (macOS, Windows, Linux).\n\n**Remote control flags** (sent to an already-running instance via the single-instance plugin):\n\n```bash\nhandy --toggle-transcription    # Toggle recording on/off\nhandy --toggle-post-process     # Toggle recording with post-processing on/off\nhandy --cancel                  # Cancel the current operation\n```\n\n**Startup flags:**\n\n```bash\nhandy --start-hidden            # Start without showing the main window\nhandy --no-tray                 # Start without the system tray icon\nhandy --debug                   # Enable debug mode with verbose logging\nhandy --help                    # Show all available flags\n```\n\nFlags can be combined for autostart scenarios:\n\n```bash\nhandy --start-hidden --no-tray\n```\n\n> **macOS tip:** When Handy is installed as an app bundle, invoke the binary directly:\n>\n> ```bash\n> /Applications/Handy.app/Contents/MacOS/Handy --toggle-transcription\n> ```\n\n## Known Issues & Current Limitations\n\nThis project is actively being developed and has some [known issues](https://github.com/cjpais/Handy/issues). We believe in transparency about the current state:\n\n### Major Issues (Help Wanted)\n\n**Whisper Model Crashes:**\n\n- Whisper models crash on certain system configurations (Windows and Linux)\n- Does not affect all systems - issue is configuration-dependent\n  - If you experience crashes and are a developer, please help to fix and provide debug logs!\n\n**Wayland Support (Linux):**\n\n- Limited support for Wayland display server\n- Requires [`wtype`](https://github.com/atx/wtype) or [`dotool`](https://sr.ht/~geb/dotool/) for text input to work correctly (see [Linux Notes](#linux-notes) below for installation)\n\n### Linux Notes\n\n**Text Input Tools:**\n\nFor reliable text input on Linux, install the appropriate tool for your display server:\n\n| Display Server | Recommended Tool | Install Command                                    |\n| -------------- | ---------------- | -------------------------------------------------- |\n| X11            | `xdotool`        | `sudo apt install xdotool`                         |\n| Wayland        | `wtype`          | `sudo apt install wtype`                           |\n| Both           | `dotool`         | `sudo apt install dotool` (requires `input` group) |\n\n- **X11**: Install `xdotool` for both direct typing and clipboard paste shortcuts\n- **Wayland**: Install `wtype` (preferred) or `dotool` for text input to work correctly\n- **dotool setup**: Requires adding your user to the `input` group: `sudo usermod -aG input $USER` (then log out and back in)\n\nWithout these tools, Handy falls back to enigo which may have limited compatibility, especially on Wayland.\n\n**Other Notes:**\n\n- **Runtime library dependency (`libgtk-layer-shell.so.0`)**:\n  - Handy links `gtk-layer-shell` on Linux. If startup fails with `error while loading shared libraries: libgtk-layer-shell.so.0`, install the runtime package for your distro:\n\n    | Distro        | Package to install    | Example command                        |\n    | ------------- | --------------------- | -------------------------------------- |\n    | Ubuntu/Debian | `libgtk-layer-shell0` | `sudo apt install libgtk-layer-shell0` |\n    | Fedora/RHEL   | `gtk-layer-shell`     | `sudo dnf install gtk-layer-shell`     |\n    | Arch Linux    | `gtk-layer-shell`     | `sudo pacman -S gtk-layer-shell`       |\n\n  - For building from source on Ubuntu/Debian, you may also need `libgtk-layer-shell-dev`.\n\n- The recording overlay is disabled by default on Linux (`Overlay Position: None`) because certain compositors treat it as the active window. When the overlay is visible it can steal focus, which prevents Handy from pasting back into the application that triggered transcription. If you enable the overlay anyway, be aware that clipboard-based pasting might fail or end up in the wrong window.\n- If you are having trouble with the app, running with the environment variable `WEBKIT_DISABLE_DMABUF_RENDERER=1` may help\n- If Handy fails to start reliably on Linux, see [Troubleshooting → Linux Startup Crashes or Instability](#linux-startup-crashes-or-instability).\n- **Global keyboard shortcuts (Wayland):** On Wayland, system-level shortcuts must be configured through your desktop environment or window manager. Use the [CLI flags](#cli-parameters) as the command for your custom shortcut.\n\n  **GNOME:**\n  1. Open **Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts**\n  2. Click the **+** button to add a new shortcut\n  3. Set the **Name** to `Toggle Handy Transcription`\n  4. Set the **Command** to `handy --toggle-transcription`\n  5. Click **Set Shortcut** and press your desired key combination (e.g., `Super+O`)\n\n  **KDE Plasma:**\n  1. Open **System Settings > Shortcuts > Custom Shortcuts**\n  2. Click **Edit > New > Global Shortcut > Command/URL**\n  3. Name it `Toggle Handy Transcription`\n  4. In the **Trigger** tab, set your desired key combination\n  5. In the **Action** tab, set the command to `handy --toggle-transcription`\n\n  **Sway / i3:**\n\n  Add to your config file (`~/.config/sway/config` or `~/.config/i3/config`):\n\n  ```ini\n  bindsym $mod+o exec handy --toggle-transcription\n  ```\n\n  **Hyprland:**\n\n  Add to your config file (`~/.config/hypr/hyprland.conf`):\n\n  ```ini\n  bind = $mainMod, O, exec, handy --toggle-transcription\n  ```\n\n- You can also manage global shortcuts outside of Handy via Unix signals, which lets Wayland window managers or other hotkey daemons keep ownership of keybindings:\n\n  | Signal    | Action                                    | Example                |\n  | --------- | ----------------------------------------- | ---------------------- |\n  | `SIGUSR2` | Toggle transcription                      | `pkill -USR2 -n handy` |\n  | `SIGUSR1` | Toggle transcription with post-processing | `pkill -USR1 -n handy` |\n\n  Example Sway config:\n\n  ```ini\n  bindsym $mod+o exec pkill -USR2 -n handy\n  bindsym $mod+p exec pkill -USR1 -n handy\n  ```\n\n  `pkill` here simply delivers the signal—it does not terminate the process.\n\n**Overlay & Pasting Issues (Linux):**\n\n- The recording overlay window can interfere with pasting transcribed text into target applications on Linux (X11)\n- **Solution:** Open **Settings > Advanced** and set **\"Overlay Position\"** to **\"None\"** to disable the overlay\n- Enable **\"Audio Feedback\"** (also in Advanced) if you still want audible confirmation of recording state\n- Users who upgrade from older versions or import settings from other platforms may need to manually apply this change\n\n### Platform Support\n\n- **macOS (both Intel and Apple Silicon)**\n- **x64 Windows**\n- **x64 Linux**\n\n### System Requirements/Recommendations\n\nThe following are recommendations for running Handy on your own machine. If you don't meet the system requirements, the performance of the application may be degraded. We are working on improving the performance across all kinds of computers and hardware.\n\n**For Whisper Models:**\n\n- **macOS**: M series Mac, Intel Mac\n- **Windows**: Intel, AMD, or NVIDIA GPU\n- **Linux**: Intel, AMD, or NVIDIA GPU\n  - Ubuntu 22.04, 24.04\n\n**For Parakeet V3 Model:**\n\n- **CPU-only operation** - runs on a wide variety of hardware\n- **Minimum**: Intel Skylake (6th gen) or equivalent AMD processors\n- **Performance**: ~5x real-time speed on mid-range hardware (tested on i5)\n- **Automatic language detection** - no manual language selection required\n\n## Roadmap & Active Development\n\nWe're actively working on several features and improvements. Contributions and feedback are welcome!\n\n### In Progress\n\n**Debug Logging:**\n\n- Adding debug logging to a file to help diagnose issues\n\n**macOS Keyboard Improvements:**\n\n- Support for Globe key as transcription trigger\n- A rewrite of global shortcut handling for MacOS, and potentially other OS's too.\n\n**Opt-in Analytics:**\n\n- Collect anonymous usage data to help improve Handy\n- Privacy-first approach with clear opt-in\n\n**Sett",
    "strategic_keywords": [
      "inference"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 7,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 7,
      "risk_signal": 6,
      "total": 70
    },
    "strategic_score": 70
  },
  {
    "owner": "interviewstreet",
    "name": "hiring-agent",
    "full_name": "interviewstreet/hiring-agent",
    "url": "https://github.com/interviewstreet/hiring-agent",
    "description": "AI agent to evaluate and score resumes.",
    "language": "Python",
    "total_stars": 2653,
    "forks": 642,
    "stars_this_period": 902,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 232,
      "created_at": "2025-07-29T01:50:34Z",
      "pushed_at": "2026-06-22T17:40:27Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 642,
      "watchers": 4,
      "archived": false,
      "size_kb": 106
    },
    "readme_content": "# Hiring Agent\n\n<p align=\"center\"><strong>Resume-to-Score pipeline</strong> that extracts structured data from PDFs, enriches with GitHub signals, and outputs a fair, explainable evaluation.</p>\n\n<p align=\"center\">\n  <a href=\"https://www.python.org/downloads/release/python-3110/\">\n    <img alt=\"Python\" src=\"https://img.shields.io/badge/python-3.11%2B-blue.svg\">\n  </a>\n  <a href=\"https://github.com/interviewstreet/hiring-agent/blob/master/LICENSE\">\n    <img alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-yellow.svg\">\n  </a>\n  <a href=\"https://github.com/psf/black\">\n    <img alt=\"Code style: Black\" src=\"https://img.shields.io/badge/code%20style-Black-000000.svg\">\n  </a>\n</p>\n\n---\n\n## Contents\n\n- [Overview](#overview)\n- [Architecture](#architecture)\n- [Installation and Setup](#installation-and-setup)\n  - [Prerequisites](#prerequisites)\n  - [Quick setup with pip](#quick-setup-with-pip)\n  - [Ollama models](#ollama-models)\n- [Configuration](#configuration)\n- [How it works](#how-it-works)\n- [CLI usage](#cli-usage)\n- [Directory layout](#directory-layout)\n- [Provider details](#provider-details)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Overview\n\nHiring Agent parses a resume PDF to Markdown, extracts sectioned JSON using a local or hosted LLM, augments the data with GitHub profile and repository signals, then produces an objective evaluation with category scores, evidence, bonus points, and deductions. You can run fully local with Ollama or use Google Gemini.\n\n---\n\n## Architecture\n\n<table>\n<tr>\n<td>\n\n**Flow**\n\n1. `pymupdf_rag.py` converts PDF pages to Markdown-like text.\n2. `pdf.py` calls the LLM per section using Jinja templates under `prompts/templates`.\n3. `github.py` fetches profile and repos, classifies projects, and asks the LLM to select the top 7.\n4. `evaluator.py` runs a strict-scored evaluation with fairness constraints.\n5. `score.py` orchestrates everything end to end and writes CSV when development mode is on.\n\n</td>\n<td>\n\n**Key modules**\n\n- `models.py`\n  Pydantic schemas and LLM provider interfaces.\n\n- `llm_utils.py`\n  Provider initialization and response cleanup.\n\n- `transform.py`\n  Normalization from loose LLM JSON to JSON Resume style.\n\n- `prompts/`\n  All Jinja templates for extraction and scoring.\n\n</td>\n</tr>\n</table>\n\n---\n\n## Installation and Setup\n\n### Prerequisites\n\n- **Python 3.11+**\n\n  The repository pins `.python-version` to 3.11.13.\n\n- **One LLM backend** (either of them)\n\n  - **Ollama** for local models\n    Install from the [official site](https://ollama.com/), then run `ollama serve`.\n  - **Google Gemini** if you have an API key, get it from [here](https://aistudio.google.com/api-keys).\n\n### Quick setup with pip\n\n```bash\n$ git clone https://github.com/interviewstreet/hiring-agent\n$ cd hiring-agent\n\n$ python -m venv .venv\n# Linux or macOS\n$ source .venv/bin/activate\n# Windows\n# .venv\\Scripts\\activate\n\n$ pip install -r requirements.txt\n```\n\n### Ollama Models\n\nPull the model you want to use. For example:\n\n```bash\n$ ollama pull gemma3:4b\n```\n\nIf you want different results, you can pull other models such as:\n\n```bash\n# For higher system configuration\n$ ollama pull gemma3:12b\n\n# For lower system configuration\n$ ollama pull gemma3:1b\n```\n\n---\n\n## Configuration\n\nCopy the template and set your environment variables.\n\n```bash\n$ cp .env.example .env\n```\n\n**Environment variables**\n\n| Variable         | Values                                      | Description                                                            |\n| ---------------- | ------------------------------------------- | ---------------------------------------------------------------------- |\n| `LLM_PROVIDER`   | `ollama` or `gemini`                        | Chooses provider. Defaults to Ollama.                                  |\n| `DEFAULT_MODEL`  | for example `gemma3:4b` or `gemini-2.5-pro` | Model name passed to the provider.                                     |\n| `GEMINI_API_KEY` | string                                      | Required when `LLM_PROVIDER=gemini`.                                   |\n| `GITHUB_TOKEN`   | optional                                    | Inherits from your shell environment, improves GitHub API rate limits. |\n\nProvider mapping lives in `prompt.py` and `models.py`. The `config.py` file has a single flag:\n\n```python\n# config.py\nDEVELOPMENT_MODE = True  # enables caching and CSV export\n```\n\nYou can leave it on during iteration. See the next section for details.\n\n---\n\n## How it works\n\n<details>\n<summary><b>1) PDF extraction</b></summary>\n\n- `pymupdf_rag.py` and `pdf.py` read the PDF using PyMuPDF and convert pages to Markdown-like text.\n- The `to_markdown` routine handles headings, links, tables, and basic formatting.\n\n</details>\n\n<details>\n<summary><b>2) Section parsing with templates</b></summary>\n\n- `prompts/templates/*.jinja` define strict instructions for each section\n  Basics, Work, Education, Skills, Projects, Awards.\n- `pdf.PDFHandler` calls the LLM per section and assembles a `JSONResume` object (see `models.py`).\n\n</details>\n\n<details>\n<summary><b>3) GitHub enrichment</b></summary>\n\n- `github.py` extracts a username from the resume profiles, fetches profile and repos, and classifies each project.\n- It asks the LLM to select exactly 7 unique projects with a minimum author commit threshold, favoring meaningful contributions.\n\n</details>\n\n<details>\n<summary><b>4) Evaluation</b></summary>\n\n- `evaluator.py` uses templates that encode fairness and scoring rules.\n- Scores include `open_source`, `self_projects`, `production`, and `technical_skills`, plus bonus and deductions, then an explanation for evidence.\n\n</details>\n\n<details>\n<summary><b>5) Output and CSV export</b></summary>\n\n- `score.py` prints a readable summary to stdout.\n- When `DEVELOPMENT_MODE=True` it creates or appends a `resume_evaluations.csv` with key fields, and caches intermediate JSON under `cache/`.\n\n</details>\n\n---\n\n## CLI usage\n\n### End to end scoring\n\nProvide a path to a resume PDF.\n\n```bash\n$ python score.py /path/to/resume.pdf\n```\n\nWhat happens:\n\n1. If development mode is on, the PDF extraction result is cached to `cache/resumecache_<basename>.json`.\n2. If a GitHub profile is found in the resume, repositories are fetched and cached to `cache/githubcache_<basename>.json`.\n3. The evaluator prints a report and, in development mode, appends a CSV row to `resume_evaluations.csv`.\n\n---\n\n## Directory layout\n\n```text\n.\n├── .env.example\n├── .python-version\n├── config.py\n├── evaluator.py\n├── github.py\n├── llm_utils.py\n├── models.py\n├── pdf.py\n├── prompt.py\n├── prompts/\n│   ├── template_manager.py\n│   └── templates/\n│       ├── awards.jinja\n│       ├── basics.jinja\n│       ├── education.jinja\n│       ├── github_project_selection.jinja\n│       ├── projects.jinja\n│       ├── resume_evaluation_criteria.jinja\n│       ├── resume_evaluation_system_message.jinja\n│       ├── skills.jinja\n│       ├── system_message.jinja\n│       └── work.jinja\n├── pymupdf_rag.py\n├── requirements.txt\n├── score.py\n└── transform.py\n```\n\n---\n\n## Provider details\n\n### Ollama\n\n- Set `LLM_PROVIDER=ollama`\n- Set `DEFAULT_MODEL` to any pulled model, for example `gemma3:4b`\n- The provider wrapper in `models.OllamaProvider` calls `ollama.chat`\n\n### Gemini\n\n- Set `LLM_PROVIDER=gemini`\n- Set `DEFAULT_MODEL` to a supported Gemini model, for example `gemini-2.0-flash`\n- Provide `GEMINI_API_KEY`\n- The wrapper in `models.GeminiProvider` adapts responses to a unified format\n\n---\n\n## Contributing\n\nPlease read the [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines on filing issues, proposing changes, and submitting pull requests. Key principles include:\n\n- Keep prompts declarative and provider-agnostic.\n- Validate changes with a couple of real resumes under different providers.\n- Add or adjust unit-free smoke tests that call each stage with minimal inputs.\n\n---\n\n\n## License\n\n[MIT](https://github.com/interviewstreet/hiring-agent/blob/master/LICENSE) © HackerRank\n",
    "manifest_file": "requirements.txt",
    "manifest_content": "PyMuPDF==1.26.3\nollama==0.5.1\npydantic==2.11.7\nrequests==2.32.4\npymupdf4llm==0.0.27\nJinja2==3.1.6\ngoogle-generativeai==0.4.0\npython-dotenv==1.0.1\nblack==25.9.0",
    "strategic_keywords": [
      "agent",
      "rag",
      "llm",
      "eval"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "requirements.txt"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "microsoft",
    "name": "presidio",
    "full_name": "microsoft/presidio",
    "url": "https://github.com/microsoft/presidio",
    "description": "An open-source framework for detecting, redacting, masking, and anonymizing sensitive data (PII) across text, images, and structured data. Supports NLP, pattern matching, and customizable pipelines.",
    "language": "Python",
    "total_stars": 9664,
    "forks": 1164,
    "stars_this_period": 888,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "anonymization",
        "data-anonymization",
        "data-masking",
        "data-obfuscation",
        "data-privacy",
        "data-redaction",
        "de-identification",
        "guardrails",
        "image-redactor",
        "named-entity-recognition",
        "nlp",
        "personally-identifiable-information",
        "phi",
        "pii",
        "pii-detection",
        "privacy",
        "python",
        "sensitive-data",
        "spacy",
        "transformers"
      ],
      "license": "MIT",
      "open_issues": 87,
      "created_at": "2018-05-04T11:08:58Z",
      "pushed_at": "2026-06-25T13:27:40Z",
      "homepage": "https://microsoft.github.io/presidio",
      "default_branch": "main",
      "forks": 1164,
      "watchers": 89,
      "archived": false,
      "size_kb": 326357
    },
    "readme_content": "",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[tool.ruff]\n\nexclude = [\n    # Ruff recommended:\n    \".bzr\",\n    \".direnv\",\n    \".eggs\",\n    \".git\",\n    \".git-rewrite\",\n    \".hg\",\n    \".ipynb_checkpoints\",\n    \".mypy_cache\",\n    \".nox\",\n    \".pants.d\",\n    \".pyenv\",\n    \".pytest_cache\",\n    \".pytype\",\n    \".ruff_cache\",\n    \".svn\",\n    \".tox\",\n    \".venv\",\n    \".vscode\",\n    \"__pypackages__\",\n    \"_build\",\n    \"buck-out\",\n    \"build\",\n    \"dist\",\n    \"node_modules\",\n    \"site-packages\",\n    \"venv\",\n\n    # Project specific:\n    \"docs/samples\",\n    \"e2e-tests/\",\n    \"*/tests/*\"\n]\n\n# Same as Black.\nline-length = 88\nindent-width = 4\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"I\", \"D\", \"N\", \"W\",\n        # To be added:\n        # \"SIM\", \"UP\", \"ANN\", \"B\"\n]\nignore = [\"E203\", \"D100\", \"D202\", \"D407\", \"ANN204\"]\n\nfixable = [\"ALL\"]\n\n# Allow unused variables when underscore-prefixed.\ndummy-variable-rgx = \"^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$\"\n\n[tool.ruff.format]\n# Like Black, use double quotes for strings.\nquote-style = \"double\"\n\n# Like Black, indent with spaces, rather than tabs.\nindent-style = \"space\"\n\n# Like Black, respect magic trailing commas.\nskip-magic-trailing-comma = false\n\n# Like Black, automatically detect the appropriate line ending.\nline-ending = \"auto\"\n\n[tool.ruff.lint.pydocstyle]\nconvention = \"numpy\"\n",
    "strategic_keywords": [],
    "relationship_label": "Workspace 组件",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 0,
      "novelty": 8,
      "productize": 7,
      "adoption": 7,
      "relation": 6,
      "risk_signal": 6,
      "total": 54
    },
    "strategic_score": 54
  },
  {
    "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": 19673,
    "forks": 1699,
    "stars_this_period": 884,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "ai-agents",
        "browser-automation",
        "javascript",
        "mcp",
        "typescript",
        "web"
      ],
      "license": "MIT",
      "open_issues": 50,
      "created_at": "2025-09-23T09:30:17Z",
      "pushed_at": "2026-06-23T06:24:59Z",
      "homepage": "https://alibaba.github.io/page-agent/",
      "default_branch": "main",
      "forks": 1699,
      "watchers": 59,
      "archived": false,
      "size_kb": 3103
    },
    "readme_content": "# Page Agent\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://img.alicdn.com/imgextra/i4/O1CN01qKig1P1FnhpFKNdi6_!!6000000000532-2-tps-1280-256.png\">\n  <img alt=\"Page Agent Banner\" src=\"https://img.alicdn.com/imgextra/i1/O1CN01NCMKXj1Gn4tkFTsxf_!!6000000000666-2-tps-1280-256.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": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "smicallef",
    "name": "spiderfoot",
    "full_name": "smicallef/spiderfoot",
    "url": "https://github.com/smicallef/spiderfoot",
    "description": "SpiderFoot automates OSINT for threat intelligence and mapping your attack surface.",
    "language": "Python",
    "total_stars": 19082,
    "forks": 3137,
    "stars_this_period": 865,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "attacksurface",
        "cti",
        "cybersecurity",
        "footprinting",
        "hacking",
        "information-gathering",
        "information-security",
        "infosec",
        "intelligence-gathering",
        "osint",
        "osint-framework",
        "osint-reconnaissance",
        "osint-tool",
        "pentesting",
        "python",
        "recon",
        "security-tools",
        "threat-intelligence",
        "threatintel"
      ],
      "license": "MIT",
      "open_issues": 269,
      "created_at": "2012-04-28T07:10:13Z",
      "pushed_at": "2026-04-13T19:43:06Z",
      "homepage": "http://www.spiderfoot.net",
      "default_branch": "master",
      "forks": 3137,
      "watchers": 402,
      "archived": false,
      "size_kb": 16517
    },
    "readme_content": "<a href=\"https://www.spiderfoot.net/r.php?u=aHR0cHM6Ly93d3cuc3BpZGVyZm9vdC5uZXQv&s=os_gh\"><img src=\"https://www.spiderfoot.net/wp-content/themes/spiderfoot/img/spiderfoot-wide.png\"></a>\n\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/smicallef/spiderfoot/master/LICENSE)\n[![Python Version](https://img.shields.io/badge/python-3.7+-green)](https://www.python.org)\n[![Stable Release](https://img.shields.io/badge/version-4.0-blue.svg)](https://github.com/smicallef/spiderfoot/releases/tag/v4.0)\n[![CI status](https://github.com/smicallef/spiderfoot/workflows/Tests/badge.svg)](https://github.com/smicallef/spiderfoot/actions?query=workflow%3A\"Tests\")\n[![Last Commit](https://img.shields.io/github/last-commit/smicallef/spiderfoot)](https://github.com/smicallef/spiderfoot/commits/master)\n[![Codecov](https://codecov.io/github/smicallef/spiderfoot/coverage.svg)](https://codecov.io/github/smicallef/spiderfoot)\n[![Twitter Follow](https://img.shields.io/twitter/follow/spiderfoot?label=follow&style=social)](https://twitter.com/spiderfoot)\n[![Discord](https://img.shields.io/discord/770524432464216074)](https://discord.gg/vyvztrG)\n\n**SpiderFoot** is an open source intelligence (OSINT) automation tool. It integrates with just about every data source available and utilises a range of methods for data analysis, making that data easy to navigate. \n\nSpiderFoot has an embedded web-server for providing a clean and intuitive web-based interface but can also be used completely via the command-line.  It's written in **Python 3** and **MIT-licensed**.\n\n<img src=\"https://www.spiderfoot.net/wp-content/uploads/2022/04/opensource-screenshot-v4.png\" />\n\n### FEATURES\n\n- Web based UI or CLI\n- Over 200 modules (see below)\n- Python 3.7+\n- YAML-configurable [correlation engine](/correlations/README.md) with [37 pre-defined rules](/correlations)\n- CSV/JSON/GEXF export\n- API key export/import\n- SQLite back-end for custom querying\n- Highly configurable\n- Fully documented\n- Visualisations\n- TOR integration for dark web searching\n- Dockerfile for Docker-based deployments\n- Can call other tools like DNSTwist, Whatweb, Nmap and CMSeeK\n- [Actively developed since 2012!](https://medium.com/@micallst/lessons-learned-from-my-10-year-open-source-project-4a4c8c2b4f64)\n\n### WANT MORE?\n\nNeed more from SpiderFoot? Check out [SpiderFoot HX](https://www.spiderfoot.net/hx) for:\n- 100% Cloud-based and managed for you\n- Attack Surface Monitoring with change notifications by email, REST and Slack\n- Multiple targets per scan\n- Multi-user collaboration\n- Authenticated and 2FA\n- Investigations\n- Customer support\n- Third party tools pre-installed & configured\n- Drive it with a fully RESTful API\n- TOR integration built-in\n- Screenshotting\n- Bring your own Python SpiderFoot modules\n- Feed scan data to Splunk, ElasticSearch and REST endpoints\n\nSee the full set of differences between SpiderFoot HX and the open source version [here](https://www.spiderfoot.net/open-source-vs-hx/).\n\n### USES\n\nSpiderFoot can be used offensively (e.g. in a red team exercise or penetration test) for reconnaissance of your target or defensively to gather information about what you or your organisation might have exposed over the Internet.\n\nYou can target the following entities in a SpiderFoot scan:\n\n - IP address\n - Domain/sub-domain name\n - Hostname\n - Network subnet (CIDR)\n - ASN\n - E-mail address\n - Phone number\n - Username\n - Person's name\n - Bitcoin address\n \nSpiderFoot's 200+ modules feed each other in a publisher/subscriber model to ensure maximum data extraction to do things like:\n\n- [Host/sub-domain/TLD enumeration/extraction](https://asciinema.org/a/295912)\n- [Email address, phone number and human name extraction](https://asciinema.org/a/295947)\n- [Bitcoin and Ethereum address extraction](https://asciinema.org/a/295957)\n- [Check for susceptibility to sub-domain hijacking](https://asciinema.org/a/344377)\n- DNS zone transfers\n- [Threat intelligence and Blacklist queries](https://asciinema.org/a/295949)\n- API integration with [SHODAN](https://asciinema.org/a/127601), [HaveIBeenPwned](https://asciinema.org/a/128731), [GreyNoise](https://asciinema.org/a/295943), AlienVault, SecurityTrails, etc.\n- [Social media account enumeration](https://asciinema.org/a/295923)\n- [S3/Azure/Digitalocean bucket enumeration/scraping](https://asciinema.org/a/295941)\n- IP geo-location\n- Web scraping, web content analysis\n- [Image, document and binary file meta data analysis](https://asciinema.org/a/296274)\n- Dark web searches\n- [Port scanning and banner grabbing](https://asciinema.org/a/295939)\n- [Data breach searches](https://asciinema.org/a/296145)\n- So much more...\n\n### INSTALLING & RUNNING\n\nTo install and run SpiderFoot, you need at least Python 3.7 and a number of Python libraries which you can install with `pip`. We recommend you install a packaged release since master will often have bleeding edge features and modules that aren't fully tested.\n\n#### Stable build (packaged release):\n\n```\n wget https://github.com/smicallef/spiderfoot/archive/v4.0.tar.gz\n tar zxvf v4.0.tar.gz\n cd spiderfoot-4.0\n pip3 install -r requirements.txt\n python3 ./sf.py -l 127.0.0.1:5001\n```\n\n#### Development build (cloning git master branch):\n\n```\n git clone https://github.com/smicallef/spiderfoot.git\n cd spiderfoot\n pip3 install -r requirements.txt\n python3 ./sf.py -l 127.0.0.1:5001\n```\n\nCheck out the [documentation](https://www.spiderfoot.net/documentation) and our [asciinema videos](https://asciinema.org/~spiderfoot) for more tutorials.\n\n### COMMUNITY\n\nWhether you're a contributor, user or just curious about SpiderFoot and OSINT in general, we'd love to have you join our community! SpiderFoot now has a [Discord server](https://discord.gg/vyvztrG) for seeking help from the community, requesting features or just general OSINT chit-chat.\n\n### WRITING CORRELATION RULES\n\nWe have a comprehensive write-up and reference of the correlation rule-set introduced in SpiderFoot 4.0 [here](/correlations/README.md).\n\nAlso take a look at the [template.yaml](/correlations/template.yaml) file for a walk through. The existing [37 rules](/correlations) are also quite readable and good as starting points for additional rules.\n\n### MODULES / INTEGRATIONS\n\nSpiderFoot has over 200 modules, most of which *don't require API keys*, and many of those that do require API keys *have a free tier*.\n\n| Name     | Description | Type   |\n|:---------| :-----------|:-------|\n[AbstractAPI](https://app.abstractapi.com/)|Look up domain, phone and IP address information from AbstractAPI.|Tiered API\n[abuse.ch](https://www.abuse.ch)|Check if a host/domain, IP address or netblock is malicious according to Abuse.ch.|Free API\n[AbuseIPDB](https://www.abuseipdb.com)|Check if an IP address is malicious according to AbuseIPDB.com blacklist.|Tiered API\n[Abusix Mail Intelligence](https://abusix.org/)|Check if a netblock or IP address is in the Abusix Mail Intelligence blacklist.|Tiered API\nAccount Finder|Look for possible associated accounts on over 500 social and other websites such as Instagram, Reddit, etc.|Internal\n[AdBlock Check](https://adblockplus.org/)|Check if linked pages would be blocked by AdBlock Plus.|Tiered API\n[AdGuard DNS](https://adguard.com/)|Check if a host would be blocked by AdGuard DNS.|Free API\n[Ahmia](https://ahmia.fi/)|Search Tor 'Ahmia' search engine for mentions of the target.|Free API\n[AlienVault IP Reputation](https://cybersecurity.att.com/)|Check if an IP or netblock is malicious according to the AlienVault IP Reputation database.|Free API\n[AlienVault OTX](https://otx.alienvault.com/)|Obtain information from AlienVault Open Threat Exchange (OTX)|Tiered API\n[Amazon S3 Bucket Finder](https://aws.amazon.com/s3/)|Search for potential Amazon S3 buckets associated with the target and attempt to list their contents.|Free API\n[Apple iTunes](https://itunes.apple.com/)|Search Apple iTunes for mobile apps.|Free API\n[Archive.org](https://archive.org/)|Identifies historic versions of interesting files/pages from the Wayback Machine.|Free API\n[ARIN](https://www.arin.net/)|Queries ARIN registry for contact information.|Free API\n[Azure Blob Finder](https://azure.microsoft.com/en-in/services/storage/blobs/)|Search for potential Azure blobs associated with the target and attempt to list their contents.|Free API\nBase64 Decoder|Identify Base64-encoded strings in URLs, often revealing interesting hidden information.|Internal\n[BGPView](https://bgpview.io/)|Obtain network information from BGPView API.|Free API\nBinary String Extractor|Attempt to identify strings in binary content.|Internal\n[BinaryEdge](https://www.binaryedge.io/)|Obtain information from BinaryEdge.io Internet scanning systems, including breaches, vulnerabilities, torrents and passive DNS.|Tiered API\n[Bing (Shared IPs)](https://www.bing.com/)|Search Bing for hosts sharing the same IP.|Tiered API\n[Bing](https://www.bing.com/)|Obtain information from bing to identify sub-domains and links.|Tiered API\nBitcoin Finder|Identify bitcoin addresses in scraped webpages.|Internal\n[Bitcoin Who's Who](https://bitcoinwhoswho.com/)|Check for Bitcoin addresses against the Bitcoin Who's Who database of suspect/malicious addresses.|Tiered API\n[BitcoinAbuse](https://www.bitcoinabuse.com/)|Check Bitcoin addresses against the bitcoinabuse.com database of suspect/malicious addresses.|Free API\n[Blockchain](https://www.blockchain.com/)|Queries blockchain.info to find the balance of identified bitcoin wallet addresses.|Free API\n[blocklist.de](http://www.blocklist.de/en/index.html)|Check if a netblock or IP is malicious according to blocklist.de.|Free API\n[BotScout](https://botscout.com/)|Searches BotScout.com's database of spam-bot IP addresses and e-mail addresses.|Tiered API\n[botvrij.eu](https://botvrij.eu/)|Check if a domain is malicious according to botvrij.eu.|Free API\n[BuiltWith](https://builtwith.com/)|Query BuiltWith.com's Domain API for information about your target's web technology stack, e-mail addresses and more.|Tiered API\n[C99](https://api.c99.nl/)|Queries the C99 API which offers various data (geo location, proxy detection, phone lookup, etc).|Commercial API\n[CallerName](http://callername.com/)|Lookup US phone number location and reputation information.|Free API\n[Censys](https://censys.io/)|Obtain host information from Censys.io.|Tiered API\n[Certificate Transparency](https://crt.sh/)|Gather hostnames from historical certificates in crt.sh.|Free API\n[CertSpotter](https://sslmate.com/certspotter/)|Gather information about SSL certificates from SSLMate CertSpotter API.|Tiered API\n[CINS Army List](https://cinsscore.com/)|Check if a netblock or IP address is malicious according to Collective Intelligence Network Security (CINS) Army list.|Free API\n[CIRCL.LU](https://www.circl.lu/)|Obtain information from CIRCL.LU's Passive DNS and Passive SSL databases.|Free API\n[CleanBrowsing.org](https://cleanbrowsing.org/)|Check if a host would be blocked by CleanBrowsing.org DNS content filters.|Free API\n[CleanTalk Spam List](https://cleantalk.org)|Check if a netblock or IP address is on CleanTalk.org's spam IP list.|Free API\n[Clearbit](https://clearbit.com/)|Check for names, addresses, domains and more based on lookups of e-mail addresses on clearbit.com.|Tiered API\n[CloudFlare DNS](https://www.cloudflare.com/)|Check if a host would be blocked by CloudFlare DNS.|Free API\n[CoinBlocker Lists](https://zerodot1.gitlab.io/CoinBlockerListsWeb/)|Check if a domain appears on CoinBlocker lists.|Free API\n[CommonCrawl](http://commoncrawl.org/)|Searches for URLs found through CommonCrawl.org.|Free API\n[Comodo Secure DNS](https://www.comodo.com/secure-dns/)|Check if a host would be blocked by Comodo Secure DNS.|Tiered API\nCompany Name Extractor|Identify company names in any obtained data.|Internal\nCookie Extractor|Extract Cookies from HTTP headers.|Internal\nCountry Name Extractor|Identify country names in any obtained data.|Internal\nCredit Card Number Extractor|Ide",
    "manifest_file": "requirements.txt",
    "manifest_content": "adblockparser>=0.7,<1\ndnspython>=2.3.0,<3\nExifRead>=2.3.2,<3\nCherryPy>=18.8.0,<19\ncherrypy-cors>=1.6,<2\nMako>=1.2.4,<2\nbeautifulsoup4>=4.11.2,<5\nlxml>=4.9.2,<5\nnetaddr>=0.8.0,<1\npysocks>=1.7.1,<2\nrequests>=2.28.2,<3\nipwhois>=1.1.0,<1.2.0\nipaddr>=2.2.0,<3\nphonenumbers>=8.13.6,<9\npygexf>=0.2.2,<0.3\nPyPDF2>=1.28.6,<2\npython-whois>=0.7.3,<0.8\nsecure>=0.3.0,<0.4.0\npyOpenSSL>=21.0.0,<22\npython-docx>=0.8.11,<0.9\npython-pptx>=0.6.21,<0.7\nnetworkx>=2.6.3,<2.7\ncryptography>=3.4.8,<4\npublicsuffixlist>=0.9.3,<0.10\nopenpyxl>=3.1.1,<4\npyyaml>=6.0.0,<7\n",
    "strategic_keywords": [
      "rag",
      "workflow",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "requirements.txt"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "vercel-labs",
    "name": "agent-browser",
    "full_name": "vercel-labs/agent-browser",
    "url": "https://github.com/vercel-labs/agent-browser",
    "description": "Browser automation CLI for AI agents",
    "language": "Rust",
    "total_stars": 37135,
    "forks": 2366,
    "stars_this_period": 775,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 540,
      "created_at": "2026-01-11T05:38:15Z",
      "pushed_at": "2026-06-25T00:48:22Z",
      "homepage": "https://agent-browser.dev",
      "default_branch": "main",
      "forks": 2366,
      "watchers": 98,
      "archived": false,
      "size_kb": 17801
    },
    "readme_content": "# agent-browser\n\nBrowser automation CLI for AI agents. Fast native Rust CLI.\n\n[![skills.sh](https://skills.sh/b/vercel-labs/agent-browser)](https://skills.sh/vercel-labs/agent-browser)\n\n## Installation\n\n### Global Installation (recommended)\n\nInstalls the native Rust binary:\n\n```bash\nnpm install -g agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### Project Installation (local dependency)\n\nFor projects that want to pin the version in `package.json`:\n\n```bash\nnpm install agent-browser\nagent-browser install\n```\n\nThen use via `package.json` scripts or by invoking `agent-browser` directly.\n\n### Homebrew (macOS)\n\n```bash\nbrew install agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### Cargo (Rust)\n\n```bash\ncargo install agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### From Source\n\nRequires Node.js 24+, pnpm 11+, and Rust.\n\n```bash\ngit clone https://github.com/vercel-labs/agent-browser\ncd agent-browser\npnpm install\npnpm build\npnpm build:native   # Requires Rust (https://rustup.rs)\npnpm link --global  # Makes agent-browser available globally\nagent-browser install\n```\n\n### Linux Dependencies\n\nOn Linux, install system dependencies:\n\n```bash\nagent-browser install --with-deps\n```\n\nThis exits nonzero if the package manager cannot install every required browser library.\n\n### Updating\n\nUpgrade to the latest version:\n\n```bash\nagent-browser upgrade\n```\n\nDetects your installation method (npm, Homebrew, or Cargo) and runs the appropriate update command automatically.\n\n### Requirements\n\n- **Chrome** - Run `agent-browser install` to download Chrome from [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing/) (Google's official automation channel). Existing Chrome, Brave, Playwright, and Puppeteer installations are detected automatically. No Playwright or Node.js required for the daemon.\n- **Node.js 24+ and pnpm 11+** - Only needed when building from source.\n- **Rust** - Only needed when building from source (see From Source above).\n\n## Quick Start\n\n```bash\nagent-browser open example.com\nagent-browser snapshot                    # Get accessibility tree with refs\nagent-browser click @e2                   # Click by ref from snapshot\nagent-browser fill @e3 \"test@example.com\" # Fill by ref\nagent-browser get text @e1                # Get text by ref\nagent-browser screenshot page.png\nagent-browser close\n```\n\nClicks fail early when another element covers the target's click point, for example a consent banner or modal. Dismiss or interact with the reported covering element, then take a fresh snapshot before retrying the original ref.\n\nHeadless Chromium screenshots hide native scrollbars for consistent image output. Pass `--hide-scrollbars false` when launching to keep native scrollbars visible.\n\n### Traditional Selectors (also supported)\n\n```bash\nagent-browser click \"#submit\"\nagent-browser fill \"#email\" \"test@example.com\"\nagent-browser find role button click --name \"Submit\"\n```\n\n## Commands\n\n### Core Commands\n\n```bash\nagent-browser open                    # Launch browser (no navigation); stays on about:blank\nagent-browser open <url>              # Launch + navigate to URL (aliases: goto, navigate)\nagent-browser read [url]              # Fetch agent-readable text, or read rendered active-tab DOM\nagent-browser click <sel>             # Click element (--new-tab to open in new tab)\nagent-browser dblclick <sel>          # Double-click element\nagent-browser focus <sel>             # Focus element\nagent-browser type <sel> <text>       # Type into element\nagent-browser fill <sel> <text>       # Clear and fill\nagent-browser press <key>             # Press key (Enter, Tab, Control+a) (alias: key)\nagent-browser keyboard type <text>    # Type with real keystrokes (no selector, current focus)\nagent-browser keyboard inserttext <text>  # Insert text without key events (no selector)\nagent-browser keydown <key>           # Hold key down\nagent-browser keyup <key>             # Release key\nagent-browser hover <sel>             # Hover element\nagent-browser select <sel> <val>      # Select dropdown option\nagent-browser check <sel>             # Check checkbox\nagent-browser uncheck <sel>           # Uncheck checkbox\nagent-browser scroll <dir> [px]       # Scroll (up/down/left/right, --selector <sel>)\nagent-browser scrollintoview <sel>    # Scroll element into view (alias: scrollinto)\nagent-browser drag <src> <tgt>        # Drag and drop\nagent-browser upload <sel> <files>    # Upload files\nagent-browser screenshot [path]       # Take screenshot (--full for full page, saves to a temporary directory if no path)\nagent-browser screenshot --annotate   # Annotated screenshot with numbered element labels\nagent-browser screenshot --screenshot-dir ./shots    # Save to custom directory\nagent-browser screenshot --screenshot-format jpeg --screenshot-quality 80\nagent-browser pdf <path>              # Save as PDF\nagent-browser snapshot                # Accessibility tree with refs (best for AI)\nagent-browser eval <js>               # Run JavaScript (-b for base64, --stdin for piped input)\nagent-browser connect <port>          # Connect to browser via CDP\nagent-browser stream enable [--port <port>]  # Start runtime WebSocket streaming\nagent-browser stream status           # Show runtime streaming state and bound port\nagent-browser stream disable          # Stop runtime WebSocket streaming\nagent-browser close                   # Close browser (aliases: quit, exit)\nagent-browser close --all             # Close all active sessions\nagent-browser chat \"<instruction>\"    # AI chat: natural language browser control (single-shot)\nagent-browser chat                    # AI chat: interactive REPL mode\n```\n\n### Get Info\n\n```bash\nagent-browser get text <sel>          # Get text content\nagent-browser get html <sel>          # Get innerHTML\nagent-browser get value <sel>         # Get input value\nagent-browser get attr <sel> <attr>   # Get attribute\nagent-browser get title               # Get page title\nagent-browser get url                 # Get current URL\nagent-browser get cdp-url             # Get CDP WebSocket URL (for DevTools, debugging)\nagent-browser get count <sel>         # Count matching elements\nagent-browser get box <sel>           # Get bounding box\nagent-browser get styles <sel>        # Get computed styles\n```\n\n### Read Agent-Friendly Text\n\n```bash\nagent-browser read\nagent-browser read https://example.com/article\nagent-browser read https://example.com/article --filter overview\nagent-browser read https://example.com/article --outline\nagent-browser read https://docs.example.com --llms index --filter auth\nagent-browser read https://docs.example.com --llms full --filter auth\nagent-browser read example.com/article --require-md\nagent-browser read https://example.com/article --json\n```\n\n`read` fetches a URL without launching Chrome. Omit the URL to read the rendered DOM of the active tab in the current browser session, including browser auth state and client-side updates. Explicit URL reads send `Accept: text/markdown` by default, try the same URL with `.md` appended when the first response is not markdown, walk ancestor paths toward `/` to find the nearest `llms.txt` for a matching docs link, print markdown or plain text when available, and fall back to readable text extracted from HTML. `--llms` and `--require-md` with no URL use the active tab URL because they depend on HTTP resources. `read` does not read `llms-full.txt` unless you ask for it.\n\nOptions: `--raw` prints the response body without HTML extraction, `--require-md` fails unless the server returns `Content-Type: text/markdown`, `--outline` prints a compact heading outline for one page, `--llms index` prints a compact nearest-ancestor `llms.txt` link list, `--llms full` reads the nearest-ancestor `llms-full.txt`, `--filter <text>` narrows page sections, llms links/sections, or outline headings, and `--timeout <ms>` changes the request timeout. Global safeguards such as `--allowed-domains`, `--content-boundaries`, and `--max-output` also apply to read fetches and output.\n\n### Check State\n\n```bash\nagent-browser is visible <sel>        # Check if visible\nagent-browser is enabled <sel>        # Check if enabled\nagent-browser is checked <sel>        # Check if checked\n```\n\n### Find Elements (Semantic Locators)\n\n```bash\nagent-browser find role <role> <action> [value]       # By ARIA role\nagent-browser find text <text> <action>               # By text content\nagent-browser find label <label> <action> [value]     # By label\nagent-browser find placeholder <ph> <action> [value]  # By placeholder\nagent-browser find alt <text> <action>                # By alt text\nagent-browser find title <text> <action>              # By title attr\nagent-browser find testid <id> <action> [value]       # By data-testid\nagent-browser find first <sel> <action> [value]       # First match\nagent-browser find last <sel> <action> [value]        # Last match\nagent-browser find nth <n> <sel> <action> [value]     # Nth match\n```\n\n**Actions:** `click`, `fill`, `type`, `hover`, `focus`, `check`, `uncheck`, `text`\n\n**Options:** `--name <name>` (filter role by accessible name), `--exact` (require exact text match)\n\n**Examples:**\n\n```bash\nagent-browser find role button click --name \"Submit\"\nagent-browser find text \"Sign In\" click\nagent-browser find label \"Email\" fill \"test@test.com\"\nagent-browser find first \".item\" click\nagent-browser find nth 2 \"a\" text\n```\n\n### Wait\n\n```bash\nagent-browser wait <selector>         # Wait for element to be visible\nagent-browser wait <ms>               # Wait for time (milliseconds)\nagent-browser wait --text \"Welcome\"   # Wait for text to appear (substring match)\nagent-browser wait --url \"**/dash\"    # Wait for URL pattern\nagent-browser wait --load networkidle # Wait for load state\nagent-browser wait --fn \"window.ready === true\"  # Wait for JS condition\n\n# Wait for text/element to disappear\nagent-browser wait --fn \"!document.body.innerText.includes('Loading...')\"\nagent-browser wait \"#spinner\" --state hidden\n```\n\n**Load states:** `load`, `domcontentloaded`, `networkidle`\n\n### Batch Execution\n\nExecute multiple commands in a single invocation. Commands can be passed as quoted arguments or piped as JSON via stdin. This avoids per-command process startup overhead when running multi-step workflows.\n\n```bash\n# Argument mode: each quoted argument is a full command\nagent-browser batch \"open https://example.com\" \"snapshot -i\" \"screenshot\"\n\n# With --bail to stop on first error\nagent-browser batch --bail \"open https://example.com\" \"click @e1\" \"screenshot\"\n\n# Stdin mode: pipe commands as JSON\necho '[\n  [\"open\", \"https://example.com\"],\n  [\"snapshot\", \"-i\"],\n  [\"click\", \"@e1\"],\n  [\"screenshot\", \"result.png\"]\n]' | agent-browser batch --json\n```\n\n### Clipboard\n\n```bash\nagent-browser clipboard read                      # Read text from clipboard\nagent-browser clipboard write \"Hello, World!\"     # Write text to clipboard\nagent-browser clipboard copy                      # Copy current selection (Ctrl+C)\nagent-browser clipboard paste                     # Paste from clipboard (Ctrl+V)\n```\n\n### Mouse Control\n\n```bash\nagent-browser mouse move <x> <y>      # Move mouse\nagent-browser mouse down [button]     # Press button (left/right/middle)\nagent-browser mouse up [button]       # Release button\nagent-browser mouse wheel <dy> [dx]   # Scroll wheel\n```\n\n### Browser Settings\n\n```bash\nagent-browser set viewport <w> <h> [scale]  # Set viewport size (scale for retina, e.g. 2)\nagent-browser set device <name>       # Emulate device (\"iPhone 14\")\nagent-browser set geo <lat> <lng>     # Set geolocation\nagent-browser set offline [on|off]    # Toggle offline mode\nagent-browser set headers <json>      # Extra HTTP headers\nagent-browser set credentials <u> <p> # HTTP basic auth\nagent-browser set media [dark|light]  # Emulate color scheme\n```\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "Tencent",
    "name": "WeKnora",
    "full_name": "Tencent/WeKnora",
    "url": "https://github.com/Tencent/WeKnora",
    "description": "Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.",
    "language": "Go",
    "total_stars": 17306,
    "forks": 2261,
    "stars_this_period": 748,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agentic",
        "ai",
        "chatbot",
        "embeddings",
        "evaluation",
        "generative-ai",
        "golang",
        "knowledge-base",
        "llm",
        "multi-tenant",
        "multimodel",
        "ollama",
        "openai",
        "question-answering",
        "rag",
        "reranking",
        "semantic-search",
        "vector-search",
        "wiki"
      ],
      "license": "NOASSERTION",
      "open_issues": 286,
      "created_at": "2025-07-22T08:01:23Z",
      "pushed_at": "2026-06-25T15:33:40Z",
      "homepage": "https://weknora.weixin.qq.com",
      "default_branch": "main",
      "forks": 2261,
      "watchers": 84,
      "archived": false,
      "size_kb": 76746
    },
    "readme_content": "<p align=\"center\">\n  <picture>\n    <img src=\"./docs/images/logo.png\" alt=\"WeKnora Logo\" height=\"120\"/>\n  </picture>\n</p>\n\n<p align=\"center\">\n  <picture>\n    <a href=\"https://trendshift.io/repositories/15289\" target=\"_blank\">\n      <img src=\"https://trendshift.io/api/badge/repositories/15289\" alt=\"Tencent%2FWeKnora | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n    </a>\n  </picture>\n</p>\n<p align=\"center\">\n    <a href=\"https://weknora.weixin.qq.com\" target=\"_blank\">\n        <img alt=\"Official Website\" src=\"https://img.shields.io/badge/Official Website-WeKnora-4e6b99\">\n    </a>\n    <a href=\"https://chatbot.weixin.qq.com\" target=\"_blank\">\n        <img alt=\"WeChat Dialog Open Platform\" src=\"https://img.shields.io/badge/WeChat Dialog Open Platform-5ac725\">\n    </a>\n    <a href=\"https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd\" target=\"_blank\">\n        <img alt=\"Chrome Extension\" src=\"https://img.shields.io/badge/Chrome Extension-WeKnora-4285F4\">\n    </a>\n    <a href=\"https://clawhub.ai/lyingbug/weknora\" target=\"_blank\">\n        <img alt=\"ClawHub Skill\" src=\"https://img.shields.io/badge/ClawHub Skill-WeKnora-ff6b35\">\n    </a>\n    <a href=\"https://github.com/Tencent/WeKnora/blob/main/LICENSE\">\n        <img src=\"https://img.shields.io/badge/License-MIT-ffffff?labelColor=d4eaf7&color=2e6cc4\" alt=\"License\">\n    </a>\n    <a href=\"./CHANGELOG.md\">\n        <img alt=\"Version\" src=\"https://img.shields.io/badge/version-0.6.2-2e6cc4?labelColor=d4eaf7\">\n    </a>\n</p>\n\n<p align=\"center\">\n| <b>English</b> | <a href=\"./README_CN.md\"><b>简体中文</b></a> | <a href=\"./README_JA.md\"><b>日本語</b></a> | <a href=\"./README_KO.md\"><b>한국어</b></a> |\n</p>\n\n<p align=\"center\">\n  <h4 align=\"center\">\n\n  [Overview](#-overview) • [Architecture](#-architecture) • [Key Features](#-key-features) • [Getting Started](#-getting-started) • [API Reference](#-api-reference) • [Developer Guide](#-developer-guide)\n  \n  </h4>\n</p>\n\n# 💡 WeKnora — Turn Documents into Living Knowledge with RAG, Agents and Auto-Wiki\n\n## 📌 Overview\n\n[**WeKnora**](https://weknora.weixin.qq.com) is an open-source, LLM-powered knowledge framework built for enterprise-grade document understanding, semantic retrieval, and autonomous reasoning.\n\nIt is organized around three core capabilities: **RAG-based Quick Q&A** for everyday lookups, a **ReAct Agent** that autonomously orchestrates retrieval, MCP tools and web search to handle complex multi-step tasks, and a brand-new **Wiki Mode** in which agents distill raw documents into a self-maintaining, interlinked markdown knowledge base with an interactive knowledge graph. Combined with multi-source ingestion (Feishu / Notion / Yuque, and growing), 20+ LLM provider integrations, full Langfuse observability, **enterprise-ready multi-tenant RBAC** (4-tier role matrix + per-resource ownership + per-tenant audit log), and a fully self-hostable modular architecture, WeKnora turns scattered documents into a queryable, reasoning-capable, continuously evolving knowledge asset.\n\nThe framework supports auto-syncing knowledge from Feishu, Notion, and Yuque (more data sources coming soon), handles 10+ document formats including PDF, Word, images, and Excel, and can serve Q&A directly through IM channels like WeCom, Feishu, Slack, and Telegram. It is compatible with major LLM providers including OpenAI, DeepSeek, Qwen (Alibaba Cloud), Zhipu, Hunyuan, Gemini, MiniMax, NVIDIA, and Ollama. Its fully modular design allows swapping LLMs, vector databases, and storage backends, with support for local and private cloud deployment ensuring complete data sovereignty. WeKnora also integrates with **Langfuse** for comprehensive observability into agent reasoning, token usage, and pipeline tracing.\n\n\n## ✨ Latest Updates\n\n- **v0.6.2** — Per-upload process configuration with upload-confirm dialog; document reparse with `process_config`; `weknora` CLI v0.9 (bundled Agent Skills, `session stop`, auth/profile harmonization); KB marquee multi-select; HNSW index for 1024-dim pgvector embeddings; chat resources store refactor; Langfuse-only tracing (Jaeger removed). See [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.6.1** — Document parsing trace timeline (Langfuse-style span tree with stage-by-stage progress + stop-parse); OpenSearch vector store driver; declarative built-in models via YAML; system admin & consolidated platform settings + audit log; new-user onboarding guide; settings UI redesign; `weknora` CLI v0.7 / v0.8 (agent-first wire contract, NDJSON, `--dry-run`); OpenDataLoader + PaddleOCR-VL parsers; MCP server multi-transport (stdio / SSE / HTTP); per-model thinking-mode config; Tencent LKEAP rerank + native Gemini embeddings + MiniMax-M3. See [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.6.0** — Tenant RBAC (4-tier role matrix `Owner` / `Admin` / `Contributor` / `Viewer` + per-KB ownership + per-tenant audit log), tenant member management & multi-workspace UX, self-service workspaces; `weknora` CLI v0.4 GA with `mcp serve`; KB retrieval fan-out across vector stores; AES-256-GCM credential encryption + docreader gRPC TLS + Token; Zhipu embedder + Huawei OBS; server-side user preferences; Go 1.26.0. See [`docs/RBAC说明.md`](./docs/RBAC说明.md) and [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.5.2** — Wiki ingest scales to 40k-document KBs (task queue + DLQ); MCP human-in-the-loop tool approval; Anthropic / Apache Doris / Tencent VectorDB / KS3 / SearXNG backends; adaptive 3-tier chunking with live preview; global ⌘K command palette; Yuque connector + WeChat Mini Program; `weknora` CLI preview.\n- **v0.5.1** — Knowledge-base batch management; tenant-wide IM channels overview; session search + user-scoped pinning; unified Model / Web Search / MCP settings cards; per-agent LLM timeout; desktop tenant switching.\n- **v0.5.0** — Wiki Mode GA — agents auto-generate structured, interlinked Markdown wiki pages with a knowledge graph; wiki browser + visual graph in the UI.\n- **v0.4.0** — WeKnora Cloud (hosted LLM + parsing); Chrome Extension; ClawHub Skill; WeChat IM; attachment processing; Azure OpenAI / Alibaba OSS; Notion connector; Baidu + Ollama web search; VectorStore management.\n- **v0.3.6** — ASR (audio); Feishu data-source auto-sync; OIDC; IM quote-reply context + thread-based sessions; document summarization; Tavily search; parallel tool calling; agent @mention scope restriction.\n- **v0.3.5** — Telegram / DingTalk / Mattermost IM; IM slash commands + QA queue; suggested questions; VLM auto-describe MCP tool images; Novita AI; channel tracking.\n- **v0.3.4** — WeCom / Feishu / Slack IM; multimodal image support; NVIDIA model API; Weaviate; AWS S3; AES-256-GCM API-key encryption; built-in MCP service; hybrid-search optimization; `final_answer` tool.\n- **v0.3.3** — Parent-child chunking; KB pinning; fallback response; passage cleaning for rerank; storage auto-creation; Milvus.\n- **v0.3.2** — Knowledge Search entry; per-source parser & storage engine config; image rendering in local storage; document preview; Volcengine TOS; Mermaid rendering; batch session management; memory graph preview.\n- **v0.3.0** — Shared Space; Agent Skills + sandboxed execution; custom agents; Data Analyst agent; thinking mode; Bing / Google web search; API Key auth; Helm chart; Korean i18n; Qdrant.\n- **v0.2.0** — Agent Mode (ReACT); multi-type knowledge bases (FAQ + document); conversation strategy config; DuckDuckGo web search; MCP tool integration; new UI with agent mode switching; MQ async task management.\n\n\n## 📱 Interface Showcase\n\n<table>\n  <tr>\n    <td colspan=\"2\" align=\"center\"><b>💬 Intelligent Q&A Conversation</b><br/><img src=\"./docs/images/qa.png\" alt=\"Intelligent Q&A Conversation\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>📖 Wiki Browser</b><br/><img src=\"./docs/images/wiki-browser.png\" alt=\"Wiki Browser\" width=\"100%\"></td>\n    <td width=\"50%\" align=\"center\"><b>🕸️ Wiki Knowledge Graph</b><br/><img src=\"./docs/images/wiki-graph.png\" alt=\"Wiki Knowledge Graph\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>🤖 Agent Mode · Tool Call Process</b><br/><img src=\"./docs/images/agent-qa.png\" alt=\"Agent Mode Tool Call Process\" width=\"100%\"></td>\n    <td width=\"50%\" align=\"center\"><b>⚙️ Conversation Settings</b><br/><img src=\"./docs/images/settings.png\" alt=\"Conversation Settings\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\"><b>🔭 Observability · Langfuse Tracing</b><br/><img src=\"./docs/images/langfuse.png\" alt=\"Observability Langfuse Tracing\" width=\"100%\"></td>\n  </tr>\n</table>\n\n## 🏗️ Architecture\n\n![weknora-architecture.png](./docs/images/architecture.png)\n\nFully modular pipeline from document parsing, vectorization, and retrieval to LLM inference — every component is swappable and extensible. Supports local / private cloud deployment with full data sovereignty and a zero-barrier Web UI for quick onboarding.\n\n## 🧩 Feature Overview\n\n**Intelligent Conversation**\n\n| Capability | Details |\n|------------|---------|\n| Intelligent Reasoning | ReACT progressive multi-step reasoning, autonomously orchestrating knowledge retrieval, MCP tools, and web search; custom agent support |\n| Quick Q&A | RAG-based Q&A over knowledge bases for fast and accurate answers |\n| Wiki Mode | Agent-driven auto-generation of structured, interlinked markdown Wiki pages from raw documents |\n| Tool Calling | Built-in tools, MCP tools, web search |\n| Conversation Strategy | Online Prompt editing, retrieval threshold tuning, multi-turn context awareness |\n| Suggested Questions | Auto-generated question suggestions based on knowledge base content |\n\n**Knowledge Management**\n\n| Capability | Details |\n|------------|---------|\n| Knowledge Base Types | FAQ / Document / Wiki with folder import, URL import, tag management, and online entry |\n| Per-Upload Process Config | Override parser, chunking, multimodal (VLM / ASR), graph extraction, and question generation per upload batch via upload-confirm dialog or `process_config` API; reparse with new settings |\n| Data Source Import | Auto-sync from Feishu / Notion / Yuque (more data sources coming soon); incremental and full sync |\n| Document Formats | PDF / Word / Txt / Markdown / HTML / Images / CSV / Excel / PPT / JSON |\n| Retrieval Strategies | BM25 sparse / Dense retrieval / GraphRAG / parent-child chunking / HNSW-accelerated pgvector (1024-dim) / multi-dimensional indexing |\n| Batch Selection | Marquee drag-select multiple documents in the KB list for batch operations |\n| E2E Testing | Full-pipeline visualization with recall hit rate, BLEU / ROUGE metric evaluation |\n\n**Integrations & Extensions**\n\n| Capability | Details |\n|------------|---------|\n| LLMs | OpenAI / Azure OpenAI / Anthropic (Claude) / DeepSeek / Qwen (Alibaba Cloud) / Zhipu / Hunyuan / Doubao (Volcengine) / Gemini / MiniMax / NVIDIA / Novita AI / SiliconFlow / OpenRouter / Ollama |\n| Embeddings | Ollama / BGE / GTE / Zhipu / OpenAI-compatible APIs |\n| Vector DBs | PostgreSQL (pgvector) / Elasticsearch / OpenSearch / Milvus / Weaviate / Qdrant / Apache Doris / Tencent VectorDB |\n| Object Storage | Local / MinIO / AWS S3 / Volcengine TOS / Alibaba Cloud OSS / Kingsoft Cloud KS3 / Huawei Cloud OBS |\n| IM Channels | WeCom / Feishu / Slack / Telegram / DingTalk / Mattermost / WeChat |\n| Web Search | DuckDuckGo / Bing / Google / Tavily / Baidu / Ollama / SearXNG |\n\n**Platform**\n\n| Capability | Details |\n|------------|---------|\n| Deployment | Local / Docker / Kubernetes (Helm) with private and offline support |\n| UI | Web UI / RESTful API / CLI (`weknora`) / Chrome Extension / WeChat Mini Program |\n| Access Control | Tenant RBAC with 4-tier role matrix (Owner / Admin / Contributor / Viewer), per-KB resource ownership, per-tenant audit log, invite-only workspaces, self-service tenant creation, cross-tenant superuser |\n| Security | AES-256-GCM at-rest encryption for API keys and MCP / data-source credentials with graceful key rotation; gRPC TLS + Token between app and docreader; ",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/Tencent/WeKnora\n\ngo 1.26.0\n\nrequire (\n\tcodeberg.org/readeck/go-readability/v2 v2.1.2\n\tgithub.com/DATA-DOG/go-sqlmock v1.5.2\n\tgithub.com/JohannesKaufmann/html-to-markdown/v2 v2.5.1\n\tgithub.com/PuerkitoBio/goquery v1.12.0\n\tgithub.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.5.1\n\tgithub.com/asg017/sqlite-vec-go-bindings v0.1.6\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.7\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.17\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.16\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.101.0\n\tgithub.com/chromedp/chromedp v0.15.1\n\tgithub.com/duckdb/duckdb-go/v2 v2.10502.0\n\tgithub.com/elastic/go-elasticsearch/v7 v7.17.10\n\tgithub.com/elastic/go-elasticsearch/v8 v8.19.6\n\tgithub.com/gin-contrib/cors v1.7.7\n\tgithub.com/gin-gonic/gin v1.12.0\n\tgithub.com/go-openapi/strfmt v0.26.2\n\tgithub.com/go-sql-driver/mysql v1.10.0\n\tgithub.com/go-viper/mapstructure/v2 v2.5.0\n\tgithub.com/golang-jwt/jwt/v5 v5.3.1\n\tgithub.com/golang-migrate/migrate/v4 v4.19.1\n\tgithub.com/google/jsonschema-go v0.4.3\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.3\n\tgithub.com/hibiken/asynq v0.26.0\n\tgithub.com/jackc/pgx/v5 v5.9.2\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/ks3sdklib/aws-sdk-go v1.11.0\n\tgithub.com/larksuite/oapi-sdk-go/v3 v3.6.1\n\tgithub.com/longbridgeapp/opencc v0.3.13\n\tgithub.com/mark3labs/mcp-go v0.52.0\n\tgithub.com/milvus-io/milvus/client/v2 v2.6.4\n\tgithub.com/minio/minio-go/v7 v7.1.0\n\tgithub.com/mmcdole/gofeed v1.3.0\n\tgithub.com/neo4j/neo4j-go-driver/v6 v6.0.0\n\tgithub.com/ollama/ollama v0.23.2\n\tgithub.com/open-dingtalk/dingtalk-stream-sdk-go v0.9.1\n\tgithub.com/opensearch-project/opensearch-go/v4 v4.6.0\n\tgithub.com/panjf2000/ants/v2 v2.12.0\n\tgithub.com/parquet-go/parquet-go v0.29.0\n\tgithub.com/pganalyze/pg_query_go/v6 v6.2.2\n\tgithub.com/pgvector/pgvector-go v0.3.0\n\tgithub.com/qdrant/go-client v1.18.1\n\tgithub.com/redis/go-redis/v9 v9.14.1\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/sashabaranov/go-openai v1.41.2\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/slack-go/slack v0.23.1\n\tgithub.com/spf13/viper v1.21.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/swaggo/files v1.0.1\n\tgithub.com/swaggo/gin-swagger v1.6.1\n\tgithub.com/swaggo/swag v1.16.6\n\tgithub.com/tencent/vectordatabase-sdk-go v1.8.4\n\tgithub.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.103\n\tgithub.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lkeap v1.3.103\n\tgithub.com/tencentyun/cos-go-sdk-v5 v0.7.73\n\tgithub.com/tiktoken-go/tokenizer v0.7.0\n\tgithub.com/volcengine/ve-tos-golang-sdk/v2 v2.9.4\n\tgithub.com/wailsapp/wails/v2 v2.12.0\n\tgithub.com/weaviate/weaviate v1.37.3\n\tgithub.com/weaviate/weaviate-go-client/v5 v5.7.3\n\tgithub.com/xuri/excelize/v2 v2.10.1\n\tgithub.com/yanyiwu/gojieba v1.4.7\n\tgo.uber.org/dig v1.19.0\n\tgolang.org/x/crypto v0.51.0\n\tgolang.org/x/mod v0.36.0\n\tgolang.org/x/net v0.54.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/time v0.15.0\n\tgoogle.golang.org/api v0.278.0\n\tgoogle.golang.org/grpc v1.81.0\n\tgoogle.golang.org/protobuf v1.36.11\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/postgres v1.6.0\n\tgorm.io/driver/sqlite v1.6.0\n\tgorm.io/gorm v1.31.1\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.20.0 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tfilippo.io/edwards25519 v1.2.0 // indirect\n\tgit.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 // indirect\n\tgithub.com/JohannesKaufmann/dom v0.2.0 // indirect\n\tgithub.com/KyleBanks/depth v1.2.1 // indirect\n\tgithub.com/andybalholm/brotli v1.2.0 // indirect\n\tgithub.com/andybalholm/cascadia v1.3.3 // indirect\n\tgithub.com/apache/arrow-go/v18 v18.5.1 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect\n\tgithub.com/aws/smithy-go v1.25.1 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/bep/debounce v1.2.1 // indirect\n\tgithub.com/blang/semver/v4 v4.0.0 // indirect\n\tgithub.com/buger/jsonparser v1.1.2 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.15.0 // indirect\n\tgithub.com/byteda",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "llm",
      "eval",
      "vector",
      "embedding"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 96
    },
    "strategic_score": 96
  },
  {
    "owner": "modem-dev",
    "name": "hunk",
    "full_name": "modem-dev/hunk",
    "url": "https://github.com/modem-dev/hunk",
    "description": "Review-first terminal diff viewer for agentic coders",
    "language": "TypeScript",
    "total_stars": 5648,
    "forks": 145,
    "stars_this_period": 718,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "cli",
        "code-review",
        "diff",
        "git",
        "tui"
      ],
      "license": "MIT",
      "open_issues": 63,
      "created_at": "2026-03-17T19:16:15Z",
      "pushed_at": "2026-06-24T16:51:08Z",
      "homepage": "https://hunk.dev",
      "default_branch": "main",
      "forks": 145,
      "watchers": 9,
      "archived": false,
      "size_kb": 4502
    },
    "readme_content": "# hunk\n\nHunk is a review-first terminal diff viewer for agent-authored changesets, built on [OpenTUI](https://github.com/anomalyco/opentui) and [Pierre diffs](https://www.npmjs.com/package/@pierre/diffs).\n\n[![CI status](https://img.shields.io/github/actions/workflow/status/modem-dev/hunk/ci.yml?branch=main&style=for-the-badge&label=CI)](https://github.com/modem-dev/hunk/actions/workflows/ci.yml?branch=main)\n[![Latest release](https://img.shields.io/github/v/release/modem-dev/hunk?style=for-the-badge)](https://github.com/modem-dev/hunk/releases)\n[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE)\n\n- multi-file review stream with sidebar navigation\n- inline AI and agent annotations beside the code\n- split, stack, and responsive auto layouts\n- watch mode for auto-reloading file and Git-backed reviews\n- keyboard, mouse, pager, and Git difftool support\n\n<table>\n <tr>\n   <td width=\"60%\" align=\"center\">\n    <img width=\"845\" alt=\"image\" src=\"https://github.com/user-attachments/assets/35605618-be3f-479e-b6e0-edb089910651\" />\n     <br />\n     <sub>Split view with sidebar and inline AI notes</sub>\n   </td>\n   <td width=\"40%\" align=\"center\">\n     <img width=\"507\"alt=\"image\" src=\"https://github.com/user-attachments/assets/92eb8993-f044-436d-a038-8139da5ad8de\" />\n     <br />\n     <sub>Stacked view and mouse-selectable menus</sub>\n   </td>\n </tr>\n</table>\n\n## Install\n\n```bash\nnpm i -g hunkdiff\n```\n\nOr with Homebrew:\n\n```bash\nbrew install modem-dev/tap/hunk\n```\n\nRequirements:\n\n- Node.js 18+\n- macOS, Linux, or Windows\n- Git recommended for most workflows\n\n> Nix users can use the `default` package exported in `flake.nix` instead. See [nix/README.md](./nix/README.md) for details.\n\n## Quick start\n\n```bash\nhunk           # show help\nhunk --version # print the installed version\n```\n\n### Working with Git\n\nHunk mirrors Git's diff-style commands, but opens the changeset in a review UI instead of plain text.\n\n```bash\nhunk diff                      # review current repo changes, including untracked files\nhunk diff --watch              # auto-reload as the working tree changes\nhunk show                      # review the latest commit\nhunk show HEAD~1               # review an earlier commit\n```\n\n### Working with Jujutsu and Sapling\n\nHunk auto-detects Jujutsu and Sapling checkouts, so `hunk diff [revset]` and `hunk show [revset]` use native revsets inside jj or Sapling workspaces. To override VCS detection, set `vcs = \"git\"` or `vcs = \"jj\"` or `vcs = \"sl\"` in [config](#config).\n\n### Working with raw files and patches\n\n```bash\nhunk diff before.ts after.ts                # compare two files directly\nhunk diff before.ts after.ts --watch        # auto-reload when either file changes\ngit diff --no-color | hunk patch -          # review a patch from stdin\n```\n\n### Working with agents\n\n1. Open Hunk in another terminal with `hunk diff` or `hunk show`.\n2. Tell your agent to add the skill file returned by `hunk skill path`.\n3. Ask your agent to use the skill against the live Hunk session.\n\nA good generic prompt is:\n\n```text\nLoad the Hunk skill and use it for this review. Run `hunk skill path` to get the skill path.\n```\n\nFor the full live-session and `--agent-context` workflow guide, see [docs/agent-workflows.md](docs/agent-workflows.md).\n\n## Feature comparison\n\n| Capability                         | [hunk](https://github.com/modem-dev/hunk) | [lumen](https://github.com/jnsahaj/lumen) | [difftastic](https://github.com/Wilfred/difftastic) | [delta](https://github.com/dandavison/delta) | [diff-so-fancy](https://github.com/so-fancy/diff-so-fancy) | [diff](https://www.gnu.org/software/diffutils/) |\n| ---------------------------------- | ----------------------------------------- | ----------------------------------------- | --------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------------- | ----------------------------------------------- |\n| Review-first interactive UI        | ✅                                        | ✅                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Multi-file review stream + sidebar | ✅                                        | ✅                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Inline agent / AI annotations      | ✅                                        | ❌                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Responsive auto split/stack layout | ✅                                        | ❌                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Mouse support inside the viewer    | ✅                                        | ✅                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Runtime view toggles               | ✅                                        | ✅                                        | ❌                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Syntax highlighting                | ✅                                        | ✅                                        | ✅                                                  | ✅                                           | ❌                                                         | ❌                                              |\n| Structural diffing                 | ❌                                        | ❌                                        | ✅                                                  | ❌                                           | ❌                                                         | ❌                                              |\n| Pager-compatible mode              | ✅                                        | ❌                                        | ✅                                                  | ✅                                           | ✅                                                         | ✅                                              |\n\nHunk is optimized for reviewing a full changeset interactively.\n\n## Advanced\n\n### Config\n\nYou can persist preferences to a config file:\n\n- `~/.config/hunk/config.toml`\n- `.hunk/config.toml`\n\nExample:\n\n```toml\ntheme = \"github-dark-default\" # any built-in theme id, auto, or custom\nmode = \"auto\"        # auto, split, stack\nvcs = \"git\"          # git, jj, sl\nwatch = false\nexclude_untracked = false\nline_numbers = true\nwrap_lines = false\nagent_notes = false\ntransparent_background = false\n```\n\n`theme = \"auto\"` and `--theme auto` query the terminal background at startup, choose `github-light-default` for light backgrounds and `github-dark-default` for dark backgrounds, and fall back to `github-dark-default` if the terminal does not answer.\nOlder theme ids such as `graphite` and `paper` remain accepted as compatibility aliases.\n`exclude_untracked` affects Git/Sapling working-tree `hunk diff` sessions only.\n`transparent_background` can also be written as `transparentBackground`.\n\nCustom themes can inherit from any built-in theme and override only the colors you care about:\n\n```toml\ntheme = \"custom\"\n\n[custom_theme]\nbase = \"catppuccin-mocha\"\nlabel = \"My Theme\"\naccent = \"#7fd1ff\"\npanel = \"#10161d\"\nnoteBorder = \"#c49bff\"\n\n[custom_theme.syntax]\nkeyword = \"#8ed4ff\"\nstring = \"#c7b4ff\"\ncomment = \"#6e85a7\"\noperator = \"#7fd1ff\"\nvariable = \"#eef4ff\"\n```\n\nAll custom theme colors must use `#rrggbb` hex values. Press `t` in the app, or choose `View -> Themes…`, to open the theme selector.\n\n### Git integration\n\nSet Hunk as your Git pager so `git diff` and `git show` open in Hunk automatically:\n\n> [!NOTE]\n> Untracked files are auto-included only for Hunk's own `hunk diff` working-tree loader. If you open `git diff` through `hunk pager`, Git still decides the patch contents, so untracked files will not appear there.\n\n```bash\ngit config --global core.pager \"hunk pager\"\n```\n\nOr in your Git config:\n\n```ini\n[core]\n    pager = hunk pager\n```\n\nIf you want to keep Git's default pager and add opt-in aliases instead:\n\n```bash\ngit config --global alias.hdiff \"-c core.pager=\\\"hunk pager\\\" diff\"\ngit config --global alias.hshow \"-c core.pager=\\\"hunk pager\\\" show\"\n```\n\n### Jujutsu pager integration\n\nTo use Hunk as jj's pager, run `jj config edit --user` and update:\n\n```toml\n[ui]\npager = [\"hunk\", \"pager\"]\ndiff-formatter = \":git\"\n```\n\n### Sapling pager integration\n\nTo use Hunk as Sapling's pager, run `sl config -u` and update:\n\n```ini\n[pager]\npager = hunk pager\n```\n\n### OpenTUI component\n\nHunk also publishes `HunkDiffView` and lower-level primitives from `hunkdiff/opentui` for embedding the same diff renderer in your own OpenTUI app.\n\nSee [docs/opentui-component.md](docs/opentui-component.md) for install, API, and runnable examples.\n\n## Examples\n\nReady-to-run demo diffs live in [`examples/`](examples/README.md).\n\nEach example includes the exact command to run from the repository root.\n\n## Contributing\n\n💬 _Chat with users/contributors on the [Modem Discord server](https://discord.gg/WZFjaP6Gt8)_\n\nFor source setup, tests, packaging checks, and repo architecture, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Sponsor\n\nSponsored by [Modem](https://modem.dev?utm_source=github&utm_medium=oss&utm_campaign=oss_hunk&utm_content=readme_footer).\n\n<a href=\"https://modem.dev?utm_source=github&utm_medium=oss&utm_campaign=oss_hunk&utm_content=readme_footer\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://modem.dev/images/logo/svg/modem-combined-white.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://modem.dev/images/logo/svg/modem-combined-black.svg\">\n    <img src=\"https://modem.dev/images/logo/svg/modem-combined-black.svg\" alt=\"Modem\" width=\"220\">\n  </picture>\n</a>\n\n## License\n\n[MIT](LICENSE)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"hunkdiff\",\n  \"version\": \"0.16.0\",\n  \"description\": \"Desktop-inspired terminal diff viewer for understanding agent-authored changesets.\",\n  \"keywords\": [\n    \"ai\",\n    \"code-review\",\n    \"diff\",\n    \"git\",\n    \"terminal\",\n    \"tui\"\n  ],\n  \"homepage\": \"https://github.com/modem-dev/hunk#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/modem-dev/hunk/issues\"\n  },\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/modem-dev/hunk.git\"\n  },\n  \"bin\": {\n    \"hunk\": \"./bin/hunk.cjs\",\n    \"hunkdiff\": \"./bin/hunk.cjs\"\n  },\n  \"workspaces\": [\n    \".\",\n    \"packages/*\"\n  ],\n  \"files\": [\n    \"bin\",\n    \"dist/npm\",\n    \"skills\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"type\": \"module\",\n  \"exports\": {\n    \"./opentui\": {\n      \"types\": \"./dist/npm/opentui/index.d.ts\",\n      \"import\": \"./dist/npm/opentui/index.js\"\n    },\n    \"./package.json\": \"./package.json\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"scripts\": {\n    \"start\": \"bun run src/main.tsx\",\n    \"dev\": \"bun --watch src/main.tsx\",\n    \"build:npm\": \"bun run ./scripts/build-npm.ts\",\n    \"build:bin\": \"bun run ./scripts/build-bin.ts\",\n    \"build:prebuilt:npm\": \"bun run build:npm && bun run build:bin && bun run ./scripts/stage-prebuilt-npm.ts\",\n    \"build:prebuilt:artifact\": \"bun run build:bin && bun run ./scripts/build-prebuilt-artifact.ts\",\n    \"stage:prebuilt:release\": \"bun run build:npm && bun run ./scripts/stage-prebuilt-npm.ts --artifact-root ./dist/release/artifacts\",\n    \"install:bin\": \"bun run ./scripts/install-bin.ts\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"format\": \"oxfmt --write .\",\n    \"format:check\": \"oxfmt --check .\",\n    \"lint\": \"oxlint . --deny-warnings\",\n    \"lint:fix\": \"oxlint . --fix\",\n    \"changeset\": \"bunx @changesets/cli@2.31.0\",\n    \"changeset:status\": \"bunx @changesets/cli@2.31.0 status\",\n    \"release:version\": \"bunx @changesets/cli@2.31.0 version\",\n    \"prepare\": \"simple-git-hooks\",\n    \"test\": \"\\\"${npm_execpath:-bun}\\\" test ./src ./packages ./scripts ./test/cli ./test/session\",\n    \"test:theme-contrast\": \"bun test src/ui/themes.test.ts --test-name-pattern contrast\",\n    \"test:integration\": \"\\\"${npm_execpath:-bun}\\\" test ./test/pty\",\n    \"test:tty-smoke\": \"HUNK_RUN_TTY_SMOKE=1 \\\"${npm_execpath:-bun}\\\" test ./test/smoke\",\n    \"check:pack\": \"bun run ./scripts/check-pack.ts\",\n    \"check:prebuilt-pack\": \"bun run ./scripts/check-prebuilt-pack.ts\",\n    \"smoke:prebuilt-install\": \"bun run ./scripts/smoke-prebuilt-install.ts\",\n    \"publish:prebuilt:npm\": \"bun run ./scripts/publish-prebuilt-npm.ts\",\n    \"update:homebrew-formula\": \"bun run ./scripts/update-homebrew-formula.ts\",\n    \"prepack\": \"bun run build:npm\",\n    \"bench\": \"bun run benchmarks/run.ts\",\n    \"bench:release\": \"bun run ./scripts/run-release-benchmark.ts\",\n    \"bench:release:compare\": \"bun run ./scripts/compare-release-benchmarks.ts\",\n    \"bench:bootstrap-load\": \"bun run benchmarks/bootstrap-load.ts\",\n    \"bench:working-tree-load\": \"bun run benchmarks/working-tree-load.ts\",\n    \"bench:changeset-parse\": \"bun run benchmarks/changeset-parse.ts\",\n    \"bench:render-layout\": \"bun run benchmarks/render-layout.ts\",\n    \"bench:highlight-prefetch\": \"bun run benchmarks/highlight-prefetch.ts\",\n    \"bench:large-stream\": \"bun run benchmarks/large-stream.ts\",\n    \"bench:interaction-latency\": \"bun run benchmarks/interaction-latency.ts\",\n    \"bench:non-ascii-stream\": \"bun run benchmarks/non-ascii-stream.ts\",\n    \"bench:huge-stream\": \"bun run benchmarks/huge-stream.ts\",\n    \"bench:large-stream-profile\": \"bun run benchmarks/large-stream-profile.ts\",\n    \"bench:memory\": \"bun run benchmarks/memory.ts\",\n    \"bench:navigation-memory\": \"bun run benchmarks/navigation-memory.ts\",\n    \"bench:resize-memory\": \"bun run benchmarks/resize-memory.ts\",\n    \"bench:daemon-memory\": \"bun run scripts/daemon-memory-check.ts\",\n    \"bench:competitors\": \"bun run benchmarks/competitors.ts\",\n    \"nix:update-lock\": \"nix run .#update-bun-lock\"\n  },\n  \"dependencies\": {\n    \"@pierre/diffs\": \"1.2.2\",\n    \"bun\": \"^1.3.10\",\n    \"commander\": \"^14.0.3\",\n    \"diff\": \"^8.0.3\",\n    \"shell-quote\": \"1.8.4\",\n    \"string-width\": \"^8.2.1\",\n    \"zod\": \"^4.3.6\"\n  },\n  \"devDependencies\": {\n    \"@hunk/session-broker\": \"workspace:*\",\n    \"@hunk/session-broker-bun\": \"workspace:*\",\n    \"@hunk/session-broker-core\": \"workspace:*\",\n    \"@hunk/session-broker-node\": \"workspace:*\",\n    \"@opentui/core\": \"^0.1.89\",\n    \"@opentui/react\": \"^0.1.89\",\n    \"@types/bun\": \"1.3.13\",\n    \"@types/react\": \"^19.2.14\",\n    \"@types/shell-quote\": \"1.7.5\",\n    \"@types/ws\": \"^8.18.1\",\n    \"lint-staged\": \"^16.4.0\",\n    \"oxfmt\": \"^0.41.0\",\n    \"oxlint\": \"^1.56.0\",\n    \"react\": \"^19.2.4\",\n    \"simple-git-hooks\": \"^2.13.1\",\n    \"tuistory\": \"^0.0.16\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"peerDependencies\": {\n    \"@opentui/core\": \"^0.1.89\",\n    \"@opentui/react\": \"^0.1.89\",\n    \"react\": \"^19.2.4\"\n  },\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"bunx lint-staged\"\n  },\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"packageManager\": \"bun@1",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "workspace",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "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": 8,
      "total": 96
    },
    "strategic_score": 96
  },
  {
    "owner": "1jehuang",
    "name": "jcode",
    "full_name": "1jehuang/jcode",
    "url": "https://github.com/1jehuang/jcode",
    "description": "Coding Agent Harness",
    "language": "Rust",
    "total_stars": 7747,
    "forks": 860,
    "stars_this_period": 638,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "ai",
        "claude",
        "cli",
        "coding-agent",
        "llm",
        "mcp",
        "openai",
        "rust",
        "terminal",
        "tui"
      ],
      "license": "MIT",
      "open_issues": 101,
      "created_at": "2026-01-05T09:43:36Z",
      "pushed_at": "2026-06-25T06:38:11Z",
      "homepage": "",
      "default_branch": "master",
      "forks": 860,
      "watchers": 39,
      "archived": false,
      "size_kb": 433452
    },
    "readme_content": "<div align=\"center\">\n\n# jcode\n\n[![Latest Release](https://badgen.net/github/release/1jehuang/jcode?icon=github)](https://github.com/1jehuang/jcode/releases)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)\n[![Platforms](https://img.shields.io/badge/platforms-Linux%20%7C%20macOS%20%7C%20Windows-blue?style=flat-square)](https://github.com/1jehuang/jcode/releases)\n[![Last Commit](https://badgen.net/github/last-commit/1jehuang/jcode/master?icon=github)](https://github.com/1jehuang/jcode/commits/master)\n[![GitHub Stars](https://badgen.net/github/stars/1jehuang/jcode?icon=github)](https://github.com/1jehuang/jcode/stargazers)\n[![Discord](https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=flat-square&logo=discord&logoColor=white)](https://discord.gg/nBe9vGyK9a)\n\nThe next generation coding agent harness to raise the skill ceiling. <br>\nBuilt for multi-session workflows, infinite customizability, and performance. \n\n<br>\n\n<a href=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-memory-demo.mp4\">\n  <img src=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-memory-demo.webp\" alt=\"jcode memory demonstration\" width=\"800\">\n</a>\n\n<br>\n\n[Features](#features) · [Install](#installation) · [Quick Start](#quick-start) · [Further Reading](#further-reading) · [Contributing](CONTRIBUTING.md)\n\n</div>\n\n---\n\n<div align=\"center\">\n\n## Installation\n\n</div>\n\n```bash\n# macOS & Linux\ncurl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash\n```\n\nNeed Windows, Homebrew, source builds, provider setup, or tell your agent to set it up for you?\n[Jump to detailed installation](#detailed-installation).\n\n---\n\n\n<div align=\"center\">\n\n## Performance & Resource Efficiency\n\n</div>\n\njcode is built to be as performant and resource efficient as possible. Every metric is optimized to the bone, which is important for scaling multi-session workflows. Here we sample a few metrics to show the difference: RAM usage and boot up.\n\n### RAM comparison\n\n<div align=\"center\">\n\n<table>\n  <tr>\n    <td valign=\"top\" align=\"center\" width=\"50%\">\n      <strong>1 active session</strong>\n      <table>\n        <thead>\n          <tr>\n            <th>Tool</th>\n            <th>PSS</th>\n            <th>Comparison</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td><strong>jcode (local embedding off)</strong></td>\n            <td align=\"right\"><strong>27.8 MB</strong></td>\n            <td align=\"right\">baseline</td>\n          </tr>\n          <tr>\n            <td><strong>jcode</strong></td>\n            <td align=\"right\"><strong>167.1 MB</strong></td>\n            <td align=\"right\"><strong>6.0× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>pi</strong></td>\n            <td align=\"right\"><strong>144.4 MB</strong></td>\n            <td align=\"right\"><strong>5.2× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Codex CLI</strong></td>\n            <td align=\"right\"><strong>140.0 MB</strong></td>\n            <td align=\"right\"><strong>5.0× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>OpenCode</strong></td>\n            <td align=\"right\"><strong>371.5 MB</strong></td>\n            <td align=\"right\"><strong>13.4× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>GitHub Copilot CLI</strong></td>\n            <td align=\"right\"><strong>333.3 MB</strong></td>\n            <td align=\"right\"><strong>12.0× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Cursor Agent</strong></td>\n            <td align=\"right\"><strong>214.9 MB</strong></td>\n            <td align=\"right\"><strong>7.7× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Claude Code</strong></td>\n            <td align=\"right\"><strong>386.6 MB</strong></td>\n            <td align=\"right\"><strong>13.9× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Antigravity CLI</strong></td>\n            <td align=\"right\"><strong>243.7 MB</strong></td>\n            <td align=\"right\"><strong>8.8× more RAM</strong></td>\n          </tr>\n        </tbody>\n      </table>\n    </td>\n    <td width=\"24\"></td>\n    <td valign=\"top\" align=\"center\" width=\"50%\">\n      <strong>10 active sessions</strong>\n      <table>\n        <thead>\n          <tr>\n            <th>Tool</th>\n            <th>PSS</th>\n            <th>Comparison</th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr>\n            <td><strong>jcode (local embedding off)</strong></td>\n            <td align=\"right\"><strong>117.0 MB</strong></td>\n            <td align=\"right\">baseline</td>\n          </tr>\n          <tr>\n            <td><strong>jcode</strong></td>\n            <td align=\"right\"><strong>260.8 MB</strong></td>\n            <td align=\"right\"><strong>2.2× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>pi</strong></td>\n            <td align=\"right\"><strong>833.0 MB</strong></td>\n            <td align=\"right\"><strong>7.1× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Codex CLI</strong></td>\n            <td align=\"right\"><strong>334.8 MB</strong></td>\n            <td align=\"right\"><strong>2.9× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>OpenCode</strong></td>\n            <td align=\"right\"><strong>3237.2 MB</strong></td>\n            <td align=\"right\"><strong>27.7× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>GitHub Copilot CLI</strong></td>\n            <td align=\"right\"><strong>1756.5 MB</strong></td>\n            <td align=\"right\"><strong>15.0× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Cursor Agent</strong></td>\n            <td align=\"right\"><strong>1632.4 MB</strong></td>\n            <td align=\"right\"><strong>14.0× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Claude Code</strong></td>\n            <td align=\"right\"><strong>2300.6 MB</strong></td>\n            <td align=\"right\"><strong>19.7× more RAM</strong></td>\n          </tr>\n          <tr>\n            <td><strong>Antigravity CLI</strong></td>\n            <td align=\"right\"><strong>1021.2 MB</strong></td>\n            <td align=\"right\"><strong>8.7× more RAM</strong></td>\n          </tr>\n        </tbody>\n      </table>\n    </td>\n  </tr>\n</table>\n\n</div>\n\n### Time to first frame\n\n<div align=\"center\">\n\n| Tool | Time to first frame | Range | Comparison |\n|---|---:|---:|---:|\n| **jcode** | **14.0 ms** | 10.1–19.3 ms | baseline |\n| **Antigravity CLI** | **383.5 ms** | 363.1–415.4 ms | **27.4× slower** |\n| **pi** | **590.7 ms** | 369.6–934.8 ms | **42.2× slower** |\n| **Codex CLI** | **882.8 ms** | 742.3–1640.9 ms | **63.1× slower** |\n| **OpenCode** | **1035.9 ms** | 922.5–1104.4 ms | **74.0× slower** |\n| **GitHub Copilot CLI** | **1518.6 ms** | 1357.4–1826.8 ms | **108.5× slower** |\n| **Cursor Agent** | **1949.7 ms** | 1711.0–2104.8 ms | **139.3× slower** |\n| **Claude Code** | **3436.9 ms** | 2032.7–8927.2 ms | **245.5× slower** |\n\n</div>\n\nMeasured on this Linux machine across 10 interactive PTY launches.\n\n### Time to first input\n(time until typed probe text appears on the rendered screen; Antigravity uses its internal input-ready log marker because the sign-in screen suppresses probe echo.)\n<div align=\"center\">\n\n| Tool | Time to first input | Range | Comparison |\n|---|---:|---:|---:|\n| **jcode** | **48.7 ms** | 30.3–62.7 ms | baseline |\n| **Antigravity CLI** | **383.7 ms** | 363.4–415.7 ms | **7.9× slower** |\n| **pi** | **596.4 ms** | 373.9–955.2 ms | **12.2× slower** |\n| **Codex CLI** | **905.8 ms** | 760.1–1675.7 ms | **18.6× slower** |\n| **OpenCode** | **1047.9 ms** | 931.1–1116.9 ms | **21.5× slower** |\n| **GitHub Copilot CLI** | **1583.4 ms** | 1422.8–1880.0 ms | **32.5× slower** |\n| **Cursor Agent** | **1978.7 ms** | 1727.3–2130.0 ms | **40.6× slower** |\n| **Claude Code** | **3512.8 ms** | 2137.4–9002.0 ms | **72.2× slower** |\n\n</div>\n\nMeasured on this Linux machine across 10 interactive PTY launches. Antigravity CLI was unauthenticated for this run; its sign-in screen rendered normally and emitted an internal `CLI ready for user input` marker, but did not echo the typed probe.\n\n### Additional clients / memory scaling\n\n<div align=\"center\">\n\n| Tool | Extra PSS per added session | Comparison |\n|---|---:|---:|\n| **jcode (local embedding off)** | **~9.9 MB** | baseline |\n| **jcode** | **~10.4 MB** | **1.1× more RAM** |\n| **pi** | **~76.5 MB** | **7.7× more RAM** |\n| **Codex CLI** | **~21.6 MB** | **2.2× more RAM** |\n| **OpenCode** | **~318.4 MB** | **32.2× more RAM** |\n| **GitHub Copilot CLI** | **~158.1 MB** | **16.0× more RAM** |\n| **Cursor Agent** | **~157.5 MB** | **15.9× more RAM** |\n| **Claude Code** | **~212.7 MB** | **21.5× more RAM** |\n| **Antigravity CLI** | **~86.4 MB** | **8.7× more RAM** |\n\n</div>\nversions tested for this corrected memory rerun:\n\n- `jcode v0.9.1888-dev (be386f2)`\n- `pi 0.62.0`\n- `codex-cli 0.120.0`\n- `opencode 1.0.203`\n- `GitHub Copilot CLI 1.0.24` for the 1-session rerun, `GitHub Copilot CLI 1.0.27` for the 10-session rerun\n- `Cursor Agent 2026.04.08-a41fba1`\n- `Claude Code 2.1.86 (Claude Code)`\n- `Antigravity CLI 1.0.0`\n\n<div align=\"center\">\n\n  <a href=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-performance-demo.mp4\">\n    <img src=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-performance-demo.webp\" alt=\"jcode performance demonstration\" width=\"900\">\n  </a>\n\n  <p><em>jcode performance demonstration</em></p>\n\n</div>\n\n\n---\n\n## Memory (Agent memory)\n\nJcode embeds each turn/response as a semantic vector. Every turn does queries a graph of memories to efficiently find related memory entries via a cosine similarity check. The embedding hits are fed into the conversation, or optionally uses a memory sideagent which verifies the memories are relevant, and potentially does more work for information retreival before injecting into the conversation. This results in a human like memory system which allows the agent to automatically recall relevant information to the conversation without actively calling memory tools or being a token burner. \not \nTo have memories which are retrieved, they must also be extracted and stored. Every so often (semantic drift, K turns since last extraction, session end, etc), memories are extracted via a memory sideagent, and put into the memory graph. \n\nThe harness also provides explicit memory tools to allow the agent to actively search or store the memory without relying on a passive background process. The harness also provides session search for traditional RAG on previous sessions. \n\nMemories are automatically consolidated every so often via the ambient mode. This reorganizes, checks for staleness and conflicts, etc\n\n<div align=\"center\">\n\n  <a href=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-memory-demo.mp4\">\n    <img src=\"https://github.com/1jehuang/jcode/releases/download/readme-assets/jcode-memory-demo.webp\" alt=\"jcode memory demonstration\" width=\"900\">\n  </a>\n\n  <p><em>jcode memory demonstration</em></p>\n\n</div>\n\n<!-- Memory demo media is hosted in the readme-assets release. -->\n\n---\n\n## UI: Side panels, Diagrams, Info Widgets, rendering, scrolling, alignment\n\nThe side panel is a place for auxiliary information. Tell your jcode agent to load a file into the side panel and see it update in real time, or tell your agent to write directly to the side panel, or use it as a diff viewer. The side panel (and chat) is able to render mermaid diagrams inline. \n<img width=\"2877\" height=\"1762\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6c7bec81-ef3f-434d-8a7b-d55f8a54e5cf\" />\n\nTo make this possible, I created a new mermaid rendering library to render diagrams 1800x faster. It has no browser or Typescript d",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"jcode\"\nversion = \"0.31.2\"\ndescription = \"Possibly the greatest coding agent ever built — blazing-fast TUI, multi-model, swarm coordination, 30+ tools\"\nedition = \"2024\"\nautobins = false\n\n[workspace]\nmembers = [\n    \".\",\n    \"crates/jcode-agent-runtime\",\n    \"crates/jcode-app-core\",\n    \"crates/jcode-base\",\n    \"crates/jcode-tui\",\n    \"crates/jcode-build-meta\",\n    \"crates/jcode-ambient-types\",\n    \"crates/jcode-auth-types\",\n    \"crates/jcode-embedding\",\n    \"crates/jcode-gateway-types\",\n    \"crates/jcode-import-core\",\n    \"crates/jcode-pdf\",\n    \"crates/jcode-logging\",\n    \"crates/jcode-background-types\",\n    \"crates/jcode-batch-types\",\n    \"crates/jcode-build-support\",\n    \"crates/jcode-compaction-core\",\n    \"crates/jcode-config-types\",\n    \"crates/jcode-core\",\n    \"crates/jcode-memory-types\",\n    \"crates/jcode-message-types\",\n    \"crates/jcode-overnight-core\",\n    \"crates/jcode-plan\",\n    \"crates/jcode-productivity-core\",\n    \"crates/jcode-swarm-core\",\n    \"crates/jcode-protocol\",\n    \"crates/jcode-selfdev-types\",\n    \"crates/jcode-session-types\",\n    \"crates/jcode-setup-hints\",\n    \"crates/jcode-storage\",\n    \"crates/jcode-side-panel-types\",\n    \"crates/jcode-azure-auth\",\n    \"crates/jcode-notify-email\",\n    \"crates/jcode-provider-metadata\",\n    \"crates/jcode-provider-env\",\n    \"crates/jcode-provider-core\",\n    \"crates/jcode-provider-bedrock\",\n    \"crates/jcode-provider-anthropic\",\n    \"crates/jcode-provider-antigravity\",\n    \"crates/jcode-provider-copilot\",\n    \"crates/jcode-provider-openrouter\",\n    \"crates/jcode-provider-openai\",\n    \"crates/jcode-provider-gemini\",\n    \"crates/jcode-tui-markdown\",\n    \"crates/jcode-tui-messages\",\n    \"crates/jcode-usage-types\",\n    \"crates/jcode-tui-core\",\n    \"crates/jcode-tui-mermaid\",\n    \"crates/jcode-task-types\",\n    \"crates/jcode-tool-core\",\n    \"crates/jcode-tool-types\",\n    \"crates/jcode-tui-account-picker\",\n    \"crates/jcode-tui-anim\",\n    \"crates/jcode-tui-render\",\n    \"crates/jcode-tui-visual-debug\",\n    \"crates/jcode-tui-session-picker\",\n    \"crates/jcode-tui-style\",\n    \"crates/jcode-tui-permissions\",\n    \"crates/jcode-tui-tool-display\",\n    \"crates/jcode-tui-usage-overlay\",\n    \"crates/jcode-update-core\",\n    \"crates/jcode-terminal-launch\",\n    \"crates/jcode-terminal-image\",\n    \"crates/jcode-telemetry-core\",\n    \"crates/jcode-tui-workspace\",\n    \"crates/jcode-desktop\",\n    \"crates/jcode-render-core\",\n]\n\n[lib]\nname = \"jcode\"\npath = \"src/lib.rs\"\n\n[[bin]]\nname = \"jcode\"\npath = \"src/main.rs\"\n\n[[bin]]\nname = \"test_api\"\npath = \"src/bin/test_api.rs\"\n\n[[bin]]\nname = \"jcode-harness\"\npath = \"src/bin/harness.rs\"\n\n[[bin]]\nname = \"session_memory_bench\"\npath = \"src/bin/session_memory_bench.rs\"\nrequired-features = [\"dev-bins\"]\n\n[[bin]]\nname = \"memory_recall_bench\"\npath = \"src/bin/memory_recall_bench.rs\"\nrequired-features = [\"dev-bins\"]\n\n[[bin]]\nname = \"mermaid_side_panel_probe\"\npath = \"src/bin/mermaid_side_panel_probe.rs\"\nrequired-features = [\"dev-bins\"]\n\n[[bin]]\nname = \"tui_bench\"\npath = \"src/bin/tui_bench.rs\"\nrequired-features = [\"dev-bins\"]\n\n[dependencies]\n# Memory allocator (reduces fragmentation for long-running server)\ntikv-jemallocator = { version = \"0.6\", features = [\"unprefixed_malloc_on_supported_platforms\"], optional = true }\ntikv-jemalloc-ctl = { version = \"0.6\", optional = true }\ntikv-jemalloc-sys = { version = \"0.6\", optional = true }\n\n# Async runtime\ntokio = { version = \"1\", features = [\"fs\", \"io-std\", \"io-util\", \"macros\", \"net\", \"process\", \"rt-multi-thread\", \"signal\", \"sync\", \"time\"] }\nfutures = \"0.3\"\nasync-trait = \"0.1\"\n\n# HTTP client\nreqwest = { version = \"0.12\", default-features = false, features = [\"json\", \"stream\", \"blocking\", \"charset\", \"http2\", \"system-proxy\", \"rustls-tls\", \"rustls-tls-native-roots\"] }\nrustls = { version = \"0.23\", default-features = false, features = [\"aws_lc_rs\"] }\ntokio-tungstenite = { version = \"0.24\", default-features = false, features = [\"connect\", \"rustls-tls-native-roots\"] }\n\n# Serialization\nserde = { version = \"1\", features = [\"derive\"] }\nserde_json = { version = \"1\", features = [\"raw_value\"] }\nserde_yaml = \"0.9\"\ntoml = \"0.8\"\n\n# CLI\nclap = { version = \"4\", features = [\"derive\"] }\n\n# File operations\nglob = \"0.3\"\nignore = \"0.4\"           # gitignore-aware file walking\nwalkdir = \"2\"\nsimilar = \"2\"            # diffing for edits\n\n# Utilities\ndirs = \"5\"               # home directory\nanyhow = \"1\"\nthiserror = \"1\"\nlibc = \"0.2\"             # Unix system calls (flock)\nchrono = { version = \"0.4\", features = [\"serde\"] }\nregex = \"1\"\nurlencoding = \"2\"        # URL encoding for web search\nuuid = { version = \"1\", features = [\"v4\", \"v5\"] }\nproctitle = \"0.1\"\n\n# Embeddings (local inference) - behind feature flag (163 crates, slow to compile)\njcode-embedding = { path = \"crates/jcode-embedding\", optional = true }\njcode-gateway-types = { path = \"crates/jcode-gateway-types\" }\njcode-import-core = { path = \"crates/jcode-import-core\" }\njcode-logging = { path = \"crates/jcode-logging\" }\n\n# OAuth\nbase64 = \"0.22\"\nsha2 = \"0.10\"\nrand =",
    "strategic_keywords": [
      "agent",
      "memory",
      "mcp",
      "runtime",
      "skill",
      "workspace",
      "llm",
      "workflow",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 11,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "continuedev",
    "name": "continue",
    "full_name": "continuedev/continue",
    "url": "https://github.com/continuedev/continue",
    "description": "open-source coding agent",
    "language": "TypeScript",
    "total_stars": 34457,
    "forks": 4847,
    "stars_this_period": 627,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "cli",
        "developer-tools",
        "open-source"
      ],
      "license": "Apache-2.0",
      "open_issues": 963,
      "created_at": "2023-05-24T03:39:39Z",
      "pushed_at": "2026-06-25T15:31:50Z",
      "homepage": "https://continue.dev",
      "default_branch": "main",
      "forks": 4847,
      "watchers": 162,
      "archived": false,
      "size_kb": 871880
    },
    "readme_content": "<h1 align=\"center\">Continue</h1>\n\n<p align=\"center\">Pioneering open-source coding agent</p>\n\n<div align=\"center\">\n\n<a href=\"https://opensource.org/licenses/Apache-2.0\"><img src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\" /></a>\n<a href=\"https://docs.continue.dev\"><img src=\"https://img.shields.io/badge/Docs-docs.continue.dev-blue\" /></a>\n<a href=\"https://github.com/continuedev/continue/releases\"><img src=\"https://img.shields.io/badge/Changelog-GitHub_Releases-blue\" /></a>\n\n</div>\n\n<p align=\"center\">\n  <img src=\"media/github-readme.png\" alt=\"Banner\" />\n</p>\n\n## What is Continue?\n\n> _Note: The `continuedev/continue` repository is no longer actively maintained and is read-only for all users._\n\nContinue is a coding agent available as a [CLI](#cli), [VS Code extension](#vs-code), and [JetBrains plugin](#jetbrains).\n\n## Documentation\n\nTo learn how to configure Continue, how it works, and how to customize it, check out the [Continue Docs](https://docs.continue.dev).\n\n## Final 2.0.0 Release\n\nWe polished Continue and did a final 2.0.0 release of the VS Code extension, CLI, and JetBrains plugin.\n\nThis included removing anonymous telemetry, pulling out authentication, squashing bugs, and more.\n\n### VS Code\n\n[![VS Code Marketplace](https://img.shields.io/badge/VS_Code_Marketplace-007ACC?logo=visualstudiocode&logoColor=white)](https://marketplace.visualstudio.com/items?itemName=Continue.continue) [![OpenVSX Registry](https://img.shields.io/badge/OpenVSX_Registry-C160EF?logo=eclipseide&logoColor=white)](https://open-vsx.org/extension/Continue/continue) [![View source](https://img.shields.io/badge/View_source-181717?logo=github&logoColor=white)](extensions/vscode)\n\n### CLI\n\n[![npm](https://img.shields.io/badge/npm-CB3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@continuedev/cli) [![View source](https://img.shields.io/badge/View_source-181717?logo=github&logoColor=white)](extensions/cli)\n\n### JetBrains\n\n> _Note: We recommend using the Continue CLI instead of the JetBrains plugin._\n\n[![GitHub Releases](https://img.shields.io/badge/GitHub_Releases-181717?logo=github&logoColor=white)](https://github.com/continuedev/continue/releases) [![View source](https://img.shields.io/badge/View_source-181717?logo=github&logoColor=white)](extensions/intellij)\n\n## Contributors\n\nThank you to the entire Continue community for helping us create a pioneering coding agent.\n\nWhat we built together pushed the boundaries of what AI developer tooling could be.\n\nWe hope this codebase continues to serve as a foundation for others.\n\n## Code friends\n\n<a href=\"https://github.com/continuedev/continue/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=continuedev/continue&max=500\" />\n</a>\n\n## License\n\nApache 2.0 © 2023-2026 Continue Dev, Inc.\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"continue\",\n  \"scripts\": {\n    \"tsc:watch\": \"concurrently -n gui,vscode,core,binary -c cyan,magenta,yellow,green \\\"npm run tsc:watch:gui\\\" \\\"npm run tsc:watch:vscode\\\" \\\"npm run tsc:watch:core\\\" \\\"npm run tsc:watch:binary\\\"\",\n    \"tsc:watch:gui\": \"tsc --project gui/tsconfig.json --watch --noEmit --pretty\",\n    \"tsc:watch:vscode\": \"tsc --project extensions/vscode/tsconfig.json --watch --noEmit --pretty\",\n    \"tsc:watch:core\": \"tsc --project core/tsconfig.json --watch --noEmit --pretty\",\n    \"tsc:watch:binary\": \"tsc --project binary/tsconfig.json --watch --noEmit --pretty\",\n    \"format\": \"prettier --write \\\"**/*.{js,jsx,ts,tsx,json,css,md}\\\" --ignore-path .gitignore --ignore-path .prettierignore\",\n    \"format:check\": \"prettier --check \\\"**/*.{js,jsx,ts,tsx,json,css,md}\\\" --ignore-path .gitignore --ignore-path .prettierignore\",\n    \"prepare\": \"husky\"\n  },\n  \"lint-staged\": {\n    \"*.{js,jsx,ts,tsx,json,css,md}\": \"prettier --write\"\n  },\n  \"devDependencies\": {\n    \"@typescript-eslint/parser\": \"^8.40.0\",\n    \"concurrently\": \"^9.1.2\",\n    \"eslint\": \"^8\",\n    \"eslint-plugin-import\": \"^2.29.1\",\n    \"husky\": \"^9.1.7\",\n    \"lint-staged\": \"^15.5.2\",\n    \"prettier\": \"^3.3.3\",\n    \"prettier-plugin-tailwindcss\": \"^0.6.8\",\n    \"typescript\": \"^5.6.3\"\n  },\n  \"dependencies\": {\n    \"@ai-sdk/deepseek\": \"^2.0.20\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "developer tool"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 79
    },
    "strategic_score": 79
  },
  {
    "owner": "rustdesk",
    "name": "rustdesk",
    "full_name": "rustdesk/rustdesk",
    "url": "https://github.com/rustdesk/rustdesk",
    "description": "An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.",
    "language": "Rust",
    "total_stars": 116927,
    "forks": 17708,
    "stars_this_period": 581,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "android",
        "anydesk",
        "dart",
        "flatpak",
        "flutter",
        "flutter-apps",
        "ios",
        "linux",
        "macos",
        "p2p",
        "rdp",
        "remote-control",
        "remote-desktop",
        "rust",
        "rust-lang",
        "teamviewer",
        "vnc",
        "wayland",
        "windows"
      ],
      "license": "AGPL-3.0",
      "open_issues": 119,
      "created_at": "2020-09-28T15:36:08Z",
      "pushed_at": "2026-06-25T01:50:33Z",
      "homepage": "https://rustdesk.com",
      "default_branch": "master",
      "forks": 17708,
      "watchers": 607,
      "archived": false,
      "size_kb": 72446
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"res/logo-header.svg\" alt=\"RustDesk - Your remote desktop\"><br>\n  <a href=\"#raw-steps-to-build\">Build</a> •\n  <a href=\"#how-to-build-with-docker\">Docker</a> •\n  <a href=\"#file-structure\">Structure</a> •\n  <a href=\"#snapshot\">Snapshot</a><br>\n  [<a href=\"docs/README-UA.md\">Українська</a>] | [<a href=\"docs/README-CS.md\">česky</a>] | [<a href=\"docs/README-ZH.md\">中文</a>] | [<a href=\"docs/README-HU.md\">Magyar</a>] | [<a href=\"docs/README-ES.md\">Español</a>] | [<a href=\"docs/README-FA.md\">فارسی</a>] | [<a href=\"docs/README-FR.md\">Français</a>] | [<a href=\"docs/README-DE.md\">Deutsch</a>] | [<a href=\"docs/README-PL.md\">Polski</a>] | [<a href=\"docs/README-ID.md\">Indonesian</a>] | [<a href=\"docs/README-FI.md\">Suomi</a>] | [<a href=\"docs/README-ML.md\">മലയാളം</a>] | [<a href=\"docs/README-JP.md\">日本語</a>] | [<a href=\"docs/README-NL.md\">Nederlands</a>] | [<a href=\"docs/README-IT.md\">Italiano</a>] | [<a href=\"docs/README-RU.md\">Русский</a>] | [<a href=\"docs/README-PTBR.md\">Português (Brasil)</a>] | [<a href=\"docs/README-EO.md\">Esperanto</a>] | [<a href=\"docs/README-KR.md\">한국어</a>] | [<a href=\"docs/README-AR.md\">العربي</a>] | [<a href=\"docs/README-VN.md\">Tiếng Việt</a>] | [<a href=\"docs/README-DA.md\">Dansk</a>] | [<a href=\"docs/README-GR.md\">Ελληνικά</a>] | [<a href=\"docs/README-TR.md\">Türkçe</a>] | [<a href=\"docs/README-NO.md\">Norsk</a>] | [<a href=\"docs/README-RO.md\">Română</a>]<br>\n  <b>We need your help to translate this README, <a href=\"https://github.com/rustdesk/rustdesk/tree/master/src/lang\">RustDesk UI</a> and <a href=\"https://github.com/rustdesk/doc.rustdesk.com\">RustDesk Doc</a> to your native language</b>\n</p>\n\n> [!Caution]\n> **Misuse Disclaimer:** <br>\n> The developers of RustDesk do not condone or support any unethical or illegal use of this software. Misuse, such as unauthorized access, control or invasion of privacy, is strictly against our guidelines. The authors are not responsible for any misuse of the application.\n\n\nChat with us: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk) | [YouTube](https://www.youtube.com/@rustdesk)\n\n[![RustDesk Server Pro](https://img.shields.io/badge/RustDesk%20Server%20Pro-Advanced%20Features-blue)](https://rustdesk.com/pricing.html)\n\nYet another remote desktop solution, written in Rust. Works out of the box with no configuration required. You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, [set up your own](https://rustdesk.com/server), or [write your own rendezvous/relay server](https://github.com/rustdesk/rustdesk-server-demo).\n\n![image](https://user-images.githubusercontent.com/71636191/171661982-430285f0-2e12-4b1d-9957-4a58e375304d.png)\n\nRustDesk welcomes contribution from everyone. See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for help getting started.\n\n[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)\n\n[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)\n\n[**NIGHTLY BUILD**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)\n\n[<img src=\"https://f-droid.org/badge/get-it-on.png\"\n    alt=\"Get it on F-Droid\"\n    height=\"80\">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)\n[<img src=\"https://flathub.org/api/badge?svg&locale=en\"\n    alt=\"Get it on Flathub\"\n    height=\"80\">](https://flathub.org/apps/com.rustdesk.RustDesk)\n\n## Dependencies\n\nDesktop versions use Flutter or Sciter (deprecated) for GUI, this tutorial is for Sciter only, since it is easier and more friendly to start. Check out our [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) for building Flutter version.\n\nPlease download Sciter dynamic library yourself.\n\n[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |\n[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |\n[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)\n\n## Raw Steps to build\n\n- Prepare your Rust development env and C++ build env\n\n- Install [vcpkg](https://github.com/microsoft/vcpkg), and set `VCPKG_ROOT` env variable correctly\n\n  - Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static\n  - Linux/macOS: vcpkg install libvpx libyuv opus aom\n\n- run `cargo run`\n\n## [Build](https://rustdesk.com/docs/en/dev/build/)\n\n## How to Build on Linux\n\n### Ubuntu 18 (Debian 10)\n\n```sh\nsudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \\\n        libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \\\n        libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libpam0g-dev\n```\n\n### openSUSE Tumbleweed\n\n```sh\nsudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel pam-devel\n```\n\n### Fedora 28 (CentOS 8)\n\n```sh\nsudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel gstreamer1-devel gstreamer1-plugins-base-devel pam-devel\n```\n\n### Arch (Manjaro)\n\n```sh\nsudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire\n```\n\n### Install vcpkg\n\n```sh\ngit clone https://github.com/microsoft/vcpkg\ncd vcpkg\ngit checkout 2023.04.15\ncd ..\nvcpkg/bootstrap-vcpkg.sh\nexport VCPKG_ROOT=$HOME/vcpkg\nvcpkg/vcpkg install libvpx libyuv opus aom\n```\n\n### Fix libvpx (For Fedora)\n\n```sh\ncd vcpkg/buildtrees/libvpx/src\ncd *\n./configure\nsed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile\nsed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile\nmake\ncp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/\ncd\n```\n\n### Build\n\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\ngit clone --recurse-submodules https://github.com/rustdesk/rustdesk\ncd rustdesk\nmkdir -p target/debug\nwget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so\nmv libsciter-gtk.so target/debug\nVCPKG_ROOT=$HOME/vcpkg cargo run\n```\n\n## How to build with Docker\n\nBegin by cloning the repository and building the Docker container:\n\n```sh\ngit clone https://github.com/rustdesk/rustdesk\ncd rustdesk\ngit submodule update --init --recursive\ndocker build -t \"rustdesk-builder\" .\n```\n\nThen, each time you need to build the application, run the following command:\n\n```sh\ndocker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID=\"$(id -u)\" -e PGID=\"$(id -g)\" rustdesk-builder\n```\n\nNote that the first build may take longer before dependencies are cached, subsequent builds will be faster. Additionally, if you need to specify different arguments to the build command, you may do so at the end of the command in the `<OPTIONAL-ARGS>` position. For instance, if you wanted to build an optimized release version, you would run the command above followed by `--release`. The resulting executable will be available in the target folder on your system, and can be run with:\n\n```sh\ntarget/debug/rustdesk\n```\n\nOr, if you're running a release executable:\n\n```sh\ntarget/release/rustdesk\n```\n\nPlease ensure that you run these commands from the root of the RustDesk repository, or the application may not find the required resources. Also note that other cargo subcommands such as `install` or `run` are not currently supported via this method as they would install or run the program inside the container instead of the host.\n\n## File Structure\n\n- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions\n- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: screen capture\n- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: platform specific keyboard/mouse control\n- **[libs/clipboard](https://github.com/rustdesk/rustdesk/tree/master/libs/clipboard)**: file copy and paste implementation for Windows, Linux, macOS.\n- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: obsolete Sciter UI (deprecated)\n- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: audio/clipboard/input/video services, and network connections\n- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: start a peer connection\n- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Communicate with [rustdesk-server](https://github.com/rustdesk/rustdesk-server), wait for remote direct (TCP hole punching) or relayed connection\n- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platform specific code\n- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for desktop and mobile\n- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/v1/js)**: JavaScript for Flutter web client\n\n## Screenshots\n\n![Connection Manager](https://github.com/rustdesk/rustdesk/assets/28412477/db82d4e7-c4bc-4823-8e6f-6af7eadf7651)\n\n![Connected to a Windows PC](https://github.com/rustdesk/rustdesk/assets/28412477/9baa91e9-3362-4d06-aa1a-7518edcbd7ea)\n\n![File Transfer](https://github.com/rustdesk/rustdesk/assets/28412477/39511ad3-aa9a-4f8c-8947-1cce286a46ad)\n\n![TCP Tunneling](https://github.com/rustdesk/rustdesk/assets/28412477/78e8708f-e87e-4570-8373-1360033ea6c5)\n\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"rustdesk\"\nversion = \"1.4.8\"\nauthors = [\"rustdesk <info@rustdesk.com>\"]\nedition = \"2021\"\nbuild= \"build.rs\"\ndescription = \"RustDesk Remote Desktop\"\ndefault-run = \"rustdesk\"\nrust-version = \"1.75\"\n\n[lib]\nname = \"librustdesk\"\ncrate-type = [\"cdylib\", \"staticlib\", \"rlib\"]\n\n[[bin]]\nname = \"naming\"\npath = \"src/naming.rs\"\n\n[[bin]]\nname = \"service\"\npath = \"src/service.rs\"\n\n[features]\ninline = []\ncli = []\nuse_samplerate = [\"samplerate\"]\nuse_rubato = [\"rubato\"]\nuse_dasp = [\"dasp\"]\nflutter = [\"flutter_rust_bridge\"]\ndefault = [\"use_dasp\"]\nhwcodec = [\"scrap/hwcodec\"]\nvram = [\"scrap/vram\"]\nmediacodec = [\"scrap/mediacodec\"]\nplugin_framework = []\nlinux-pkg-config = [\"magnum-opus/linux-pkg-config\", \"scrap/linux-pkg-config\"]\nunix-file-copy-paste = [\n    \"dep:x11-clipboard\",\n    \"dep:x11rb\",\n    \"dep:percent-encoding\",\n    \"dep:once_cell\",\n    \"clipboard/unix-file-copy-paste\",\n]\nscreencapturekit = [\"cpal/screencapturekit\"]\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\nasync-trait = \"0.1\"\nscrap = { path = \"libs/scrap\", features = [\"wayland\"] }\nhbb_common = { path = \"libs/hbb_common\" }\nserde_derive = \"1.0\"\nserde = \"1.0\"\nserde_json = \"1.0\"\nserde_repr = \"0.1\"\ncfg-if = \"1.0\"\nlazy_static = \"1.4\"\nsha2 = \"0.10\"\nrepng = \"0.2\"\nparity-tokio-ipc = { git = \"https://github.com/rustdesk-org/parity-tokio-ipc\" }\nmagnum-opus = { git = \"https://github.com/rustdesk-org/magnum-opus\" }\ndasp = { version = \"0.11\", features = [\"signal\", \"interpolate-linear\", \"interpolate\"], optional = true }\nrubato = { version = \"0.12\", optional = true }\nsamplerate = { version = \"0.2\", optional = true }\nuuid = { version = \"1.3\", features = [\"v4\"] }\nclap = \"4.2\"\nrpassword = \"7.2\"\nnum_cpus = \"1.15\"\nbytes = { version = \"1.4\", features = [\"serde\"] }\ndefault-net = \"0.14\"\nwol-rs = \"1.0\"\nflutter_rust_bridge = { version = \"=1.80\", features = [\"uuid\"], optional = true}\nerrno = \"0.3\"\nrdev = { git = \"https://github.com/rustdesk-org/rdev\" }\nurl = { version = \"2.3\", features = [\"serde\"] }\ncrossbeam-queue = \"0.3\"\nhex = \"0.4\"\nchrono = \"0.4\"\ncidr-utils = \"0.5\"\nfon = \"0.6\"\nzip = \"0.6\"\nshutdown_hooks = \"0.1\"\ntotp-rs = { version = \"5.4\", default-features = false, features = [\"gen_secret\", \"otpauth\"] }\nstunclient = \"0.4\"\nkcp-sys= { git = \"https://github.com/rustdesk-org/kcp-sys\"}\nreqwest = { version = \"0.12\", features = [\"blocking\", \"socks\", \"json\", \"native-tls\", \"rustls-tls\", \"rustls-tls-native-roots\", \"gzip\"], default-features=false }\n\n[target.'cfg(not(target_os = \"linux\"))'.dependencies]\n# https://github.com/rustdesk/rustdesk/discussions/10197, not use cpal on linux\ncpal = { git = \"https://github.com/rustdesk-org/cpal\", branch = \"osx-screencapturekit\" }\nringbuf = \"0.3\"\n\n[target.'cfg(not(any(target_os = \"android\", target_os = \"ios\")))'.dependencies]\nmac_address = \"1.1\"\nsciter-rs = { git = \"https://github.com/rustdesk-org/rust-sciter\", branch = \"dyn\" }\nsys-locale = \"0.3\"\nenigo = { path = \"libs/enigo\", features = [ \"with_serde\" ] }\nclipboard = { path = \"libs/clipboard\" }\nctrlc = \"3.2\"\n# arboard = { version = \"3.4\", features = [\"wayland-data-control\"] }\narboard = { git = \"https://github.com/rustdesk-org/arboard\", features = [\"wayland-data-control\"] }\nclipboard-master = { git = \"https://github.com/rustdesk-org/clipboard-master\" }\nportable-pty = { git = \"https://github.com/rustdesk-org/wezterm\", branch = \"rustdesk/pty_based_0.8.1\", package = \"portable-pty\" }\n\nsystem_shutdown = \"4.0\"\nqrcode-generator = \"4.1\"\n\n[target.'cfg(target_os = \"windows\")'.dependencies]\nwinapi = { version = \"0.3\", features = [\n    \"winuser\",\n    \"wincrypt\",\n    \"shellscalingapi\",\n    \"pdh\",\n    \"synchapi\",\n    \"memoryapi\",\n    \"shellapi\",\n    \"devguid\",\n    \"setupapi\",\n    \"cguid\",\n    \"cfgmgr32\",\n    \"ioapiset\",\n    \"winspool\",\n] }\nwindows = { version = \"0.61\", features = [\n    \"Win32\",\n    \"Win32_Foundation\",\n    \"Win32_Security\",\n    \"Win32_Security_Authorization\",\n    \"Win32_Storage_FileSystem\",\n    \"Win32_System\",\n    \"Win32_System_Diagnostics\",\n    \"Win32_System_Diagnostics_ToolHelp\",\n    \"Win32_System_Environment\",\n    \"Win32_System_IO\",\n    \"Win32_System_Memory\",\n    \"Win32_System_Pipes\",\n    \"Win32_System_Threading\",\n    \"Win32_UI_Shell\",\n] }\nwinreg = \"0.11\"\nwindows-service = \"0.6\"\nvirtual_display = { path = \"libs/virtual_display\" }\nremote_printer = { path = \"libs/remote_printer\" }\nimpersonate_system = { git = \"https://github.com/rustdesk-org/impersonate-system\" }\nshared_memory = \"0.12\"\ntauri-winrt-notification = \"0.1\"\nrunas = \"1.2\"\n\n[target.'cfg(target_os = \"macos\")'.dependencies]\nobjc = \"0.2\"\ncocoa = \"0.24\"\ndispatch = \"0.2\"\ncore-foundation = \"0.9\"\ncore-graphics = \"0.22\"\ninclude_dir = \"0.7\"\nfruitbasket = \"0.10\"\nobjc_id = \"0.1\"\n# If we use piet \"0.7\" here, we must also update core-graphics to \"0.24\".\npiet = \"0.6\"\npiet-coregraphics = \"0.6\"\nforeign-types = \"0.3\"\n\n[target.'cfg(any(target_os = \"macos\", target_os = \"linux\", target_os = \"windows\"))'.dependencies]\ntray-icon = { git = \"https://github.com/tauri-apps/tray-icon\", version ",
    "strategic_keywords": [
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 74
    },
    "strategic_score": 74
  },
  {
    "owner": "Lightricks",
    "name": "LTX-2",
    "full_name": "Lightricks/LTX-2",
    "url": "https://github.com/Lightricks/LTX-2",
    "description": "Official Python inference and LoRA trainer package for the LTX-2 audio–video generative model.",
    "language": "Python",
    "total_stars": 7936,
    "forks": 1257,
    "stars_this_period": 581,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "generative-ai",
        "ltx",
        "ltx-2"
      ],
      "license": "NOASSERTION",
      "open_issues": 96,
      "created_at": "2026-01-03T13:16:29Z",
      "pushed_at": "2026-06-17T14:26:42Z",
      "homepage": "https://ltx.io/model/ltx-2",
      "default_branch": "main",
      "forks": 1257,
      "watchers": 81,
      "archived": false,
      "size_kb": 1868
    },
    "readme_content": "# LTX-2\n\n[![Website](https://img.shields.io/badge/Website-LTX-181717?logo=google-chrome)](https://ltx.io)\n[![Model](https://img.shields.io/badge/HuggingFace-Model-orange?logo=huggingface)](https://huggingface.co/Lightricks/LTX-2.3)\n[![Demo](https://img.shields.io/badge/Demo-Try%20Now-brightgreen?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAFKADAAQAAAABAAAAFAAAAACy3fD9AAACmElEQVQ4Ea1VP2haYRA/fRo0mESRIIqb2IwxuNUl0CGFQBC6OAWcikMottCpqYtDQIgdQsBFhAjZqiQhbhmySJBOgmNU0EGCg9r61Bivd0ffoykE0iQH37/77n7f3e/uqQFIPB7P/N3d3QeDwfAFEedZ91ghnyH5JM1m87dWq6UavF6vdTKZfDcajW/p4rE49+wIFMj33Gq1vlNo+kxg758KpiETqP/29vaXweVyqaS0aBfPXEfGFwTjWCwM+KBQoWA4HAJx/KDNvxcmTTGbzYAH8SljOp2C2+2GjY0NqNfrcHFxAXNzc2LDfCuKIq78KBdFOwsgGzidTnA4HHBzcwO9Xg8sFgtsbm7C3t4eVCoVaDQa0O12YXl5GUwmk5z5cZ/PB6PRCNrttgADFQUXFhbw8PAQVVXF3d1dJAeMx+P0zn0Jh8OYz+eRADCRSGAqlcLxeIz7+/u4tLSEjKUDZrNZ8U4mk0jR4fr6Op6enoru+voa0+k0rq2tYTAYxE6ng9QiSLRgrVZDv9+PFLkA6kUhT+GEC8C8XF5ewtHRkejICShiaDabwPvj42NJm3k7ODiQdDl9Fr0ocqJpdXUVIpEIdz7Y7XZRr6ysQDQahXK5LORvbW1p5rC9vQ2UifAooBqHuVxO0vt72tnZwWq1qqtisRgWCgU5ZzIZPDk50fdUUEmZvxTmAgKBgAxunT/fJpRKJWmhUCgEVDi4uroSG46kWCzC4uKitNVgMICzszOhSgA5fiJZhp4Lbbh1KARpbF65D/lx3vMdP05Vlkf5zKIDyukFJi7N6AVwNAhVsdlsM+LsjaZ56sq8kyQUqs4P6rsAKV49B4x4Padf7Y9Kv9+fEmiBQH8S4Gsa5v8EHpL9VwL7xH8BvwEcd4ccVf02KQAAAABJRU5ErkJggg==)](https://console.ltx.video/playground)\n[![Paper](https://img.shields.io/badge/Paper-PDF-EC1C24?logo=adobeacrobatreader&logoColor=white)](https://arxiv.org/abs/2601.03233)\n[![Discord](https://img.shields.io/badge/Join-Discord-5865F2?logo=discord)](https://discord.gg/ltxplatform)\n\n**LTX-2** is the first DiT-based audio-video foundation model that contains all core capabilities of modern video generation in one model: synchronized audio and video, high fidelity, multiple performance modes, production-ready outputs, API access, and open access.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/4414adc0-086c-43de-b367-9362eeb20228\" width=\"70%\" poster=\"\"> </video>\n</div>\n\n## 🚀 Quick Start\n\n```bash\n# Clone the repository\ngit clone https://github.com/Lightricks/LTX-2.git\ncd LTX-2\n\n# Set up the environment\nuv sync --frozen\nsource .venv/bin/activate\n```\n\n### Required Models\n\nDownload the following models from the [LTX-2.3 HuggingFace repository](https://huggingface.co/Lightricks/LTX-2.3):\n\n**LTX-2.3 Model Checkpoint** (choose and download one of the following)\n  * [`ltx-2.3-22b-dev.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-22b-dev.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-22b-dev.safetensors)\n  * [`ltx-2.3-22b-distilled-1.1.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-22b-distilled-1.1.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-22b-distilled-1.1.safetensors)\n\n**Spatial Upscaler** - Required for current two-stage pipeline implementations in this repository\n  * [`ltx-2.3-spatial-upscaler-x2-1.1.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-spatial-upscaler-x2-1.1.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-spatial-upscaler-x2-1.1.safetensors)\n  * [`ltx-2.3-spatial-upscaler-x1.5-1.0.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-spatial-upscaler-x1.5-1.0.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-spatial-upscaler-x1.5-1.0.safetensors)\n\n**Temporal Upscaler** - Supported by the model and will be required for future pipeline implementations\n  * [`ltx-2.3-temporal-upscaler-x2-1.0.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-temporal-upscaler-x2-1.0.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-temporal-upscaler-x2-1.0.safetensors)\n\n**Distilled LoRA** - Required for current two-stage pipeline implementations in this repository (except DistilledPipeline, ICLoraPipeline, and LipDubPipeline)\n  * [`ltx-2.3-22b-distilled-lora-384-1.1.safetensors`](https://huggingface.co/Lightricks/LTX-2.3/blob/main/ltx-2.3-22b-distilled-lora-384-1.1.safetensors) - [Download](https://huggingface.co/Lightricks/LTX-2.3/resolve/main/ltx-2.3-22b-distilled-lora-384-1.1.safetensors)\n\n**Gemma Text Encoder** (download all assets from the repository)\n  * [`Gemma 3`](https://huggingface.co/google/gemma-3-12b-it-qat-q4_0-unquantized/tree/main)\n\n**LoRAs**\n  * [`LTX-2.3-22b-IC-LoRA-Union-Control`](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Union-Control) - [Download](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Union-Control/resolve/main/ltx-2.3-22b-ic-lora-union-control-ref0.5.safetensors)\n  * [`LTX-2.3-22b-IC-LoRA-Motion-Track-Control`](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Motion-Track-Control) - [Download](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-Motion-Track-Control/resolve/main/ltx-2.3-22b-ic-lora-motion-track-control-ref0.5.safetensors)\n  * [`LTX-2-19b-IC-LoRA-Detailer`](https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Detailer) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Detailer/resolve/main/ltx-2-19b-ic-lora-detailer.safetensors)\n  * [`LTX-2-19b-IC-LoRA-Pose-Control`](https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Pose-Control) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Pose-Control/resolve/main/ltx-2-19b-ic-lora-pose-control.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Dolly-In`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-In) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-In/resolve/main/ltx-2-19b-lora-camera-control-dolly-in.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Dolly-Left`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left/resolve/main/ltx-2-19b-lora-camera-control-dolly-left.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Dolly-Out`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Out) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Out/resolve/main/ltx-2-19b-lora-camera-control-dolly-out.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Dolly-Right`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Right) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Right/resolve/main/ltx-2-19b-lora-camera-control-dolly-right.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Jib-Down`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Down) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Down/resolve/main/ltx-2-19b-lora-camera-control-jib-down.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Jib-Up`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Up) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Up/resolve/main/ltx-2-19b-lora-camera-control-jib-up.safetensors)\n  * [`LTX-2-19b-LoRA-Camera-Control-Static`](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Static) - [Download](https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Static/resolve/main/ltx-2-19b-lora-camera-control-static.safetensors)\n  * [`LTX-2.3-22b-IC-LoRA-HDR`](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-HDR) - HDR IC-LoRA and pre-computed text embeddings for `HDRICLoraPipeline`\n  * [`LTX-2.3-22b-IC-LoRA-LipDub`](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-LipDub) - [Download](https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-LipDub/resolve/main/ltx-2.3-22b-ic-lora-lipdub-0.9.safetensors)\n\n### Available Pipelines\n\n* **[TI2VidTwoStagesPipeline](packages/ltx-pipelines/src/ltx_pipelines/ti2vid_two_stages.py)** - Production-quality text/image-to-video with 2x upsampling (recommended)\n* **[TI2VidTwoStagesHQPipeline](packages/ltx-pipelines/src/ltx_pipelines/ti2vid_two_stages_hq.py)** - Same two-stage flow as above but uses the res_2s second-order sampler (fewer steps, better quality)\n* **[TI2VidOneStagePipeline](packages/ltx-pipelines/src/ltx_pipelines/ti2vid_one_stage.py)** - Single-stage generation for quick prototyping\n* **[DistilledPipeline](packages/ltx-pipelines/src/ltx_pipelines/distilled.py)** - Fastest inference with 8 predefined sigmas\n* **[ICLoraPipeline](packages/ltx-pipelines/src/ltx_pipelines/ic_lora.py)** - Video-to-video and image-to-video transformations (uses distilled model.)\n* **[KeyframeInterpolationPipeline](packages/ltx-pipelines/src/ltx_pipelines/keyframe_interpolation.py)** - Interpolate between keyframe images\n* **[A2VidPipelineTwoStage](packages/ltx-pipelines/src/ltx_pipelines/a2vid_two_stage.py)** - Audio-to-video generation conditioned on an input audio file\n* **[RetakePipeline](packages/ltx-pipelines/src/ltx_pipelines/retake.py)** - Regenerate a specific time region of an existing video\n* **[HDRICLoraPipeline](packages/ltx-pipelines/src/ltx_pipelines/hdr_ic_lora.py)** - Video-to-video with HDR output (linear float frames via LogC3 inverse decode, suitable for EXR export and tonemapping)\n* **[LipDubPipeline](packages/ltx-pipelines/src/ltx_pipelines/lipdub.py)** - Lip dubbing, rephrasing, matching speaker identity (distilled model, single IC-LoRA, Two stages).\n\n### ⚡ Optimization Tips\n\n* **Use DistilledPipeline** - Fastest inference with only 8 predefined sigmas (8 steps stage 1, 4 steps stage 2)\n* **Enable FP8 quantization** - Enables lower memory footprint: `--quantization fp8-cast` (CLI) or `quantization=QuantizationPolicy.fp8_cast()` (Python). Fp8-cast should be used with bf16 checkpoints, it shall downcast them on the fly. For Hopper GPUs with TensorRT-LLM, use `--quantization fp8-scaled-mm` for FP8 scaled matrix multiplication. Fp8-scaled-mm should be used with fp8 checkpoints.\n* **Install attention optimizations** - On datacenter Blackwell GPUs (B200), install FlashAttention 4 manually: `uv pip install 'flash-attn-4==4.0.0b9'` (this specific revision is the one we have verified against torch 2.9.1+cu128; newer betas have known issues on consumer Blackwell). On other CUDA GPUs (including Hopper), use xFormers (`uv sync --extra xformers`).\n* **Use gradient estimation** - Reduce inference steps from 40 to 20-30 while maintaining quality (see [pipeline documentation](packages/ltx-pipelines/README.md#denoising-loop-optimization))\n* **Skip memory cleanup** - If you have sufficient VRAM, disable automatic memory cleanup between stages for faster processing\n* **Choose single-stage pipeline** - Use `TI2VidOneStagePipeline` for faster generation when high resolution isn't required\n\n## ✍️ Prompting for LTX-2\n\nWhen writing prompts, focus on detailed, chronological descriptions of actions and scenes. Include specific movements, appearances, camera angles, and environmental details - all in a single flowing paragraph. Start directly with the action, and keep descriptions literal and precise. Think like a cinematographer describing a shot list. Keep within 200 words. For best results, build your prompts using this structure:\n\n- Start with main action in a single sentence\n- Add specific details about movements and gestures\n- Describe character/object appearances precisely\n- Include background and environment details\n- Specify camera angles and movements\n- Describe lighting and colors\n- Note any changes or sudden events\n\nFor additional guidance on writing a prompt please refer to <https://ltx.video/blog/how-to-prompt-for-ltx-2>\n\n### Automatic Prompt Enhancement\n\nLTX-2 pipelines support automatic prompt enhancement via an `enhance_prompt` parameter.\n\n## 🔌 ComfyUI Integration\n\nTo use our model with ComfyUI, please follow the instructions at <https://github.com/Lightricks/ComfyUI-LTXVideo/>.\n\n## 📦 Packages\n\nThis reposit",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[tool.uv.sources]\nltx-core = { workspace = true }\nltx-pipelines = { workspace = true }\n\n[tool.uv.workspace]\nmembers = [\"packages/*\"]\n\n[[tool.uv.index]]\nname = \"pypi\"\nurl = \"https://pypi.org/simple\"\n\n[dependency-groups]\ndev = [\n    \"google-cloud-storage>=2.0\",\n    \"matplotlib>=3.7\",\n    \"pre-commit>=4.3.0\",\n    \"ruff>=0.14.3\",\n    \"pytest~=9.0\",\n]\n\n[tool.ruff]\ntarget-version = \"py311\"\nline-length = 120\nexclude = []\n\n[tool.ruff.lint]\nselect = [\n    \"E\", # pycodestyle\n    \"F\", # pyflakes\n    \"W\", # pycodestyle (warnings)\n    \"I\", # isort\n    \"N\", # pep8-naming\n    \"ANN\", # flake8-annotations\n    \"B\", # flake8-bugbear\n    \"A\", # flake8-builtins\n    \"COM\", # flake8-commas\n    \"C4\", # flake8-comprehensions\n    \"DTZ\", # flake8-datetimez\n    \"EXE\", # flake8-executable\n    \"PIE\", # flake8-pie\n    \"T20\", # flake8-print\n    \"PT\", # flake8-pytest\n    \"SIM\", # flake8-simplify\n    \"ARG\", # flake8-unused-arguments\n    \"PTH\", # flake8--use-pathlib\n    \"ERA\", # flake8-eradicate\n    \"RUF\", # ruff specific rules\n    \"PL\", # pylint\n]\nignore = [\n    \"ANN002\", # Missing type annotation for *args\n    \"ANN003\", # Missing type annotation for **kwargs\n    \"ANN204\", # Missing type annotation for special method\n    \"COM812\", # Missing trailing comma\n    \"PTH123\", # `open()` should be replaced by `Path.open()`\n    \"PLR2004\", # Magic value used in comparison, consider replacing with a constant variable\n    \"N812\", # Lowercase  imported as non-lowercase\n]\n\n[tool.ruff.lint.pylint]\nmax-args = 10\n\n[tool.ruff.lint.isort]\nknown-first-party = [\"ltx_core\", \"ltx_pipelines\", \"ltx_trainer\"]\n",
    "strategic_keywords": [
      "rag",
      "workspace",
      "inference"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 8,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "LMCache",
    "name": "LMCache",
    "full_name": "LMCache/LMCache",
    "url": "https://github.com/LMCache/LMCache",
    "description": "LMCache: Supercharge Your LLM with the Fastest KV Cache Layer",
    "language": "Python",
    "total_stars": 9847,
    "forks": 1405,
    "stars_this_period": 551,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "amd",
        "cuda",
        "fast",
        "inference",
        "kv-cache",
        "llm",
        "pytorch",
        "rocm",
        "speed",
        "vllm"
      ],
      "license": "Apache-2.0",
      "open_issues": 356,
      "created_at": "2024-05-28T21:06:04Z",
      "pushed_at": "2026-06-25T15:05:36Z",
      "homepage": "https://lmcache.ai/",
      "default_branch": "dev",
      "forks": 1405,
      "watchers": 49,
      "archived": false,
      "size_kb": 45826
    },
    "readme_content": "<div align=\"center\">\n  <p align=\"center\">\n    <img src=\"asset/logo.png\" alt=\"lmcache logo\" width=\"45%\">\n  </p>\n  <h3 align=\"center\">\n    A KV Cache Management Layer for Scalable LLM Inference\n  </h3>\n    <hr width=\"78%\">\n\n  <h3 align=\"center\">\n    <a href=\"https://blog.lmcache.ai/\">Blog</a> |\n    <a href=\"https://docs.lmcache.ai/\">Documentation</a> |\n    <a href=\"https://join.slack.com/t/lmcacheworkspace/shared_invite/zt-3zxjao8h0-lRfBfnLqbALOtLsWn2ITxA\">Join Slack</a> |\n    <a href=\"https://docs.lmcache.ai/community/meetings.html\">Community Meeting</a> |\n    <a href=\"https://github.com/LMCache/LMCache/issues/2923\">Roadmap</a>\n  </h3>\n\n  [![PyPI](https://img.shields.io/pypi/v/lmcache)](https://pypi.org/project/lmcache/)\n  [![PyPI - Downloads](https://img.shields.io/pypi/dm/lmcache)](https://pypi.org/project/lmcache/)\n  [![GitHub commit activity](https://img.shields.io/github/commit-activity/w/LMCache/LMCache)](https://github.com/LMCache/LMCache/graphs/commit-activity)\n  [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/LMCache/LMCache/)\n\n</div>\n\n## Updates\n- [2026/05] 🔥 Agentic workload benchmark on AMD MI300X ([blog](https://blog.lmcache.ai/en/2026/05/12/benchmarking-lmcache-for-multi-turn-agentic-workloads-on-amd-mi300x/)).\n- [2026/04] 🔥 LMCache's new multiprocess (MP) architecture release ([blog](https://blog.lmcache.ai/en/2026/04/03/lmcaches-new-architecture-boosts-moe-inference-performance-by-10x/)).\n- [2026/03] LMCache at GTC 2026 ([post](https://www.linkedin.com/posts/lmcache-lab_llm-opensource-nvidiagtc-activity-7442721875664826369-pMAu?utm_source=share&utm_medium=member_desktop&rcm=ACoAADkIIvQBTyG53kXXX70OZdE5rhpllYQqmIA)).\n- [2026/01] LMCache multi-node P2P CPU memory sharing, from experimental feature to production ([blog](https://blog.lmcache.ai/en/2026/01/21/p2p-1/)).\n\n<details>\n<summary>More</summary>\n\n- [2025/11] LMCache x CoreWeave accelerate efficient LLM inference for Cohere ([blog](https://blog.lmcache.ai/en/2025/10/29/breaking-the-memory-barrier-how-lmcache-and-coreweave-power-efficient-llm-inference-for-cohere/)).\n- [2025/10] LMCache joins the PyTorch Foundation and Tensormesh unveiled ([blog](https://blog.lmcache.ai/en/2025/10/31/tensormesh-unveiled-and-lmcache-joins-the-pytorch-foundation/), [PyTorch](https://pytorch.org/blog/lmcache-joins-pytorch-ecosystem/)).\n- [2025/09] NVIDIA Dynamo integrates LMCache, accelerating LLM inference ([blog](https://blog.lmcache.ai/en/2025/09/18/nvidia-dynamo-integrates-lmcache-accelerating-llm-inference/)).\n- [2025/08] 🎉 LMCache hits 5,000+ GitHub stars ([blog](https://blog.lmcache.ai/en/2025/08/28/%f0%9f%8e%89-lmcache-hits-5000-github-stars-thank-you-community/)).\n- [2025/08] LMCache supports gpt-oss (20B/120B) on day 1 ([blog](https://blog.lmcache.ai/en/2025/08/05/lmcache-supports-gpt-oss-20b-120b-on-day-1/)).\n- [2025/07] Get faster LLM inference and cheaper responses with LMCache and Redis ([Redis blog](https://redis.io/blog/get-faster-llm-inference-and-cheaper-responses-with-lmcache-and-redis/)).\n- [2025/07] LMCache extends its turbo-boost to multimodal models in vLLM V1 ([blog](https://blog.lmcache.ai/en/2025/07/03/lmcache-extends-its-turbo-boost-to-multimodal-models-in-vllm-v1/)).\n- [2025/06] LLM Production Stack goes cross-hardware: AMD, Arm and Ascend ([blog](https://blog.lmcache.ai/en/2025/06/20/llm-production-stack-goes-cross-hardware-ascend-arm-and-amd-support-incoming/)).\n\n</details>\n\n## About\n\nLMCache is a **KV cache management layer** for LLM inference. It turns KV cache from a temporary state into reusable *AI-native knowledge* that can be *stored* persistently, *reused* across multiple serving engines, *monitored* with an observability stack, and *transformed* for better generation quality. As a result, LMCache **reduces TTFT** (time-to-first-token) and **improves throughput**, especially for long-context agentic, multi-turn conversation, and knowledge-augmented workloads (e.g., RAG).\n\nLMCache is **vendor-neutral**. It can be used as a KV cache layer for a range of mainstream open-source serving engines, inference frameworks, hardware vendors, storage systems, and infrastructure providers. The vendor neutrality allows users to freely switch between serving engines and storage vendors, while reusing the stored KV caches.\n\n<p align=\"center\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"asset/deployment_modes_dark.png\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"asset/deployment_modes_light.png\">\n  <img alt=\"LMCache Deployment Modes\" src=\"asset/deployment_modes_light.png\">\n</picture>\n</p>\n\n### Key features\n\n- **Engine-independent deployment**: LMCache, as a standalone daemon process, manages KV cache independently from the inference engine process, so that KV cache will not be lost even if the inference engine crashes (i.e., no fate-sharing with engines).\n\n- **Persistent, tiered KV cache offloading and reuse**: Move KV caches out of GPU memory into a tiered storage hierarchy spanning CPU memory, local storage, and remote backends, enabling reuse across requests, sessions, and engine instances to reduce repeated prefill computation and improve TTFT.\n\n- **Production-level KV cache observability**: LMCache provides a rich set of KV cache observability metrics, including typical Kubernetes metrics (health monitoring, performance diagnostics), KV-cache-specific metrics (request-level and token-level prefix cache hits, lifecycle, request-level KV cache performance), management metrics (user-specific usage), and more.\n\n- **Pluggable storage and transport backends**: Easily integrate remote storage and KV transfer backends through a unified interface, enabling KV cache offloading and sharing across storage providers. Through this interface, LMCache supports storage backends including CPU RAM, local disk (SSD), Redis/Valkey, Mooncake, InfiniStore, S3-compatible object storage, NIXL, and GDS.\n\n- **Non-prefix KV reuse**: Extend KV reuse beyond prefix caching by reusing cached KV blocks at any position in the prompt. This leverages CacheBlend to selectively recompute tokens for quality recovery.\n\n- **PD disaggregation and KV transfer**: Support KV cache transfer from prefill workers to decode workers over NVLink, RDMA, or TCP through transport layers such as NIXL.\n\n- **Pluggable KV transformation**: A simple interface for researchers to write compression, token dropping, and custom serialization through a flexible SERDE interface.\n\nLMCache is becoming an integral layer in the LLM inference *ecosystem*, with *community*-driven integration with serving engines, inference frameworks, hardware vendors, storage systems, and infrastructure providers:\n\n<p align=\"center\">\n  <img src=\"asset/ecosystem.png\" alt=\"LMCache ecosystem\">\n</p>\n\n## Getting Started\n\nTo use LMCache, simply install `lmcache` from your package manager, e.g. pip:\n```bash\npip install lmcache\n```\n\nFor more setup options and examples, see:\n- [Installation](https://docs.lmcache.ai/getting_started/installation.html)\n- [Quickstart](https://docs.lmcache.ai/getting_started/quickstart.html)\n- [LMCache Recipes](https://docs.lmcache.ai/recipes/index.html)\n- [CLI Reference](https://docs.lmcache.ai/cli/index.html)\n- [Benchmarking Guide](https://docs.lmcache.ai/getting_started/benchmarking.html)\n- [Production Deployment](https://docs.lmcache.ai/mp/deployment.html)\n\n## Contributing\nWe welcome and value contributions and collaborations. Join us in improving LMCache. Check out the [Contributing Guide](https://docs.lmcache.ai/developer_guide/contributing.html) or join our [Slack community](https://join.slack.com/t/lmcacheworkspace/shared_invite/zt-3zxjao8h0-lRfBfnLqbALOtLsWn2ITxA) to get started.\n\n## Adoption and Partnerships\nLMCache has a growing community of developers, researchers, industry adopters, and partners building the next generation of efficient LLM inference systems.\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"asset/partner_dark.png\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"asset/partner_light.png\">\n    <img alt=\"LMCache Adoption and Partnerships\" src=\"asset/partner_light.png\">\n  </picture>\n</p>\n\nAs an independent open-source project, LMCache is becoming the de-facto standard for KV Cache management in LLM inference. Its continued development and community work are supported in part by [Tensormesh](https://www.tensormesh.ai/).\n\n## Citation\n\nLMCache builds on research in KV cache management, including cache reuse, offloading, compression, and serving optimization. If you use LMCache in your research, please cite the LMCache paper and related work.\n\n~~~bibtex\n@article{cheng2025lmcache,\n  title={LMCache: An Efficient KV Cache Layer for Enterprise-Scale LLM Inference},\n  author={Cheng, Yihua and Liu, Yuhan and Yao, Jiayi and An, Yuwei and Chen, Xiaokun and Feng, Shaoting and Huang, Yuyang and Shen, Samuel and Du, Kuntai and Jiang, Junchen},\n  journal={arXiv preprint arXiv:2510.09665},\n  year={2025}\n}\n~~~\n\n<details>\n<summary>Related papers</summary>\n\n~~~bibtex\n@inproceedings{liu2024cachegen,\n  title={Cachegen: Kv cache compression and streaming for fast large language model serving},\n  author={Liu, Yuhan and Li, Hanchen and Cheng, Yihua and Ray, Siddhant and Huang, Yuyang and Zhang, Qizheng and Du, Kuntai and Yao, Jiayi and Lu, Shan and Ananthanarayanan, Ganesh and others},\n  booktitle={Proceedings of the ACM SIGCOMM 2024 Conference},\n  pages={38--56},\n  year={2024}\n}\n\n@inproceedings{yao2025cacheblend,\n  title={Cacheblend: Fast large language model serving for rag with cached knowledge fusion},\n  author={Yao, Jiayi and Li, Hanchen and Liu, Yuhan and Ray, Siddhant and Cheng, Yihua and Zhang, Qizheng and Du, Kuntai and Lu, Shan and Jiang, Junchen},\n  booktitle={Proceedings of the twentieth European conference on computer systems},\n  pages={94--109},\n  year={2025}\n}\n~~~\n\n</details>\n\n## License\n\nThe LMCache codebase is licensed under Apache License 2.0. See the [LICENSE](LICENSE) file for details.\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\n# Requirements for package build\n# Should be mirrored in requirements/build.txt (for builds external to setuptools)\n# The recommended installation from source will avoid the requirements here in order\n# to stay flexible for the torch version with `--no-build-isolation`. Thus, these packages\n# should be installed before `pip install -e . --no-build-isolation`. \n# However, build isolation is still used for the cibuildwheel releases\n# Thus, we will still lock a torch version here because we can choose to release wheels\n# in sync with vllm and update our torch version accordingly\nrequires = [\n    \"ninja\",\n    \"packaging>=24.2\",\n    \"setuptools>=77.0.3,<81.0.0\",\n    \"setuptools_scm>=8\",\n    \"torch==2.11.0\",\n    \"wheel\",\n]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"lmcache\"\nauthors = [{name = \"LMCache Team\", email = \"lmcacheteam@gmail.com\"}]\nlicense = \"Apache-2.0\"\nlicense-files = [\"LICENSE\"]\nreadme = \"README.md\"\ndescription = \"A LLM serving engine extension to reduce TTFT and increase throughput, especially under long-context scenarios.\"\nclassifiers = [\n    \"Development Status :: 3 - Alpha\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Environment :: GPU\",\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 :: Implementation :: CPython\",\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.14\"\ndynamic = [\"dependencies\", \"version\"]\n\n[project.scripts]\nlmcache=\"lmcache.cli.main:main\"\nlmcache_server=\"lmcache.v1.server.__main__:main\"\nlmcache_controller=\"lmcache.v1.api_server.__main__:main\"\n\n[project.urls]\nhomepage = \"https://docs.lmcache.ai\"\nsource = \"https://github.com/LMCache/LMCache\"\nissues = \"https://github.com/LMCache/LMCache\"\n\n[tool.setuptools_scm]\nversion_file = \"lmcache/_version.py\"\n# do not include +gREV local version, required for Test PyPI upload\nlocal_scheme = \"no-local-version\"\n# only treat vX.Y.Z-style tags as version anchors; ignores nightly/nightly-cu129 tags\ntag_regex = \"^v?(?P<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+.*)$\"\ngit_describe_command = [\"git\", \"describe\", \"--tags\", \"--long\", \"--match\", \"v[0-9]*.[0-9]*\", \"--exclude\", \"v*-*\"]\n\n[tool.setuptools.packages.find]\nwhere = [\"\"]\ninclude = [\"lmcache\", \"lmcache*\"]\n\n[tool.ruff]\n# same as Black's default line length\nline-length = 88\nexclude = [\n    \"lmcache/integration/vllm/lmcache_mp_connector_*.py\",\n]\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-simplify\n    #\"SIM\",\n    # Ruff does not support isort's import_headings feature, yet.\n    # \"I\",\n    # flake8-logging-format\n    #\"G\",\n    # flake8-self (private member access)\n    \"SLF\",\n]\nignore = [\n    # star imports\n    \"F405\", \"F403\",\n    # lambda expression assignment\n    \"E731\",\n    # Loop control variable not used within loop body\n    \"B007\",\n    # f-string format\n    \"UP032\",\n]\n\n[tool.ruff.lint.per-file-ignores]\n# Ignore SLF everywhere except lmcache/v1/multiprocess/\n\"!lmcache/v1/multiprocess/**\" = [\"SLF\"]\n\"!lmcache/v1/distributed/**\" = [\"SLF\"]\n\n[tool.ruff.lint.isort]\n# same as .isort.cfg\nfrom-first = true\n# not supported yet\n# import-heading-future=Future\n# import-heading-stdlib=Standard\n# import-heading-thirdparty=Third Party\n# import-heading-firstparty=First Party\n# import-heading-localfolder=Local\n\n[tool.mypy]\n\nplatform = \"linux\"\nmodules = [\"lmcache\", \"tests\", \"benchmarks\"]\nexclude = [\n    'lmcache/integration/vllm/lmcache_mp_connector_.*\\.py',\n]\n\ndisable_error_code = [\n    #\"annotation-unchecked\",\n    #\"union-attr\",\n    #\"var-annotated\",\n    #\"arg-type\",\n    # \"call-arg\",\n    #\"import-untyped\",\n    #\"attr-defined\",\n    #\"return-value\",\n    #\"assignment\",\n    #\"call-overload\",\n    #\"misc\",\n]\n\nignore_missing_imports = true\nexplicit_package_bases = true\n\n# TODO: tighten MyPy checks by enabling these checks over time.\ncheck_untyped_defs = false\ndisallow_incomplete_defs = false\ndisallow_untyped_defs = false\ndisallow_untyped_calls = false\nwarn_return_any = false\n\nfollow_imports = \"silent\"\n\n[tool.codespell]\nignore-words-list = \"afterall,allready,notin,te\"\nskip = \"operator/config/crd/bases/*,lmcache/integration/vllm/lmcache_mp_connector_*.py\"\n\n[tool.cibuildwheel]\nbuild = \"cp3*-manylinux_x86_64\"\n\n# see https://developer.nvidia.com/cuda-gpus for compute capabilities\n# \"CUDA-Enabled Datacenter Products\"\n# 7.5:  T4\n# 8.0:  A100, A30\n# 8.6:  A40, A10, A16, A2\n# 8.9:  L4, L40, L40S\n# 9.0:  GH200, H200, H100\n# 10.0: GB200, B200\n# 12.0: RTX 50-series (PTX)\n# CUDA 13 dropped support for compute capability 7.0 (Volta).\nenvironment = {TORCH_CUDA_ARCH_LIST = \"7.5;8.0;8.6;8.9;9.0;10.0;12.0\", E",
    "strategic_keywords": [
      "agent",
      "memory",
      "rag",
      "workspace",
      "llm",
      "inference"
    ],
    "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": 7,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "infiniflow",
    "name": "ragflow",
    "full_name": "infiniflow/ragflow",
    "url": "https://github.com/infiniflow/ragflow",
    "description": "RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs",
    "language": "Go",
    "total_stars": 83628,
    "forks": 9699,
    "stars_this_period": 545,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agentic-ai",
        "agentic-retrieval",
        "agentic-search",
        "ai",
        "ai-agents",
        "context-engine",
        "context-management",
        "llm-apps",
        "rag",
        "retrieval-augmented-generation"
      ],
      "license": "Apache-2.0",
      "open_issues": 2849,
      "created_at": "2023-12-12T06:13:13Z",
      "pushed_at": "2026-06-25T13:45:36Z",
      "homepage": "https://ragflow.io",
      "default_branch": "main",
      "forks": 9699,
      "watchers": 343,
      "archived": false,
      "size_kb": 132921
    },
    "readme_content": "<div align=\"center\">\n<a href=\"https://cloud.ragflow.io/\">\n<img src=\"web/src/assets/logo-with-text.svg\" width=\"520\" alt=\"ragflow logo\">\n</a>\n</div>\n\n<p align=\"center\">\n  <a href=\"./README.md\"><img alt=\"README in English\" src=\"https://img.shields.io/badge/English-DBEDFA\"></a>\n  <a href=\"./README_zh.md\"><img alt=\"简体中文版自述文件\" src=\"https://img.shields.io/badge/简体中文-DFE0E5\"></a>\n  <a href=\"./README_tzh.md\"><img alt=\"繁體版中文自述文件\" src=\"https://img.shields.io/badge/繁體中文-DFE0E5\"></a>\n  <a href=\"./README_ja.md\"><img alt=\"日本語のREADME\" src=\"https://img.shields.io/badge/日本語-DFE0E5\"></a>\n  <a href=\"./README_ko.md\"><img alt=\"한국어\" src=\"https://img.shields.io/badge/한국어-DFE0E5\"></a>\n  <a href=\"./README_fr.md\"><img alt=\"README en Français\" src=\"https://img.shields.io/badge/Français-DFE0E5\"></a>\n  <a href=\"./README_id.md\"><img alt=\"Bahasa Indonesia\" src=\"https://img.shields.io/badge/Bahasa Indonesia-DFE0E5\"></a>\n  <a href=\"./README_pt_br.md\"><img alt=\"Português(Brasil)\" src=\"https://img.shields.io/badge/Português(Brasil)-DFE0E5\"></a>\n  <a href=\"./README_ar.md\"><img alt=\"README in Arabic\" src=\"https://img.shields.io/badge/Arabic-DFE0E5\"></a>\n  <a href=\"./README_tr.md\"><img alt=\"Türkçe README\" src=\"https://img.shields.io/badge/Türkçe-DFE0E5\"></a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://x.com/intent/follow?screen_name=infiniflowai\" target=\"_blank\">\n        <img src=\"https://img.shields.io/twitter/follow/infiniflow?logo=X&color=%20%23f5f5f5\" alt=\"follow on X(Twitter)\">\n    </a>\n    <a href=\"https://cloud.ragflow.io\" target=\"_blank\">\n        <img alt=\"Static Badge\" src=\"https://img.shields.io/badge/Get-Started-4e6b99\">\n    </a>\n    <a href=\"https://hub.docker.com/r/infiniflow/ragflow\" target=\"_blank\">\n        <img src=\"https://img.shields.io/docker/pulls/infiniflow/ragflow?label=Docker%20Pulls&color=0db7ed&logo=docker&logoColor=white&style=flat-square\" alt=\"docker pull infiniflow/ragflow:v0.26.1\">\n    </a>\n    <a href=\"https://github.com/infiniflow/ragflow/releases/latest\">\n        <img src=\"https://img.shields.io/github/v/release/infiniflow/ragflow?color=blue&label=Latest%20Release\" alt=\"Latest Release\">\n    </a>\n    <a href=\"https://github.com/infiniflow/ragflow/blob/main/LICENSE\">\n        <img height=\"21\" src=\"https://img.shields.io/badge/License-Apache--2.0-ffffff?labelColor=d4eaf7&color=2e6cc4\" alt=\"license\">\n    </a>\n    <a href=\"https://deepwiki.com/infiniflow/ragflow\">\n        <img alt=\"Ask DeepWiki\" src=\"https://deepwiki.com/badge.svg\">\n    </a>\n</p>\n\n<h4 align=\"center\">\n  <a href=\"https://cloud.ragflow.io\">Cloud</a> |\n  <a href=\"https://ragflow.io/docs/dev/\">Document</a> |\n  <a href=\"https://github.com/infiniflow/ragflow/issues/12241\">Roadmap</a> |\n  <a href=\"https://discord.gg/NjYzJD3GM3\">Discord</a>\n</h4>\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/ragflow-octoverse.png\" width=\"1200\"/>\n</div>\n\n<div align=\"center\">\n<a href=\"https://trendshift.io/repositories/9064\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/9064\" alt=\"infiniflow%2Fragflow | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\n<details open>\n<summary><b>📕 Table of Contents</b></summary>\n\n- 💡 [What is RAGFlow?](#-what-is-ragflow)\n- 🎮 [Get Started](#-get-started)\n- 📌 [Latest Updates](#-latest-updates)\n- 🌟 [Key Features](#-key-features)\n- 🔎 [System Architecture](#-system-architecture)\n- 🎬 [Self-Hosting](#-self-hosting)\n- 🔧 [Configurations](#-configurations)\n- 🔧 [Build a Docker image](#-build-a-docker-image)\n- 🔨 [Launch service from source for development](#-launch-service-from-source-for-development)\n- 📚 [Documentation](#-documentation)\n- 📜 [Roadmap](#-roadmap)\n- 🏄 [Community](#-community)\n- 🙌 [Contributing](#-contributing)\n\n</details>\n\n## 💡 What is RAGFlow?\n\n[RAGFlow](https://ragflow.io/) is a leading open-source Retrieval-Augmented Generation ([RAG](https://ragflow.io/basics/what-is-rag)) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs. It offers a streamlined RAG workflow adaptable to enterprises of any scale. Powered by a converged [context engine](https://ragflow.io/basics/what-is-agent-context-engine) and pre-built agent templates, RAGFlow enables developers to transform complex data into high-fidelity, production-ready AI systems with exceptional efficiency and precision.\n\n## 🎮 Get Started\n\nTry our cloud service at [https://cloud.ragflow.io](https://cloud.ragflow.io).\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/chunking.gif\" width=\"1200\"/>\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/agentic-dark.gif\" width=\"1200\"/>\n</div>\n\n## 🔥 Latest Updates\n\n- 2026-06-15 Support multiple chat channels such as Feishu, Discord, Telegram, Line, etc.\n- 2026-04-24 Supports DeepSeek v4.\n- 2026-03-24 [RAGFlow Skill on OpenClaw](https://clawhub.ai/yingfeng/ragflow-skill) — Provides an official skill for accessing RAGFlow datasets via OpenClaw.\n- 2025-12-26 Supports 'Memory' for AI agent.\n- 2025-11-19 Supports Gemini 3 Pro.\n- 2025-11-12 Supports data synchronization from Confluence, S3, Notion, Discord, Google Drive.\n- 2025-10-23 Supports MinerU & Docling as document parsing methods.\n- 2025-10-15 Supports orchestrable ingestion pipeline.\n- 2025-08-08 Supports OpenAI's latest GPT-5 series models.\n- 2025-08-01 Supports agentic workflow and MCP.\n- 2025-05-23 Adds a Python/JavaScript code executor component to Agent.\n- 2025-03-19 Supports using a multi-modal model to make sense of images within PDF or DOCX files.\n\n## 🎉 Stay Tuned\n\n⭐️ Star our repository to stay up-to-date with exciting new features and improvements! Get instant notifications for new\nreleases! 🌟\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://github.com/user-attachments/assets/18c9707e-b8aa-4caf-a154-037089c105ba\" width=\"1200\"/>\n</div>\n\n## 🌟 Key Features\n\n### 🍭 **\"Quality in, quality out\"**\n\n- [Deep document understanding](./deepdoc/README.md)-based knowledge extraction from unstructured data with complicated\n  formats.\n- Finds \"needle in a data haystack\" of literally unlimited tokens.\n\n### 🍱 **Template-based chunking**\n\n- Intelligent and explainable.\n- Plenty of template options to choose from.\n\n### 🌱 **Grounded citations with reduced hallucinations**\n\n- Visualization of text chunking to allow human intervention.\n- Quick view of the key references and traceable citations to support grounded answers.\n\n### 🍔 **Compatibility with heterogeneous data sources**\n\n- Supports Word, slides, excel, txt, images, scanned copies, structured data, web pages, and more.\n\n### 🛀 **Automated and effortless RAG workflow**\n\n- Streamlined RAG orchestration catered to both personal and large businesses.\n- Configurable LLMs as well as embedding models.\n- Multiple recall paired with fused re-ranking.\n- Intuitive APIs for seamless integration with business.\n\n## 🔎 System Architecture\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://github.com/user-attachments/assets/31b0dd6f-ca4f-445a-9457-70cb44a381b2\" width=\"1000\"/>\n</div>\n\n## 🎬 Self-Hosting\n\n### 📝 Prerequisites\n\n- CPU >= 4 cores\n- RAM >= 16 GB\n- Disk >= 50 GB\n- Docker >= 24.0.0 & Docker Compose >= v2.26.1\n- Python >= 3.13\n- [gVisor](https://gvisor.dev/docs/user_guide/install/): Required only if you intend to use the code executor (sandbox) feature of RAGFlow.\n\n> [!TIP]\n> If you have not installed Docker on your local machine (Windows, Mac, or Linux), see [Install Docker Engine](https://docs.docker.com/engine/install/).\n\n### 🚀 Start up the server\n\n1. Ensure `vm.max_map_count` >= 262144:\n\n   > To check the value of `vm.max_map_count`:\n   >\n   > ```bash\n   > $ sysctl vm.max_map_count\n   > ```\n   >\n   > Reset `vm.max_map_count` to a value at least 262144 if it is not.\n   >\n   > ```bash\n   > # In this case, we set it to 262144:\n   > $ sudo sysctl -w vm.max_map_count=262144\n   > ```\n   >\n   > This change will be reset after a system reboot. To ensure your change remains permanent, add or update the\n   > `vm.max_map_count` value in **/etc/sysctl.conf** accordingly:\n   >\n   > ```bash\n   > vm.max_map_count=262144\n   > ```\n   >\n2. Clone the repo:\n\n   ```bash\n   $ git clone https://github.com/infiniflow/ragflow.git\n   ```\n3. Start up the server using the pre-built Docker images:\n\n> [!CAUTION]\n> All Docker images are built for x86 platforms. We don't currently offer Docker images for ARM64.\n> If you are on an ARM64 platform, follow [this guide](https://ragflow.io/docs/dev/build_docker_image) to build a Docker image compatible with your system.\n\n> The command below downloads the `v0.26.1` edition of the RAGFlow Docker image. See the following table for descriptions of different RAGFlow editions. To download a RAGFlow edition different from `v0.26.1`, update the `RAGFLOW_IMAGE` variable accordingly in **docker/.env** before using `docker compose` to start the server.\n\n```bash\n   $ cd ragflow/docker\n\n   # git checkout v0.26.1\n   # Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases)\n   # This step ensures the **entrypoint.sh** file in the code matches the Docker image version.\n\n   # Use CPU for DeepDoc tasks:\n   $ docker compose -f docker-compose.yml up -d\n\n   # To use GPU to accelerate DeepDoc tasks:\n   # sed -i '1i DEVICE=gpu' .env\n   # docker compose -f docker-compose.yml up -d\n```\n\n> Note: Prior to `v0.22.0`, we provided both images with embedding models and slim images without embedding models. Details as follows:\n\n| RAGFlow image tag | Image size (GB) | Has embedding models? | Stable?        |\n|-------------------|-----------------|-----------------------|----------------|\n| v0.21.1           | &approx;9       | ✔️                    | Stable release |\n| v0.21.1-slim      | &approx;2       | ❌                     | Stable release |\n\n> Starting with `v0.22.0`, we ship only the slim edition and no longer append the **-slim** suffix to the image tag.\n\n4. Check the server status after having the server up and running:\n\n   ```bash\n   $ docker logs -f docker-ragflow-cpu-1\n   ```\n\n   _The following output confirms a successful launch of the system:_\n\n   ```bash\n\n         ____   ___    ______ ______ __\n        / __ \\ /   |  / ____// ____// /____  _      __\n       / /_/ // /| | / / __ / /_   / // __ \\| | /| / /\n      / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ /\n     /_/ |_|/_/  |_|\\____//_/    /_/ \\____/ |__/|__/\n\n    * Running on all addresses (0.0.0.0)\n   ```\n\n   > If you skip this confirmation step and directly log in to RAGFlow, your browser may prompt a `network abnormal`\n   > error because, at that moment, your RAGFlow may not be fully initialized.\n   >\n5. In your web browser, enter the IP address of your server and log in to RAGFlow.\n\n   > With the default settings, you only need to enter `http://IP_OF_YOUR_MACHINE` (**sans** port number) as the default\n   > HTTP serving port `80` can be omitted when using the default configurations.\n   >\n6. In [service_conf.yaml.template](./docker/service_conf.yaml.template), select the desired LLM factory in `user_default_llm` and update\n   the `API_KEY` field with the corresponding API key.\n\n   > See [llm_api_key_setup](https://ragflow.io/docs/dev/llm_api_key_setup) for more information.\n   >\n\n   _The show is on!_\n\n## 🔧 Configurations\n\nWhen it comes to system configurations, you will need to manage the following files:\n\n- [.env](./docker/.env): Keeps the fundamental setups for the system, such as `SVR_HTTP_PORT`, `MYSQL_PASSWORD`, and\n  `MINIO_PASSWORD`.\n- [service_conf.yaml.template](./docker/service_conf.yaml.template): Configures the back-end services. The environment variables in this file will be automatically populated when the Docker container starts. Any environment variables set within the Docker container will be available ",
    "manifest_file": "go.mod",
    "manifest_content": "module ragflow\n\ngo 1.26.4\n\nrequire (\n\tgithub.com/DATA-DOG/go-sqlmock v1.5.2\n\tgithub.com/alibabacloud-go/agentrun-20250910 v1.1.0\n\tgithub.com/alibabacloud-go/darabonba-openapi/v2 v2.1.12\n\tgithub.com/alicebob/miniredis/v2 v2.38.0\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.3\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.11\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.11\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.96.4\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.8\n\tgithub.com/aws/smithy-go v1.24.2\n\tgithub.com/browserbase/stagehand-go/v3 v3.21.0\n\tgithub.com/cenkalti/backoff/v5 v5.0.3\n\tgithub.com/cespare/xxhash/v2 v2.3.0\n\tgithub.com/cloudwego/eino v0.9.9\n\tgithub.com/denisenkom/go-mssqldb v0.12.3\n\tgithub.com/elastic/go-elasticsearch/v8 v8.19.1\n\tgithub.com/eric642/e2b-go-sdk v0.1.3\n\tgithub.com/gin-gonic/gin v1.10.1\n\tgithub.com/glebarez/sqlite v1.11.0\n\tgithub.com/go-sql-driver/mysql v1.7.0\n\tgithub.com/goccy/go-json v0.10.2\n\tgithub.com/gomarkdown/markdown v0.0.0-20260614204949-e08cff860f76\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/infiniflow/infinity-go-sdk v0.0.0-00010101000000-000000000000\n\tgithub.com/iromli/go-itsdangerous v0.0.0-20220223194502-9c8bef8dac6a\n\tgithub.com/json-iterator/go v1.1.12\n\tgithub.com/kaptinlin/jsonrepair v0.4.8\n\tgithub.com/lib/pq v1.10.9\n\tgithub.com/minio/minio-go/v7 v7.0.99\n\tgithub.com/nats-io/nats.go v1.52.0\n\tgithub.com/nikolalohinski/gonja v1.5.3\n\tgithub.com/peterh/liner v1.2.2\n\tgithub.com/pkoukk/tiktoken-go v0.1.8\n\tgithub.com/prometheus/client_golang v1.23.2\n\tgithub.com/prometheus/client_model v0.6.2\n\tgithub.com/redis/go-redis/v9 v9.18.0\n\tgithub.com/signintech/gopdf v0.36.1\n\tgithub.com/siongui/gojianfan v0.0.0-20210926212422-2f175ac615de\n\tgithub.com/spf13/viper v1.18.2\n\tgithub.com/xuri/excelize/v2 v2.10.1\n\tgithub.com/yfedoseev/office_oxide/go v0.1.2\n\tgithub.com/yfedoseev/pdf_oxide/go v0.3.67\n\tgithub.com/zeebo/xxh3 v1.0.2\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0\n\tgo.opentelemetry.io/otel v1.44.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0\n\tgo.opentelemetry.io/otel/sdk v1.44.0\n\tgo.opentelemetry.io/otel/trace v1.44.0\n\tgo.uber.org/zap v1.27.1\n\tgolang.org/x/crypto v0.51.0\n\tgolang.org/x/net v0.55.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/term v0.43.0\n\tgolang.org/x/text v0.37.0\n\tgoogle.golang.org/genai v1.54.0\n\tgoogle.golang.org/grpc v1.81.1\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/mysql v1.5.2\n\tgorm.io/gorm v1.25.7\n)\n\nrequire (\n\tcloud.google.com/go v0.116.0 // indirect\n\tcloud.google.com/go/auth v0.9.3 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tconnectrpc.com/connect v1.19.2 // indirect\n\tgithub.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect\n\tgithub.com/alibabacloud-go/debug v1.0.1 // indirect\n\tgithub.com/alibabacloud-go/tea v1.3.12 // indirect\n\tgithub.com/alibabacloud-go/tea-utils/v2 v2.0.7 // indirect\n\tgithub.com/aliyun/credentials-go v1.4.5 // indirect\n\tgithub.com/apache/thrift v0.23.0 // indirect\n\tgithub.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/buger/jsonparser v1.1.1 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.15.0 // indirect\n\tgithub.com/bytedance/sonic/loader v0.5.0 // indirect\n\tgithub.com/clbanning/mxj/v2 v2.7.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect\n\tgithub.com/dlclark/regexp2 v1.10.0 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/ebitengine/purego v0.10.1 // indirect\n\tgithub.com/eino-contrib/jsonschema v1.0.3 // indirect\n\tgithub.com/elastic/elastic-transport-go/v8 v8.8.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.3 // indirect\n\tgithub.com/gin-contrib/sse v0.1.0 // indirect\n\tgithub.com/glebarez/go-sqlite",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "llm",
      "eval",
      "protocol"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 96
    },
    "strategic_score": 96
  },
  {
    "owner": "everywall",
    "name": "ladder",
    "full_name": "everywall/ladder",
    "url": "https://github.com/everywall/ladder",
    "description": "Selfhosted alternative to 12ft.io. and 1ft.io. Proxy to remove CORS headers and modify HTML",
    "language": "Go",
    "total_stars": 8526,
    "forks": 490,
    "stars_this_period": 487,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "bypass",
        "cors",
        "cors-proxy",
        "paywall",
        "paywall-blocker",
        "paywall-bypasser"
      ],
      "license": "GPL-3.0",
      "open_issues": 33,
      "created_at": "2023-11-01T21:09:49Z",
      "pushed_at": "2026-06-19T22:13:25Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 490,
      "watchers": 31,
      "archived": false,
      "size_kb": 20908
    },
    "readme_content": "<p align=\"center\">\n    <img src=\"assets/pigeon.svg\" width=\"100px\">\n</p>\n\n<h1 align=\"center\">Ladder</h1>\n<div><img alt=\"License\" src=\"https://img.shields.io/github/license/everywall/ladder\"> <img alt=\"go.mod Go version \" src=\"https://img.shields.io/github/go-mod/go-version/everywall/ladder\"> <img alt=\"GitHub tag (with filter)\" src=\"https://img.shields.io/github/v/tag/everywall/ladder\"> <img alt=\"GitHub (Pre-)Release Date\" src=\"https://img.shields.io/github/release-date-pre/everywall/ladder\"> <img alt=\"GitHub Downloads all releases\" src=\"https://img.shields.io/github/downloads/everywall/ladder/total\"> <img alt=\"GitHub Build Status (with event)\" src=\"https://img.shields.io/github/actions/workflow/status/everywall/ladder/release-binaries.yaml\"></div>\n\n\n*Ladder is a http web proxy.* \n\n[简体中文](README.zh-CN.md)\n\nLadder is a developer tool for testing and analyzing paywall implementations and content delivery behavior on modern websites.\n\nIt allows developers, researchers, and publishers to simulate different client environments (such as browsers and crawlers) and observe how content is served under varying conditions. This makes it useful for debugging paywall configurations, verifying access controls, http headers, and ensuring consistent behavior across different user agents.\n\nLadder is intended for legitimate testing, research, and quality assurance purposes only. It should only be used in compliance with applicable laws and the terms of service of the target website.\n\n![screenshot](ladder.png)\n\n### How it works\n\n```mermaid\nsequenceDiagram\n    client->>+ladder: GET\n    ladder-->>ladder: apply RequestModifications\n    ladder->>+website: GET\n    website->>-ladder: 200 OK\n    ladder-->>ladder: apply ResultModifications\n    ladder->>-client: 200 OK\n```\n\n### Features\n- [x] Remove/modify CORS headers from responses, assets, and images ...\n- [x] Remove/modify other headers (e.g. Content-Security-Policy)\n- [x] Remove/inject custom code (HTML, CSS, JavaScript) into the page\n- [x] Apply domain based ruleset/code to modify response / requested URL\n- [x] Keep site browsable\n- [x] API\n- [x] Fetch RAW HTML\n- [x] Custom User Agent\n- [x] Custom X-Forwarded-For IP\n- [x] [Docker container](https://github.com/everywall/ladder/pkgs/container/ladder) (amd64, arm64)\n- [x] Linux binary\n- [x] Mac OS binary\n- [x] Windows binary (untested)\n- [x] Basic Auth\n- [x] Access logs\n- [x] Might break tracking, adds and other 3rd party content\n- [x] Limit the proxy to a list of domains\n- [x] Expose Ruleset to other ladders\n- [ ] Robots.txt testing\n- [ ] Optional TOR proxy\n- [ ] A key to share a proxied URL\n\n### Limitations\nSome websites deliver different content (Cloaking) depending on the type of client accessing them (for example, search engine crawlers versus standard web browsers). Ladder can be configured to emulate different client types in order to retrieve publicly accessible content for testing, automation, or research purposes.\n\nHowever, many websites implement advanced mechanisms to restrict automated access, such as fingerprinting, rate limiting, or behavioral analysis. Ladder does not circumvent such protections and may not function correctly on services that actively restrict or control access.\n\nThird-party tools such as FlareSolverr exist and may be used independently to render web pages in a headless browser environment. These tools are not part of Ladder, and their use may be subject to legal and contractual restrictions. Users are solely responsible for ensuring that their usage complies with all applicable regulations.\n\n## Installation\n\n> **Warning:** If your instance will be publicly accessible, make sure to enable Basic Auth. This will prevent unauthorized users from using your proxy. If you do not enable Basic Auth, anyone can use your proxy to browse nasty/illegal stuff. And you will be made responsible for it.\n\n### Binary\n1) Download binary [here](https://github.com/everywall/ladder/releases/latest)\n2) Unpack and run the binary `./ladder -r https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml`\n3) Open Browser (Default: http://localhost:8080)\n\n### Docker\n```bash\ndocker run -p 8080:8080 -d --env RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml --name ladder ghcr.io/everywall/ladder:latest\n```\n\n### Docker Compose\n```bash\ncurl https://raw.githubusercontent.com/everywall/ladder/main/docker-compose.yaml --output docker-compose.yaml\ndocker-compose up -d\n```\n\n### Helm\nSee [README.md](/helm-chart/README.md) in helm-chart sub-directory for more information.\n\n## Usage\n\n### Browser\n1) Open Browser (Default: http://localhost:8080)\n2) Enter URL\n3) Press Enter\n\nOr direct by appending the URL to the end of the proxy URL:\nhttp://localhost:8080/https://www.example.com\n\nOr create a bookmark with the following URL:\n```javascript\njavascript:window.location.href=\"http://localhost:8080/\"+location.href\n```\n\n### API\n```bash\ncurl -X GET \"http://localhost:8080/api/https://www.example.com\"\n```\n\n### RAW\nhttp://localhost:8080/raw/https://www.example.com\n\n\n### Running Ruleset\nhttp://localhost:8080/ruleset\n\n## Configuration\n\n### Environment Variables\n\n| Variable | Description | Value |\n| --- | --- | --- |\n| `PORT` | Port to listen on | `8080` |\n| `PREFORK` | Spawn multiple server instances | `false` |\n| `USER_AGENT` | User agent to emulate | `Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)` |\n| `X_FORWARDED_FOR` | IP forwarder address | `66.249.66.1` |\n| `USERPASS` | Enables Basic Auth, format `admin:123456` | `` |\n| `LOG_URLS` | Log fetched URL's | `true` |\n| `DISABLE_FORM` | Disables URL Form Frontpage | `false` |\n| `FORM_PATH` | Path to custom Form HTML | `` |\n| `RULESET` | Path or URL to a ruleset file, accepts local directories | `https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml` or `/path/to/my/rules.yaml` or `/path/to/my/rules/` |\n| `EXPOSE_RULESET` | Make your Ruleset available to other ladders | `true` |\n| `ALLOWED_DOMAINS` | Comma separated list of allowed domains. Empty = no limitations | `` |\n| `ALLOWED_DOMAINS_RULESET` | Allow Domains from Ruleset. false = no limitations | `false` |\n| `FLARESOLVERR_HOST` | URL for the FlareSolverr service for Cloudflare bypass (optional) | `http://localhost:8191` |\n\n`ALLOWED_DOMAINS` and `ALLOWED_DOMAINS_RULESET` are joined together. If both are empty, no limitations are applied.\n| `BASE_PATH` | Base path for the proxy, useful if you want to run the proxy on a subpath (e.g. http://localhost:8080/proxy/) | `` |\n\n### Ruleset\n\nIt is possible to apply custom rules to modify the response or the requested URL. This can be used to remove unwanted or modify elements from the page. The ruleset is a YAML file, a directory with YAML Files, or an URL to a YAML file that contains a list of rules for each domain. These rules are loaded on startup.\n\nThere is a basic ruleset available in a separate repository [ruleset.yaml](https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml). Feel free to add your own rules and create a pull request.\n\n\n```yaml\n- domain: example.com          # Includes all subdomains\n  domains:                     # Additional domains to apply the rule\n    - www.example.de\n    - www.beispiel.de\n  headers:\n    x-forwarded-for: none      # override X-Forwarded-For header or delete with none\n    referer: none              # override Referer header or delete with none\n    user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36\n    content-security-policy: script-src 'self'; # override response header\n    cookie: privacy=1\n  regexRules:\n    - match: <script\\s+([^>]*\\s+)?src=\"(/)([^\"]*)\"\n      replace: <script $1 script=\"/https://www.example.com/$3\"\n  injections:\n    - position: head # Position where to inject the code\n      append: |      # possible keys: append, prepend, replace\n        <script>\n          window.localStorage.clear();\n          console.log(\"test\");\n          alert(\"Hello!\");\n        </script>\n- domain: www.anotherdomain.com # Domain where the rule applies\n  useFlareSolverr: false        # Use FlareSolverr for Cloudflare bypass (optional, default: false)\n  paths:                        # Paths where the rule applies\n    - /article\n  googleCache: false            # Use Google Cache to fetch the content\n  regexRules:                   # Regex rules to apply\n    - match: <script\\s+([^>]*\\s+)?src=\"(/)([^\"]*)\"\n      replace: <script $1 script=\"/https://www.example.com/$3\"\n  injections:\n    - position: .left-content article .post-title # Position where to inject the code into DOM\n      replace: | \n        <h1>My Custom Title</h1>\n    - position: .left-content article # Position where to inject the code into DOM\n      prepend: | \n        <h2>Subtitle</h2>\n- domain: demo.com\n  headers:\n    content-security-policy: script-src 'self';\n    user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36\n  urlMods:              # Modify the URL\n    query:              \n      - key: amp        # (this will append ?amp=1 to the URL)\n        value: 1 \n    domain:             \n      - match: www      # regex to match part of domain\n        replace: amp    # (this would modify the domain from www.demo.de to amp.demo.de)\n    path:               \n      - match: ^        # regex to match part of path\n        replace: /amp/  # (modify the url from https://www.demo.com/article/ to https://www.demo.de/amp/article/)\n```\n\n## FlareSolverr Integration\n\nLadder now supports integration with [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) to bypass Cloudflare protection and other anti-bot challenges. This is particularly useful for sites that employ sophisticated bot detection mechanisms.\n\n### Setting up FlareSolverr\n\n1. **Using Docker Compose (Recommended):**\n   ```yaml\n   # docker-compose.yaml\n   services:\n     ladder:\n       image: ghcr.io/everywall/ladder:latest\n       ports:\n         - \"8080:8080\"\n       environment:\n         - RULESET=https://raw.githubusercontent.com/everywall/ladder-rules/main/ruleset.yaml\n         # - FLARESOLVERR_HOST=http://flaresolverr:8191\n       depends_on:\n         - flaresolverr\n     \n     flaresolverr:\n       image: ghcr.io/flaresolverr/flaresolverr:latest\n       ports:\n         - \"8191:8191\"\n       environment:\n         - LOG_LEVEL=info\n   ```\n\n2. **Running FlareSolverr separately:**\n   ```bash\n   docker run -d \\\n     --name flaresolverr \\\n     -p 8191:8191 \\\n     ghcr.io/flaresolverr/flaresolverr:latest\n   ```\n\n   Then start Ladder with the FlareSolverr URL:\n   ```bash\n   FLARESOLVERR_HOST=http://localhost:8191 ./ladder\n   ```\n\n### Configuring Rules for FlareSolverr\n\nTo use FlareSolverr for specific domains, add the `useFlareSolverr: true` flag in your ruleset:\n\n```yaml\n# Example ruleset with FlareSolverr\n- domain: cloudflare-protected-site.com\n  useFlareSolverr: true  # Enable FlareSolverr for this domain\n  headers:\n    user-agent: \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\"\n    accept: \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\"\n\n# Regular site without FlareSolverr\n- domain: regular-site.com\n  headers:\n    user-agent: \"Custom User Agent 1.0\"\n```\n\n### Use Cases\n\nFlareSolverr integration is particularly useful for:\n- **Cloudflare-protected sites**: Sites using Cloudflare's anti-bot challenges\n- **Sites with JavaScript challenges**: Pages that require JavaScript execution to access content\n- **Dynamic content loading**: Sites that load content dynamically through JavaScript\n- **Advanced bot detection**: Sites using sophisticated fingerprinting and bot detection techniques\n\n### Important Notes\n\n- FlareSolverr adds additional latency to requests as it needs to solve challenges\n- Only enable `useFlareSolverr` for domains that actually need it to maintain performance\n- FlareSolverr requires more resources as it runs a headless browser\n- Make ",
    "manifest_file": "go.mod",
    "manifest_content": "module ladder\n\ngo 1.26\n\nrequire (\n\tgithub.com/PuerkitoBio/goquery v1.12.0\n\tgithub.com/akamensky/argparse v1.4.0\n\tgithub.com/gofiber/fiber/v2 v2.52.13\n\tgithub.com/stretchr/testify v1.11.1\n\tgopkg.in/yaml.v3 v3.0.1\n)\n\nrequire github.com/clipperhouse/uax29/v2 v2.7.0 // indirect\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.2.1 // indirect\n\tgithub.com/andybalholm/cascadia v1.3.3 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/klauspost/compress v1.18.5 // indirect\n\tgithub.com/mattn/go-colorable v0.1.14 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.22 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/valyala/bytebufferpool v1.0.0 // indirect\n\tgithub.com/valyala/fasthttp v1.70.0 // indirect\n\tgolang.org/x/net v0.52.0 // indirect\n\tgolang.org/x/sys v0.42.0 // indirect\n)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "workflow",
      "automation",
      "developer tool"
    ],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "mikumifa",
    "name": "biliTickerBuy",
    "full_name": "mikumifa/biliTickerBuy",
    "url": "https://github.com/mikumifa/biliTickerBuy",
    "description": "b站会员购购票辅助工具",
    "language": "Python",
    "total_stars": 3854,
    "forks": 480,
    "stars_this_period": 463,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "bilibili",
        "bilibili-api",
        "manga",
        "tickets"
      ],
      "license": "MIT",
      "open_issues": 10,
      "created_at": "2023-04-23T10:58:58Z",
      "pushed_at": "2026-06-23T07:23:17Z",
      "homepage": "https://github.com/mikumifa/biliTickerBuy",
      "default_branch": "main",
      "forks": 480,
      "watchers": 13,
      "archived": false,
      "size_kb": 225135
    },
    "readme_content": "<div align=\"center\">\n  <a href=\"https://github.com/mikumifa/biliTickerBuy\" target=\"_blank\">\n    <img width=\"160\" src=\"assets/icon.ico\" alt=\"logo\">\n  </a>\n  <h2 id=\"koishi\">biliTickerBuy</h1>\n\n<p>\n  <!-- GitHub Downloads -->\n  <a href=\"https://github.com/mikumifa/biliTickerBuy/releases\">\n    <img src=\"https://img.shields.io/github/downloads/mikumifa/biliTickerBuy/total\" alt=\"GitHub all releases\">\n  </a>\n  <!-- GitHub Release Version -->\n  <a href=\"https://github.com/mikumifa/biliTickerBuy/releases\">\n    <img src=\"https://img.shields.io/github/v/release/mikumifa/biliTickerBuy\" alt=\"GitHub release (with filter)\">\n  </a>\n  <!-- GitHub Issues -->\n  <a href=\"https://github.com/mikumifa/biliTickerBuy/issues\">\n    <img src=\"https://img.shields.io/github/issues/mikumifa/biliTickerBuy\" alt=\"GitHub issues\">\n  </a>\n  <!-- GitHub Stars -->\n  <a href=\"https://github.com/mikumifa/biliTickerBuy/stargazers\">\n    <img src=\"https://img.shields.io/github/stars/mikumifa/biliTickerBuy\" alt=\"GitHub Repo stars\">\n  </a>\n</p>\n<a href=\"https://trendshift.io/repositories/11145\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/11145\" alt=\"mikumifa%2FbiliTickerBuy | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n\n这是一个开源免费，简单易用的 B 站会员购辅助工具\n\n</div>\n\n## 💻 快速安装\n\n请查看完整的 [安装指南](./docs/installation.md)。\n\n## 👀 使用说明书\n\n前往飞书： https://n1x87b5cqay.feishu.cn/wiki/Eg4xwt3Dbiah02k1WqOcVk2YnMd\n\n## ❗ 项目问题\n\n程序使用问题： [点此链接前往 discussions](https://github.com/mikumifa/biliTickerBuy/discussions)\n\n反馈程序 BUG 或者提新功能建议： [点此链接向项目提出反馈 BUG](https://github.com/mikumifa/biliTickerBuy/issues/new/choose)\n\n## Related Work\n\nSkill版本：https://github.com/mikumifa/biliTickerSkill\n\n分布式版本：https://github.com/mikumifa/biliTickerStorm\n\n## 📩 免责声明\n本项目遵循 MIT License 许可协议，仅供个人学习与研究使用。请勿将本项目用于任何商业牟利行为，亦严禁用于任何形式的代抢、违法行为或违反相关平台规则的用途。由此产生的一切后果均由使用者自行承担，与本人无关。\n若您 fork 或使用本项目，请务必遵守相关法律法规与目标平台规则。\n## 🛡️ 平台尊重声明\n本项目在设计时严格遵循「非侵入式」原则，避免对目标服务器（如 Bilibili）造成任何干扰。\n如本项目中存在侵犯 Bilibili 公司合法权益的内容，请通过邮箱 [1055069518@qq.com](mailto:1055069518@qq.com) 与我联系，我将第一时间下架相关内容并删除本仓库。对此造成的不便，我深表歉意，感谢您的理解与包容。\n\n## 🤩 项目贡献者\n\n<a href=\"https://github.com/mikumifa/biliTickerBuy/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=mikumifa/biliTickerBuy&preview=true&max=&columns=\" />\n</a>\n<br /><br />\n\n## ⭐️ Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=mikumifa/biliTickerBuy&type=Date)](https://www.star-history.com/#mikumifa/biliTickerBuy&Date)",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=65\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"bilitickerbuy\"\nversion = \"2.15.13\"\ndescription = \"开源的 B 站会员购辅助工具，提供命令行和 Gradio 界面\"\nreadme = \"README.md\"\nrequires-python = \">=3.11\"\nlicense = { file = \"LICENSE\" }\nauthors = [{ name = \"biliTickerBuy Maintainers\" }]\nkeywords = [\"bilibili\", \"tickets\", \"cli\", \"gradio\", \"automation\"]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: End Users/Desktop\",\n    \"License :: OSI Approved :: MIT License\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3 :: Only\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Environment :: Console\",\n    \"Environment :: Web Environment\",\n]\ndependencies = [\n    \"httpx[brotli,http2,socks,zstd]>=0.28.1\",\n    \"loguru~=0.7.2\",\n    \"ntplib~=0.4.0\",\n    \"packaging>=23.2\",\n    \"numpy~=1.26.4\",\n    \"playsound3~=3.2.2\",\n    \"pydantic~=2.8.2\",\n    \"qrcode>=7.4.2\",\n    \"requests[socks]~=2.31.0\",\n    \"retry~=0.9.2\",\n    \"setuptools~=65.5.1\",\n    \"tinydb~=4.8.0\",\n    \"Pillow~=10.3.0\",\n    \"jinja2>=3.1.6\",\n    \"pytest>=9.0.3\",\n    \"textual>=8.2.7\",\n    \"rich>=15.0.0\",\n    \"tyro>=0.9.28\",\n    \"gradio>=6.19.0\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/mikumifa/biliTickerBuy\"\nSource = \"https://github.com/mikumifa/biliTickerBuy\"\nIssues = \"https://github.com/mikumifa/biliTickerBuy/issues\"\n\n[project.scripts]\nbtb = \"main:main\"\n\n[tool.setuptools]\npy-modules = [\"main\", \"app_version\", \"app_update\"]\n\n[tool.setuptools.data-files]\nassets = [\n    \"assets/style.css\",\n    \"assets/icon.ico\",\n    \"assets/icon.icns\",\n    \"assets/fail_messages.json\",\n]\n\n[tool.setuptools.packages.find]\nwhere = [\".\"]\ninclude = [\"*\"]\n\n[tool.mypy]\ndisable_error_code = [\"import-untyped\"]\ncheck_untyped_defs = true\n\n[dependency-groups]\ndev = [\n    \"pre-commit>=4.6.0\",\n]\n",
    "strategic_keywords": [
      "skill",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 4,
      "total": 76
    },
    "strategic_score": 76
  },
  {
    "owner": "nautechsystems",
    "name": "nautilus_trader",
    "full_name": "nautechsystems/nautilus_trader",
    "url": "https://github.com/nautechsystems/nautilus_trader",
    "description": "Production-grade Rust-native trading engine with deterministic event-driven architecture",
    "language": "Rust",
    "total_stars": 24210,
    "forks": 3069,
    "stars_this_period": 461,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "algorithmic-trading-engine",
        "artificial-intelligence",
        "crypto-trading",
        "equity-trading",
        "forex",
        "futures-trading",
        "machine-learning",
        "options-trading",
        "python",
        "rust",
        "sports-betting",
        "trading",
        "trading-platform"
      ],
      "license": "LGPL-3.0",
      "open_issues": 74,
      "created_at": "2018-06-25T06:26:16Z",
      "pushed_at": "2026-06-25T12:26:44Z",
      "homepage": "https://nautilustrader.io",
      "default_branch": "develop",
      "forks": 3070,
      "watchers": 192,
      "archived": false,
      "size_kb": 234352
    },
    "readme_content": "# <img src=\"https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-trader-logo.png\" width=\"500\">\n\n[![codecov](https://codecov.io/gh/nautechsystems/nautilus_trader/branch/master/graph/badge.svg?token=DXO9QQI40H)](https://codecov.io/gh/nautechsystems/nautilus_trader)\n[![codspeed](https://img.shields.io/endpoint?url=https://codspeed.io/badge.json)](https://codspeed.io/nautechsystems/nautilus_trader)\n![pythons](https://img.shields.io/pypi/pyversions/nautilus_trader)\n![pypi-version](https://img.shields.io/pypi/v/nautilus_trader)\n![pypi-format](https://img.shields.io/pypi/format/nautilus_trader?color=blue)\n[![Downloads](https://img.shields.io/pepy/dt/nautilus-trader?color=blue)](https://pepy.tech/projects/nautilus-trader)\n[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/NautilusTrader)\n\n| Branch    | Version                                                                                                                                                                                                                     | Status                                                                                                                                                                                            |\n| :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `master`  | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fmaster%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html)  | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=nightly)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) |\n| `nightly` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fnightly%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=nightly)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) |\n| `develop` | [![version](https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fnautechsystems%2Fnautilus_trader%2Fdevelop%2Fversion.json)](https://packages.nautechsystems.io/simple/nautilus-trader/index.html) | [![build](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/nautechsystems/nautilus_trader/actions/workflows/build.yml) |\n\n| Platform           | Rust   | Python    |\n| :----------------- | :----- | :-------- |\n| `Linux (x86_64)`   | 1.96.0 | 3.12-3.14 |\n| `Linux (ARM64)`    | 1.96.0 | 3.12-3.14 |\n| `macOS (ARM64)`    | 1.96.0 | 3.12-3.14 |\n| `Windows (x86_64)` | 1.96.0 | 3.12-3.14 |\n\n- **Docs**: <https://nautilustrader.io/docs/>\n- **Website**: <https://nautilustrader.io>\n- **Support**: [support@nautilustrader.io](mailto:support@nautilustrader.io)\n\n## Introduction\n\nNautilusTrader is an open-source, production-grade, Rust-native engine for multi-asset,\nmulti-venue trading systems.\n\nThe system spans research, deterministic simulation, and live execution within a single\nevent-driven architecture, with Python serving as the control plane for strategy logic,\nconfiguration, and orchestration.\n\nThis separation provides the performance and safety of a compiled trading engine with\nthe flexibility of Python for system composition and strategy development.\nTrading systems can also be written entirely in Rust for mission-critical workloads.\n\nThe same execution semantics and deterministic time model operate in both research and\nlive systems. Strategies deploy from research to production with no code changes,\nproviding research-to-live parity and reducing the divergence that typically introduces\ndeployment risk.\n\nNautilusTrader is asset-class-agnostic. Any venue with a REST API or WebSocket feed can be\nintegrated through modular adapters. Current integrations span crypto exchanges (CEX and\nDEX), traditional markets (FX, equities, futures, options), and betting exchanges.\n\n![nautilus-trader](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-trader.png \"nautilus-trader\")\n\n## Features\n\n- **Fast**: Rust core with asynchronous networking using [tokio](https://crates.io/crates/tokio).\n- **Reliable**: Type- and thread-safety backed by Rust, with optional Redis-backed state persistence.\n- **Portable**: Runs on Linux, macOS, and Windows. Deploy using Docker.\n- **Flexible**: Modular adapters integrate any REST API or WebSocket feed.\n- **Advanced**: Time in force `IOC`, `FOK`, `GTC`, `GTD`, `DAY`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency orders including `OCO`, `OUO`, `OTO`.\n- **Customizable**: User-defined components, or assemble entire systems from scratch using the [cache](https://nautilustrader.io/docs/latest/concepts/cache) and [message bus](https://nautilustrader.io/docs/latest/concepts/message_bus).\n- **Backtesting**: Multiple venues, instruments, and strategies simultaneously using historical quote tick, trade tick, bar, order book, and custom data with nanosecond resolution.\n- **Live**: Identical strategy implementations between research and live deployment.\n- **Multi-venue**: Run market-making and cross-venue strategies across multiple venues simultaneously.\n- **AI Training**: Engine fast enough to train AI trading agents (RL/ES).\n\n![nautilus](https://github.com/nautechsystems/nautilus_trader/raw/develop/assets/nautilus-art.png \"nautilus\")\n\n> *nautilus - from ancient Greek 'sailor' and naus 'ship'.*\n>\n> *The nautilus shell consists of modular chambers with a growth factor which approximates a logarithmic spiral.\n> The idea is that this can be translated to the aesthetics of design and architecture.*\n\n## Why NautilusTrader?\n\nTrading strategy research is often conducted in Python using vectorized approaches, while\nproduction trading systems are implemented separately using event-driven architectures in\ncompiled languages.\n\nNautilusTrader removes this separation.\n\nA Rust-native core provides a deterministic event-driven runtime for both research and live\nexecution, while Python serves as the control plane. The same architecture, execution\nsemantics, and time model operate across both environments, allowing strategies to move\nfrom research to production without reimplementation.\n\nPython bindings are provided via [PyO3](https://pyo3.rs), with an ongoing migration from\nCython. No Rust toolchain is required at install time.\n\nThis project makes the [Soundness Pledge](https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html):\n\n> “The intent of this project is to be free of soundness bugs.\n> The developers will do their best to avoid them, and welcome help in analyzing and fixing them.”\n\n> [!NOTE]\n>\n> **MSRV:** NautilusTrader relies heavily on improvements in the Rust language and compiler.\n> As a result, the Minimum Supported Rust Version (MSRV) is generally equal to the latest stable release of Rust.\n\n## Integrations\n\nNautilusTrader is modularly designed to work with *adapters*, enabling connectivity to trading venues\nand data providers by translating their raw APIs into a unified interface and normalized domain model.\n\nThe following integrations are currently supported; see [docs/integrations/](https://nautilustrader.io/docs/latest/integrations/) for details:\n\n| Name                                                                         | ID                    | Type                    | Status                                                  | Docs                                       |\n| :--------------------------------------------------------------------------- | :-------------------- | :---------------------- | :-------------------------------------------------------| :----------------------------------------- |\n| [AX Exchange](https://architect.exchange)                                    | `AX`                  | Perpetuals Exchange     | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/architect_ax.md) |\n| [Betfair](https://betfair.com)                                               | `BETFAIR`             | Sports Betting Exchange | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/betfair.md)      |\n| [Binance](https://binance.com)                                               | `BINANCE`             | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/binance.md)      |\n| [BitMEX](https://www.bitmex.com)                                             | `BITMEX`              | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/bitmex.md)       |\n| [Bybit](https://www.bybit.com)                                               | `BYBIT`               | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/bybit.md)        |\n| [Coinbase](https://coinbase.com)                                             | `COINBASE`            | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/coinbase.md)     |\n| [Databento](https://databento.com)                                           | `DATABENTO`           | Data Provider           | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/databento.md)    |\n| [Deribit](https://www.deribit.com)                                           | `DERIBIT`             | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/deribit.md)      |\n| [Derive](https://www.derive.xyz)                                             | `DERIVE`              | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/beta-yellow)     | [Guide](docs/integrations/derive.md)       |\n| [dYdX](https://dydx.exchange/)                                               | `DYDX`                | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/dydx.md)         |\n| [Hyperliquid](https://hyperliquid.xyz)                                       | `HYPERLIQUID`         | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/hyperliquid.md)  |\n| [Interactive Brokers](https://www.interactivebrokers.com)                    | `INTERACTIVE_BROKERS` | Brokerage (multi-venue) | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/ib.md)           |\n| [Kraken](https://kraken.com)                                                 | `KRAKEN`              | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/kraken.md)       |\n| [Lighter](https://lighter.xyz)                                               | `LIGHTER`             | Crypto Exchange (DEX)   | ![status](https://img.shields.io/badge/beta-yellow)     | [Guide](docs/integrations/lighter.md)      |\n| [OKX](https://okx.com)                                                       | `OKX`                 | Crypto Exchange (CEX)   | ![status](https://img.shields.io/badge/stable-green)    | [Guide](docs/integrations/okx.md)          |\n| [Polymarket](https://",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"crates\",\n  \"crates/adapters/architect_ax\",\n  \"crates/adapters/betfair\",\n  \"crates/adapters/binance\",\n  \"crates/adapters/bitmex\",\n  \"crates/adapters/blockchain\",\n  \"crates/adapters/bybit\",\n  \"crates/adapters/coinbase\",\n  \"crates/adapters/databento\",\n  \"crates/adapters/deribit\",\n  \"crates/adapters/derive\",\n  \"crates/adapters/dydx\",\n  \"crates/adapters/hyperliquid\",\n  \"crates/adapters/interactive_brokers\",\n  \"crates/adapters/kraken\",\n  \"crates/adapters/lighter\",\n  \"crates/adapters/okx\",\n  \"crates/adapters/polymarket\",\n  \"crates/adapters/sandbox\",\n  \"crates/adapters/tardis\",\n  \"crates/analysis\",\n  \"crates/backtest\",\n  \"crates/cli\",\n  \"crates/common\",\n  \"crates/core\",\n  \"crates/cryptography\",\n  \"crates/data\",\n  \"crates/event_store\",\n  \"crates/execution\",\n  \"crates/indicators\",\n  \"crates/infrastructure\",\n  \"crates/live\",\n  \"crates/model\",\n  \"crates/network\",\n  \"crates/persistence\",\n  \"crates/persistence/macros\",\n  \"crates/plugin\",\n  \"crates/portfolio\",\n  \"crates/pyo3\",\n  \"crates/risk\",\n  \"crates/serialization\",\n  \"crates/system\",\n  \"crates/testkit\",\n  \"crates/trading\",\n  \"examples/tutorials\",\n]\n\n[workspace.package]\nversion = \"0.59.0\"\nedition = \"2024\"\nrust-version = \"1.96.0\"\nauthors = [\"Nautech Systems <info@nautechsystems.io>\"]\nlicense = \"LGPL-3.0-or-later\"\nreadme = \"README.md\"\ndescription = \"Production-grade Rust-native trading engine with deterministic event-driven architecture\"\ncategories = [\"finance\", \"simulation\", \"asynchronous\"]\nkeywords = [\n  \"finance\",\n  \"trading\",\n  \"trading-platform\",\n  \"algorithmic-trading\",\n  \"quantitative-finance\",\n]\ndocumentation = \"https://nautilustrader.io/docs\"\nrepository = \"https://github.com/nautechsystems/nautilus_trader\"\nhomepage = \"https://nautilustrader.io\"\n\n[workspace.dependencies]\nnautilus-analysis = { path = \"crates/analysis\", version = \"0.59.0\" }\nnautilus-backtest = { path = \"crates/backtest\", version = \"0.59.0\" }\nnautilus-cli = { path = \"crates/cli\", version = \"0.59.0\" }\nnautilus-common = { path = \"crates/common\", version = \"0.59.0\" }\nnautilus-core = { path = \"crates/core\", version = \"0.59.0\" }\nnautilus-cryptography = { path = \"crates/cryptography\", version = \"0.59.0\" }\nnautilus-data = { path = \"crates/data\", version = \"0.59.0\" }\nnautilus-execution = { path = \"crates/execution\", version = \"0.59.0\" }\nnautilus-indicators = { path = \"crates/indicators\", version = \"0.59.0\" }\nnautilus-infrastructure = { path = \"crates/infrastructure\", version = \"0.59.0\" }\nnautilus-live = { path = \"crates/live\", version = \"0.59.0\", default-features = false }\nnautilus-model = { path = \"crates/model\", version = \"0.59.0\" }\nnautilus-network = { path = \"crates/network\", version = \"0.59.0\" }\nnautilus-persistence = { path = \"crates/persistence\", version = \"0.59.0\" }\nnautilus-persistence-macros = { path = \"crates/persistence/macros\", version = \"0.59.0\" }\nnautilus-portfolio = { path = \"crates/portfolio\", version = \"0.59.0\" }\nnautilus-pyo3 = { path = \"crates/pyo3\", version = \"0.59.0\" }\nnautilus-risk = { path = \"crates/risk\", version = \"0.59.0\" }\nnautilus-serialization = { path = \"crates/serialization\", version = \"0.59.0\" }\nnautilus-system = { path = \"crates/system\", version = \"0.59.0\" }\nnautilus-testkit = { path = \"crates/testkit\", version = \"0.59.0\" }\nnautilus-trading = { path = \"crates/trading\", version = \"0.59.0\" }\n\n# -----------------------------------------------------------------------------\n# Adapters\n#\n# Note: default-features = false to control high-precision separately (not supported on Windows)\n# -----------------------------------------------------------------------------\nnautilus-architect-ax = { path = \"crates/adapters/architect_ax\", version = \"0.59.0\" }\nnautilus-betfair = { path = \"crates/adapters/betfair\", version = \"0.59.0\", default-features = false }\nnautilus-binance = { path = \"crates/adapters/binance\", version = \"0.59.0\", default-features = false }\nnautilus-bitmex = { path = \"crates/adapters/bitmex\", version = \"0.59.0\", default-features = false }\nnautilus-blockchain = { path = \"crates/adapters/blockchain\", version = \"0.59.0\" }\nnautilus-bybit = { path = \"crates/adapters/bybit\", version = \"0.59.0\", default-features = false }\nnautilus-coinbase = { path = \"crates/adapters/coinbase\", version = \"0.59.0\", default-features = false }\nnautilus-databento = { path = \"crates/adapters/databento\", version = \"0.59.0\", default-features = false }\nnautilus-deribit = { path = \"crates/adapters/deribit\", version = \"0.59.0\", default-features = false }\nnautilus-derive = { path = \"crates/adapters/derive\", version = \"0.59.0\", default-features = false }\nnautilus-dydx = { path = \"crates/adapters/dydx\", version = \"0.59.0\", default-features = false }\nnautilus-hyperliquid = { path = \"crates/adapters/hyperliquid\", version = \"0.59.0\", default-features = false }\nnautilus-interactive-brokers = { path = \"crates/adapters/interactive_brokers\", version = \"0.59.0\" }\nnautilus-kraken = { path = \"crates/adapters/kraken\", version = \"0.59.0\", default-features = false }\nnautilus-lighter",
    "strategic_keywords": [
      "workspace",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "jdx",
    "name": "mise",
    "full_name": "jdx/mise",
    "url": "https://github.com/jdx/mise",
    "description": "dev tools, env vars, task runner",
    "language": "Rust",
    "total_stars": 30110,
    "forks": 1227,
    "stars_this_period": 460,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 33,
      "created_at": "2023-01-09T14:44:21Z",
      "pushed_at": "2026-06-25T15:05:23Z",
      "homepage": "https://mise.en.dev",
      "default_branch": "main",
      "forks": 1227,
      "watchers": 43,
      "archived": false,
      "size_kb": 55616
    },
    "readme_content": "<div align=\"center\">\n\n<h1 align=\"center\">\n  <a href=\"https://mise.en.dev\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/public/logo-dark.svg\" />\n      <img src=\"docs/public/logo-light.svg\" alt=\"mise\" width=\"256\" height=\"256\" />\n    </picture>\n    <br>\n    mise-en-place\n  </a>\n</h1>\n\n<p>\n  <a href=\"https://crates.io/crates/mise\"><img alt=\"Crates.io\" src=\"https://img.shields.io/crates/v/mise?style=for-the-badge&color=8B2252\"></a>\n  <a href=\"https://github.com/jdx/mise/blob/main/LICENSE\"><img alt=\"GitHub\" src=\"https://img.shields.io/github/license/jdx/mise?style=for-the-badge&color=6B7F4E\"></a>\n  <a href=\"https://github.com/jdx/mise/actions/workflows/test.yml\"><img alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/jdx/mise/test.yml?style=for-the-badge&color=C5975B\"></a>\n  <a href=\"https://discord.gg/mABnUDvP57\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/1066429325269794907?style=for-the-badge&color=8B2252\"></a>\n</p>\n\n<p><b>Dev tools, env vars, and tasks in one CLI</b></p>\n\n<p align=\"center\">\n  <a href=\"https://mise.en.dev/getting-started.html\">Getting Started</a> •\n  <a href=\"https://mise.en.dev\">Documentation</a> •\n  <a href=\"https://mise.en.dev/dev-tools/\">Dev Tools</a> •\n  <a href=\"https://mise.en.dev/environments/\">Environments</a> •\n  <a href=\"https://mise.en.dev/tasks/\">Tasks</a>\n</p>\n\n<p align=\"center\">\n  Sponsored by <a href=\"https://37signals.com\">37signals</a>.<br>\n  <a href=\"https://en.dev/sponsors.html\">View all sponsors</a>.\n</p>\n\n<hr />\n\n</div>\n\n> [!TIP]\n> My latest project, [aube](https://aube.en.dev) just hit stable! It's the fastest Node.js package manager with strong security defaults and is compatible with npm/pnpm/yarn lockfiles!\n\n## What is it?\n\n`mise` prepares your development environment before each command runs. It keeps\nproject tools, environment variables, and tasks in one `mise.toml` file so new\nshells, checkouts, and CI jobs all start from the same setup.\n\n- Install and switch between [dev tools](https://mise.en.dev/dev-tools/) like node, python, cmake, terraform, and [hundreds more](https://mise.en.dev/registry.html).\n- Load [environment variables](https://mise.en.dev/environments/) per project directory, including values from `.env` files and other sources.\n- Define and run [tasks](https://mise.en.dev/tasks/) for building, testing, linting, and deploying projects.\n\n## Demo\n\nThe following demo shows how to install and use `mise` to manage multiple versions of `node` on the same system.\nNote that calling `which node` gives us a real path to node, not a shim.\n\nIt also shows that you can use `mise` to install and many other tools such as `jq`, `terraform`, or `go`.\n\n[![demo](./docs/tapes/demo.gif)](https://mise.en.dev/demo.html)\n\nSee [demo transcript](https://mise.en.dev/demo.html).\n\n## Quickstart\n\n### Install mise\n\nSee [Getting started](https://mise.en.dev/getting-started.html) for more options.\n\n```sh-session\n$ curl https://mise.run | sh\n$ ~/.local/bin/mise --version\n              _                                        __\n   ____ ___  (_)_______        ___  ____        ____  / /___ _________\n  / __ `__ \\/ / ___/ _ \\______/ _ \\/ __ \\______/ __ \\/ / __ `/ ___/ _ \\\n / / / / / / (__  )  __/_____/  __/ / / /_____/ /_/ / / /_/ / /__/  __/\n/_/ /_/ /_/_/____/\\___/      \\___/_/ /_/     / .___/_/\\__,_/\\___/\\___/\n                                            /_/                 by @jdx\n2026.6.14 macos-arm64 (2026-06-25)\n```\n\nHook mise into your shell (pick the right one for your shell):\n\n```sh-session\n# note this assumes mise is located at ~/.local/bin/mise\n# which is what https://mise.run does by default\necho 'eval \"$(~/.local/bin/mise activate bash)\"' >> ~/.bashrc\necho 'eval \"$(~/.local/bin/mise activate zsh)\"' >> ~/.zshrc\necho '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish\necho '~/.local/bin/mise activate pwsh | Out-String | Invoke-Expression' >> ~/.config/powershell/Microsoft.PowerShell_profile.ps1\n```\n\n### Execute commands with specific tools\n\n```sh-session\n$ mise exec node@26 -- node -v\nmise node@26.x.x ✓ installed\nv26.x.x\n```\n\n### Install tools\n\n```sh-session\n$ mise use --global node@26 go@1\n$ node -v\nv26.x.x\n$ go version\ngo version go1.x.x macos/arm64\n```\n\nSee [dev tools](https://mise.en.dev/dev-tools/) for more examples.\n\n### Manage environment variables\n\n```toml\n# mise.toml\n[env]\nSOME_VAR = \"foo\"\n```\n\n```sh-session\n$ mise set SOME_VAR=bar\n$ echo $SOME_VAR\nbar\n```\n\nNote that `mise` can also [load `.env` files](https://mise.en.dev/environments/#env-directives).\n\n### Run tasks\n\n```toml\n# mise.toml\n[tasks.build]\ndescription = \"build the project\"\nrun = \"echo building...\"\n```\n\n```sh-session\n$ mise run build\nbuilding...\n```\n\nSee [tasks](https://mise.en.dev/tasks/) for more information.\n\n### Example mise project\n\nHere is a combined example to give you an idea of how you can use mise to manage your a project's tools, environment, and tasks.\n\n```toml\n# mise.toml\n[tools]\nterraform = \"1\"\naws-cli = \"2\"\n\n[env]\nTF_WORKSPACE = \"development\"\nAWS_REGION = \"us-west-2\"\nAWS_PROFILE = \"dev\"\n\n[tasks.plan]\ndescription = \"Run terraform plan with configured workspace\"\nrun = \"\"\"\nterraform init\nterraform workspace select $TF_WORKSPACE\nterraform plan\n\"\"\"\n\n[tasks.validate]\ndescription = \"Validate AWS credentials and terraform config\"\nrun = \"\"\"\naws sts get-caller-identity\nterraform validate\n\"\"\"\n\n[tasks.deploy]\ndescription = \"Deploy infrastructure after validation\"\ndepends = [\"validate\", \"plan\"]\nrun = \"terraform apply -auto-approve\"\n```\n\nRun it with:\n\n```sh-session\nmise install # install tools specified in mise.toml\nmise run deploy\n```\n\nFind more examples in the [mise cookbook](https://mise.en.dev/mise-cookbook/).\n\n## Full Documentation\n\nSee [mise.en.dev](https://mise.en.dev)\n\n## GitHub Issues & Discussions\n\nDue to the volume of issue submissions mise received, using GitHub Issues became unsustainable for\nthe project. Instead, mise uses GitHub Discussions which provide a more community-centric platform\nfor communication and require less management on the part of the maintainers.\n\nPlease note the following discussion categories, which match how issues are often used:\n\n- [Announcements](https://github.com/jdx/mise/discussions/categories/announcements)\n- [Ideas](https://github.com/jdx/mise/discussions/categories/ideas): for feature requests, etc.\n- [Troubleshooting & Bug Reports](https://github.com/jdx/mise/discussions/categories/troubleshooting-and-bug-reports)\n\n## Special Thanks\n\n<p>\n  <a href=\"https://namespace.so\">\n    <img src=\"docs/public/namespace-logo.svg\" alt=\"Namespace\" width=\"64\" height=\"64\">\n  </a>\n  <br>\n  Thanks to <a href=\"https://namespace.so\">Namespace</a> for providing CI services for mise.\n</p>\n\n## Contributors\n\n[![Contributors](https://contrib.rocks/image?repo=jdx/mise)](https://github.com/jdx/mise/graphs/contributors)\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nmembers = [\n  \"crates/vfox\",\n  \"crates/aqua-registry\",\n  \"crates/mise-interactive-config\",\n  \"crates/mise-shim\",\n  \"crates/mise-sigstore\",\n]\n\n[package]\nname = \"mise\"\nversion = \"2026.6.14\"\nedition = \"2024\"\ndescription = \"Dev tools, env vars, and tasks in one CLI\"\nauthors = [\"Jeff Dickey (@jdx)\"]\nhomepage = \"https://mise.en.dev\"\ndocumentation = \"https://mise.en.dev\"\nrepository = \"https://github.com/jdx/mise\"\nreadme = \"README.md\"\nlicense = \"MIT\"\nkeywords = [\"mise\"]\ncategories = [\"command-line-utilities\"]\ninclude = [\n  \"/Cargo.lock\",\n  \"/LICENSE\",\n  \"/README.md\",\n  \"/build.rs\",\n  \"/completions/*\",\n  \"/minisign.pub\",\n  \"/registry/*.toml\",\n  \"/settings.toml\",\n  \"/zipsign.pub\",\n  \"/src/**/*.rs\",\n  \"/src/assets/**\",\n  \"/src/plugins/core/assets/**\",\n  \"/src/system/packages/brew/shim.rb\",\n  \"/vendor/aqua-registry/LICENSE\",\n  \"/vendor/aqua-registry/metadata.json\",\n  \"/vendor/aqua-registry/registry.yml\",\n]\nbuild = \"build.rs\"\nrust-version = \"1.91\"\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[[bin]]\nname = \"mise\"\npath = \"src/main.rs\"\n\n#[[bench]]\n#name = \"config_bench\"\n#harness = false\n\n[profile.release]\n# debug = 0 # note that higher levels greatly increase the binary size for linux\n\n[profile.serious]\ninherits = \"release\"\nlto = true\n\n[profile.dev.package.backtrace]\nopt-level = 3\n\n[dependencies]\nage = { version = \"0.11\", features = [\"ssh\"] }\naho-corasick = \"1\"\nasync-backtrace = \"0.2\"\nasync-trait = \"0.1\"\naws-config = { version = \"1.5\", default-features = false, features = [\n  \"behavior-version-latest\",\n  \"default-https-client\",\n  \"rt-tokio\",\n  \"sso\",\n] }\naws-lc-rs = { version = \"1\", optional = true, features = [\n  \"bindgen\",\n] } # TODO: this is only for armv7 currently\naws-sdk-s3 = { version = \"1\", default-features = false, features = [\n  \"behavior-version-latest\",\n  \"default-https-client\",\n] }\nbase64 = \"0.22\"\nbytesize = \"2\"\nbzip2 = \"0.6\"\ncalm_io = \"0.1\"\nchrono = { version = \"0.4\", default-features = false, features = [\n  \"std\",\n  \"clock\",\n] }\nci_info = \"0.14\"\nclap = { version = \"4\", features = [\"env\", \"derive\", \"string\"] }\ncolor-eyre = \"0.6\"\ncolor-print = \"0.3\"\ncomfy-table = \"7\"\nconfique = { version = \"0.4\", default-features = false }\nconsole = \"0.16\"\ncontracts = \"0.6\"\ndashmap = \"6\"\ndemand = \"2\"\ndigest = \"0.11.0\"\ndotenvy = \"0.15\"\nduct = \"1.0\"\nhomedir = \"0.3\"\nexpr-lang = \"1\"\neyre = \"0.6\"\nfiletime = \"0.2\"\nflate2 = \"1\"\nfutures-util = \"0.3.32\"\nmise-sigstore = { path = \"crates/mise-sigstore\", default-features = false }\nfslock = \"0.2.1\"\ngix = { version = \"<1\", features = [\"worktree-mutation\"] }\nglob = \"0.3\"\nglobset = \"0.4\"\nignore = { version = \"0.4\", features = [] }\nheck = \"0.5\"\nhex = \"0.4\"\nindenter = \"0.3\"\nindexmap = { version = \"2\", features = [\"serde\"] }\nclx = \"2\"\nindoc = \"2\"\nitertools = \"0.14\"\njiff = \"0.2\"\njunction = \"2\"\nlog = \"0.4\"\nminisign-verify = \"0.2\"\nmd-5 = \"0.11\"\nmiette = { version = \"7\", features = [\"fancy\"] }\nnetrc-rs = \"0.1\"\nnodejs-semver = \"4.2\"\nnucleo-matcher = \"0.3\"\nnum_cpus = \"1\"\nonce_cell = \"1\"\nopenssl = { version = \"0.10\", optional = true }\npath-absolutize = { version = \"3\", features = [\"unsafe_cache\"] }\npetgraph = \"0.8\"\nphf = \"0.13\"\nrand = \"0.10\"\nrattler = { version = \"0.44\", default-features = false }\nrattler_conda_types = { version = \"0.47\", default-features = false }\nrattler_repodata_gateway = { version = \"0.29\", default-features = false, features = [\n  \"gateway\",\n] }\nrattler_solve = { version = \"7\", default-features = false, features = [\n  \"resolvo\",\n] }\nrattler_package_streaming = { version = \"0.26\", default-features = false }\nrattler_virtual_packages = { version = \"3\", default-features = false }\nregex = \"1\"\nplist = \"1\"\nreqwest = { version = \"0.13\", default-features = false, features = [\n  \"json\",\n  \"form\",\n  \"gzip\",\n  \"zstd\",\n  \"charset\",\n  \"http2\",\n  \"socks\",\n  \"system-proxy\",\n] }\nrmcp = { version = \"1.0\", features = [\"server\", \"transport-io\", \"schemars\"] }\nrmp-serde = \"1\"\nrops = { version = \"0.1\", default-features = false, features = [\n  \"aes-gcm\",\n  \"sha2\",\n  \"yaml\",\n  \"json\",\n  \"toml\",\n  \"age\",\n] }\nserde = { version = \"1\", features = [\"derive\"] }\nserde_ignored = \"0.1\"\nserde_json = \"1\"\nserde_yaml = \"0.9\"\nsevenz-rust2 = \"0.20\"\nsha1 = \"0.11\"\nsha2 = \"0.11\"\nblake3 = \"1\"\nchacha20poly1305 = \"0.10\"\nshell-escape = \"0.1\"\nshell-words = \"1\"\nsignal-hook = \"0.4\"\nsiphasher = \"1\"\nstrum = { version = \"0.28\", features = [\"derive\"] }\nsupports-hyperlinks = \"3\"\ntabled = { version = \"0.21\", features = [\"ansi\"] }\ntaplo = \"0.14\"\ntar = \"0.4\"\ntempfile = \"3\"\ntera = \"1\"\nterminal_size = \"0.4\"\nthiserror = \"2\"\ntokio = { version = \"1\", features = [\"full\"] }\ntoml = { version = \"1.0\", features = [\"parse\", \"preserve_order\"] }\ntoml_edit = { version = \"0.25\", features = [\"parse\"] }\nubi = { version = \"0.9\", default-features = false }\nurl = \"2\"\nurlencoding = \"2\"\nusage-lib = { version = \"3\", features = [\"clap\", \"docs\"] }\nversions = { version = \"7\", features = [\"serde\"] }\nvfox = { path = \"crates/vfox\", default-features = false }\naqua-registry = { path = \"crates/aqua-regis",
    "strategic_keywords": [
      "workspace",
      "eval",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 4,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "kunchenguid",
    "name": "no-mistakes",
    "full_name": "kunchenguid/no-mistakes",
    "url": "https://github.com/kunchenguid/no-mistakes",
    "description": "git push no-mistakes",
    "language": "Go",
    "total_stars": 2835,
    "forks": 167,
    "stars_this_period": 448,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 40,
      "created_at": "2026-04-05T06:43:05Z",
      "pushed_at": "2026-06-23T21:30:12Z",
      "homepage": "https://kunchenguid.github.io/no-mistakes/",
      "default_branch": "main",
      "forks": 167,
      "watchers": 6,
      "archived": false,
      "size_kb": 4288
    },
    "readme_content": "<h1 align=\"center\"><code>git push no-mistakes</code></h1>\n<p align=\"center\">\n  <a href=\"https://github.com/kunchenguid/no-mistakes/actions/workflows/release.yml\"\n    ><img\n      alt=\"Release\"\n      src=\"https://img.shields.io/github/actions/workflow/status/kunchenguid/no-mistakes/release.yml?style=flat-square&label=release\"\n  /></a>\n  <a href=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square\"\n    ><img\n      alt=\"Platform\"\n      src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square\"\n  /></a>\n  <a href=\"https://x.com/kunchenguid\"\n    ><img\n      alt=\"X\"\n      src=\"https://img.shields.io/badge/X-@kunchenguid-black?style=flat-square\"\n  /></a>\n  <a href=\"https://discord.gg/Wsy2NpnZDu\"\n    ><img\n      alt=\"Discord\"\n      src=\"https://img.shields.io/discord/1439901831038763092?style=flat-square&label=discord\"\n  /></a>\n</p>\n\n<h3 align=\"center\">Kill all the slop. Raise clean PR.</h3>\n\n<p align=\"center\"><strong>English</strong> · <a href=\"README.zh-CN.md\">简体中文</a></p>\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/demo.gif\" alt=\"no-mistakes demo\" width=\"800\" />\n</p>\n\n`no-mistakes` puts a local git proxy in front of your real remote.\nPush to `no-mistakes` instead of `origin`, and it spins up a disposable worktree, runs an AI-driven validation pipeline, forwards the branch to the configured push target only after every check passes, and opens a clean PR automatically.\n\n- **Non-blocking** - the pipeline runs in an isolated worktree without disrupting your work.\n- **Agent-agnostic** - `claude`, `codex`, `rovodev`, `opencode`, `pi`, or `acp:<target>` via `acpx`.\n- **Agent-native** - `/no-mistakes` lets your coding agent do a task and gate it, or gate existing committed work: it runs the pipeline, has the pipeline apply safe fixes, and escalates the rest to you.\n- **Human stays in charge** - auto-fix or review findings, your call.\n- **Clean PRs by default** - push, open PR, watch CI, and auto-fix failures in one shot.\n\nFull documentation: <https://kunchenguid.github.io/no-mistakes/>\n\n## How it works\n\n```\n        your branch\n            │  git push no-mistakes\n            ▼\n   ┌──────────────────────────────────────────────┐\n   │  disposable worktree — your work stays put     │\n   │  review → test → docs → lint → push → PR → CI  │\n   └──────────────────────────────────────────────┘\n            │  every check green\n            ▼\n        clean PR, opened for you\n```\n\nEach step either passes on its own or stops with a **finding** for you to act on.\nSafe, mechanical fixes are applied automatically; anything that touches your intent is escalated for you to **approve**, **fix**, or **skip**.\nNothing reaches the configured push target until every check is green.\n\n## Install\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh\n```\n\nWindows, Go install, and build-from-source instructions are in the [installation guide](https://kunchenguid.github.io/no-mistakes/start-here/installation/).\n\n## Quick Start\n\n```sh\n$ no-mistakes init\n  ✓ Gate initialized\n\n    repo  /Users/you/src/my-repo\n    gate  no-mistakes → /Users/you/.no-mistakes/repos/abc123def456.git\n  remote  git@github.com:you/my-repo.git\n   skill  /no-mistakes installed for agents at user level\n\n  Push through the gate with:\n  git push no-mistakes <branch>\n\n$ git checkout my-branch\n\n# do some work in the branch...\n\n$ git push no-mistakes\n  * Pipeline started\n\n  Run no-mistakes to review.\n\n$ no-mistakes\n# opens the TUI for the active run\n```\n\nFor GitHub fork contributions, keep `origin` pointed at the parent repository and initialize with `no-mistakes init --fork-url <your-fork-url>`.\n\nFrom the TUI you act on each **finding**: **auto-fix** ones are applied for you (or approve to let them), **ask-user** ones are a judgement call you approve, fix, or skip.\nOnce every check is green, the gate forwards your branch to the configured push target and opens the PR for you, so there is no manual `git push origin` and no hand-written PR body.\nPrefer to let your coding agent drive the same flow headlessly?\nUse `/no-mistakes` (see below).\n\n## Three ways to trigger the gate\n\nEvery change runs through the same pipeline. Pick the entry point that fits how you're working when the change is ready:\n\n- **`git push no-mistakes`** - the explicit Git path. Push a committed branch to the gate remote instead of `origin`.\n- **`no-mistakes`** - the TUI. Run it after making changes (no commit needed) and a wizard walks you through creating a branch, committing, and pushing through the gate, then attaches to the run. `no-mistakes -y` does all of that automatically.\n- **`/no-mistakes`** - the agent skill. Tell the coding agent to do a task and gate it with `/no-mistakes <task>`, or use bare `/no-mistakes` to gate existing committed work. It runs the pipeline, has the pipeline apply safe fixes, and stops to ask you about anything that needs a human call.\n\n`no-mistakes init` installs the `/no-mistakes` skill for Claude Code and other agents. Under the hood the skill drives `no-mistakes axi`, a non-interactive TOON interface to the same approval flow.\n\nSee the [quick start](https://kunchenguid.github.io/no-mistakes/start-here/quick-start/) for the full first-run walkthrough.\n\n## Development\n\n```sh\nmake build   # Build bin/no-mistakes with version info\nmake test    # Run go test -race ./... (excludes the e2e suite)\nmake e2e     # Run the tagged end-to-end agent journey suite\nmake e2e-record # Re-record e2e fixtures when agent wire formats change\nmake lint    # Check generated skill drift and run go vet ./...\nmake skill   # Regenerate committed no-mistakes skill files\nmake fmt     # Run gofmt -w .\nmake demo    # Regenerate demo.gif and demo.mp4 (needs vhs and ffmpeg)\nmake docs    # Build the Astro docs site in docs/dist\n```\n\nSee `Makefile` for the full target list.\n\n`make e2e-record` overwrites `internal/e2e/fixtures/` from the real `claude`, `codex`, and `opencode` CLIs, spends real API quota, and should be reviewed before committing.\n\n## Star History\n\n<a href=\"https://www.star-history.com/?repos=kunchenguid%2Fno-mistakes&type=date&legend=top-left\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&theme=dark&legend=top-left\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&legend=top-left\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&legend=top-left\" />\n </picture>\n</a>\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/kunchenguid/no-mistakes\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/charmbracelet/bubbles v1.0.0\n\tgithub.com/charmbracelet/bubbletea v1.3.10\n\tgithub.com/charmbracelet/lipgloss v1.1.0\n\tgithub.com/mattn/go-isatty v0.0.20\n\tgithub.com/muesli/termenv v0.16.0\n\tgithub.com/oklog/ulid/v2 v2.1.1\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/toon-format/toon-go v0.0.0-20251202084852-7ca0e27c4e8c\n\tgolang.org/x/sys v0.42.0\n\tgopkg.in/yaml.v3 v3.0.1\n\tmodernc.org/sqlite v1.48.1\n)\n\nrequire (\n\tgithub.com/atotto/clipboard v0.1.4 // indirect\n\tgithub.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect\n\tgithub.com/charmbracelet/colorprofile v0.4.1 // indirect\n\tgithub.com/charmbracelet/x/ansi v0.11.6 // indirect\n\tgithub.com/charmbracelet/x/cellbuf v0.0.15 // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.9.0 // indirect\n\tgithub.com/clipperhouse/stringish v0.1.1 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.5.0 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.3.0 // indirect\n\tgithub.com/mattn/go-localereader v0.0.1 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.19 // indirect\n\tgithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/ncruces/go-strftime v1.0.0 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/spf13/pflag v1.0.9 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgolang.org/x/text v0.3.8 // indirect\n\tmodernc.org/libc v1.70.0 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "dani-garcia",
    "name": "vaultwarden",
    "full_name": "dani-garcia/vaultwarden",
    "url": "https://github.com/dani-garcia/vaultwarden",
    "description": "Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs",
    "language": "Rust",
    "total_stars": 62873,
    "forks": 2941,
    "stars_this_period": 412,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "bitwarden",
        "bitwarden-rs",
        "docker",
        "rocket",
        "rust",
        "vaultwarden"
      ],
      "license": "AGPL-3.0",
      "open_issues": 59,
      "created_at": "2018-02-17T22:40:20Z",
      "pushed_at": "2026-06-05T19:52:52Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 2941,
      "watchers": 292,
      "archived": false,
      "size_kb": 11757
    },
    "readme_content": "![Vaultwarden Logo](./resources/vaultwarden-logo-auto.svg)\n\nAn alternative server implementation of the Bitwarden Client API, written in Rust and compatible with [official Bitwarden clients](https://bitwarden.com/download/) [[disclaimer](#disclaimer)], perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.\n\n---\n\n[![GitHub Release](https://img.shields.io/github/release/dani-garcia/vaultwarden.svg?style=for-the-badge&logo=vaultwarden&color=005AA4)](https://github.com/dani-garcia/vaultwarden/releases/latest)\n[![ghcr.io Pulls](https://img.shields.io/badge/dynamic/json?style=for-the-badge&logo=github&logoColor=fff&color=005AA4&url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdani-garcia%2Fvaultwarden%2Fvaultwarden.json&query=%24.downloads&label=ghcr.io%20pulls&cacheSeconds=14400)](https://github.com/dani-garcia/vaultwarden/pkgs/container/vaultwarden)\n[![Docker Pulls](https://img.shields.io/docker/pulls/vaultwarden/server.svg?style=for-the-badge&logo=docker&logoColor=fff&color=005AA4&label=docker.io%20pulls)](https://hub.docker.com/r/vaultwarden/server)\n[![Quay.io](https://img.shields.io/badge/quay.io-download-005AA4?style=for-the-badge&logo=redhat&cacheSeconds=14400)](https://quay.io/repository/vaultwarden/server) <br>\n[![Contributors](https://img.shields.io/github/contributors-anon/dani-garcia/vaultwarden.svg?style=flat-square&logo=vaultwarden&color=005AA4)](https://github.com/dani-garcia/vaultwarden/graphs/contributors)\n[![Forks](https://img.shields.io/github/forks/dani-garcia/vaultwarden.svg?style=flat-square&logo=github&logoColor=fff&color=005AA4)](https://github.com/dani-garcia/vaultwarden/network/members)\n[![Stars](https://img.shields.io/github/stars/dani-garcia/vaultwarden.svg?style=flat-square&logo=github&logoColor=fff&color=005AA4)](https://github.com/dani-garcia/vaultwarden/stargazers)\n[![Issues Open](https://img.shields.io/github/issues/dani-garcia/vaultwarden.svg?style=flat-square&logo=github&logoColor=fff&color=005AA4&cacheSeconds=300)](https://github.com/dani-garcia/vaultwarden/issues)\n[![Issues Closed](https://img.shields.io/github/issues-closed/dani-garcia/vaultwarden.svg?style=flat-square&logo=github&logoColor=fff&color=005AA4&cacheSeconds=300)](https://github.com/dani-garcia/vaultwarden/issues?q=is%3Aissue+is%3Aclosed)\n[![AGPL-3.0 Licensed](https://img.shields.io/github/license/dani-garcia/vaultwarden.svg?style=flat-square&logo=vaultwarden&color=944000&cacheSeconds=14400)](https://github.com/dani-garcia/vaultwarden/blob/main/LICENSE.txt) <br>\n[![Dependency Status](https://img.shields.io/badge/dynamic/xml?url=https%3A%2F%2Fdeps.rs%2Frepo%2Fgithub%2Fdani-garcia%2Fvaultwarden%2Fstatus.svg&query=%2F*%5Blocal-name()%3D'svg'%5D%2F*%5Blocal-name()%3D'g'%5D%5B2%5D%2F*%5Blocal-name()%3D'text'%5D%5B4%5D&style=flat-square&logo=rust&label=dependencies&color=005AA4)](https://deps.rs/repo/github/dani-garcia/vaultwarden)\n[![GHA Release](https://img.shields.io/github/actions/workflow/status/dani-garcia/vaultwarden/release.yml?style=flat-square&logo=github&logoColor=fff&label=Release%20Workflow)](https://github.com/dani-garcia/vaultwarden/actions/workflows/release.yml)\n[![GHA Build](https://img.shields.io/github/actions/workflow/status/dani-garcia/vaultwarden/build.yml?style=flat-square&logo=github&logoColor=fff&label=Build%20Workflow)](https://github.com/dani-garcia/vaultwarden/actions/workflows/build.yml) <br>\n[![Matrix Chat](https://img.shields.io/matrix/vaultwarden:matrix.org.svg?style=flat-square&logo=matrix&logoColor=fff&color=953B00&cacheSeconds=14400)](https://matrix.to/#/#vaultwarden:matrix.org)\n[![GitHub Discussions](https://img.shields.io/github/discussions/dani-garcia/vaultwarden?style=flat-square&logo=github&logoColor=fff&color=953B00&cacheSeconds=300)](https://github.com/dani-garcia/vaultwarden/discussions)\n[![Discourse Discussions](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fvaultwarden.discourse.group%2F&style=flat-square&logo=discourse&color=953B00)](https://vaultwarden.discourse.group/)\n\n> [!IMPORTANT]\n> **When using this server, please report any bugs or suggestions directly to us (see [Get in touch](#get-in-touch)), regardless of whatever clients you are using (mobile, desktop, browser...). DO NOT use the official Bitwarden support channels.**\n\n<br>\n\n## Features\n\nA nearly complete implementation of the Bitwarden Client API is provided, including:\n\n * [Personal Vault](https://bitwarden.com/help/managing-items/)\n * [Send](https://bitwarden.com/help/about-send/)\n * [Attachments](https://bitwarden.com/help/attachments/)\n * [Website icons](https://bitwarden.com/help/website-icons/)\n * [Personal API Key](https://bitwarden.com/help/personal-api-key/)\n * [Organizations](https://bitwarden.com/help/getting-started-organizations/)\n   - [Collections](https://bitwarden.com/help/about-collections/),\n     [Password Sharing](https://bitwarden.com/help/sharing/),\n     [Member Roles](https://bitwarden.com/help/user-types-access-control/),\n     [Groups](https://bitwarden.com/help/about-groups/),\n     [Event Logs](https://bitwarden.com/help/event-logs/),\n     [Admin Password Reset](https://bitwarden.com/help/admin-reset/),\n     [Directory Connector](https://bitwarden.com/help/directory-sync/),\n     [Policies](https://bitwarden.com/help/policies/)\n * [Multi/Two Factor Authentication](https://bitwarden.com/help/bitwarden-field-guide-two-step-login/)\n   - [Authenticator](https://bitwarden.com/help/setup-two-step-login-authenticator/),\n     [Email](https://bitwarden.com/help/setup-two-step-login-email/),\n     [FIDO2 WebAuthn](https://bitwarden.com/help/setup-two-step-login-fido/),\n     [YubiKey](https://bitwarden.com/help/setup-two-step-login-yubikey/),\n     [Duo](https://bitwarden.com/help/setup-two-step-login-duo/)\n * [Emergency Access](https://bitwarden.com/help/emergency-access/)\n * [Vaultwarden Admin Backend](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page)\n * [Modified Web Vault client](https://github.com/dani-garcia/bw_web_builds) (Bundled within our containers)\n\n<br>\n\n## Usage\n\n> [!IMPORTANT]\n> The web-vault requires the use of HTTPS and a secure context for the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API). <br>\n> That means it will only work if you [enable HTTPS](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-HTTPS). <br>\n> We also suggest to use a [reverse proxy](https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples).\n\nThe recommended way to install and use Vaultwarden is via our container images which are published to [ghcr.io](https://github.com/dani-garcia/vaultwarden/pkgs/container/vaultwarden), [docker.io](https://hub.docker.com/r/vaultwarden/server) and [quay.io](https://quay.io/repository/vaultwarden/server).\nSee [which container image to use](https://github.com/dani-garcia/vaultwarden/wiki/Which-container-image-to-use) for an explanation of the provided tags.\n\nThere are also [community driven packages](https://github.com/dani-garcia/vaultwarden/wiki/Third-party-packages) which can be used, but those might be lagging behind the latest version or might deviate in the way Vaultwarden is configured, as described in our [Wiki](https://github.com/dani-garcia/vaultwarden/wiki).\n\nAlternatively, you can also [build Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki/Building-binary) yourself.\n\nWhile Vaultwarden is based upon the [Rocket web framework](https://rocket.rs) which has built-in support for TLS our recommendation would be that you setup a reverse proxy (see [proxy examples](https://github.com/dani-garcia/vaultwarden/wiki/Proxy-examples)).\n\n> [!TIP]\n>**For more detailed examples on how to install, use and configure Vaultwarden you can check our [Wiki](https://github.com/dani-garcia/vaultwarden/wiki).**\n\n### Docker/Podman CLI\n\nPull the container image and mount a volume from the host for persistent storage.<br>\nYou can replace `docker` with `podman` if you prefer to use podman.\n\n```shell\ndocker pull vaultwarden/server:latest\ndocker run --detach --name vaultwarden \\\n  --env DOMAIN=\"https://vw.domain.tld\" \\\n  --volume /vw-data/:/data/ \\\n  --restart unless-stopped \\\n  --publish 127.0.0.1:8000:80 \\\n  vaultwarden/server:latest\n```\n\nThis will preserve any persistent data under `/vw-data/`, you can adapt the path to whatever suits you.\n\n### Docker Compose\n\nTo use Docker compose you need to create a `compose.yaml` which will hold the configuration to run the Vaultwarden container.\n\n```yaml\nservices:\n  vaultwarden:\n    image: vaultwarden/server:latest\n    container_name: vaultwarden\n    restart: unless-stopped\n    environment:\n      DOMAIN: \"https://vw.domain.tld\"\n    volumes:\n      - ./vw-data/:/data/\n    ports:\n      - 127.0.0.1:8000:80\n```\n\n<br>\n\n## Get in touch\n\nHave a question, suggestion or need help? Join our community on [Matrix](https://matrix.to/#/#vaultwarden:matrix.org), [GitHub Discussions](https://github.com/dani-garcia/vaultwarden/discussions) or [Discourse Forums](https://vaultwarden.discourse.group/).\n\nEncountered a bug or crash? Please search our issue tracker and discussions to see if it's already been reported. If not, please [start a new discussion](https://github.com/dani-garcia/vaultwarden/discussions) or [create a new issue](https://github.com/dani-garcia/vaultwarden/issues/). Ensure you're using the latest version of Vaultwarden and there aren't any similar issues open or closed!\n\n<br>\n\n## Contributors\n\nThanks for your contribution to the project!\n\n[![Contributors Count](https://img.shields.io/github/contributors-anon/dani-garcia/vaultwarden?style=for-the-badge&logo=vaultwarden&color=005AA4)](https://github.com/dani-garcia/vaultwarden/graphs/contributors)<br>\n[![Contributors Avatars](https://contributors-img.web.app/image?repo=dani-garcia/vaultwarden)](https://github.com/dani-garcia/vaultwarden/graphs/contributors)\n\n<br>\n\n## Disclaimer\n\n**This project is not associated with [Bitwarden](https://bitwarden.com/) or Bitwarden, Inc.**\n\nHowever, one of the active maintainers for Vaultwarden is employed by Bitwarden and is allowed to contribute to the project on their own time. These contributions are independent of Bitwarden and are reviewed by other maintainers.\n\nThe maintainers work together to set the direction for the project, focusing on serving the self-hosting community, including individuals, families, and small organizations, while ensuring the project's sustainability.\n\n**Please note:** We cannot be held liable for any data loss that may occur while using Vaultwarden. This includes passwords, attachments, and other information handled by the application. We highly recommend performing regular backups of your files and database. However, should you experience data loss, we encourage you to contact us immediately.\n\n<br>\n\n## Bitwarden_RS\n\nThis project was known as Bitwarden_RS and has been renamed to separate itself from the official Bitwarden server in the hopes of avoiding confusion and trademark/branding issues.<br>\nPlease see [#1642 - v1.21.0 release and project rename to Vaultwarden](https://github.com/dani-garcia/vaultwarden/discussions/1642) for more explanation.\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace.package]\nedition = \"2024\"\nrust-version = \"1.94.0\"\nlicense = \"AGPL-3.0-only\"\nrepository = \"https://github.com/dani-garcia/vaultwarden\"\npublish = false\n\n[workspace]\nmembers = [\"macros\"]\n\n[package]\nname = \"vaultwarden\"\nversion = \"1.0.0\"\nauthors = [\"Daniel García <dani-garcia@users.noreply.github.com>\"]\nreadme = \"README.md\"\nbuild = \"build.rs\"\nrepository.workspace = true\nedition.workspace = true\nrust-version.workspace = true\nlicense.workspace = true\npublish.workspace = true\n\n[features]\ndefault = [\n    # \"sqlite\",\n    # \"sqlite_system\",\n    # \"mysql\",\n    # \"postgresql\",\n]\n# Empty to keep compatibility, prefer to set USE_SYSLOG=true\nenable_syslog = []\n# Please enable at least one of these DB backends.\nmysql = [\"diesel/mysql\", \"diesel_migrations/mysql\"]\npostgresql = [\"diesel/postgres\", \"diesel_migrations/postgres\"]\nsqlite_system = [\"diesel/sqlite\", \"diesel_migrations/sqlite\"] # Dynamically link SQLite\nsqlite = [\"sqlite_system\", \"libsqlite3-sys/bundled\"] # Statically link SQLite into the binary instead of dynamically.\n# Enable to use a vendored and statically linked openssl\nvendored_openssl = [\"openssl/vendored\"]\n# Enable MiMalloc memory allocator to replace the default malloc\n# This can improve performance for Alpine builds\nenable_mimalloc = [\"dep:mimalloc\"]\ns3 = [\n    \"opendal/services-s3\",\n    \"dep:aws-config\",\n    \"dep:aws-credential-types\",\n    \"dep:aws-smithy-runtime-api\",\n    \"dep:http\",\n    \"dep:reqsign-aws-v4\",\n    \"dep:reqsign-core\",\n]\n\n# OIDC specific features\noidc-accept-rfc3339-timestamps = [\"openidconnect/accept-rfc3339-timestamps\"]\noidc-accept-string-booleans = [\"openidconnect/accept-string-booleans\"]\n\n# Enable unstable features, requires nightly\n# Currently only used to enable rusts official ip support\nunstable = []\n\n[target.\"cfg(unix)\".dependencies]\n# Logging\nsyslog = \"7.0.0\"\n\n[dependencies]\nmacros = { path = \"./macros\" }\n\n# Logging\nlog = \"0.4.32\"\nfern = { version = \"0.7.1\", features = [\"syslog-7\", \"reopen-1\"] }\n# We need the `log` feature for `tracing` to enable logging for several crates to work, like lettre or webauthn-rs\ntracing = { version = \"0.1.44\", features = [\"log\"] }\n\n# A `dotenv` implementation for Rust\ndotenvy = { version = \"0.15.7\", default-features = false }\n\n# Numerical libraries\nnum-traits = \"0.2.19\"\nnum-derive = \"0.4.2\"\nbigdecimal = \"0.4.10\"\n\n# Web framework\nrocket = { version = \"0.5.1\", default-features = false, features = [\"json\", \"tls\"] }\nrocket_ws = { version = \"0.1.1\" }\n\n# WebSockets libraries\nrmpv = \"1.3.1\" # MessagePack library\n\n# Concurrent HashMap used for WebSocket messaging and favicons\ndashmap = \"6.2.1\"\n\n# Async futures\nfutures = \"0.3.32\"\ntokio = { version = \"1.52.3\", features = [\n    \"fs\",\n    \"io-util\",\n    \"net\",\n    \"parking_lot\",\n    \"rt-multi-thread\",\n    \"signal\",\n    \"time\",\n] }\ntokio-util = { version = \"0.7.18\", features = [\"compat\"] }\n\n# A generic serialization/deserialization framework\nserde = { version = \"1.0.228\", features = [\"derive\"] }\nserde_json = \"1.0.150\"\n\n# A safe, extensible ORM and Query builder\ndiesel = { version = \"2.3.10\", features = [\"chrono\", \"r2d2\", \"numeric\"] }\ndiesel_migrations = \"2.3.2\"\n\nderive_more = { version = \"2.1.1\", features = [\n    \"as_ref\",\n    \"deref\",\n    \"display\",\n    \"from\",\n    \"into\",\n] }\ndiesel-derive-newtype = \"2.1.2\"\n\n# SQLite, statically bundled unless the `sqlite_system` feature is enabled\nlibsqlite3-sys = { version = \"0.37.0\", optional = true }\n\n# Crypto-related libraries\nrand = \"0.10.1\"\nring = \"0.17.14\"\nrustls = { version = \"0.23.40\", features = [\"ring\", \"std\"], default-features = false }\nsubtle = \"2.6.1\"\n\n# UUID generation\nuuid = { version = \"1.23.2\", features = [\"v4\"] }\n\n# Date and time libraries\nchrono = { version = \"0.4.45\", default-features = false, features = [\"clock\", \"serde\"] }\nchrono-tz = \"0.10.4\"\ntime = \"0.3.47\"\n\n# Job scheduler\njob_scheduler_ng = \"2.4.0\"\n\n# Data encoding library Hex/Base32/Base64\ndata-encoding = \"2.11.0\"\n\n# JWT library\njsonwebtoken = { version = \"10.4.0\", default-features = false, features = [\"rust_crypto\", \"use_pem\"] }\n\n# TOTP library\ntotp-lite = \"2.0.1\"\n\n# Yubico Library\nyubico = { package = \"yubico_ng\", version = \"0.15.0\", default-features = false, features = [\"online-tokio\"] }\n\n# WebAuthn libraries\n# danger-allow-state-serialisation is needed to save the state in the db\n# danger-credential-internals is needed to support U2F to Webauthn migration\nwebauthn-rs = { version = \"0.5.5\", features = [\"danger-allow-state-serialisation\", \"danger-credential-internals\"] }\nwebauthn-rs-proto = \"0.5.5\"\nwebauthn-rs-core = \"0.5.5\"\n\n# Handling of URL's for WebAuthn and favicons\nurl = \"2.5.8\"\n\n# Email libraries\nlettre = { version = \"0.11.22\", default-features = false, features = [\n    # Misc\n    \"tracing\",\n    \"serde\",\n    \"builder\",\n    \"hostname\",\n    # TLS/Security\n    \"ring\",\n    \"rustls-native-certs\",\n    \"tokio1-rustls\",\n    # Transport\n    \"smtp-transport\",\n    \"sendmail-transport\",\n] }\npercent-encoding = \"2.3.2\" # URL encoding library used for URL's in the emails\nemail_address = \"0.2.9\"\n\n",
    "strategic_keywords": [
      "workspace",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 16,
      "novelty": 4,
      "productize": 11,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 75
    },
    "strategic_score": 75
  },
  {
    "owner": "nodejs",
    "name": "node",
    "full_name": "nodejs/node",
    "url": "https://github.com/nodejs/node",
    "description": "Node.js JavaScript runtime ✨🐢🚀✨",
    "language": "JavaScript",
    "total_stars": 117984,
    "forks": 35771,
    "stars_this_period": 390,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "javascript",
        "js",
        "linux",
        "macos",
        "mit",
        "node",
        "nodejs",
        "runtime",
        "windows"
      ],
      "license": "NOASSERTION",
      "open_issues": 2416,
      "created_at": "2014-11-26T19:57:11Z",
      "pushed_at": "2026-06-25T15:25:41Z",
      "homepage": "https://nodejs.org",
      "default_branch": "main",
      "forks": 35771,
      "watchers": 3056,
      "archived": false,
      "size_kb": 1502640
    },
    "readme_content": "# Node.js\n\nNode.js is an open-source, cross-platform JavaScript runtime environment.\n\nFor information on using Node.js, see the [Node.js website][].\n\nThe Node.js project uses an [open governance model](./GOVERNANCE.md). The\n[OpenJS Foundation][] provides support for the project.\n\nContributors are expected to act in a collaborative manner to move\nthe project forward. We encourage the constructive exchange of contrary\nopinions and compromise. The [TSC](./GOVERNANCE.md#technical-steering-committee)\nreserves the right to limit or block contributors who repeatedly act in ways\nthat discourage, exhaust, or otherwise negatively affect other participants.\n\n**This project has a [Code of Conduct][].**\n\n## Table of contents\n\n* [Support](#support)\n* [Release types](#release-types)\n  * [Download](#download)\n    * [Current and LTS releases](#current-and-lts-releases)\n    * [Nightly releases](#nightly-releases)\n    * [API documentation](#api-documentation)\n  * [Verifying binaries](#verifying-binaries)\n* [Building Node.js](#building-nodejs)\n* [Security](#security)\n* [Contributing to Node.js](#contributing-to-nodejs)\n* [Current project team members](#current-project-team-members)\n  * [TSC (Technical Steering Committee)](#tsc-technical-steering-committee)\n  * [Collaborators](#collaborators)\n  * [Triagers](#triagers)\n  * [Release keys](#release-keys)\n* [License](#license)\n\n## Support\n\nLooking for help? Check out the\n[instructions for getting support](.github/SUPPORT.md).\n\n## Release types\n\n* **Current**: Under active development. Code for the Current release is in the\n  branch for its major version number (for example,\n  [v22.x](https://github.com/nodejs/node/tree/v22.x)). Node.js releases a new\n  major version every 6 months, allowing for breaking changes. This happens in\n  April and October every year. Releases appearing each October have a support\n  life of 8 months. Releases appearing each April convert to LTS (see below)\n  each October.\n* **LTS**: Releases that receive Long Term Support, with a focus on stability\n  and security. Every even-numbered major version will become an LTS release.\n  LTS releases receive 12 months of _Active LTS_ support and a further 18 months\n  of _Maintenance_. LTS release lines have alphabetically-ordered code names,\n  beginning with v4 Argon. There are no breaking changes or feature additions,\n  except in some special circumstances.\n* **Nightly**: Code from the Current branch built every 24-hours when there are\n  changes. Use with caution.\n\nCurrent and LTS releases follow [semantic versioning](https://semver.org). A\nmember of the Release Team [signs](#release-keys) each Current and LTS release.\nFor more information, see the\n[Release README](https://github.com/nodejs/Release#readme).\n\n### Download\n\nBinaries, installers, and source tarballs are available at\n<https://nodejs.org/en/download/>.\n\n#### Current and LTS releases\n\n<https://nodejs.org/download/release/>\n\nThe [latest](https://nodejs.org/download/release/latest/) directory is an\nalias for the latest Current release. The latest-_codename_ directory is an\nalias for the latest release from an LTS line. For example, the\n[latest-hydrogen](https://nodejs.org/download/release/latest-hydrogen/)\ndirectory contains the latest Hydrogen (Node.js 18) release.\n\n#### Nightly releases\n\n<https://nodejs.org/download/nightly/>\n\nEach directory and filename includes the version (e.g., `v22.0.0`),\nfollowed by the UTC date (e.g., `20240424` for April 24, 2024),\nand the short commit SHA of the HEAD of the release (e.g., `ddd0a9e494`).\nFor instance, a full directory name might look like `v22.0.0-nightly20240424ddd0a9e494`.\n\n#### API documentation\n\nDocumentation for the latest Current release is at <https://nodejs.org/api/>.\nVersion-specific documentation is available in each release directory in the\n_docs_ subdirectory. Version-specific documentation is also at\n<https://nodejs.org/download/docs/>.\n\n### Verifying binaries\n\nDownload directories contain a `SHASUMS256.txt.asc` file with SHA checksums for the\nfiles and the releaser PGP signature.\n\nYou can get a trusted keyring from nodejs/release-keys, e.g. using `curl`:\n\n```bash\ncurl -fsLo \"/path/to/nodejs-keyring.kbx\" \"https://github.com/nodejs/release-keys/raw/HEAD/gpg/pubring.kbx\"\n```\n\nAlternatively, you can import the releaser keys in your default keyring, see\n[Release keys](#release-keys) for commands on how to do that.\n\nThen, you can verify the files you've downloaded locally\n(if you're using your default keyring, pass `--keyring=\"${GNUPGHOME:-~/.gnupg}/pubring.kbx\"`):\n\n```bash\ncurl -fsO \"https://nodejs.org/dist/${VERSION}/SHASUMS256.txt.asc\" \\\n&& gpgv --keyring=\"/path/to/nodejs-keyring.kbx\" --output SHASUMS256.txt < SHASUMS256.txt.asc \\\n&& shasum --check SHASUMS256.txt --ignore-missing\n```\n\n## Building Node.js\n\nSee [BUILDING.md](BUILDING.md) for instructions on how to build Node.js from\nsource and a list of supported platforms.\n\n## Security\n\nFor information on reporting security vulnerabilities in Node.js, see\n[SECURITY.md](./SECURITY.md).\n\n## Contributing to Node.js\n\n* [Contributing to the project][]\n* [Working Groups][]\n* [Strategic initiatives][]\n* [Technical values and prioritization][]\n\n## Current project team members\n\nFor information about the governance of the Node.js project, see\n[GOVERNANCE.md](./GOVERNANCE.md).\n\n<!-- node-core-utils and find-inactive-tsc.mjs depend on the format of the TSC\n     list. If the format changes, those utilities need to be tested and\n     updated. -->\n\n### TSC (Technical Steering Committee)\n\n#### TSC voting members\n\n<!--lint disable prohibited-strings-->\n\n* [aduh95](https://github.com/aduh95) -\n  **Antoine du Hamel** <<duhamelantoine1995@gmail.com>> (he/him)\n* [anonrig](https://github.com/anonrig) -\n  **Yagiz Nizipli** <<yagiz@nizipli.com>> (he/him)\n* [benjamingr](https://github.com/benjamingr) -\n  **Benjamin Gruenbaum** <<benjamingr@gmail.com>>\n* [BridgeAR](https://github.com/BridgeAR) -\n  **Ruben Bridgewater** <<ruben@bridgewater.de>> (he/him)\n* [gireeshpunathil](https://github.com/gireeshpunathil) -\n  **Gireesh Punathil** <<gpunathi@in.ibm.com>> (he/him)\n* [jasnell](https://github.com/jasnell) -\n  **James M Snell** <<jasnell@gmail.com>> (he/him)\n* [joyeecheung](https://github.com/joyeecheung) -\n  **Joyee Cheung** <<joyeec9h3@gmail.com>> (she/her)\n* [legendecas](https://github.com/legendecas) -\n  **Chengzhong Wu** <<legendecas@gmail.com>> (he/him)\n* [marco-ippolito](https://github.com/marco-ippolito) -\n  **Marco Ippolito** <<marcoippolito54@gmail.com>> (he/him)\n* [mcollina](https://github.com/mcollina) -\n  **Matteo Collina** <<matteo.collina@gmail.com>> (he/him)\n* [panva](https://github.com/panva) -\n  **Filip Skokan** <<panva.ip@gmail.com>> (he/him)\n* [RafaelGSS](https://github.com/RafaelGSS) -\n  **Rafael Gonzaga** <<rafael.nunu@hotmail.com>> (he/him)\n* [RaisinTen](https://github.com/RaisinTen) -\n  **Darshan Sen** <<raisinten@gmail.com>> (he/him)\n* [richardlau](https://github.com/richardlau) -\n  **Richard Lau** <<richard.lau@ibm.com>>\n* [ronag](https://github.com/ronag) -\n  **Robert Nagy** <<ronagy@icloud.com>>\n* [ruyadorno](https://github.com/ruyadorno) -\n  **Ruy Adorno** <<ruy@vlt.sh>> (he/him)\n* [ShogunPanda](https://github.com/ShogunPanda) -\n  **Paolo Insogna** <<paolo@cowtech.it>> (he/him)\n* [targos](https://github.com/targos) -\n  **Michaël Zasso** <<targos@protonmail.com>> (he/him)\n* [tniessen](https://github.com/tniessen) -\n  **Tobias Nießen** <<tniessen@tnie.de>> (he/him)\n\n#### TSC regular members\n\n* [BethGriggs](https://github.com/BethGriggs) -\n  **Beth Griggs** <<bethanyngriggs@gmail.com>> (she/her)\n* [bnoordhuis](https://github.com/bnoordhuis) -\n  **Ben Noordhuis** <<info@bnoordhuis.nl>>\n* [cjihrig](https://github.com/cjihrig) -\n  **Colin Ihrig** <<cjihrig@gmail.com>> (he/him)\n* [codebytere](https://github.com/codebytere) -\n  **Shelley Vohr** <<shelley.vohr@gmail.com>> (she/her)\n* [GeoffreyBooth](https://github.com/GeoffreyBooth) -\n  **Geoffrey Booth** <<webadmin@geoffreybooth.com>> (he/him)\n* [MoLow](https://github.com/MoLow) -\n  **Moshe Atlow** <<moshe@atlow.co.il>> (he/him)\n* [Trott](https://github.com/Trott) -\n  **Rich Trott** <<rtrott@gmail.com>> (he/him)\n\n<details>\n\n<summary>TSC emeriti members</summary>\n\n#### TSC emeriti members\n\n* [addaleax](https://github.com/addaleax) -\n  **Anna Henningsen** <<anna@addaleax.net>> (she/her)\n* [apapirovski](https://github.com/apapirovski) -\n  **Anatoli Papirovski** <<apapirovski@mac.com>> (he/him)\n* [ChALkeR](https://github.com/ChALkeR) -\n  **Сковорода Никита Андреевич** <<chalkerx@gmail.com>> (he/him)\n* [chrisdickinson](https://github.com/chrisdickinson) -\n  **Chris Dickinson** <<christopher.s.dickinson@gmail.com>>\n* [danbev](https://github.com/danbev) -\n  **Daniel Bevenius** <<daniel.bevenius@gmail.com>> (he/him)\n* [danielleadams](https://github.com/danielleadams) -\n  **Danielle Adams** <<adamzdanielle@gmail.com>> (she/her)\n* [evanlucas](https://github.com/evanlucas) -\n  **Evan Lucas** <<evanlucas@me.com>> (he/him)\n* [fhinkel](https://github.com/fhinkel) -\n  **Franziska Hinkelmann** <<franziska.hinkelmann@gmail.com>> (she/her)\n* [Fishrock123](https://github.com/Fishrock123) -\n  **Jeremiah Senkpiel** <<fishrock123@rocketmail.com>> (he/they)\n* [gabrielschulhof](https://github.com/gabrielschulhof) -\n  **Gabriel Schulhof** <<gabrielschulhof@gmail.com>>\n* [gibfahn](https://github.com/gibfahn) -\n  **Gibson Fahnestock** <<gibfahn@gmail.com>> (he/him)\n* [indutny](https://github.com/indutny) -\n  **Fedor Indutny** <<fedor@indutny.com>>\n* [isaacs](https://github.com/isaacs) -\n  **Isaac Z. Schlueter** <<i@izs.me>>\n* [joshgav](https://github.com/joshgav) -\n  **Josh Gavant** <<josh.gavant@outlook.com>>\n* [mhdawson](https://github.com/mhdawson) -\n  **Michael Dawson** <<midawson@redhat.com>> (he/him)\n* [mmarchini](https://github.com/mmarchini) -\n  **Mary Marchini** <<oss@mmarchini.me>> (she/her)\n* [mscdex](https://github.com/mscdex) -\n  **Brian White** <<mscdex@mscdex.net>>\n* [MylesBorins](https://github.com/MylesBorins) -\n  **Myles Borins** <<myles.borins@gmail.com>> (he/him)\n* [nebrius](https://github.com/nebrius) -\n  **Bryan Hughes** <<bryan@nebri.us>>\n* [ofrobots](https://github.com/ofrobots) -\n  **Ali Ijaz Sheikh** <<ofrobots@google.com>> (he/him)\n* [orangemocha](https://github.com/orangemocha) -\n  **Alexis Campailla** <<orangemocha@nodejs.org>>\n* [piscisaureus](https://github.com/piscisaureus) -\n  **Bert Belder** <<bertbelder@gmail.com>>\n* [rvagg](https://github.com/rvagg) -\n  **Rod Vagg** <<r@va.gg>>\n* [sam-github](https://github.com/sam-github) -\n  **Sam Roberts** <<vieuxtech@gmail.com>>\n* [shigeki](https://github.com/shigeki) -\n  **Shigeki Ohtsu** <<ohtsu@ohtsu.org>> (he/him)\n* [thefourtheye](https://github.com/thefourtheye) -\n  **Sakthipriyan Vairamani** <<thechargingvolcano@gmail.com>> (he/him)\n* [TimothyGu](https://github.com/TimothyGu) -\n  **Tiancheng \"Timothy\" Gu** <<timothygu99@gmail.com>> (he/him)\n* [trevnorris](https://github.com/trevnorris) -\n  **Trevor Norris** <<trev.norris@gmail.com>>\n\n</details>\n\n<!-- node-core-utils and find-inactive-collaborators.mjs depend on the format\n     of the collaborator list. If the format changes, those utilities need to be\n     tested and updated. -->\n\n### Collaborators\n\n* [abmusse](https://github.com/abmusse) -\n  **Abdirahim Musse** <<abdirahim.musse@ibm.com>>\n* [addaleax](https://github.com/addaleax) -\n  **Anna Henningsen** <<anna@addaleax.net>> (she/her)\n* [Aditi-1400](https://github.com/Aditi-1400) -\n  **Aditi Singh** <<aditisingh1400@gmail.com>> (she/her)\n* [aduh95](https://github.com/aduh95) -\n  **Antoine du Hamel** <<duhamelantoine1995@gmail.com>> (he/him) - [Support me](https://github.com/sponsors/aduh95)\n* [anonrig](https://github.com/anonrig) -\n  **Yagiz Nizipli** <<yagiz@nizipli.com>> (he/him) - [Support me](https://github.com/sponsors/anonrig)\n* [atlowChemi](https://github.com/atlowChemi) -\n  **Chemi Atlow** <<chemi@atlow.co.il>> (he/him)\n* [avivkeller](https://github.com/avivkeller) -\n  **Aviv Keller** <<me@aviv.sh>> (he/him) - [Sup",
    "strategic_keywords": [
      "rag",
      "runtime"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 6,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "kubernetes",
    "name": "kubernetes",
    "full_name": "kubernetes/kubernetes",
    "url": "https://github.com/kubernetes/kubernetes",
    "description": "Production-Grade Container Scheduling and Management",
    "language": "Go",
    "total_stars": 123273,
    "forks": 43278,
    "stars_this_period": 359,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "cncf",
        "containers",
        "go",
        "kubernetes"
      ],
      "license": "Apache-2.0",
      "open_issues": 2745,
      "created_at": "2014-06-06T22:56:04Z",
      "pushed_at": "2026-06-25T14:54:21Z",
      "homepage": "https://kubernetes.io",
      "default_branch": "master",
      "forks": 43279,
      "watchers": 3263,
      "archived": false,
      "size_kb": 1482501
    },
    "readme_content": "# Kubernetes (K8s)\n\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/569/badge)](https://bestpractices.coreinfrastructure.org/projects/569) [![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes/kubernetes)](https://goreportcard.com/report/github.com/kubernetes/kubernetes) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/kubernetes/kubernetes?sort=semver)\n\n<img src=\"https://github.com/kubernetes/kubernetes/raw/master/logo/logo.png\" width=\"100\">\n\n----\n\nKubernetes, also known as K8s, is an open source system for managing [containerized applications]\nacross multiple hosts. It provides basic mechanisms for the deployment, maintenance,\nand scaling of applications.\n\nKubernetes builds upon a decade and a half of experience at Google running\nproduction workloads at scale using a system called [Borg],\ncombined with best-of-breed ideas and practices from the community.\n\nKubernetes is hosted by the Cloud Native Computing Foundation ([CNCF]).\nIf your company wants to help shape the evolution of\ntechnologies that are container-packaged, dynamically scheduled,\nand microservices-oriented, consider joining the CNCF.\nFor details about who's involved and how Kubernetes plays a role,\nread the CNCF [announcement].\n\n----\n\n## To start using K8s\n\nSee our documentation on [kubernetes.io].\n\nTake a free course on [Scalable Microservices with Kubernetes].\n\nTo use Kubernetes code as a library in other applications, see the [list of published components](https://git.k8s.io/kubernetes/staging/README.md).\nUse of the `k8s.io/kubernetes` module or `k8s.io/kubernetes/...` packages as libraries is not supported.\n\n## To start developing K8s\n\nThe [community repository] hosts all information about\nbuilding Kubernetes from source, how to contribute code\nand documentation, who to contact about what, etc.\n\nIf you want to build Kubernetes right away there are two options:\n\n##### You have a working [Go environment].\n\n```\ngit clone https://github.com/kubernetes/kubernetes\ncd kubernetes\nmake\n```\n\n##### You have a working [Docker environment].\n\n```\ngit clone https://github.com/kubernetes/kubernetes\ncd kubernetes\nmake quick-release\n```\n\nFor the full story, head over to the [developer's documentation].\n\n## Support\n\nIf you need support, start with the [troubleshooting guide],\nand work your way through the process that we've outlined.\n\nThat said, if you have questions, reach out to us\n[one way or another][communication].\n\n[announcement]: https://cncf.io/news/announcement/2015/07/new-cloud-native-computing-foundation-drive-alignment-among-container\n[Borg]: https://research.google.com/pubs/pub43438.html?authuser=1\n[CNCF]: https://www.cncf.io/about\n[communication]: https://git.k8s.io/community/communication\n[community repository]: https://git.k8s.io/community\n[containerized applications]: https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/\n[developer's documentation]: https://git.k8s.io/community/contributors/devel#readme\n[Docker environment]: https://docs.docker.com/engine\n[Go environment]: https://go.dev/doc/install\n[kubernetes.io]: https://kubernetes.io\n[Scalable Microservices with Kubernetes]: https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615\n[troubleshooting guide]: https://kubernetes.io/docs/tasks/debug/\n\n## Community Meetings \n\nThe [Calendar](https://www.kubernetes.dev/resources/calendar/) has the list of all the meetings in the Kubernetes community in a single location.\n\n## Adopters\n\nThe [User Case Studies](https://kubernetes.io/case-studies/) website has real-world use cases of organizations across industries that are deploying/migrating to Kubernetes.\n\n## Governance \n\nKubernetes project is governed by a framework of principles, values, policies and processes to help our community and constituents towards our shared goals.\n\nThe [Kubernetes Community](https://github.com/kubernetes/community/blob/master/governance.md) is the launching point for learning about how we organize ourselves.\n\nThe [Kubernetes Steering community repo](https://github.com/kubernetes/steering) is used by the Kubernetes Steering Committee, which oversees governance of the Kubernetes project.\n\n## Roadmap \n\nThe [Kubernetes Enhancements repo](https://github.com/kubernetes/enhancements) provides information about Kubernetes releases, as well as feature tracking and backlogs.\n",
    "manifest_file": "go.mod",
    "manifest_content": "// This is a generated file. Do not edit directly.\n// Ensure you've carefully read\n// https://git.k8s.io/community/contributors/devel/sig-architecture/vendor.md\n// Run hack/pin-dependency.sh to change pinned dependency versions.\n// Run hack/update-vendor.sh to update go.mod files and the vendor directory.\n\nmodule k8s.io/kubernetes\n\ngo 1.26.0\n\ngodebug default=go1.26\n\nrequire (\n\tbitbucket.org/bertimus9/systemstat v0.5.0\n\tgithub.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab\n\tgithub.com/Microsoft/go-winio v0.6.2\n\tgithub.com/Microsoft/hnslib v0.1.3\n\tgithub.com/blang/semver/v4 v4.0.0\n\tgithub.com/container-storage-interface/spec v1.9.0\n\tgithub.com/coredns/corefile-migration v1.0.33\n\tgithub.com/coreos/go-oidc v2.5.0+incompatible\n\tgithub.com/coreos/go-systemd/v22 v22.7.0\n\tgithub.com/cpuguy83/go-md2man/v2 v2.0.6\n\tgithub.com/cyphar/filepath-securejoin v0.6.1\n\tgithub.com/distribution/reference v0.6.0\n\tgithub.com/docker/go-units v0.5.0\n\tgithub.com/emicklei/go-restful/v3 v3.13.0\n\tgithub.com/fsnotify/fsnotify v1.9.0\n\tgithub.com/go-logr/logr v1.4.3\n\tgithub.com/go-openapi/jsonreference v0.21.4\n\tgithub.com/godbus/dbus/v5 v5.2.2\n\tgithub.com/google/cadvisor v0.57.0\n\tgithub.com/google/cel-go v0.27.0\n\tgithub.com/google/gnostic-models v0.7.0\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674\n\tgithub.com/ishidawataru/sctp v0.0.0-20250521072954-ae8eb7fa7995\n\tgithub.com/lithammer/dedent v1.1.0\n\tgithub.com/moby/ipvs v1.1.0\n\tgithub.com/moby/sys/userns v0.1.0\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822\n\tgithub.com/onsi/ginkgo/v2 v2.28.3\n\tgithub.com/onsi/gomega v1.40.0\n\tgithub.com/opencontainers/cgroups v0.0.6\n\tgithub.com/opencontainers/selinux v1.13.1\n\tgithub.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2\n\tgithub.com/prometheus/client_model v0.6.2\n\tgithub.com/prometheus/common v0.67.5\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/spf13/pflag v1.0.10\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/vishvananda/netlink v1.3.1\n\tgithub.com/vishvananda/netns v0.0.5\n\tgo.etcd.io/etcd/api/v3 v3.7.0-rc.0\n\tgo.etcd.io/etcd/client/pkg/v3 v3.7.0-rc.0\n\tgo.etcd.io/etcd/client/v3 v3.7.0-rc.0\n\tgo.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.69.0\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0\n\tgo.opentelemetry.io/otel v1.44.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0\n\tgo.opentelemetry.io/otel/metric v1.44.0\n\tgo.opentelemetry.io/otel/sdk v1.44.0\n\tgo.opentelemetry.io/otel/trace v1.44.0\n\tgo.opentelemetry.io/proto/otlp v1.10.0\n\tgo.uber.org/goleak v1.3.0\n\tgo.uber.org/zap v1.27.1\n\tgo.yaml.in/yaml/v2 v2.4.4\n\tgolang.org/x/crypto v0.52.0\n\tgolang.org/x/net v0.55.1-0.20260602153038-42abb857022c\n\tgolang.org/x/oauth2 v0.36.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/sys v0.45.0\n\tgolang.org/x/term v0.43.0\n\tgolang.org/x/text v0.37.0\n\tgolang.org/x/time v0.15.0\n\tgolang.org/x/tools v0.44.0\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa\n\tgoogle.golang.org/grpc v1.81.1\n\tgoogle.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af\n\tgopkg.in/evanphx/json-patch.v4 v4.13.0\n\tgopkg.in/go-jose/go-jose.v2 v2.6.3\n\tk8s.io/api v0.0.0\n\tk8s.io/apiextensions-apiserver v0.0.0\n\tk8s.io/apimachinery v0.0.0\n\tk8s.io/apiserver v0.0.0\n\tk8s.io/cli-runtime v0.0.0\n\tk8s.io/client-go v0.0.0\n\tk8s.io/cloud-provider v0.0.0\n\tk8s.io/cluster-bootstrap v0.0.0\n\tk8s.io/code-generator v0.0.0\n\tk8s.io/component-base v0.0.0\n\tk8s.io/component-helpers v0.0.0\n\tk8s.io/controller-manager v0.0.0\n\tk8s.io/cri-api v0.0.0\n\tk8s.io/cri-client v0.0.0\n\tk8s.io/cri-streaming v0.0.0\n\tk8s.io/csi-translation-lib v0.0.0\n\tk8s.io/dynamic-resource-allocation v0.0.0\n\tk8s.io/endpointslice v0.0.0\n\tk8s.io/externaljwt v0.0.0\n\tk8s.io/klog/v2 v2.140.0\n\tk8s.io/kms v0.0.0\n\tk8s.io/kube-aggregator v0.0.0\n\tk8s.io/kube-controller-manager v0.0.0\n\tk8s.io/kube-openapi v0.0.0-20260618221249-bc653b64f974\n\tk8s.io/kube-proxy v0.0.0\n\tk8s.io/kube-scheduler v0.0.0\n\tk8s.io/kubectl v0.0.0\n\tk8s.io/kubelet v0.0.0\n\tk8s.io/metrics v0.0.0\n\tk8s.io/mount-utils v0.0.0\n\tk8s.io/pod-security-admission v0.0.0\n\tk8s.io/sample-apiserver v0.0.0\n\tk8s.io/streaming v0.0.0\n\tk8s.io/system-validators v1.12.1\n\tk8s.io/utils v0.0.0-20260210185600-b8788abfbbc2\n\tsigs.k8s.io/json v0.0.0-20250730193827-2d320260d730\n\tsigs.k8s.io/knftables v0.0.21\n\tsigs.k8s.io/randfill v1.0.0\n\tsigs.k8s.io/structured-merge-diff/v6 v6.4.0\n\tsigs.k8s.io/yaml v1.6.0\n)\n\nrequire (\n\tcel.dev/expr v0.25.1 // indirect\n\tcyphar.com/go-pathrs v0.2.2 // indirect\n\tgithub.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect\n\tgithub.com/MakeNowJust/heredoc v1.0.0 // indirect\n\tgithub.com/Masterminds/semver/v3 v3.4.0 // indirect\n\tgithub.com/NYTimes/gziphandler v1.1.1 // indirect\n\tgithub.com/antlr4-go/antlr/v4 v4.13.1 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/cenkalti/backoff/v5 v5.0.3 // indirect\n\tgi",
    "strategic_keywords": [
      "rag"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 6,
      "total": 71
    },
    "strategic_score": 71
  },
  {
    "owner": "syncthing",
    "name": "syncthing",
    "full_name": "syncthing/syncthing",
    "url": "https://github.com/syncthing/syncthing",
    "description": "Open Source Continuous File Synchronization",
    "language": "Go",
    "total_stars": 85771,
    "forks": 5308,
    "stars_this_period": 353,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "go",
        "p2p",
        "peer-to-peer",
        "synchronization"
      ],
      "license": "MPL-2.0",
      "open_issues": 390,
      "created_at": "2013-11-26T09:48:21Z",
      "pushed_at": "2026-06-23T09:48:13Z",
      "homepage": "https://syncthing.net/",
      "default_branch": "main",
      "forks": 5308,
      "watchers": 1043,
      "archived": false,
      "size_kb": 125293
    },
    "readme_content": "[![Syncthing][14]][15]\n\n---\n\n[![MPLv2 License](https://img.shields.io/badge/license-MPLv2-blue.svg?style=flat-square)](https://www.mozilla.org/MPL/2.0/)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/88/badge)](https://bestpractices.coreinfrastructure.org/projects/88)\n[![Go Report Card](https://goreportcard.com/badge/github.com/syncthing/syncthing)](https://goreportcard.com/report/github.com/syncthing/syncthing)\n\n## Goals\n\nSyncthing is a **continuous file synchronization program**. It synchronizes\nfiles between two or more computers. We strive to fulfill the goals below.\nThe goals are listed in order of importance, the most important ones first.\nThis is the summary version of the goal list - for more\ncommentary, see the full [Goals document][13].\n\nSyncthing should be:\n\n1. **Safe From Data Loss**\n\n   Protecting the user's data is paramount. We take every reasonable\n   precaution to avoid corrupting the user's files.\n\n2. **Secure Against Attackers**\n\n   Again, protecting the user's data is paramount. Regardless of our other\n   goals, we must never allow the user's data to be susceptible to\n   eavesdropping or modification by unauthorized parties.\n\n3. **Easy to Use**\n\n   Syncthing should be approachable, understandable, and inclusive.\n\n4. **Automatic**\n\n   User interaction should be required only when absolutely necessary.\n\n5. **Universally Available**\n\n   Syncthing should run on every common computer. We are mindful that the\n   latest technology is not always available to every individual.\n\n6. **For Individuals**\n\n   Syncthing is primarily about empowering the individual user with safe,\n   secure, and easy to use file synchronization.\n\n7. **Everything Else**\n\n   There are many things we care about that don't make it on to the list. It\n   is fine to optimize for these values, as long as they are not in conflict\n   with the stated goals above.\n\n## Getting Started\n\nTake a look at the [getting started guide][2].\n\nThere are a few examples for keeping Syncthing running in the background\non your system in [the etc directory][3]. There are also several [GUI\nimplementations][11] for Windows, Mac, and Linux.\n\n## Docker\n\nTo run Syncthing in Docker, see [the Docker README][16].\n\n## Getting in Touch\n\nThe first and best point of contact is the [Forum][8].\nIf you've found something that is clearly a\nbug, feel free to report it in the [GitHub issue tracker][10].\n\nIf you believe that you’ve found a Syncthing-related security vulnerability,\nplease report it by emailing security@syncthing.net. Do not report it in the\nForum or issue tracker.\n\n## Building\n\nBuilding Syncthing from source is easy. After extracting the source bundle from\na release or checking out git, you just need to run `go run build.go` and the\nbinaries are created in `./bin`. There's [a guide][5] with more details on the\nbuild process.\n\n## Signed Releases\n\nRelease binaries are GPG signed with the key available from\nhttps://syncthing.net/security/. There is also a built-in automatic\nupgrade mechanism (disabled in some distribution channels) which uses a\ncompiled in ECDSA signature. macOS and Windows binaries are also\ncode-signed.\n\n## Documentation\n\nPlease see the Syncthing [documentation site][6] [[source]][17].\n\nAll code is licensed under the [MPLv2 License][7].\n\n[1]: https://docs.syncthing.net/specs/bep-v1.html\n[2]: https://docs.syncthing.net/intro/getting-started.html\n[3]: https://github.com/syncthing/syncthing/blob/main/etc\n[5]: https://docs.syncthing.net/dev/building.html\n[6]: https://docs.syncthing.net/\n[7]: https://github.com/syncthing/syncthing/blob/main/LICENSE\n[8]: https://forum.syncthing.net/\n[10]: https://github.com/syncthing/syncthing/issues\n[11]: https://docs.syncthing.net/users/contrib.html#gui-wrappers\n[13]: https://github.com/syncthing/syncthing/blob/main/GOALS.md\n[14]: assets/logo-text-128.png\n[15]: https://syncthing.net/\n[16]: https://github.com/syncthing/syncthing/blob/main/README-Docker.md\n[17]: https://github.com/syncthing/docs\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/syncthing/syncthing\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/AudriusButkevicius/recli v0.0.7\n\tgithub.com/alecthomas/kong v1.15.0\n\tgithub.com/aws/aws-sdk-go v1.55.8\n\tgithub.com/calmh/incontainer v1.0.0\n\tgithub.com/calmh/xdr v1.2.0\n\tgithub.com/ccding/go-stun v0.1.5\n\tgithub.com/coreos/go-semver v0.3.1\n\tgithub.com/d4l3k/messagediff v1.2.1\n\tgithub.com/getsentry/raven-go v0.2.0\n\tgithub.com/go-ldap/ldap/v3 v3.4.13\n\tgithub.com/gobwas/glob v0.2.3\n\tgithub.com/gofrs/flock v0.13.0\n\tgithub.com/hashicorp/golang-lru/v2 v2.0.7\n\tgithub.com/jackpal/gateway v1.1.1\n\tgithub.com/jackpal/go-nat-pmp v1.0.2\n\tgithub.com/jmoiron/sqlx v1.4.0\n\tgithub.com/julienschmidt/httprouter v1.3.0\n\tgithub.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51\n\tgithub.com/maruel/panicparse/v2 v2.5.0\n\tgithub.com/mattn/go-sqlite3 v1.14.45\n\tgithub.com/maxmind/geoipupdate/v6 v6.1.0\n\tgithub.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75\n\tgithub.com/oschwald/geoip2-golang v1.13.0\n\tgithub.com/pierrec/lz4/v4 v4.1.27\n\tgithub.com/prometheus/client_golang v1.23.2\n\tgithub.com/puzpuzpuz/xsync/v3 v3.5.1\n\tgithub.com/quic-go/quic-go v0.60.0\n\tgithub.com/rabbitmq/amqp091-go v1.11.0\n\tgithub.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9\n\tgithub.com/shirou/gopsutil/v4 v4.26.5\n\tgithub.com/syncthing/notify v0.0.0-20250528144937-c7027d4f7465\n\tgithub.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d\n\tgithub.com/thejerf/suture/v4 v4.0.6\n\tgithub.com/urfave/cli v1.22.17\n\tgithub.com/vitrun/qart v0.0.0-20160531060029-bf64b92db6b0\n\tgithub.com/willabides/kongplete v0.4.0\n\tgithub.com/wlynxg/anet v0.0.5\n\tgolang.org/x/crypto v0.53.0\n\tgolang.org/x/exp v0.0.0-20260611194520-c48552f49976\n\tgolang.org/x/net v0.56.0\n\tgolang.org/x/sys v0.46.0\n\tgolang.org/x/text v0.38.0\n\tgolang.org/x/time v0.15.0\n\tgoogle.golang.org/protobuf v1.36.11\n\tmodernc.org/sqlite v1.52.0\n\tsigs.k8s.io/yaml v1.6.0\n)\n\nrequire (\n\tgithub.com/Azure/go-ntlmssp v0.1.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/ebitengine/purego v0.10.0 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect\n\tgithub.com/go-ole/go-ole v1.3.0 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/pprof v0.0.0-20250423184734-337e5dd93bb4 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/hashicorp/errwrap v1.1.0 // indirect\n\tgithub.com/hashicorp/go-multierror v1.1.1 // indirect\n\tgithub.com/jmespath/go-jmespath v0.4.0 // indirect\n\tgithub.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/maxbrunsfeld/counterfeiter/v6 v6.12.0 // indirect\n\tgithub.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect\n\tgithub.com/ncruces/go-strftime v1.0.0 // indirect\n\tgithub.com/nxadm/tail v1.4.11 // indirect\n\tgithub.com/oschwald/maxminddb-golang v1.13.1 // indirect\n\tgithub.com/pkg/errors v0.9.1 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/posener/complete v1.2.3 // indirect\n\tgithub.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect\n\tgithub.com/prometheus/client_model v0.6.2 // indirect\n\tgithub.com/prometheus/common v0.66.1 // indirect\n\tgithub.com/prometheus/procfs v0.16.1 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/riywo/loginshell v0.0.0-20200815045211-7d26008be1ab // indirect\n\tgithub.com/rogpeppe/go-internal v1.12.0 // indirect\n\tgithub.com/russross/blackfriday/v2 v2.1.0 // indirect\n\tgithub.com/stretchr/objx v0.5.2 // indirect\n\tgithub.com/stretchr/testify v1.11.1 // indirect\n\tgithub.com/tklauser/go-sysconf v0.3.16 // indirect\n\tgithub.com/tklauser/numcpus v0.11.0 // indirect\n\tgithub.com/yusufpapurcu/wmi v1.2.4 // indirect\n\tgo.yaml.in/yaml/v2 v2.4.2 // indirect\n\tgolang.org/x/mod v0.37.0 // indirect\n\tgolang.org/x/sync v0.21.0 // indirect\n\tgolang.org/x/telemetry v0.0.0-20260610154732-fb80ec83bdd9 // indirect\n\tgolang.org/x/tools v0.46.0 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\tmodernc.org/libc v1.72.3 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n)\n\n// https://github.com/gobwas/glob/pull/55\nreplace github.com/gobwas/glob v0.2.3 => github.com/calmh/glob v0.0.0-20220615080505-1d823af5017b\n\n// https://github.com/jackpal/gateway/pull/49\nreplace github.com/jackpal/gateway v1.1.1 => github.com/marbens-arch/gateway v1.1.2-0.20260308173556-c567cc04e7d4\n\ntool (\n\tgithub.com/calmh/xdr/cmd/genxdr\n\tgithub.com/maxbrunsfeld/counterfeiter/v6\n\tgolang.org/x/tools/cmd/goimports\n)\n",
    "strategic_keywords": [],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 6,
      "risk_signal": 6,
      "total": 62
    },
    "strategic_score": 62
  },
  {
    "owner": "charmbracelet",
    "name": "crush",
    "full_name": "charmbracelet/crush",
    "url": "https://github.com/charmbracelet/crush",
    "description": "Glamourous agentic coding for all 💘",
    "language": "Go",
    "total_stars": 25708,
    "forks": 1874,
    "stars_this_period": 274,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agentic-ai",
        "ai",
        "llms",
        "ravishing"
      ],
      "license": "NOASSERTION",
      "open_issues": 523,
      "created_at": "2025-05-21T12:14:57Z",
      "pushed_at": "2026-06-25T09:39:34Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 1874,
      "watchers": 109,
      "archived": false,
      "size_kb": 27731
    },
    "readme_content": "# Crush\n\n<p align=\"center\">\n    <a href=\"https://stuff.charm.sh/crush/charm-crush.png\"><img width=\"450\" alt=\"Charm Crush Logo\" src=\"https://github.com/user-attachments/assets/cf8ca3ce-8b02-43f0-9d0f-5a331488da4b\" /></a><br />\n    <a href=\"https://github.com/charmbracelet/crush/releases\"><img src=\"https://img.shields.io/github/release/charmbracelet/crush\" alt=\"Latest Release\"></a>\n    <a href=\"https://github.com/charmbracelet/crush/actions\"><img src=\"https://github.com/charmbracelet/crush/actions/workflows/build.yml/badge.svg\" alt=\"Build Status\"></a>\n</p>\n\n<p align=\"center\">Your new coding bestie, now available in your favourite terminal.<br />Your tools, your code, and your workflows, wired into your LLM of choice.</p>\n<p align=\"center\">终端里的编程新搭档，<br />无缝接入你的工具、代码与工作流，全面兼容主流 LLM 模型。</p>\n\n<p align=\"center\"><img width=\"800\" alt=\"Crush Demo\" src=\"https://github.com/user-attachments/assets/58280caf-851b-470a-b6f7-d5c4ea8a1968\" /></p>\n\n## Features\n\n- **Multi-Model:** choose from a wide range of LLMs or add your own via OpenAI- or Anthropic-compatible APIs\n- **Flexible:** switch LLMs mid-session while preserving context\n- **Session-Based:** maintain multiple work sessions and contexts per project\n- **LSP-Enhanced:** Crush uses LSPs for additional context, just like you do\n- **Extensible:** add capabilities via MCPs (`http`, `stdio`, and `sse`)\n- **Works Everywhere:** first-class support in every terminal on macOS, Linux, Windows (PowerShell and WSL), Android, FreeBSD, OpenBSD, and NetBSD\n- **Industrial Grade:** built on the Charm ecosystem, powering 25k+ applications, from leading open source projects to business-critical infrastructure\n\n## Installation\n\nUse a package manager:\n\n```bash\n# Homebrew\nbrew install charmbracelet/tap/crush\n\n# NPM\nnpm install -g @charmland/crush\n\n# Arch Linux (btw)\nyay -S crush-bin\n\n# Nix\nnix run github:numtide/nix-ai-tools#crush\n\n# FreeBSD\npkg install crush\n```\n\nWindows users:\n\n```bash\n# Winget\nwinget install charmbracelet.crush\n\n# Scoop\nscoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git\nscoop install crush\n```\n\n<details>\n<summary><strong>Nix (NUR)</strong></summary>\n\nCrush is available via the official Charm [NUR](https://github.com/nix-community/NUR) in `nur.repos.charmbracelet.crush`, which is the most up-to-date way to get Crush in Nix.\n\nYou can also try out Crush via the NUR with `nix-shell`:\n\n```bash\n# Add the NUR channel.\nnix-channel --add https://github.com/nix-community/NUR/archive/main.tar.gz nur\nnix-channel --update\n\n# Get Crush in a Nix shell.\nnix-shell -p '(import <nur> { pkgs = import <nixpkgs> {}; }).repos.charmbracelet.crush'\n```\n\n### NixOS & Home Manager Module Usage via NUR\n\nCrush provides NixOS and Home Manager modules via NUR.\nYou can use these modules directly in your flake by importing them from NUR. Since it auto detects whether its a home manager or nixos context you can use the import the exact same way :)\n\n```nix\n{\n  inputs = {\n    nixpkgs.url = \"github:NixOS/nixpkgs/nixos-unstable\";\n    nur.url = \"github:nix-community/NUR\";\n  };\n\n  outputs = { self, nixpkgs, nur, ... }: {\n    nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {\n      system = \"x86_64-linux\";\n      modules = [\n        nur.modules.nixos.default\n        nur.repos.charmbracelet.modules.crush\n        {\n          programs.crush = {\n            enable = true;\n            settings = {\n              providers = {\n                openai = {\n                  id = \"openai\";\n                  name = \"OpenAI\";\n                  base_url = \"https://api.openai.com/v1\";\n                  type = \"openai\";\n                  api_key = \"sk-fake123456789abcdef...\";\n                  models = [\n                    {\n                      id = \"gpt-4\";\n                      name = \"GPT-4\";\n                    }\n                  ];\n                };\n              };\n              lsp = {\n                go = { command = \"gopls\"; enabled = true; };\n                nix = { command = \"nil\"; enabled = true; };\n              };\n              options = {\n                context_paths = [ \"/etc/nixos/configuration.nix\" ];\n                tui = { compact_mode = true; };\n                debug = false;\n              };\n            };\n          };\n        }\n      ];\n    };\n  };\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Debian/Ubuntu</strong></summary>\n\n```bash\nsudo mkdir -p /etc/apt/keyrings\ncurl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg\necho \"deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *\" | sudo tee /etc/apt/sources.list.d/charm.list\nsudo apt update && sudo apt install crush\n```\n\n</details>\n\n<details>\n<summary><strong>Fedora/RHEL</strong></summary>\n\n```bash\necho '[charm]\nname=Charm\nbaseurl=https://repo.charm.sh/yum/\nenabled=1\ngpgcheck=1\ngpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo\nsudo yum install crush\n```\n\n</details>\n\nOr, download it:\n\n- [Packages][releases] are available in Debian and RPM formats\n- [Binaries][releases] are available for Linux, macOS, Windows, FreeBSD, OpenBSD, and NetBSD\n\n[releases]: https://github.com/charmbracelet/crush/releases\n\nOr just install it with Go:\n\n```\ngo install github.com/charmbracelet/crush@latest\n```\n\n> [!WARNING]\n> Productivity may increase when using Crush and you may find yourself nerd\n> sniped when first using the application. If the symptoms persist, join the\n> [Slack][slack] or [Discord][discord] and nerd snipe the rest of us.\n\n## Getting Started\n\nThe quickest way to get started is to grab an API key for your preferred\nprovider such as Anthropic, OpenAI, Groq, OpenRouter, or Vercel AI Gateway and just start\nCrush. You'll be prompted to enter your API key.\n\nThat said, you can also set environment variables for preferred providers.\n\n| Environment Variable        | Provider                                           |\n| --------------------------- | -------------------------------------------------- |\n| `HYPER_API_KEY`             | Charm Hyper                                        |\n| `ANTHROPIC_API_KEY`         | Anthropic                                          |\n| `OPENAI_API_KEY`            | OpenAI                                             |\n| `VERCEL_API_KEY`            | Vercel AI Gateway                                  |\n| `GEMINI_API_KEY`            | Google Gemini                                      |\n| `SYNTHETIC_API_KEY`         | Synthetic                                          |\n| `ZAI_API_KEY`               | Z.ai                                               |\n| `MINIMAX_API_KEY`           | MiniMax                                            |\n| `HF_TOKEN`                  | Hugging Face Inference                             |\n| `CEREBRAS_API_KEY`          | Cerebras                                           |\n| `OPENROUTER_API_KEY`        | OpenRouter                                         |\n| `IONET_API_KEY`             | io.net                                             |\n| `ALIBABA_SINGAPORE_API_KEY` | Alibaba (Singapore)                                |\n| `GROQ_API_KEY`              | Groq                                               |\n| `AVIAN_API_KEY`             | Avian                                              |\n| `OPENCODE_API_KEY`          | OpenCode Zen & Go                                  |\n| `VERTEXAI_PROJECT`          | Google Cloud VertexAI (Gemini)                     |\n| `VERTEXAI_LOCATION`         | Google Cloud VertexAI (Gemini)                     |\n| `AWS_ACCESS_KEY_ID`         | Amazon Bedrock (Claude)                            |\n| `AWS_SECRET_ACCESS_KEY`     | Amazon Bedrock (Claude)                            |\n| `AWS_REGION`                | Amazon Bedrock (Claude)                            |\n| `AWS_PROFILE`               | Amazon Bedrock (Custom Profile)                    |\n| `AWS_BEARER_TOKEN_BEDROCK`  | Amazon Bedrock                                     |\n| `AZURE_OPENAI_API_ENDPOINT` | Azure OpenAI models                                |\n| `AZURE_OPENAI_API_KEY`      | Azure OpenAI models (optional when using Entra ID) |\n| `AZURE_OPENAI_API_VERSION`  | Azure OpenAI models                                |\n\n### Subscriptions\n\nIf you prefer subscription-based usage, here are some plans that work well in\nCrush:\n\n- [Synthetic](https://synthetic.new/pricing)\n- [GLM Coding Plan](https://z.ai/subscribe)\n- [Kimi Code](https://www.kimi.com/membership/pricing)\n- [MiniMax Coding Plan](https://platform.minimax.io/subscribe/coding-plan)\n\n### By the Way\n\nIs there a provider you’d like to see in Crush? Is there an existing model that needs an update?\n\nCrush’s default model listing is managed in [Catwalk](https://github.com/charmbracelet/catwalk), a community-supported, open source repository of Crush-compatible models, and you’re welcome to contribute.\n\n<a href=\"https://github.com/charmbracelet/catwalk\"><img width=\"174\" height=\"174\" alt=\"Catwalk Badge\" src=\"https://github.com/user-attachments/assets/95b49515-fe82-4409-b10d-5beb0873787d\" /></a>\n\n## Configuration\n\n> [!TIP]\n> Crush ships with a builtin `crush-config` skill for configuring itself. In\n> many cases you can simply ask Crush to configure itself.\n\nCrush runs great with no configuration. That said, if you do need or want to\ncustomize Crush, configuration can be added either local to the project itself,\nor globally, with the following priority:\n\n1. `.crush.json`\n2. `crush.json`\n3. `$HOME/.config/crush/crush.json`\n\nConfiguration itself is stored as a JSON object:\n\n```json\n{\n  \"this-setting\": { \"this\": \"that\" },\n  \"that-setting\": [\"ceci\", \"cela\"]\n}\n```\n\nAs an additional note, Crush also stores ephemeral data, such as application\nstate, in one additional location:\n\n```bash\n# Unix\n$HOME/.local/share/crush/crush.json\n\n# Windows\n%LOCALAPPDATA%\\crush\\crush.json\n```\n\n> [!TIP]\n> You can override the user and data config locations by setting:\n>\n> - `CRUSH_GLOBAL_CONFIG`\n> - `CRUSH_GLOBAL_DATA`\n\n### LSPs\n\nCrush can use LSPs for additional context to help inform its decisions, just\nlike you would. LSPs can be added manually like so:\n\n```json\n{\n  \"$schema\": \"https://charm.land/crush.json\",\n  \"lsp\": {\n    \"go\": {\n      \"command\": \"gopls\",\n      \"env\": {\n        \"GOTOOLCHAIN\": \"go1.24.5\"\n      }\n    },\n    \"typescript\": {\n      \"command\": \"typescript-language-server\",\n      \"args\": [\"--stdio\"]\n    },\n    \"nix\": {\n      \"command\": \"nil\"\n    }\n  }\n}\n```\n\n### MCPs\n\nCrush also supports Model Context Protocol (MCP) servers through three transport\ntypes: `stdio` for command-line servers, `http` for HTTP endpoints, and `sse`\nfor Server-Sent Events.\n\nShell-style value expansion (`$VAR`, `${VAR:-default}`, `$(command)`, quoting,\nnesting) works in `command`, `args`, `env`, `headers`, and `url`, so\nfile-based secrets work out of the box. You can use values like `\"$TOKEN\"`\nor `\"$(cat /path/to/secret/token)\"`. Expansion runs through Crush's embedded\nshell, so the same syntax works on every supported system, Windows included.\n\nUnset variables expand to the empty string by default, matching bash. For\nrequired credentials, use `${VAR:?message}` so an unset variable fails loudly\nat load time with `message` instead of silently resolving to empty:\n\n```json\n{ \"api_key\": \"${CODEBERG_TOKEN:?set CODEBERG_TOKEN}\" }\n```\n\nHeaders (both MCP `headers` and provider `extra_headers`) whose value\nresolves to the empty string are dropped from the outgoing request rather\nthan sent as `Header:`. That keeps optional env-gated headers like\n`\"OpenAI-Organization\": \"$OPENAI_ORG_ID\"` clean when the variable is unset.\n\nProvider `extra_body` is a non-expanding JSON passthrough; put env-driven\nvalues in `extra_headers` or the provider's `api_key` / `base_url`, all of\nwhich do expand.\n\n> **Security note:** `crush.json` is trusted code. Any `$(...)` in it runs at\n> load time with your shell's privileges, before the UI appears. Don't launch\n> Crush in a directory whose `crush.json` you haven't reviewed.\n\n```json\n{\n  \"$schema\": \"https://charm.land/crush.json\",",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/charmbracelet/crush\n\ngo 1.26.4\n\nrequire (\n\tcharm.land/bubbles/v2 v2.1.0\n\tcharm.land/bubbletea/v2 v2.0.7\n\tcharm.land/catwalk v0.45.1\n\tcharm.land/fang/v2 v2.0.1\n\tcharm.land/fantasy v0.33.2\n\tcharm.land/glamour/v2 v2.0.1\n\tcharm.land/lipgloss/v2 v2.0.4\n\tcharm.land/log/v2 v2.0.0\n\tcharm.land/x/vcr v0.1.1\n\tgithub.com/JohannesKaufmann/html-to-markdown v1.6.0\n\tgithub.com/MakeNowJust/heredoc v1.0.0\n\tgithub.com/Microsoft/go-winio v0.6.2\n\tgithub.com/PuerkitoBio/goquery v1.12.0\n\tgithub.com/alecthomas/chroma/v2 v2.26.1\n\tgithub.com/aymanbagabas/go-udiff v0.4.1\n\tgithub.com/bmatcuk/doublestar/v4 v4.10.0\n\tgithub.com/charlievieth/fastwalk v1.0.14\n\tgithub.com/charmbracelet/colorprofile v0.4.3\n\tgithub.com/charmbracelet/openai-go v0.0.0-20260617131321-5e4b9c18c4be\n\tgithub.com/charmbracelet/ultraviolet v0.0.0-20260525132238-948f4557a654\n\tgithub.com/charmbracelet/x/ansi v0.11.7\n\tgithub.com/charmbracelet/x/editor v0.2.0\n\tgithub.com/charmbracelet/x/etag v0.2.0\n\tgithub.com/charmbracelet/x/exp/charmtone v0.0.0-20260527151214-009e6338d40d\n\tgithub.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f\n\tgithub.com/charmbracelet/x/exp/ordered v0.1.0\n\tgithub.com/charmbracelet/x/exp/slice v0.0.0-20260622092256-25656177ba8e\n\tgithub.com/charmbracelet/x/exp/strings v0.1.0\n\tgithub.com/charmbracelet/x/powernap v0.1.6\n\tgithub.com/charmbracelet/x/term v0.2.2\n\tgithub.com/clipperhouse/displaywidth v0.11.0\n\tgithub.com/clipperhouse/uax29/v2 v2.7.0\n\tgithub.com/denisbrodbeck/machineid v1.0.1\n\tgithub.com/disintegration/imaging v1.6.2\n\tgithub.com/dustin/go-humanize v1.0.1\n\tgithub.com/gen2brain/beeep v0.11.2\n\tgithub.com/go-git/go-git/v5 v5.19.1\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/invopop/jsonschema v0.14.0\n\tgithub.com/itchyny/gojq v0.12.19\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/jordanella/go-ansi-paintbrush v0.0.0-20240728195301-b7ad996ecf3d\n\tgithub.com/lucasb-eyer/go-colorful v1.4.0\n\tgithub.com/mattn/go-isatty v0.0.22\n\tgithub.com/modelcontextprotocol/go-sdk v1.6.1\n\tgithub.com/ncruces/go-sqlite3 v0.34.4\n\tgithub.com/nxadm/tail v1.4.11\n\tgithub.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c\n\tgithub.com/posthog/posthog-go v1.14.0\n\tgithub.com/pressly/goose/v3 v3.27.1\n\tgithub.com/qjebbs/go-jsons v1.0.0-alpha.5\n\tgithub.com/rivo/uniseg v0.4.7\n\tgithub.com/sahilm/fuzzy v0.1.2\n\tgithub.com/sourcegraph/jsonrpc2 v0.2.1\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/swaggo/http-swagger/v2 v2.0.2\n\tgithub.com/swaggo/swag v1.16.6\n\tgithub.com/tidwall/gjson v1.19.0\n\tgithub.com/tidwall/sjson v1.2.5\n\tgithub.com/zeebo/xxh3 v1.1.0\n\tgo.uber.org/goleak v1.3.0\n\tgolang.design/x/clipboard v0.8.0\n\tgolang.org/x/net v0.56.0\n\tgolang.org/x/sync v0.21.0\n\tgolang.org/x/sys v0.46.0\n\tgolang.org/x/text v0.38.0\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgopkg.in/yaml.v3 v3.0.1\n\tmodernc.org/sqlite v1.52.0\n\tmvdan.cc/sh/moreinterp v0.0.0-20250902163504-3cf4fd5717a5\n\tmvdan.cc/sh/v3 v3.13.1\n)\n\nrequire (\n\tcloud.google.com/go v0.123.0 // indirect\n\tcloud.google.com/go/auth v0.20.0 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tgit.sr.ht/~jackmordaunt/go-toast v1.1.2 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 // indirect\n\tgithub.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect\n\tgithub.com/KyleBanks/depth v1.2.1 // indirect\n\tgithub.com/andybalholm/cascadia v1.3.3 // indirect\n\tgithub.com/atotto/clipboard v0.1.4 // indirect\n\tgithub.com/aws/aws-sdk-go-v2 v1.42.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.13 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.25 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.24 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.29 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.29 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.29 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.30 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.29 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.2.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.31.3 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.36.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.43.3 // indirect\n\tgithub.com/aws/smithy-go v1.27.2 // indirect\n\tgithub.com/aymerick/douceur v0.2.0 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/buger/jsonparser v1.1.2 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/charmbracelet/anthropic-sdk-go v0.0.0-20260223140439-63879b0b8dab // indirect\n\tgithub.com/charmbracelet/x/termios v0.1.1 // indirect\n\tgithub.com/charmbracelet/x/windows v0.2.2 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.6.1 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgit",
    "strategic_keywords": [
      "agent",
      "mcp",
      "llm",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "zzet",
    "name": "gortex",
    "full_name": "zzet/gortex",
    "url": "https://github.com/zzet/gortex",
    "description": "High-performance code-intelligence engine for AI agents and IDE, supports 257 languages, multi repositories, based on graph, with access via CLI, MCP Server, and API. AI coding agents teammate - expose only needed information, cutting token usage up to 50x. 100% local.",
    "language": "Go",
    "total_stars": 733,
    "forks": 56,
    "stars_this_period": 267,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "ai-tools",
        "antigravity",
        "claude-code",
        "code-analysis",
        "code-assistant",
        "context-window",
        "context-window-optimization",
        "context-window-optimizer",
        "copilot",
        "cursor",
        "developer-tools",
        "graphrag",
        "kiro",
        "knowledge-graph",
        "local-first",
        "mcp-server",
        "prompts",
        "skills",
        "tokens",
        "windsurf"
      ],
      "license": "Apache-2.0",
      "open_issues": 8,
      "created_at": "2026-04-06T13:47:15Z",
      "pushed_at": "2026-06-24T20:44:56Z",
      "homepage": "https://gortex.dev/",
      "default_branch": "main",
      "forks": 56,
      "watchers": 6,
      "archived": false,
      "size_kb": 26527
    },
    "readme_content": "\n<div align=\"center\">\n<p align=\"center\">\n  <img src=\"assets/wall.svg\" alt=\"Gortex\" width=\"500\">\n</p>\n\n\n### High-performance and efficient code-intelligence engine for AI agents and IDE\n#### Indexes code into graph and exposes it via CLI, MCP Server, and web UI. Multi-repository support by default.\n#### Single static binary for macOS, Linux, and Windows — no dependency chain, simple installation and use.\n\n---\n[![CI](https://github.com/zzet/gortex/actions/workflows/ci.yml/badge.svg)](https://github.com/zzet/gortex/actions/workflows/ci.yml)\n[![Latest release](https://img.shields.io/github/v/release/zzet/gortex?logo=github&sort=semver)](https://github.com/zzet/gortex/releases/latest)\n[![Sigstore signed](https://img.shields.io/badge/sigstore-signed-66D4FF?logo=sigstore&logoColor=white)](docs/installation.md#verifying-releases-supply-chain-security)\n[![SLSA 3](https://img.shields.io/badge/SLSA-Level%203-green)](https://slsa.dev/spec/v1.0/levels#build-l3)\n[![VirusTotal](https://img.shields.io/badge/VirusTotal-0%2F91-brightgreen?logo=virustotal)](https://www.virustotal.com/gui/url/00e1094b39c9bd7db4d5a179b1d56173f85c915075057fd3cc64bfbb9b735b11/detection)\n[![macOS](https://img.shields.io/badge/macOS-supported-blue.svg)](#)\n[![Linux](https://img.shields.io/badge/Linux-supported-blue.svg)](#)\n[![Windows](https://img.shields.io/badge/Windows-supported-blue.svg)](#)\n\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/zzet/gortex/badge)](https://scorecard.dev/viewer/?uri=github.com/zzet/gortex)\n[![Go Report Card](https://goreportcard.com/badge/github.com/zzet/gortex)](https://goreportcard.com/report/github.com/zzet/gortex)\n[![Go Reference](https://pkg.go.dev/badge/github.com/zzet/gortex.svg)](https://pkg.go.dev/github.com/zzet/gortex)\n  <br />\n  <a href=\"https://trendshift.io/repositories/36832\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/36832\" alt=\"zzet%2Fgortex | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\nHigh-quality parsing 257 languages/grammars through tree-sitter AST analysis, in-process resolvers, enhanced with [compiler-grade resolution](https://github.com/zzet/gortex/blob/main/docs/lsp.md) for Python, TypeScript / JavaScript, PHP, C#, Go, C, C++, Java, Kotlin, Swift, Zig, Rust, Ruby, Elixir, Ocaml, Haskell, and [others](https://github.com/zzet/gortex/blob/main/docs/languages.md#at-a-glance) - producing a persistent provenance-tiered knowledge graph of functions, classes, call chains, HTTP routes, and cross-service contracts and calls with a strong confidence model. 175 (configurable) MCP tools - use only what you need. Zero dependencies. Plug and play across 17 coding agents. **Up to 50× fewer tokens per response**. Reproducible [benchmarks](BENCHMARK.md).\n\n\n> 17 AI coding agents (Claude Code, Kiro, Cursor, Windsurf, VS Code / Copilot, Continue.dev, Cline, OpenCode, Antigravity, Codex CLI, Gemini CLI, Zed, Aider, Kilo Code, OpenClaw, Hermes, Oh My Pi) supported out of the box.\n>\n> One install configures every one detected on your machine — see [docs/agents.md](docs/agents.md).\n\n<details>\n<summary>Gortex Web UI — force-directed knowledge graph visualization</summary>\n\n![Gortex Web UI — force-directed knowledge graph visualization](assets/graph.png)\n\n</details>\n\n## Why it matters\n\n- **50× fewer tokens per response** — graph-native lookups beat naive file reads. Agents read **just what they need**, not the full file, not the 500-line file around it.\n- **Full development cycle** - no 'read file before edit'. Agents ask for sources, tell what to change, and don't waste context of reading noise.\n- **257 languages/grammars** - every file in the repository reachable; no mix of tools and bloating/hallycinating agents. Three tiers (bespoke tree-sitter, regex, forest-backed signatures) plus Jupyter and Databricks notebooks → [docs/languages.md](docs/languages.md)\n- **Cross-repo by default** — N repos in one graph; contracts, references, and call chains span repo boundaries with evidence-gated resolution, contract matching, impact analysis, per-session isolation → [docs/multi-repo.md](docs/multi-repo.md)\n- **Extreamly fast analysis** — a precomputed depth-3 reach index turns blast-radius queries into O(seeds × reach) map lookups. Safe to ask \"what breaks if I change this?\" on every edit. No dozens of tool calls to grasp context.\n- **Zero external dependencies** — single binary, everything in-process. No network, no model download to get started. Install, start daemon, use.\n- **Agent integrations (17)** — `gortex init` configures every detected coding assistant on the machine → [docs/agents.md](docs/agents.md)\n- **100+ MCP tools, 16 resources, 3 prompts** — symbol lookup, call chains, blast radius, dataflow, clone detection, refactoring, code actions → [docs/mcp.md](docs/mcp.md)\n- **Semantic search default-on** — baked GloVe-50d (3.8 MB embedded), hybrid BM25 + vector + RRF, zero deps; opt-in MiniLM / Ollama / OpenAI → [docs/semantic-search.md](docs/semantic-search.md)\n- **Speculative execution** — `preview_edit` / `simulate_chain` answer \"what would change if I applied this WorkspaceEdit?\" without touching disk\n- **Live editor overlays** — push unsaved buffers as a shadow graph; tools read through it. Branching for parallel speculative sessions\n- **GCX1 wire format** — published, round-trippable. **An additional −27% tokens vs JSON** at same fidelity → [docs/wire-format.md](docs/wire-format.md)\n- **Long-living daemon** — one process serves every IDE window; live fsnotify, on-disk snapshots, restart, OS-supervised lifecycle\n- **9 LLM providers (optional)** — local llama.cpp, Anthropic, OpenAI, Ollama, Claude / Codex CLI subprocess, Gemini, Bedrock, DeepSeek → [docs/llm.md](docs/llm.md)\n- **Composable safety** — `verify_change`, `check_guards`, `audit_agent_config` flag broken callers, guard violations, stale docs before they ship\n- **PR review, end to end** — `gortex prs` triages open PRs (per-PR blast radius, merge-order conflicts via shared communities, AI-ranked queue, reviewer suggestions); `gortex review` emits line-anchored findings with a BLOCK/REVIEW/APPROVE verdict from a graph-grounded rulepack; MCP tools (`pr_risk`, `get_pr_impact`, `review`, `review_pack`, `post_review`, …) expose it to agents → [docs/cli.md](docs/cli.md)\n- **HTTP server + Web UI** — versioned `/v1/*` API + MCP 2026 Streamable HTTP; standalone Next.js 15 UI with five 3D graph modes → [docs/server.md](docs/server.md)\n- **Telemetry off by default** — opt-in anonymous tool/command counts only (no code, paths, names, or exact counts); nothing transmitted unless you configure an endpoint. `gortex telemetry on|off|status`; honours `DO_NOT_TRACK` → [docs/telemetry.md](docs/telemetry.md)\n\nFull catalog of features: [docs/features.md](docs/features.md). Complete CLI reference: [docs/cli.md](docs/cli.md).\n\n## Install\n\n```bash\n# macOS / Linux\ncurl -fsSL https://get.gortex.dev | sh\n\n# Windows (PowerShell)\nirm https://get.gortex.dev/install.ps1 | iex\n```\n\nDetects OS/arch, verifies SHA256 + cosign, installs to PATH. Re-run to upgrade. Homebrew, `.deb` / `.rpm` / `.apk`, scoop, signed binaries, and from-source builds: [docs/installation.md](docs/installation.md).\n\n## Quick Start\n\n```bash\ngortex install                          # one-time machine setup (MCP, skills, slash commands)\ngortex daemon start --detach            # background daemon\ngortex track ~/projects/myapp           # add a repo\ncd ~/projects/myapp && gortex init      # per-repo: .mcp.json, hooks, community routing\n```\n\nYour AI assistant now uses graph queries. Full 15-minute walkthrough: [docs/onboarding.md](docs/onboarding.md).\n\n## Cross-Repo API Contracts\n\nGortex auto-detects API contracts across repos and matches providers to consumers, surfaced via the `contracts` MCP tool and the web UI Contracts page.\n\n| Contract type | Detection | Provider | Consumer |\n|--------------|-----------|----------|----------|\n| **HTTP routes** | Framework annotations (gin, Express, FastAPI, Spring, …) | Route handler | HTTP client calls (`fetch`, `http.Get`) |\n| **gRPC** | Proto service definitions | Service RPC | Client stub calls |\n| **GraphQL** | Schema type/field definitions | Schema | Query/mutation strings |\n| **Message topics** | Kafka / RabbitMQ / NATS / Redis pub/sub | Publish calls | Subscribe calls |\n| **WebSocket** | Event emit/listen patterns | `emit()` | `on()` |\n| **Env vars** | `os.Getenv`, `process.env`, `.env` files | `Setenv` / `.env` | `Getenv` / `process.env` |\n| **OpenAPI** | Swagger / OpenAPI spec files | Spec paths | (linked to HTTP routes) |\n| **Temporal workflows** | Go / Java SDK annotations | Activity / workflow function | `ExecuteActivity` / `ExecuteChildWorkflow` |\n\nContracts are normalised to canonical IDs (e.g. `http::GET::/api/users/{id}`) and matched across repos to detect orphan providers / consumers and mismatches. See [docs/contracts.md](docs/contracts.md).\n\n## Scale — battle-tested on large repos\n\nMeasured on an Apple Silicon laptop with the default CGO build.\n\n| Repository | Files | Nodes | Edges | Index time | Throughput | Peak heap |\n| ---------- | ----: | ----: | ----: | ---------: | ---------: | --------: |\n| [torvalds/linux](https://github.com/torvalds/linux) | 70,333 | 1,690,174 | 6,239,570 | ~3 min | 300 files/s | 5.07 GB |\n| [microsoft/vscode](https://github.com/microsoft/vscode) | 10,762 | 204,501 | 808,902 | ~1 min | 143 files/s | 580 MB |\n| zzet/gortex (self) | 430 | 5,583 | 53,830 | 3.4s | 127 files/s | 52 MB |\n\nParsing dominates wall time (65–80 %); reference resolution and search-index build scale sub-linearly.\n\n## Token savings dashboard\n\n`gortex savings` reports tokens saved vs naive file reads — per-call, per-session, and cumulative across restarts, priced in USD against the headline model.\n\n```text\nGortex Token Savings\n====================\nCost avoided:   $168.69 (claude-opus-4) across 1,878 calls · 11,246,094 tokens saved\n\nToday       ████████░░░░░░░░   50.0%  saved 9,200 / 18,400 tokens   $0.14\nLast 7 days ██████████░░░░░░   62.5%  saved 60,100 / 96,200 tokens  $0.90\nAll time    ███████████████░   93.3%  saved 11,246,094 / 12,050,716 tokens  $168.69\n```\n\n`--verbose` adds the per-tool breakdown; `--json` is machine-readable. Full reference: [docs/savings.md](docs/savings.md).\n\n## Architecture\n\n```\ngortex binary\n  CLI (cobra)    ──> MultiIndexer ──> In-Memory Graph (shared, per-repo indexed)\n  MCP (stdio)    ──────────────────> Query Engine (repo/project/ref scoping)\n  HTTP /v1/*     ──────────────────> same tools + /v1/graph + /v1/events (SSE)\n  Daemon (unix)  ──────────────────> shared graph for every MCP client, session isolation\n                  MultiWatcher    <── filesystem events (fsnotify, per-repo)\n                  CrossRepoResolver ──> cross-repo edge creation (type-aware)\n                  Persistence     ──> gob+gzip snapshot (pluggable backend)\n```\n\nData flow, graph schema (node and edge kinds, multi-repo fields, test taxonomy), persistence model: [docs/architecture.md](docs/architecture.md).\n\n## Documentation\n\n| Topic | Reference |\n| --- | --- |\n| First-time walkthrough | [onboarding.md](docs/onboarding.md) |\n| Installation & supply-chain verification | [installation.md](docs/installation.md) |\n| Full feature catalog | [features.md](docs/features.md) |\n| CLI reference | [cli.md](docs/cli.md) |\n| MCP tools, resources, prompts | [mcp.md](docs/mcp.md) |\n| Multi-repo workspaces | [multi-repo.md](docs/multi-repo.md) |\n| HTTP server + Web UI + MCP 2026 transport | [server.md](docs/server.md) |\n| Cross-repo API contracts | [contracts.md](docs/contracts.md) |\n| Semantic search | [semantic-search.md](docs/semantic-search.md) |\n| Optional LLM features | [llm.md](docs/llm.md) |\n| LSP integration | [lsp.md](docs/lsp.md) |\n| Per-community skills & agent usage | [skills.md](docs/skills.md) |\n| AI agent adapters (17) | [agents.md](docs/agents.md) |\n| Supported languages (257) | [languages.md](docs/languages.md) |\n| Token savings | [",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/zzet/gortex\n\ngo 1.26.4\n\nrequire (\n\tgithub.com/alexaandru/go-sitter-forest/ada v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/agda v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/aiken v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/al v1.9.14\n\tgithub.com/alexaandru/go-sitter-forest/apex v1.9.8\n\tgithub.com/alexaandru/go-sitter-forest/asciidoc v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/astro v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/awk v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/beancount v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/bibtex v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/bicep v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/bitbake v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/blade v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/c3 v1.9.25\n\tgithub.com/alexaandru/go-sitter-forest/caddy v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/capnp v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/cedar v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/cel v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/circom v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/clarity v1.9.5\n\tgithub.com/alexaandru/go-sitter-forest/clojure v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/cmake v1.9.5\n\tgithub.com/alexaandru/go-sitter-forest/cobol v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/commonlisp v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/cooklang v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/crystal v1.9.29\n\tgithub.com/alexaandru/go-sitter-forest/cuda v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/cue v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/d v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/dataweave v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/dbml v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/desktop v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/devicetree v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/dhall v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/djot v1.9.7\n\tgithub.com/alexaandru/go-sitter-forest/dot v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/dotenv v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/dtd v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/earthfile v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/editorconfig v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/effekt v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/eiffel v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/elisp v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/elm v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/elvish v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/erlang v1.9.7\n\tgithub.com/alexaandru/go-sitter-forest/fennel v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/firrtl v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/fish v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/fortran v1.9.13\n\tgithub.com/alexaandru/go-sitter-forest/fsharp v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/gdscript v1.9.6\n\tgithub.com/alexaandru/go-sitter-forest/gdshader v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gherkin v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/git_config v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/gitattributes v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/gitcommit v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/gitignore v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gleam v1.9.9\n\tgithub.com/alexaandru/go-sitter-forest/glimmer v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/glsl v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/gn v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gnuplot v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/godot_resource v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/gomod v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/gosum v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gotmpl v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/gowork v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gpg v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/graphql v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/gren v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/gritql v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/groovy v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/hack v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/haml v1.9.9\n\tgithub.com/alexaandru/go-sitter-forest/hare v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/haskell v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/haxe v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/heex v1.9.3\n\tgithub.com/alexaandru/go-sitter-forest/hjson v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/hlsl v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/hocon v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/htmldjango v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/hurl v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/hyprlang v1.9.4\n\tgithub.com/alexaandru/go-sitter-forest/idris v1.9.5\n\tgithub.com/alexaandru/go-sitter-forest/ini v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/ispc v1.9.1\n\tgithub.com/alexaandru/go-sitter-forest/janet v1.9.2\n\tgithub.com/alexaandru/go-sitter-forest/jasmin v1.9.0\n\tgithub.com/alexaandru/go-sitter-forest/jinja v1.9.6\n\tgithub.com/alexaandru/go-sitter-forest/jq v1.9.1\n\tg",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "junegunn",
    "name": "fzf",
    "full_name": "junegunn/fzf",
    "url": "https://github.com/junegunn/fzf",
    "description": "🌸 A command-line fuzzy finder",
    "language": "Go",
    "total_stars": 81211,
    "forks": 2799,
    "stars_this_period": 265,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "bash",
        "cli",
        "fish",
        "fzf",
        "go",
        "neovim",
        "tmux",
        "unix",
        "vim",
        "zsh"
      ],
      "license": "MIT",
      "open_issues": 323,
      "created_at": "2013-10-23T16:04:23Z",
      "pushed_at": "2026-06-23T11:51:16Z",
      "homepage": "https://junegunn.github.io/fzf/",
      "default_branch": "master",
      "forks": 2799,
      "watchers": 399,
      "archived": false,
      "size_kb": 8252
    },
    "readme_content": "<div align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/junegunn/i/master/fzf-color.png\" alt=\"fzf - a command-line fuzzy finder\">\n  <a href=\"https://github.com/junegunn/fzf/actions\"><img src=\"https://github.com/junegunn/fzf/actions/workflows/linux.yml/badge.svg?branch=master\" alt=\"Build Status\"></a>\n  <a href=\"http://github.com/junegunn/fzf/releases\"><img src=\"https://img.shields.io/github/v/tag/junegunn/fzf\" alt=\"Version\"></a>\n  <a href=\"https://github.com/junegunn/fzf?tab=MIT-1-ov-file#readme\"><img src=\"https://img.shields.io/github/license/junegunn/fzf\" alt=\"License\"></a>\n  <a href=\"https://github.com/junegunn/fzf/graphs/contributors\"><img src=\"https://img.shields.io/github/contributors/junegunn/fzf\" alt=\"Contributors\"></a>\n  <a href=\"https://github.com/sponsors/junegunn\"><img src=\"https://img.shields.io/github/sponsors/junegunn\" alt=\"Sponsors\"></a>\n  <a href=\"https://github.com/junegunn/fzf/stargazers\"><img src=\"https://img.shields.io/github/stars/junegunn/fzf?style=flat\" alt=\"Stars\"></a>\n</div>\n\n---\n\n<kbd align=\"center\">\n  <br/>\n  <a href=\"https://commitgoods.com/collections/fzf\"><img src=\"https://junegunn.github.io/fzf/images/fzf-mugs.jpg\" width=\"80%\" alt=\"fzf merch\"></a>\n  <br/>\n  <br/>\n  Show your love for fzf -- T-shirts, mugs, and stickers now available!\n  <br/>\n  <br/>\n  <a href=\"https://commitgoods.com/collections/fzf\">commitgoods.com/collections/fzf</a>\n  <br/>\n  <br/>\n</kbd>\n\n---\n\nfzf is a general-purpose command-line fuzzy finder and an interactive terminal toolkit.\n\n<img src=\"https://raw.githubusercontent.com/junegunn/i/master/fzf-preview.png\" width=640>\n\nWhether you're selecting files, browsing command history, previewing data,\nnavigating complex datasets with fuzzy matching, or creating custom menus and\nworkflows, fzf provides the building blocks to turn shell scripts into rich\nterminal applications.\n\nHighlights\n----------\n\n- **Portable** // Distributed as a single binary for easy installation\n- **Fast** // Optimized to process millions of items in milliseconds\n- **Programmable** // Event-driven architecture for building custom terminal interfaces and workflows\n- **Batteries-included** // Comes with integrations for Bash, Zsh, Fish, Nushell, Vim, and Neovim\n\nTable of Contents\n-----------------\n\n<!-- vim-markdown-toc GFM -->\n\n* [Installation](#installation)\n    * [Using Homebrew](#using-homebrew)\n    * [Using Mise](#using-mise)\n    * [Linux packages](#linux-packages)\n    * [Windows packages](#windows-packages)\n    * [Using git](#using-git)\n    * [Binary releases](#binary-releases)\n    * [Setting up shell integration](#setting-up-shell-integration)\n    * [Vim/Neovim plugin](#vimneovim-plugin)\n* [Upgrading fzf](#upgrading-fzf)\n* [Building fzf](#building-fzf)\n* [Usage](#usage)\n    * [Using the finder](#using-the-finder)\n    * [Display modes](#display-modes)\n        * [`--height` mode](#--height-mode)\n        * [`--popup` mode](#--popup-mode)\n    * [Search syntax](#search-syntax)\n    * [Environment variables](#environment-variables)\n    * [Customizing the look](#customizing-the-look)\n    * [Options](#options)\n    * [Demo](#demo)\n* [Examples](#examples)\n* [Key bindings for command-line](#key-bindings-for-command-line)\n* [Fuzzy completion](#fuzzy-completion)\n    * [Files and directories](#files-and-directories)\n    * [Process IDs](#process-ids)\n    * [Host names](#host-names)\n    * [Environment variables / Aliases](#environment-variables--aliases)\n    * [Customizing fuzzy completion for bash and zsh](#customizing-fuzzy-completion-for-bash-and-zsh)\n        * [Customizing fzf options for completion](#customizing-fzf-options-for-completion)\n        * [Customizing completion source for paths and directories](#customizing-completion-source-for-paths-and-directories)\n        * [Supported commands (bash)](#supported-commands-bash)\n        * [Custom fuzzy completion](#custom-fuzzy-completion)\n    * [Fuzzy completion for fish](#fuzzy-completion-for-fish)\n    * [Fuzzy completion for Nushell](#fuzzy-completion-for-nushell)\n* [Vim plugin](#vim-plugin)\n* [Advanced topics](#advanced-topics)\n    * [Customizing for different types of input](#customizing-for-different-types-of-input)\n    * [Performance](#performance)\n    * [Executing external programs](#executing-external-programs)\n    * [Turning into a different process](#turning-into-a-different-process)\n    * [Reloading the candidate list](#reloading-the-candidate-list)\n        * [1. Update the list of processes by pressing CTRL-R](#1-update-the-list-of-processes-by-pressing-ctrl-r)\n        * [2. Switch between sources by pressing CTRL-D or CTRL-F](#2-switch-between-sources-by-pressing-ctrl-d-or-ctrl-f)\n        * [3. Interactive ripgrep integration](#3-interactive-ripgrep-integration)\n    * [Preview window](#preview-window)\n    * [Previewing an image](#previewing-an-image)\n* [Tips](#tips)\n    * [Respecting `.gitignore`](#respecting-gitignore)\n    * [Fish shell](#fish-shell)\n    * [fzf Theme Playground](#fzf-theme-playground)\n* [Related projects](#related-projects)\n* [License](#license)\n* [Goods](#goods)\n* [Sponsors :heart:](#sponsors-heart)\n\n<!-- vim-markdown-toc -->\n\nInstallation\n------------\n\n### Using Homebrew\n\nYou can use [Homebrew](https://brew.sh/) (on macOS or Linux) to install fzf.\n\n```sh\nbrew install fzf\n```\n\n> [!IMPORTANT]\n> To set up shell integration (key bindings and fuzzy completion),\n> see [the instructions below](#setting-up-shell-integration).\n\nfzf is also available [via MacPorts][portfile]: `sudo port install fzf`\n\n[portfile]: https://github.com/macports/macports-ports/blob/master/sysutils/fzf/Portfile\n\n### Using Mise\n\nYou can use [mise](https://github.com/jdx/mise) to install fzf.\n\n```sh\nmise use -g fzf@latest\n```\n\n### Linux packages\n\n| Package Manager | Linux Distribution      | Command                            |\n| --------------- | ----------------------- | ---------------------------------- |\n| APK             | Alpine Linux            | `sudo apk add fzf`                 |\n| APT             | Debian 9+/Ubuntu 19.10+ | `sudo apt install fzf`             |\n| Conda           |                         | `conda install -c conda-forge fzf` |\n| DNF             | Fedora                  | `sudo dnf install fzf`             |\n| Nix             | NixOS, etc.             | `nix-env -iA nixpkgs.fzf`          |\n| Pacman          | Arch Linux              | `sudo pacman -S fzf`               |\n| pkg             | FreeBSD                 | `pkg install fzf`                  |\n| pkgin           | NetBSD                  | `pkgin install fzf`                |\n| pkg_add         | OpenBSD                 | `pkg_add fzf`                      |\n| Portage         | Gentoo                  | `emerge --ask app-shells/fzf`      |\n| Spack           |                         | `spack install fzf`                |\n| XBPS            | Void Linux              | `sudo xbps-install -S fzf`         |\n| Zypper          | openSUSE                | `sudo zypper install fzf`          |\n\n> [!IMPORTANT]\n> To set up shell integration (key bindings and fuzzy completion),\n> see [the instructions below](#setting-up-shell-integration).\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/fzf.svg?columns=3)](https://repology.org/project/fzf/versions)\n\n### Windows packages\n\nOn Windows, fzf is available via [Chocolatey][choco], [Scoop][scoop],\n[Winget][winget], and [MSYS2][msys2]:\n\n| Package manager | Command                               |\n| --------------- | ------------------------------------- |\n| Chocolatey      | `choco install fzf`                   |\n| Scoop           | `scoop install fzf`                   |\n| Winget          | `winget install fzf`                  |\n| MSYS2 (pacman)  | `pacman -S $MINGW_PACKAGE_PREFIX-fzf` |\n\n[choco]: https://chocolatey.org/packages/fzf\n[scoop]: https://github.com/ScoopInstaller/Main/blob/master/bucket/fzf.json\n[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/j/junegunn/fzf\n[msys2]: https://packages.msys2.org/base/mingw-w64-fzf\n\n### Using git\n\nAlternatively, you can \"git clone\" this repository to any directory and run\n[install](https://github.com/junegunn/fzf/blob/master/install) script.\n\n```sh\ngit clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf\n~/.fzf/install\n```\n\nThe install script will add lines to your shell configuration file to modify\n`$PATH` and set up shell integration.\n\n### Binary releases\n\nYou can download the official fzf binaries from the releases page.\n\n* https://github.com/junegunn/fzf/releases\n\n### Setting up shell integration\n\nAdd the following line to your shell configuration file.\n\n* bash\n  ```sh\n  # Set up fzf key bindings and fuzzy completion\n  eval \"$(fzf --bash)\"\n  ```\n* zsh\n  ```sh\n  # Set up fzf key bindings and fuzzy completion\n  source <(fzf --zsh)\n  ```\n* fish\n  ```fish\n  # Set up fzf key bindings\n  fzf --fish | source\n  ```\n* Nushell -- Nushell does not support piping into `source`, so the install\n  script generates a file in the autoload directory. If you didn't use the\n  install script, you can manually set it up:\n  ```nu\n  # Generate the integration script\n  mkdir ($nu.default-config-dir | path join \"autoload\")\n  fzf --nushell | save -f ($nu.default-config-dir | path join \"autoload\" \"_fzf_integration.nu\")\n  ```\n\n> [!NOTE]\n> `--bash`, `--zsh`, `--fish`, and `--nushell` options are only available in\n> recent versions of fzf. If you have an older version of fzf, or want finer control, you can\n> source individual script files in the [/shell](/shell) directory. The\n> location of the files may vary depending on the package manager you use.\n> Please refer to the package documentation for more information.\n> (e.g. `apt show fzf`)\n\n> [!TIP]\n> You can disable CTRL-T, CTRL-R, or ALT-C bindings by setting the\n> corresponding `*_COMMAND` variable to an empty string when sourcing the\n> script. For example, to disable CTRL-R and ALT-C:\n>\n> * bash: `FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= eval \"$(fzf --bash)\"`\n> * zsh: `FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= source <(fzf --zsh)`\n> * fish: `fzf --fish | FZF_CTRL_R_COMMAND= FZF_ALT_C_COMMAND= source`\n> * nushell: add to your `env.nu`:\n>   `$env.FZF_CTRL_R_COMMAND = \"\"; $env.FZF_ALT_C_COMMAND = \"\"`\n>\n> Setting the variables after sourcing the script will have no effect.\n\n### Vim/Neovim plugin\n\nIf you use [vim-plug](https://github.com/junegunn/vim-plug), add this to\nyour Vim configuration file:\n\n```vim\nPlug 'junegunn/fzf', { 'do': { -> fzf#install() } }\nPlug 'junegunn/fzf.vim'\n```\n\n* `junegunn/fzf` provides the basic library functions\n    * `fzf#install()` makes sure that you have the latest binary\n* `junegunn/fzf.vim` is [a separate project](https://github.com/junegunn/fzf.vim)\n  that provides a variety of useful commands\n\nTo learn more about the Vim integration, see [README-VIM.md](README-VIM.md).\n\n> [!TIP]\n> If you use Neovim and prefer Lua-based plugins, check out\n> [fzf-lua](https://github.com/ibhagwan/fzf-lua).\n\nUpgrading fzf\n-------------\n\nfzf is being actively developed, and you might want to upgrade it once in a\nwhile. Please follow the instruction below depending on the installation\nmethod used.\n\n- git: `cd ~/.fzf && git pull && ./install`\n- brew: `brew update; brew upgrade fzf`\n- macports: `sudo port upgrade fzf`\n- chocolatey: `choco upgrade fzf`\n- vim-plug: `:PlugUpdate fzf`\n\nBuilding fzf\n------------\n\nSee [BUILD.md](BUILD.md).\n\nUsage\n-----\n\nfzf will launch interactive finder, read the list from STDIN, and write the\nselected item to STDOUT.\n\n```sh\nfind * -type f | fzf > selected\n```\n\nWithout STDIN pipe, fzf will traverse the file system under the current\ndirectory to get the list of files.\n\n```sh\nvim $(fzf)\n```\n\n> [!NOTE]\n> You can override the default behavior\n> * Either by setting `$FZF_DEFAULT_COMMAND` to a command that generates the desired list\n> * Or by setting `--walker`, `--walker-root`, and `--walker-skip` options in `$FZF_DEFAULT_OPTS`\n\n> [!WARNING]\n> A more robust solution would be to use `xargs` but we've presented\n> the above as it's easier to grasp\n> ```sh\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/junegunn/fzf\n\nrequire (\n\tgithub.com/charlievieth/fastwalk v1.0.14\n\tgithub.com/gdamore/tcell/v2 v2.9.0\n\tgithub.com/junegunn/go-shellwords v0.0.0-20250127100254-2aa3b3277741\n\tgithub.com/mattn/go-isatty v0.0.22\n\tgithub.com/rivo/uniseg v0.4.7\n\tgolang.org/x/sys v0.35.0\n\tgolang.org/x/term v0.34.0\n)\n\nrequire (\n\tgithub.com/gdamore/encoding v1.0.1 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.2.0 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.16 // indirect\n\tgolang.org/x/text v0.28.0 // indirect\n)\n\ngo 1.23.0\n",
    "strategic_keywords": [
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 6,
      "total": 70
    },
    "strategic_score": 70
  }
]