[
  {
    "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": 22287,
    "forks": 1781,
    "stars_this_period": 1542,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 47,
      "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": 1781,
      "watchers": 118,
      "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": "simplex-chat",
    "name": "simplex-chat",
    "full_name": "simplex-chat/simplex-chat",
    "url": "https://github.com/simplex-chat/simplex-chat",
    "description": "SimpleX - the first messaging network operating without user identifiers of any kind - 100% private by design! iOS, Android and desktop apps 📱!",
    "language": "Haskell",
    "total_stars": 13761,
    "forks": 791,
    "stars_this_period": 1470,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "chat",
        "double-ratchet",
        "e2ee",
        "encryption",
        "haskell",
        "messaging",
        "privacy",
        "protocol",
        "security"
      ],
      "license": "AGPL-3.0",
      "open_issues": 1141,
      "created_at": "2019-12-21T09:50:09Z",
      "pushed_at": "2026-06-27T21:57:57Z",
      "homepage": "https://simplex.chat",
      "default_branch": "stable",
      "forks": 791,
      "watchers": 109,
      "archived": false,
      "size_kb": 418282
    },
    "readme_content": "[![build](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml/badge.svg?branch=stable)](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml)\n[![GitHub downloads](https://img.shields.io/github/downloads/simplex-chat/simplex-chat/total)](https://github.com/simplex-chat/simplex-chat/releases)\n[![GitHub release](https://img.shields.io/github/v/release/simplex-chat/simplex-chat)](https://github.com/simplex-chat/simplex-chat/releases)\n[![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat)\n<a rel=\"me\" href=\"https://mastodon.social/@simplex\">![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social)</a>\n\n| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md), [PL](/docs/lang/pl/README.md) |\n\n<img src=\"images/simplex-chat-logo.svg\" alt=\"SimpleX logo\" width=\"100%\">\n\n# SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!\n\n[<img src=\"./images/trail-of-bits.jpg\" height=\"80\">](http://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html) &nbsp;&nbsp;&nbsp; [<img src=\"./images/privacy-guides.jpg\" height=\"64\">](https://www.privacyguides.org/en/real-time-communication/#simplex-chat) &nbsp;&nbsp;&nbsp; [<img src=\"./images/whonix-logo.jpg\" height=\"64\">](https://www.whonix.org/wiki/Chat#Recommendation) &nbsp;&nbsp;&nbsp; [<img src=\"./images/kuketz-blog.jpg\" height=\"64\">](https://www.kuketz-blog.de/simplex-eindruecke-vom-messenger-ohne-identifier/)\n\n**[Why we are building SimpleX Network](./docs/WHY.md)**\n\n## Welcome to SimpleX Chat!\n\n1. 📲 [Install the app](#install-the-app).\n2. ↔️ [Connect to the team](#connect-to-the-team), [join user groups](#join-user-groups) and [follow our updates](#follow-our-updates).\n3. 🤝 [Make a private connection](#make-a-private-connection) with a friend.\n4. 🔤 [Help translating SimpleX Chat](#help-translating-simplex-chat).\n5. ⚡️ [Contribute](#contribute) and [support us with donations](#please-support-us-with-your-donations).\n\n[Learn more about SimpleX Chat](#contents).\n\n## Install the app\n\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/apple_store.svg\" alt=\"iOS app\" height=\"42\">](https://apps.apple.com/us/app/simplex-chat/id1605771084)\n&nbsp;\n[![Android app](https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/f_droid.svg\" alt=\"F-Droid\" height=\"41\">](https://app.simplex.chat)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/testflight.png\" alt=\"iOS TestFlight\" height=\"41\">](https://testflight.apple.com/join/DWuT2LQu)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/apk_icon.png\" alt=\"APK\" height=\"41\">](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)\n\n- 🖲 Protects your messages and metadata - who you talk to and when.\n- 🔐 Double ratchet end-to-end encryption, with additional encryption layer.\n- 📱 Mobile apps for Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084).\n- 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) with the new features 1-2 weeks earlier - **limited to 10,000 users**!\n- 🖥 Available as a terminal (console) [app / CLI](#zap-quick-installation-of-a-terminal-app) on Linux, MacOS, Windows.\n\n## Connect to the team\n\nYou can connect to the team via the app using \"chat with the developers button\" available when you have no conversations in the profile, \"Send questions and ideas\" in the app settings or via our [SimpleX address](https://smp6.simplex.im/a#lrdvu2d8A1GumSmoKb2krQmtKhWXq-tyGpHuM7aMwsw). Please connect to:\n\n- to ask any questions\n- to suggest any improvements\n- to share anything relevant\n\nWe are replying the questions manually, so it is not instant – it can take up to 24 hours.\n\nIf you are interested in helping us to integrate open-source language models, and in [joining our team](./docs/JOIN_TEAM.md), please get in touch.\n\n## Join user groups\n\nYou can find the groups created by users in [SimpleX Directory](https://simplex.chat/directory/). It is also available as [SimpleX bot](https://smp4.simplex.im/a#lXUjJW5vHYQzoLYgmi8GbxkGP41_kjefFvBrdwg-0Ok) that allows to add your own groups and communities to the directory. We are not responsible for the content shared in these groups.\n\n**Please note**: The groups below are created for the users to be able to ask questions, make suggestions and ask questions about SimpleX Chat only.\n\nYou can join an English-speaking users group if you want to ask any questions: [#SimpleX users group](https://smp4.simplex.im/g#hr4lvFeBmndWMKTwqiodPz3VBo_6UmdGWocXd1SupsM)\n\nThere is also a group [#simplex-devs](https://smp6.simplex.im/g#Drx3efC-n418AuSpzTspw9SER0iJwrQTmKBafQHwkKM) for developers who build on SimpleX platform:\n\n- chat bots and automations\n- integrations with other apps\n- social apps and services\n- etc.\n\nYou can join these and other groups by opening these links in the app or by opening them in a desktop browser and scanning the QR code.\n\n## Follow our updates\n\nWe publish our updates and releases via:\n\n- [Reddit](https://www.reddit.com/r/SimpleXChat/), [Twitter](https://twitter.com/SimpleXChat), [Lemmy](https://lemmy.ml/c/simplex), [Mastodon](https://mastodon.social/@simplex) and [Nostr](https://snort.social/p/npub1exv22uulqnmlluszc4yk92jhs2e5ajcs6mu3t00a6avzjcalj9csm7d828).\n- SimpleX Chat [team profile](#connect-to-the-team).\n- [blog](https://simplex.chat/blog/) and [RSS feed](https://simplex.chat/feed.rss).\n- [mailing list](https://simplex.chat/#join-simplex), very rarely.\n\n## Make a private connection\n\nYou need to share a link with your friend or scan a QR code from their phone, in person or during a video call, to make a connection and start messaging.\n\nThe channel through which you share the link does not have to be secure - it is enough that you can confirm who sent you the message and that your SimpleX connection is established.\n\n<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app1.png\" alt=\"Make a private connection\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/arrow.png\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app2.png\" alt=\"Conversation\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/arrow.png\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app3.png\" alt=\"Video call\" height=\"360\">\n\nAfter you connect, you can [verify connection security code](./blog/20230103-simplex-chat-v4.4-disappearing-messages.md#connection-security-verification).\n\n## User guide (NEW)\n\nRead about the app features and settings in the new [User guide](./docs/guide/README.md).\n\n## Contribute\n\nWe would love to have you join the development! You can help us with:\n\n- [develop a chat bot](#develop-a-chat-bot) for SimpleX Chat!\n- writing a tutorial or recipes about hosting servers, chat bots, etc.\n- developing features - please connect to us via chat so we can help you get started.\n\n## Help translating SimpleX Chat\n\nThanks to our users and [Weblate](https://hosted.weblate.org/engage/simplex-chat/), SimpleX Chat apps, website and documents are translated to many other languages.\n\nJoin our translators to help SimpleX grow!\n\n|locale|language |contributor|[Android](https://play.google.com/store/apps/details?id=chat.simplex.app) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084)|[website](https://simplex.chat)|Github docs|\n|:----:|:-------:|:---------:|:---------:|:---------:|:---------:|\n|🇬🇧 en|English   | |✓|✓|✓|✓|\n|ar|العربية   |[jermanuts](https://github.com/jermanuts)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/ar/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ar/)<br>-|[![website](https://hosted.weblate.org/widgets/simplex-chat/ar/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/ar/)||\n|🇧🇬 bg|Български | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/bg/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/bg/)<br>[![ios app](https://hosted.weblate.org/widget/simplex-chat/ios/bg/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/bg/)|||\n|🇨🇿 cs|Čeština   |[zen0bit](https://github.com/zen0bit)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/cs/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/cs/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/cs/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/cs/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/cs/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/cs/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/cs)|\n|🇩🇪 de|Deutsch   |[mlanp](https://github.com/mlanp)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/de/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/de/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/de/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/de/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/de/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/de/)||\n|🇪🇸 es|Español   |[Mateyhv](https://github.com/Mateyhv)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/es/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/es/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/es/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/es/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/es/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/es/)||\n|🇫🇮 fi|Suomi     | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/fi/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fi/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fi/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fi/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fi/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fi/)||\n|🇫🇷 fr|Français  |[ishi_sama](https://github.com/ishi-sama)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/fr/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fr/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fr/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fr/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fr/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fr/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/fr)|\n|🇮🇱 he|עִברִית     | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/he/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/he/)<br>-|||\n|🇭🇺 hu|Magyar    | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/hu/android/svg-badge.svg)](https://hosted.webl",
    "strategic_keywords": [
      "workflow",
      "protocol"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 14,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "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": 43412,
    "forks": 3452,
    "stars_this_period": 1159,
    "source_slice": "python",
    "source_slices": [
      "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": 114,
      "created_at": "2026-02-24T02:10:24Z",
      "pushed_at": "2026-06-23T13:04:55Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 3452,
      "watchers": 124,
      "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": "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": 23945,
    "forks": 2252,
    "stars_this_period": 808,
    "source_slice": "all",
    "source_slices": [
      "all",
      "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": 320,
      "created_at": "2023-08-16T16:16:33Z",
      "pushed_at": "2026-06-27T14:39:34Z",
      "homepage": "https://www.cognee.ai",
      "default_branch": "main",
      "forks": 2252,
      "watchers": 72,
      "archived": false,
      "size_kb": 198847
    },
    "readme_content": "<div align=\"center\">\n  <a href=\"https://github.com/topoteretes/cognee\">\n    <img src=\"https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee-logo-transparent.png\" alt=\"Cognee Logo\" height=\"60\">\n  </a>\n\n  <br />\n\n  Cognee - The Open-Source AI Memory Platform for Agents\n\n  <p align=\"center\">\n  <a href=\"https://www.youtube.com/watch?v=8hmqS2Y5RVQ&t=13s\">Demo</a>\n  .\n  <a href=\"https://docs.cognee.ai/\">Docs</a>\n  .\n  <a href=\"https://cognee.ai\">Learn More</a>\n  ·\n  <a href=\"https://discord.gg/NQPKmU5CCg\">Join Discord</a>\n  ·\n  <a href=\"https://www.reddit.com/r/AIMemory/\">Join r/AIMemory</a>\n  .\n  <a href=\"https://github.com/topoteretes/cognee-community\">Community Plugins & Add-ons</a>\n  </p>\n\n\n  [![GitHub forks](https://img.shields.io/github/forks/topoteretes/cognee.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/network/)\n  [![GitHub stars](https://img.shields.io/github/stars/topoteretes/cognee.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/stargazers/)\n  [![GitHub commits](https://badgen.net/github/commits/topoteretes/cognee)](https://GitHub.com/topoteretes/cognee/commit/)\n  [![GitHub tag](https://badgen.net/github/tag/topoteretes/cognee)](https://github.com/topoteretes/cognee/tags/)\n  [![Downloads](https://static.pepy.tech/badge/cognee)](https://pepy.tech/project/cognee)\n  [![License](https://img.shields.io/github/license/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/blob/main/LICENSE)\n  [![Contributors](https://img.shields.io/github/contributors/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/graphs/contributors)\n  <a href=\"https://github.com/sponsors/topoteretes\"><img src=\"https://img.shields.io/badge/Sponsor-❤️-ff69b4.svg\" alt=\"Sponsor\"></a>\n\n<p>\n  <a href=\"https://trendshift.io/repositories/13955\" target=\"_blank\" style=\"display:inline-block;\">\n    <img src=\"https://trendshift.io/api/badge/repositories/13955\" alt=\"topoteretes%2Fcognee | Trendshift\" width=\"250\" height=\"55\" />\n  </a>\n</p>\n\nCognee is the open-source AI memory platform that gives AI agents persistent long-term memory across sessions. Ingest data in any format, build a self-hosted knowledge graph, and let every agent recall, connect, and act with full context\n\n  <p align=\"center\">\n  🌐 This README is also available in:\n  :\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=de\">Deutsch</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=es\">Español</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=fr\">Français</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ja\">日本語</a> |\n  <a href=\"README_ko.md\">한국어</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=pt\">Português</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ru\">Русский</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=zh\">中文</a>\n  </p>\n\n<p align=\"center\">\n  <img src=\"assets/cognee-demo.gif\" alt=\"Cognee Demo\" width=\"80%\" />\n</p>\n</div>\n\n📄 Read the research paper: [Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning](https://arxiv.org/abs/2505.24478) — Markovic et al., 2025\n\n\n## About Cognee\n\nCognee is an open-source AI memory platform for AI Agents. Ingest data in any format, and Cognee continuously builds a self-hosted knowledge graph that gives your agents persistent long-term memory across sessions. Cognee combines vector embeddings, graph reasoning, and cognitive-science-grounded ontology generation to make documents both searchable by meaning and connected by relationships that evolve as your knowledge does.\n\n:star: _Help us reach more developers and grow the cognee community. Star this repo!_\n\n:books: _Check our detailed [documentation](https://docs.cognee.ai/getting-started/installation#environment-configuration) for setup and configuration._\n\n:crab: _Available as a plugin for your OpenClaw — [cognee-openclaw](https://www.npmjs.com/package/@cognee/cognee-openclaw)_\n\n✴️ _Available as a plugin for your Claude Code — [claude-code-plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code)_\n\n🦀 _Available as a Rust client — [cognee-rs](https://github.com/topoteretes/cognee-rs)_\n\n🟦 _Available as a TypeScript client — [@cognee/cognee-ts](https://www.npmjs.com/package/@cognee/cognee-ts)_\n\n\n\n### Why use Cognee:\n\n- Easily Build Company Brain - unify data from various sources in one place and enable Agents with your domain knowledge\n- Knowledge infrastructure — unified ingestion, graph/vector search, runs locally, ontology grounding, multimodal\n- Persistent and Learning Agents - learn from feedback, context management, cross-agent knowledge sharing\n- Reliable and Trustworthy Agents - agentic user/tenant isolation, traceability, OTEL collector, audit traits\n\n### How it Works\n\n<p align=\"center\">\n  <img src=\"assets/remember.svg\" alt=\"Cognee Products\" width=\"80%\" />\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/recall.svg\" alt=\"Cognee Recall\" width=\"80%\" />\n</p>\n\n## Basic Usage & Feature Guide\n\nTo learn more, [check out this short, end-to-end Colab walkthrough](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing) of Cognee's core features.\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing)\n\n## Quickstart\n\nLet’s try Cognee in just a few lines of code.\n\n### Prerequisites\n\n- Python 3.10 to 3.14\n\n### Step 1: Install Cognee\n\nYou can install Cognee with **pip**, **poetry**, **uv**, or your preferred Python package manager.\n\n```bash\nuv pip install cognee\n```\n\n### Step 2: Configure the LLM\n```python\nimport os\nos.environ[\"LLM_API_KEY\"] = \"YOUR OPENAI_API_KEY\"\n```\nAlternatively, create a `.env` file using our [template](https://github.com/topoteretes/cognee/blob/main/.env.template).\n\nTo integrate other LLM providers, see our [LLM Provider Documentation](https://docs.cognee.ai/setup-configuration/llm-providers).\n\n### Step 3: Run the Pipeline\n\nCognee's API gives you four operations — `remember`, `recall`, `forget`, and `improve`:\n\n```python\nimport cognee\nimport asyncio\n\n\nasync def main():\n    # Store permanently in the knowledge graph (runs add + cognify + improve)\n    await cognee.remember(\"Cognee turns documents into AI memory.\")\n\n    # Store in session memory (fast cache, syncs to graph in background)\n    await cognee.remember(\"User prefers detailed explanations.\", session_id=\"chat_1\")\n\n    # Query with auto-routing (picks best search strategy automatically)\n    results = await cognee.recall(\"What does Cognee do?\")\n    for result in results:\n        print(result)\n\n    # Query session memory first, fall through to graph if needed\n    results = await cognee.recall(\"What does the user prefer?\", session_id=\"chat_1\")\n    for result in results:\n        print(result)\n\n    # Delete when done\n    await cognee.forget(dataset=\"main_dataset\")\n\n\nif __name__ == '__main__':\n    asyncio.run(main())\n\n```\n\n### Use the Cognee CLI\n\n```bash\ncognee-cli remember \"Cognee turns documents into AI memory.\"\n\ncognee-cli recall \"What does Cognee do?\"\n\ncognee-cli forget --all\n```\n\nTo open the local UI, run:\n```bash\ncognee-cli -ui\n```\n\n> **Note:** The MCP server launched by `cognee-cli -ui` runs inside a Docker container.\n> Docker Desktop, Colima, or any OCI-compatible runtime with a working `docker` CLI is\n> required. See [Docker & Colima Setup](docs/docker-colima-setup.md) for details.\n\n## Run with Docker\n\nPrefer containers? Cognee publishes prebuilt images to Docker Hub on every push to `main`:\n[`cognee/cognee`](https://hub.docker.com/r/cognee/cognee) (the API server) and\n[`cognee/cognee-mcp`](https://hub.docker.com/r/cognee/cognee-mcp) (the MCP server).\n\n### Option A — Docker Compose (build from source)\n\nClone the repo, create a `.env` with at least `LLM_API_KEY`, then:\n\n```bash\ncp .env.template .env   # then edit .env and set LLM_API_KEY\n\n# Start the API server (http://localhost:8000)\ndocker compose up\n\n# Optional profiles (combine as needed):\ndocker compose --profile ui up        # + frontend on http://localhost:3000\ndocker compose --profile mcp up       # + MCP server on http://localhost:8001\ndocker compose --profile postgres up  # + Postgres/PGVector\ndocker compose --profile neo4j up     # + Neo4j\n```\n\n> The `cognee` and `cognee-mcp` services publish different host ports (`8000` vs `8001`),\n> so you can run both at once.\n\n### Option B — Pull the prebuilt image (no clone required)\n\n```bash\n# Create a minimal .env in the current directory\necho 'LLM_API_KEY=\"YOUR_OPENAI_API_KEY\"' > .env\n\n# API server\ndocker run --env-file ./.env -p 8000:8000 --rm -it cognee/cognee:main\n\n# MCP server (HTTP transport)\ndocker pull cognee/cognee-mcp:main\ndocker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main\n```\n\nSee the [MCP server README](cognee-mcp/README.md) for SSE/stdio transports, optional\nextras, and MCP client configuration.\n\n## Use with AI Agents\n\n### Claude Code\n\nInstall the [Cognee memory plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) to give Claude Code persistent memory across sessions. The plugin captures prompts, tool traces, and assistant responses into session memory, injects relevant context on every prompt, and syncs session memory into the permanent knowledge graph at session end.\n\n**Install** from the Claude Code marketplace. The recommended way is from your shell, *before* launching Claude Code, so the first `claude` launch is a clean session that bootstraps memory automatically:\n\n```bash\n# Add the marketplace and install the plugin (one-time, user-scoped)\nclaude plugin marketplace add topoteretes/cognee-integrations\nclaude plugin install cognee-memory@cognee\n\n# Set env vars for your mode (see below), then launch\nexport LLM_API_KEY=\"sk-...\"   # local mode; or COGNEE_BASE_URL + COGNEE_API_KEY for cloud\nclaude\n```\n\n**Local mode** (default) — the plugin bootstraps a local Cognee API at `http://localhost:8011`. Only `LLM_API_KEY` is required; the Cognee API key is auto-minted if absent:\n\n```bash\nexport LLM_API_KEY=\"sk-...\"\n```\n\n**Cognee Cloud or a remote server** — set both:\n\n```bash\nexport COGNEE_BASE_URL=\"https://your-instance.cognee.ai\"\nexport COGNEE_API_KEY=\"ck_...\"\n```\n\nOn startup you should see a \"Cognee Memory Connected\" system message.\n\nThe plugin hooks into Claude Code's lifecycle — `SessionStart` selects mode and sets up identity, `UserPromptSubmit` injects dataset-scoped context, `PostToolUse` captures tool traces, `Stop` writes the assistant's answer, `PreCompact` preserves memory across context resets, and `SessionEnd` triggers the final sync into the permanent graph.\n\nSee the [plugin README](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) for sessions, datasets, and full configuration.\n\n### Connect to Cognee Cloud\n\nPoint any Python agent at a managed Cognee instance — all SDK calls route to the cloud:\n\n```python\nimport cognee\n\nawait cognee.serve(url=\"https://your-instance.cognee.ai\", api_key=\"ck_...\")\n\nawait cognee.remember(\"important context\")\nresults = await cognee.recall(\"what happened?\")\n\nawait cognee.disconnect()\n```\n\n## Examples\n\nBrowse more examples in the [`examples/`](examples/) folder — demos, guides, custom pipelines, and database configurations.\n\n**Use Case 1 — Customer Support Agent**\n\n```python\nGoal: Resolve customer issues using their personal data across finance, support, and product history.\n\nUser: \"My invoice looks wrong and the issue is still not resolved.\"\n\nCognee tracks: past interactions, failed actions, resolved cases, product history\n\n# Agent response:\nAgent: \"I found 2 similar billing cases resolved last month.\n        The issue was caused by a syn",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"cognee\"\n\nversion = \"1.2.2\"\ndescription = \"Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning.\"\nauthors = [\n    { name = \"Vasilije Markovic\" },\n    { name = \"Boris Arzentar\" },\n]\nrequires-python = \">=3.10,<3.15\"\nreadme = \"README.md\"\nlicense = \"Apache-2.0\"\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Topic :: Software Development :: Libraries\",\n    \"Operating System :: MacOS :: MacOS X\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Operating System :: Microsoft :: Windows\",\n]\ndependencies = [\n    \"openai>=1.80.1\",\n    \"python-dotenv>=1.0.1,<2.0.0\",\n    \"pydantic>=2.10.5\",\n    # GHSA-4xgf-cpjx-pc3j: 2.12.0–2.14.1 vulnerable, fixed in 2.14.2. Exclude the\n    # vulnerable range rather than capping, so the patched 2.14.2+ is adopted once\n    # it clears the `exclude-newer` window (it was <2 days old at time of writing).\n    \"pydantic-settings>=2.2.1,!=2.12.*,!=2.13.*,!=2.14.0,!=2.14.1,<3\",\n    \"typing_extensions>=4.12.2,<5.0.0\",\n    \"numpy>=1.26.4, <=4.0.0\",\n    \"sqlalchemy>=2.0.39,<3.0.0\",\n    \"aiosqlite>=0.20.0,<1.0.0\",\n    \"filelock>=3.12.0,<4.0.0\",  # cross-process migration lock for SQLite (Linux/macOS/Windows)\n    \"tiktoken>=0.8.0,<1.0.0\",\n    \"litellm>=1.83.7\",\n    \"instructor>=1.9.1,<1.15.3\",\n    \"filetype>=1.2.0,<2.0.0\",\n    \"aiohttp>=3.13.5,<4.0.0\",\n    \"aiofiles>=23.2.1\",\n    \"rdflib>=7.1.4,<7.2.0\",\n    \"pypdf>=6.6.2,<7.0.0\",\n    \"jinja2>=3.1.3,<4\",\n    \"lancedb>=0.24.3,<1.0.0\",  # 0.24.2 bundles lance 0.32.0 whose list-column decoder panics on tables with deletion vectors\n    \"nbformat>=5.7.0,<6.0.0\",\n    \"alembic>=1.13.3,<2\",\n    \"limits>=4.4.1,<5\",\n    \"fastapi>=0.116.2,<1.0.0\",\n    \"starlette>=0.48\",\n    \"python-multipart>=0.0.22,<1.0.0\",\n    \"fastapi-users[sqlalchemy]>=15.0.2\",\n    \"structlog>=25.2.0,<26\",\n    \"pympler>=1.1,<2.0.0\",\n    \"pylance>=0.22.0,<=0.36.0\",\n    \"ladybug>=0.16.0,<0.18\",\n    \"python-magic-bin<0.5 ; platform_system == 'Windows'\", # Only needed for Windows\n    \"networkx>=3.4.2,<4\",\n    \"uvicorn>=0.34.0,<1.0.0\",\n    \"gunicorn>=20.1.0,<24\",\n    \"websockets>=15.0.1,<16.0.0\",\n    \"tenacity>=9.0.0\",\n    \"fakeredis[lua]>=2.32.0\",\n    \"diskcache>=5.6.3\",\n    \"aiolimiter>=1.2.1\",\n    \"urllib3>=2.6.0\",\n    \"cbor2>=5.8.0\",\n    \"langdetect>=1.0.9\",\n    \"datamodel-code-generator>=0.54.0\",\n]\n\n[project.optional-dependencies]\napi=[]\n\ndistributed = [\n    \"modal>=1.0.5,<2.0.0\",\n]\n\nscraping = [\n    \"tavily-python>=0.7.12\",\n    \"beautifulsoup4>=4.13.1\",\n    \"playwright>=1.9.0\",\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1; without this 3.14 falls back to a\n    # source build that requires libxml2/libxslt headers (CI doesn't have them).\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"protego>=0.1\",\n    \"APScheduler>=3.10.0,<=3.11.0\"\n]\n\nfastembed = [\n    \"fastembed<=0.8.0\",\n    # onnxruntime 1.23.2 only ships wheels through cp313; cp314 wheels start\n    # at onnxruntime 1.24.1. Split by python_version so existing 3.10–3.13\n    # users keep the pinned version and 3.14 picks up the first cp314-capable\n    # release.\n    \"onnxruntime<=1.23.2 ; python_version < '3.14'\",\n    \"onnxruntime>=1.24.1 ; python_version >= '3.14'\",\n]\n\nneo4j = [\"neo4j>=5.28.0,<6\"]\nneptune = [\"langchain_aws>=0.2.22\"]\npostgres = [\n    \"psycopg2>=2.9.10,<3\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\npostgres-binary = [\n    \"psycopg2-binary>=2.9.10,<3.0.0\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\nnotebook = [\"notebook>=7.1.0,<8\"]\nlangchain = [\n    \"langsmith>=0.2.3,<1.0.0\",\n    \"langchain_text_splitters>=0.3.2,<1.0.0\",\n    \"langchain-core>=1.2.5\"\n]\nllama-index = [\"llama-index-core>=0.14.20,<0.15\"]\nhuggingface = [\"transformers>=4.46.3,<5\"]\nollama = [\"transformers>=4.46.3,<5\"]\nmistral = [\"mistral-common>=1.5.2,<2\", \"mistralai>=1.9.10,<2\"]\nanthropic = [\"anthropic>=0.27\"]\nazure = [\"azure-identity>=1.15.0,<2\"]\ndeepeval = [\"deepeval>=3.0.1,<4\"]\nposthog = [\"posthog>=3.5.0,<4\"]\ngroq = [\"groq>=0.8.0,<1.0.0\"]\nllama-cpp = [\"llama-cpp-python[server]>=0.3.0,<1.0.0\"]\ndocs = [\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1.\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"unstructured[csv, doc, docx, epub, md, odt, org, ppt, pptx, rst, rtf, tsv, xlsx, pdf]>=0.18.1,<19\",\n    \"nltk>=3.9.3,<4\", # TODO: Remove when unstructured is above v0.21.0 as it won't use nltk anymore\n]\ncodegraph = [\n    \"fastembed<=0.8.0 ; python_version < '3.14'\",\n    \"transformers>=4.46.3,<5\",\n    \"tree-sitter>=0.24.0,<0.25\",\n    \"tree-sitter-python>=0.23.6,<0.24\",\n]\nevals = [\n    \"plotly>=6.0.0,<7\",\n    \"gdown>=5.2.0,<6\",\n    \"pandas>=2.2.2,<3.0.0\",\n    \"matplotlib>=3.8.3,<4\",\n    \"scikit-learn>=1.6.1,<2\",\n    \"locust>",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "rag",
      "skill",
      "llm",
      "vector",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 97
    },
    "strategic_score": 97
  },
  {
    "owner": "opendatalab",
    "name": "MinerU",
    "full_name": "opendatalab/MinerU",
    "url": "https://github.com/opendatalab/MinerU",
    "description": "Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.",
    "language": "Python",
    "total_stars": 71013,
    "forks": 5974,
    "stars_this_period": 805,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "ai4science",
        "document-analysis",
        "docx",
        "extract-data",
        "layout-analysis",
        "ocr",
        "parser",
        "pdf",
        "pdf-converter",
        "pdf-extractor-llm",
        "pdf-extractor-pretrain",
        "pdf-extractor-rag",
        "pdf-parser",
        "pptx",
        "python",
        "xlsx"
      ],
      "license": "NOASSERTION",
      "open_issues": 28,
      "created_at": "2024-02-29T08:52:34Z",
      "pushed_at": "2026-06-27T07:38:39Z",
      "homepage": "https://opendatalab.github.io/MinerU/",
      "default_branch": "master",
      "forks": 5974,
      "watchers": 260,
      "archived": false,
      "size_kb": 156331
    },
    "readme_content": "<div align=\"center\" xmlns=\"http://www.w3.org/1999/html\">\n<!-- logo -->\n<p align=\"center\">\n  <img src=\"https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docs/images/MinerU-logo.png\" width=\"300px\" style=\"vertical-align:middle;\">\n</p>\n\n<!-- icon -->\n\n[![stars](https://img.shields.io/github/stars/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![forks](https://img.shields.io/github/forks/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![open issues](https://img.shields.io/github/issues-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![issue resolution](https://img.shields.io/github/issues-closed-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![PyPI version](https://img.shields.io/pypi/v/mineru)](https://pypi.org/project/mineru/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mineru)](https://pypi.org/project/mineru/)\n[![Downloads](https://static.pepy.tech/badge/mineru)](https://pepy.tech/project/mineru)\n[![Downloads](https://static.pepy.tech/badge/mineru/month)](https://pepy.tech/project/mineru)\n[![OpenDataLab](https://img.shields.io/badge/webapp_on_mineru.net-blue?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTM0IiBoZWlnaHQ9IjEzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIyLDljMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Im0xMjIsOWMwLDUtNCw5LTksOXMtOS00LTktOSw0LTksOS05LDksNCw5LDl6IiBmaWxsPSIjMDEwMTAxIi8+PHBhdGggZD0ibTkxLDE4YzAsNS00LDktOSw5cy05LTQtOS05LDQtOSw5LTksOSw0LDksOXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJtOTEsMThjMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0iIzAxMDEwMSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0iIzAxMDEwMSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=&labelColor=white)](https://mineru.net/OpenSourceTools/Extractor?source=github)\n[![HuggingFace](https://img.shields.io/badge/Demo_on_HuggingFace-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABYCAMAAACkl9t/AAAAk1BMVEVHcEz/nQv/nQv/nQr/nQv/nQr/nQv/nQv/nQr/wRf/txT/pg7/yRr/rBD/zRz/ngv/oAz/zhz/nwv/txT/ngv/0B3+zBz/nQv/0h7/wxn/vRb/thXkuiT/rxH/pxD/ogzcqyf/nQvTlSz/czCxky7/SjifdjT/Mj3+Mj3wMj15aTnDNz+DSD9RTUBsP0FRO0Q6O0WyIxEIAAAAGHRSTlMADB8zSWF3krDDw8TJ1NbX5efv8ff9/fxKDJ9uAAAGKklEQVR42u2Z63qjOAyGC4RwCOfB2JAGqrSb2WnTw/1f3UaWcSGYNKTdf/P+mOkTrE+yJBulvfvLT2A5ruenaVHyIks33npl/6C4s/ZLAM45SOi/1FtZPyFur1OYofBX3w7d54Bxm+E8db+nDr12ttmESZ4zludJEG5S7TO72YPlKZFyE+YCYUJTBZsMiNS5Sd7NlDmKM2Eg2JQg8awbglfqgbhArjxkS7dgp2RH6hc9AMLdZYUtZN5DJr4molC8BfKrEkPKEnEVjLbgW1fLy77ZVOJagoIcLIl+IxaQZGjiX597HopF5CkaXVMDO9Pyix3AFV3kw4lQLCbHuMovz8FallbcQIJ5Ta0vks9RnolbCK84BtjKRS5uA43hYoZcOBGIG2Epbv6CvFVQ8m8loh66WNySsnN7htL58LNp+NXT8/PhXiBXPMjLSxtwp8W9f/1AngRierBkA+kk/IpUSOeKByzn8y3kAAAfh//0oXgV4roHm/kz4E2z//zRc3/lgwBzbM2mJxQEa5pqgX7d1L0htrhx7LKxOZlKbwcAWyEOWqYSI8YPtgDQVjpB5nvaHaSnBaQSD6hweDi8PosxD6/PT09YY3xQA7LTCTKfYX+QHpA0GCcqmEHvr/cyfKQTEuwgbs2kPxJEB0iNjfJcCTPyocx+A0griHSmADiC91oNGVwJ69RudYe65vJmoqfpul0lrqXadW0jFKH5BKwAeCq+Den7s+3zfRJzA61/Uj/9H/VzLKTx9jFPPdXeeP+L7WEvDLAKAIoF8bPTKT0+TM7W8ePj3Rz/Yn3kOAp2f1Kf0Weony7pn/cPydvhQYV+eFOfmOu7VB/ViPe34/EN3RFHY/yRuT8ddCtMPH/McBAT5s+vRde/gf2c/sPsjLK+m5IBQF5tO+h2tTlBGnP6693JdsvofjOPnnEHkh2TnV/X1fBl9S5zrwuwF8NFrAVJVwCAPTe8gaJlomqlp0pv4Pjn98tJ/t/fL++6unpR1YGC2n/KCoa0tTLoKiEeUPDl94nj+5/Tv3/eT5vBQ60X1S0oZr+IWRR8Ldhu7AlLjPISlJcO9vrFotky9SpzDequlwEir5beYAc0R7D9KS1DXva0jhYRDXoExPdc6yw5GShkZXe9QdO/uOvHofxjrV/TNS6iMJS+4TcSTgk9n5agJdBQbB//IfF/HpvPt3Tbi7b6I6K0R72p6ajryEJrENW2bbeVUGjfgoals4L443c7BEE4mJO2SpbRngxQrAKRudRzGQ8jVOL2qDVjjI8K1gc3TIJ5KiFZ1q+gdsARPB4NQS4AjwVSt72DSoXNyOWUrU5mQ9nRYyjp89Xo7oRI6Bga9QNT1mQ/ptaJq5T/7WcgAZywR/XlPGAUDdet3LE+qS0TI+g+aJU8MIqjo0Kx8Ly+maxLjJmjQ18rA0YCkxLQbUZP1WqdmyQGJLUm7VnQFqodmXSqmRrdVpqdzk5LvmvgtEcW8PMGdaS23EOWyDVbACZzUJPaqMbjDxpA3Qrgl0AikimGDbqmyT8P8NOYiqrldF8rX+YN7TopX4UoHuSCYY7cgX4gHwclQKl1zhx0THf+tCAUValzjI7Wg9EhptrkIcfIJjA94evOn8B2eHaVzvBrnl2ig0So6hvPaz0IGcOvTHvUIlE2+prqAxLSQxZlU2stql1NqCCLdIiIN/i1DBEHUoElM9dBravbiAnKqgpi4IBkw+utSPIoBijDXJipSVV7MpOEJUAc5Qmm3BnUN+w3hteEieYKfRZSIUcXKMVf0u5wD4EwsUNVvZOtUT7A2GkffHjByWpHqvRBYrTV72a6j8zZ6W0DTE86Hn04bmyWX3Ri9WH7ZU6Q7h+ZHo0nHUAcsQvVhXRDZHChwiyi/hnPuOsSEF6Exk3o6Y9DT1eZ+6cASXk2Y9k+6EOQMDGm6WBK10wOQJCBwren86cPPWUcRAnTVjGcU1LBgs9FURiX/e6479yZcLwCBmTxiawEwrOcleuu12t3tbLv/N4RLYIBhYexm7Fcn4OJcn0+zc+s8/VfPeddZHAGN6TT8eGczHdR/Gts1/MzDkThr23zqrVfAMFT33Nx1RJsx1k5zuWILLnG/vsH+Fv5D4NTVcp1Gzo8AAAAAElFTkSuQmCC&labelColor=white)](https://huggingface.co/spaces/opendatalab/MinerU)\n[![ModelScope](https://img.shields.io/badge/Demo_on_ModelScope-purple?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIzIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBhdGggaWQ9InN2Z18xNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTAsODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTUiIGZpbGw9IiM2MjRhZmYiIGQ9Im05OS4xNCwxMTUuNDlsMjUuNjUsMGwwLDI1LjY1bC0yNS42NSwwbDAsLTI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTYiIGZpbGw9IiM2MjRhZmYiIGQ9Im0xNzYuMDksMTQxLjE0bC0yNS42NDk5OSwwbDAsMjIuMTlsNDcuODQsMGwwLC00Ny44NGwtMjIuMTksMGwwLDI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTciIGZpbGw9IiMzNmNmZDEiIGQ9Im0xMjQuNzksODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTgiIGZpbGw9IiMzNmNmZDEiIGQ9Im0wLDY0LjE5bDI1LjY1LDBsMCwyNS42NWwtMjUuNjUsMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzE5IiBmaWxsPSIjNjI0YWZmIiBkPSJtMTk4LjI4LDg5Ljg0bDI1LjY0OTk5LDBsMCwyNS42NDk5OWwtMjUuNjQ5OTksMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIwIiBmaWxsPSIjMzZjZmQxIiBkPSJtMTk4LjI4LDY0LjE5bDI1LjY0OTk5LDBsMCwyNS42NWwtMjUuNjQ5OTksMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIxIiBmaWxsPSIjNjI0YWZmIiBkPSJtMTUwLjQ0LDQybDAsMjIuMTlsMjUuNjQ5OTksMGwwLDI1LjY1bDIyLjE5LDBsMCwtNDcuODRsLTQ3Ljg0LDB6Ii8+CiAgPHBhdGggaWQ9InN2Z18yMiIgZmlsbD0iIzM2Y2ZkMSIgZD0ibTczLjQ5LDg5Ljg0bDI1LjY1LDBsMCwyNS42NDk5OWwtMjUuNjUsMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIzIiBmaWxsPSIjNjI0YWZmIiBkPSJtNDcuODQsNjQuMTlsMjUuNjUsMGwwLC0yMi4xOWwtNDcuODQsMGwwLDQ3Ljg0bDIyLjE5LDBsMCwtMjUuNjV6Ii8+CiAgPHBhdGggaWQ9InN2Z18yNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTQ3Ljg0LDExNS40OWwtMjIuMTksMGwwLDQ3Ljg0bDQ3Ljg0LDBsMCwtMjIuMTlsLTI1LjY1LDBsMCwtMjUuNjV6Ii8+CiA8L2c+Cjwvc3ZnPg==&labelColor=white)](https://www.modelscope.cn/studios/OpenDataLab/MinerU)\n[![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/myhloli/a3cb16570ab3cfeadf9d8f0ac91b4fca/mineru_demo.ipynb)\n[![arXiv](https://img.shields.io/badge/MinerU-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2409.18839)\n[![arXiv](https://img.shields.io/badge/MinerU2.5-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2509.22186)\n[![arXiv](https://img.shields.io/badge/MinerU2.5%20Pro-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2604.04771)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/opendatalab/MinerU)\n\n\n<a href=\"https://trendshift.io/repositories/11174\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/11174\" alt=\"opendatalab%2FMinerU | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n\n<!-- language -->\n\n[English](README.md) | [简体中文](README_zh-CN.md)\n\n<!-- hot link -->\n\n<p align=\"center\">\n🚀<a href=\"https://mineru.net/?source=github\">Access MinerU Now→✅ Zero-Install Web Version ✅ Full-Featured Desktop Client ✅ Instant API Access; Skip deployment headaches – get all product formats in one click. Developers, dive in!</a>\n</p>\n\n<!-- join us -->\n\n<p align=\"center\">\n    👋 join us on <a href=\"https://discord.gg/Tdedn9GTXq\" target=\"_blank\">Discord</a> and <a href=\"https://mineru.net/community-portal/?aliasId=3c430f94\" target=\"_blank\">WeChat</a>\n</p>\n\n</div>\n\n\n<details>\n<summary>MinerU — High-accuracy document parsing engine for LLM · RAG · Agent workflows</summary>\nConverts PDF · DOCX · PPTX · XLSX · Images · Web pages into structured Markdown / JSON · VLM+OCR dual engine · 109 languages <br>\nMCP Server · LangChain / Dify / FastGPT native integration · 10+ domestic AI chip support\n\n**🔍 Core Parsing Capabilities**\n\n- Native support for `DOCX`, `PPTX`, and `XLSX` parsing\n- Formulas → LaTeX · Tables → HTML, accurate layout reconstruction\n- Supports scanned docs, handwriting, multi-column layouts, cross-page table merging\n- Output follows human reading order with automatic header/footer removal\n- VLM + OCR dual engine, 109-language OCR recognition\n\n**🔌 Integration**\n\n| Use Case | Solution |\n|----------|----------|\n| AI Coding Tools | MCP Server — Cursor · Claude Desktop · Windsurf |\n| RAG Frameworks | LangChain · LlamaIndex · RAGFlow · RAG-Anything · Flowise · Dify · FastGPT |\n| Development | Python / Go / TypeScript SDK · CLI · REST API · Docker |\n| No-Code | mineru.net online · Gradio WebUI · Desktop client |\n\n**🖥️ Deployment (Private · Fully Offline)**\n\n| Inference Backend | Best For |\n|------------------|---------|\n| pipeline         | Fast & stable, no hallucination, runs on CPU or GPU |\n| vlm-engine       | High accuracy, supports vLLM / LMDeploy / mlx ecosystem |\n| hybrid-engine    | High accuracy, native text extraction, low hallucination |\n\nDomestic AI chips: Ascend · Cambricon · Enflame · MetaX · Moore Threads · Kunlunxin · Iluvatar · Hygon · Biren · T-Head\n</details>\n\n# Changelog\n\n- 2026/06/18 3.4 Released\n\n  This release focuses on **OCR capability upgrades for the pipeline backend**, **OCR processing pipeline optimization**, and **model download experience improvements**. The main updates include:\n\n  - OCR model upgrade and processing acceleration\n    - The OCR model for the `pipeline` backend has been upgraded to `PP-OCRv6`, improving OCR accuracy by about `11%` on OmniDocBench v1.6.\n    - Removed Japanese, Traditional Chinese, English, and Latin options from OCR language selection. These scenarios are now routed to the `ch` OCR model, simplifying model configuration and language selection.\n    - Optimized the OCR inference and processing pipeline, increasing OCR processing speed by about `100%` and significantly improving parsing efficiency for batch documents and OCR-intensive documents.\n\n  - Model download logic optimization\n    - Added automatic model source selection, allowing first-time installations to choose a better model source based on the current network environment.\n    - Before downloading models, MinerU now prioritizes checking locally downloaded model cache files. Cache hits can be reused directly, reducing repeated downloads and unnecessary remote requests.\n    - For more details about model source configuration, automatic source selection, and local model usage, see the [Model Source Document",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=77.0.3\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"mineru\"\ndynamic = [\"version\"]\nlicense = \"LicenseRef-MinerU-Open-Source-License\"\nlicense-files = [\"LICENSE.md\"]\ndescription = \"A practical document parsing tool for converting PDF, images, DOCX, PPTX, and XLSX into Markdown and JSON\"\nreadme = \"README.md\"\nrequires-python = \">=3.10,<3.14\"\nkeywords = [\n    \"mineru\",\n    \"magic-pdf\",\n    \"document-parsing\",\n    \"document-understanding\",\n    \"pdf\",\n    \"markdown\",\n    \"ocr\",\n    \"vlm\",\n    \"docx\",\n    \"pptx\",\n    \"xlsx\",\n    \"multimodal\",\n]\nclassifiers = [\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n]\ndependencies = [\n    \"click>=8.1.7\",\n    \"loguru>=0.7.2\",\n    \"numpy>=1.21.6\",\n    \"tqdm>=4.67.1\",\n    \"requests\",\n    \"httpx\",\n    \"pillow>=11.0.0\",\n    \"pypdfium2>=4.30.0\",\n    \"pypdf>=5.6.0\",\n    \"reportlab\",\n    \"pdftext>=0.6.3\",\n    \"modelscope>=1.26.0\",\n    \"huggingface-hub>=0.32.4\",\n    \"json-repair>=0.46.2\",\n    \"opencv-python>=4.11.0.86\",\n    \"fast-langdetect>=0.2.3,<0.3.0\",\n    \"openai>=1.70.0,<3\",\n    \"beautifulsoup4>=4.13.5,<5\",\n    \"magika>=0.6.2,<1.1.0\",\n    \"mineru-vl-utils>=1.0.5,<2\",\n    \"python-docx>=1.2.0,<2\",\n    'pypptx-with-oxml>=1.0.3,<2',\n    \"mammoth>=1.11.0,<2\",\n    \"pylatexenc>=2.10,<3\",\n    \"lxml>=4.0.0,<7.0.0\",\n    \"openpyxl>=3.1.5,<4\",\n    \"fastapi\",\n    \"python-multipart\",\n    \"uvicorn\",\n]\n\n[project.optional-dependencies]\ntest = [\n    \"mineru[core]\",\n    \"pytest\",\n    \"pytest-cov\",\n    \"coverage\",\n    \"fuzzywuzzy\",\n    \"tomli; python_version < '3.11'\",\n]\nvlm = [\n    \"torch>=2.6.0,<3\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"accelerate>=1.5.1\",\n]\nvllm = [\n    \"vllm>=0.10.1.1,<0.22.0\",\n]\nlmdeploy = [\n    \"lmdeploy>=0.10.2,<0.12\",\n    \"qwen-vl-utils>=0.0.14,<1\",\n]\nmlx = [\n    \"mlx-vlm>=0.3.3,<0.4\",\n    \"mlx<=0.31.1\",\n]\ns3 = [\n    \"boto3>=1.28.43\",\n]\npipeline = [\n    \"PyYAML>=6.0.1,<7\",\n    \"ftfy>=6.3.1,<7\",\n    \"shapely>=2.0.7,<3\",\n    \"pyclipper>=1.3.0,<2\",\n    \"torch>=2.6.0,<3\",\n    \"torchvision\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"safetensors>=0.4.0,<1\",\n    \"onnxruntime>1.17.0\",\n]\ngradio = [\n    \"gradio>=5.49.1,!=6.0.0,!=6.0.1,!=6.0.2,!=6.1.0,!=6.2.0,!=6.3.0,!=6.4.0,!=6.5.0,!=6.5.1,!=6.6.0,!=6.7.0,<6.9.0\",\n    \"gradio-pdf>=0.0.22\",\n]\ncore = [\n    \"mineru[vlm]\",\n    \"mineru[pipeline]\",\n    \"mineru[gradio]\",\n]\nall = [\n    \"mineru[core]\",\n    \"mineru[s3]\",\n    \"mineru[mlx] ; sys_platform == 'darwin'\",\n    \"mineru[vllm] ; sys_platform == 'linux'\",\n    \"mineru[lmdeploy] ; sys_platform == 'win32'\",\n]\n\n[project.urls]\nhomepage = \"https://mineru.net/\"\ndocumentation = \"https://opendatalab.github.io/MinerU/\"\nrepository = \"https://github.com/opendatalab/MinerU\"\nissues = \"https://github.com/opendatalab/MinerU/issues\"\nLicense = \"https://github.com/opendatalab/MinerU/blob/master/LICENSE.md\"\n\n[project.scripts]\nmineru = \"mineru.cli.client:main\"\nmineru-vllm-server = \"mineru.cli.vlm_server:vllm_server\"\nmineru-lmdeploy-server = \"mineru.cli.vlm_server:lmdeploy_server\"\nmineru-openai-server = \"mineru.cli.vlm_server:openai_server\"\nmineru-models-download = \"mineru.cli.models_download:download_models\"\nmineru-api = \"mineru.cli.fast_api:main\"\nmineru-router = \"mineru.cli.router:main\"\nmineru-gradio = \"mineru.cli.gradio_app:main\"\n\n[tool.setuptools.dynamic]\nversion = { attr = \"mineru.version.__version__\" }\n\n[tool.setuptools.packages.find]\ninclude = [\"mineru*\"]\nnamespaces = false\n\n[tool.setuptools.package-data]\n\"mineru\" = [\"resources/**\"]\n\"mineru.model.utils.pytorchocr.utils\" = [\"resources/**\"]\n\n[tool.setuptools]\ninclude-package-data = true\nzip-safe = false\n\n[tool.pytest.ini_options]\naddopts = \"-s --cov=mineru --cov-report html\"\n\n[tool.coverage.run]\ncommand_line = \"-m pytest tests/unittest/test_e2e.py\"\nsource = [\"mineru/\"]\nomit = [\n    \"*/gradio_app.py\",\n    \"*/models_download.py\",\n    \"*/fast_api.py\",\n    \"*/cli/client.py\",\n    \"*/vlm_vllm_server.py\",\n    \"*/cli_parser.py\",\n]\n\n[tool.coverage.html]\ndirectory = \"htmlcov\"\n\n[tool.coverage.report]\nexclude_also = [\n    'def __repr__',\n    'if self.debug:',\n    'if settings.DEBUG',\n    'raise AssertionError',\n    'raise NotImplementedError',\n    'if 0:',\n    'if __name__ == .__main__.:',\n    'if TYPE_CHECKING:',\n    'class .*\\bProtocol\\):',\n    '@(abc\\.)?abstractmethod',\n]\n\n[tool.ruff]\nline-length = 128\n\n[tool.ruff.lint]\nselect = [\"C\", \"E\", \"F\", \"W\", \"ANN\"]\nignore = [\"C901\", \"ANN204\", \"ANN401\"]\n",
    "strategic_keywords": [
      "agent",
      "rag",
      "llm",
      "workflow"
    ],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "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": 22074,
    "forks": 3165,
    "stars_this_period": 750,
    "source_slice": "all",
    "source_slices": [
      "all",
      "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": 18,
      "created_at": "2026-03-13T11:14:39Z",
      "pushed_at": "2026-06-01T04:09:21Z",
      "homepage": "https://dsc.gg/jcodesmore",
      "default_branch": "master",
      "forks": 3165,
      "watchers": 103,
      "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": "mauriceboe",
    "name": "TREK",
    "full_name": "mauriceboe/TREK",
    "url": "https://github.com/mauriceboe/TREK",
    "description": "A self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.",
    "language": "TypeScript",
    "total_stars": 8049,
    "forks": 682,
    "stars_this_period": 736,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "budget-tracker",
        "collaborative",
        "open-source",
        "opensource",
        "packing-list",
        "poi",
        "real-time",
        "routes",
        "self-hosted",
        "travel",
        "travel-app",
        "travel-planner",
        "traveling",
        "trip",
        "trip-planner",
        "tripit",
        "wanderlog",
        "wanderlust",
        "webapplication"
      ],
      "license": "AGPL-3.0",
      "open_issues": 9,
      "created_at": "2026-03-19T11:51:54Z",
      "pushed_at": "2026-06-27T19:17:29Z",
      "homepage": "https://demo.liketrek.com",
      "default_branch": "main",
      "forks": 682,
      "watchers": 14,
      "archived": false,
      "size_kb": 104452
    },
    "readme_content": "<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/logo-trek-light.gif\" />\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/logo-trek-dark.gif\" />\n  <img src=\"docs/logo-trek-dark.gif\" alt=\"TREK\" height=\"96\" />\n</picture>\n\n<br />\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/subtitle-light.png\" />\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/subtitle-dark.png\" />\n  <img src=\"docs/subtitle-dark.png\" alt=\"Your trips. Your plan. Your server.\" height=\"28\" />\n</picture>\n\nA self-hosted, real-time collaborative travel planner — with maps, budgets, packing lists, a journal, and AI built in.\n\n<br />\n\n<a href=\"https://demo.liketrek.com\"><img alt=\"Demo\" src=\"https://img.shields.io/badge/Demo-try-111827?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://hub.docker.com/r/mauriceboe/trek\"><img alt=\"Docker\" src=\"https://img.shields.io/badge/Docker-ready-2496ED?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://discord.gg/NhZBDSd4qW\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-join-5865F2?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://kanban.pakulat.org/shared/I4wxF6inOOMB0C6hH6kQm3efyNxFjwyI\"><img alt=\"Roadmap\" src=\"https://img.shields.io/badge/Roadmap-view-0EA5E9?style=for-the-badge\" /></a>\n<br />\n<a href=\"https://ko-fi.com/mauriceboe\"><img alt=\"Ko-fi\" src=\"https://img.shields.io/badge/Ko--fi-support-FF5E5B?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://www.buymeacoffee.com/mauriceboe\"><img alt=\"BMAC\" src=\"https://img.shields.io/badge/BMAC-support-FFDD00?style=for-the-badge\" /></a>\n<br />\n<a href=\"LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/badge/license-AGPL_v3-6B7280?style=flat-square\" /></a>\n<a href=\"https://github.com/mauriceboe/TREK/releases\"><img alt=\"Latest Release\" src=\"https://img.shields.io/github/v/release/mauriceboe/TREK?include_prereleases&style=flat-square&color=6B7280\" /></a>\n<a href=\"https://hub.docker.com/r/mauriceboe/trek\"><img alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/mauriceboe/trek?style=flat-square&color=6B7280\" /></a>\n<a href=\"https://github.com/mauriceboe/TREK\"><img alt=\"Stars\" src=\"https://img.shields.io/github/stars/mauriceboe/TREK?style=flat-square&color=6B7280\" /></a>\n\n</div>\n\n---\n\n<div align=\"center\">\n\n<img src=\"https://github.com/mauriceboe/trek-media/releases/download/readme-assets/TREK1.gif\" alt=\"TREK — 60-second tour\" width=\"100%\" />\n\n</div>\n\n<br />\n\n<div align=\"center\">\n  <a href=\"docs/screenshots/dashboard.png\"><img src=\"docs/screenshots/dashboard.png\" alt=\"Dashboard\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/trip-planner.png\"><img src=\"docs/screenshots/trip-planner.png\" alt=\"Trip planner with 3D map\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/journey.png\"><img src=\"docs/screenshots/journey.png\" alt=\"Journey journal\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/budget.png\"><img src=\"docs/screenshots/budget.png\" alt=\"Costs · expense splitting\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/atlas.png\"><img src=\"docs/screenshots/atlas.png\" alt=\"Atlas · visited countries\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/vacay.png\"><img src=\"docs/screenshots/vacay.png\" alt=\"Vacay planner\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/trip-iceland.png\"><img src=\"docs/screenshots/trip-iceland.png\" alt=\"Trip planner · day plan and route\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/admin.png\"><img src=\"docs/screenshots/admin.png\" alt=\"Admin panel\" width=\"49%\" /></a>\n</div>\n\n---\n\n## What you get\n\n<picture>\n  <source media=\"(max-width: 700px)\" srcset=\"docs/tiles/grid-mobile.svg\" />\n  <img src=\"docs/tiles/grid-desktop.svg\" alt=\"TREK feature tiles\" width=\"100%\" />\n</picture>\n\n<details>\n<summary><b>See all features</b></summary>\n\n<table>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧭 Trip planning\n\n- **Drag & drop planner** — organise places into day plans with reordering and cross-day moves\n- **Interactive map** — Leaflet or Mapbox GL with 3D buildings, terrain, photo markers, clustering, route visualization\n- **Place search** — Google Places (photos, ratings, hours) or OpenStreetMap (free, no API key)\n- **Place import** — shared Google Maps / Naver Maps lists, plus GPX and KML/KMZ/GeoJSON map files\n- **Day notes** — timestamped, icon-tagged notes with drag-and-drop reordering\n- **Route optimisation** — auto-sort places and export to Google Maps\n- **Weather forecasts** — 16-day via Open-Meteo (no key) + historical climate fallback\n- **Category filter** — show only matching pins on the map\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧳 Travel management\n\n- **Reservations** — flights, accommodations, restaurants with status, confirmation numbers, files; import from booking confirmation emails and PDFs ([KDE Itinerary](https://invent.kde.org/pim/kitinerary))\n- **Costs** — track and split trip expenses (Splitwise-style): per-person / per-day breakdowns, settle-up, multi-currency\n- **Packing lists** — categories, templates, user assignment, progress tracking\n- **Bag tracking** — optional weight tracking with iOS-style distribution\n- **Document manager** — attach docs, tickets, PDFs to trips / places / reservations (≤ 50 MB each)\n- **PDF export** — full trip plan as PDF with cover page, images, notes\n\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 👥 Collaboration\n\n- **Real-time sync** — WebSocket. Changes appear instantly across all connected users\n- **Multi-user trips** — invite members with role-based access\n- **Invite links** — one-time or reusable links with expiry\n- **SSO (OIDC)** — Google, Apple, Authentik, Keycloak, or any OIDC provider\n- **2FA** — TOTP + backup codes\n- **Passkeys** — passwordless WebAuthn login (fingerprint / face / PIN / security key), admin-toggleable\n- **Collab suite** — group chat, shared notes, polls, day check-ins\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 📱 Mobile & PWA\n\n- **Installable** — iOS and Android, straight from the browser, no App Store needed\n- **Offline support** — Service Worker caches tiles, API, uploads via Workbox\n- **Native feel** — fullscreen standalone, themed status bar, splash screen\n- **Touch optimised** — mobile-specific layouts with safe-area handling\n\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧩 Addons (admin-toggleable)\n\n- **Lists** — packing lists + to-dos with templates, member assignments, optional bag tracking\n- **Costs** — expense tracker with splits and settle-up (who owes whom), multi-currency\n- **Documents** — file attachments on trips, places, and reservations\n- **Collab** — chat, notes, polls, day-by-day attendance\n- **Vacay** — personal vacation planner with calendar, 100+ country holidays, carry-over tracking\n- **Atlas** — world map of visited countries, bucket list, travel stats, streak tracking, liquid-glass UI\n- **Journey** — magazine-style travel journal with entries, photos (Immich/Synology), maps, moods\n- **AirTrail** — connect a self-hosted AirTrail instance to import and sync flights into reservations\n- **MCP** — expose TREK to AI assistants via OAuth 2.1\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 🤖 AI / MCP\n\n- **Built-in MCP server** — OAuth 2.1 authenticated. 150+ tools, 30 resources\n- **Granular scopes** — 27 OAuth scopes across 13 permission groups\n- **Full automation** — AI can create trips, plan days, build packing lists, manage budgets, mark countries visited\n- **Pre-built prompts** — `trip-summary`, `packing-list`, `budget-overview`\n- **Addon-aware** — exposes Atlas, Collab, Vacay when those addons are on\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\">\n\n#### ⚙️ Admin & customisation\n\n- **Dashboard views** — card grid or compact list · **Dark mode** — full theme with matching status bar\n- **20 languages** — EN, DE, ES, FR, IT, NL, HU, RU, ZH, ZH-TW, PL, CS, AR (RTL), BR, ID, TR, JA, KO, UK, GR\n- **Admin panel** — users, invites, packing templates, categories, addons, API keys, backups, GitHub history\n- **Notifications** — per-user preferences across email (SMTP), webhook, ntfy, and an in-app notification center\n- **Auto-backups** — scheduled with configurable retention · **Units** — °C/°F, 12h/24h, map tile sources, default coordinates\n\n</td>\n</tr>\n</table>\n\n</details>\n\n<br />\n\n## Get started in 30 seconds\n\n```bash\nENCRYPTION_KEY=$(openssl rand -hex 32) docker run -d -p 3000:3000 \\\n  -e ENCRYPTION_KEY=$ENCRYPTION_KEY \\\n  -v ./data:/app/data -v ./uploads:/app/uploads mauriceboe/trek\n```\n\nOpen `http://localhost:3000`. On first boot TREK seeds an admin account — if you set `ADMIN_EMAIL`/`ADMIN_PASSWORD` those are used, otherwise the credentials are printed to the container log (`docker logs trek`).\n\n<div align=\"center\">\n\n&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#docker-compose-production\">Docker Compose</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#helm-kubernetes\">Helm / Kubernetes</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#install-as-app-pwa\">Install as PWA</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#reverse-proxy\">Reverse Proxy</a>&nbsp;&nbsp;·&nbsp;&nbsp;\n\n</div>\n\n<br />\n\n## Tech stack\n\n<div align=\"center\">\n\n![Node.js](https://img.shields.io/badge/Node.js_22-339933?style=flat-square&logo=node.js&logoColor=white)\n![NestJS](https://img.shields.io/badge/NestJS_11-E0234E?style=flat-square&logo=nestjs&logoColor=white)\n![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat-square&logo=sqlite&logoColor=white)\n![React](https://img.shields.io/badge/React_19-61DAFB?style=flat-square&logo=react&logoColor=black)\n![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat-square&logo=vite&logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)\n![Tailwind](https://img.shields.io/badge/Tailwind-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)\n![Leaflet](https://img.shields.io/badge/Leaflet-199900?style=flat-square&logo=leaflet&logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)\n\n</div>\n\nReal-time sync via WebSocket (`ws`). Backend on NestJS 11. State with Zustand. Auth via JWT + OAuth 2.1 + OIDC + Passkeys (WebAuthn) + TOTP MFA. Weather via Open-Meteo (no key required). Maps with Leaflet and Mapbox GL.\n\n<br />\n\n<h2 id=\"docker-compose-production\">Docker Compose (production)</h2>\n\n<details>\n<summary>Full compose example with secure defaults</summary>\n\n```yaml\nservices:\n  app:\n    image: mauriceboe/trek:latest\n    container_name: trek\n    read_only: true\n    security_opt:\n      - no-new-privileges:true\n    cap_drop:\n      - ALL\n    cap_add:\n      - CHOWN\n      - SETUID\n      - SETGID\n    tmpfs:\n      - /tmp:noexec,nosuid,size=64m\n    ports:\n      - \"3000:3000\"\n    environment:\n      - NODE_ENV=production\n      - PORT=3000\n      - ENCRYPTION_KEY=${ENCRYPTION_KEY:-}   # generate with: openssl rand -hex 32\n      - TZ=${TZ:-UTC}\n      - LOG_LEVEL=${LOG_LEVEL:-info}\n      - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-}\n      - APP_URL=${APP_URL:-}                 # required for OIDC + email links\n      # - FORCE_HTTPS=true                   # behind a TLS-terminating proxy\n      # - TRUST_PROXY=1\n      # - OIDC_ISSUER=https://auth.example.com\n      # - OIDC_CLIENT_ID=trek\n      # - OIDC_CLIENT_SECRET=supersecret\n      # - OIDC_DISPLAY_NAME=SSO\n      # - OIDC_ADMIN_CLAIM=groups\n      # - OIDC_ADMIN_VALUE=app-trek-admins\n    volumes:\n      - ./data:/app/data\n      - ./uploads:/app/uploads\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"-qO-\", \"http://localhost:3000/api/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 15s\n```\n\nThen:\n\n```bash\ndocker compose up -d\n```\n\n**HTTPS notes:** `FORCE_HTTPS=true` is optional — it adds a 301 redirect, HSTS, CSP upgrade-insecure-requests, and forces the `secure` cookie flag. Only use it behind a TLS-terminating reverse proxy. `TRUST_PROXY=1` tells the server how many proxies sit in front so real client IPs and `X-Forwarded-Proto` work.\n\n</details>\n\n<br />\n\n<h2 id=\"helm-kubernetes\">Helm (Kubernetes)</h2>\n\n```bash\nhelm re",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@trek/root\",\n  \"private\": true,\n  \"version\": \"3.1.3\",\n  \"workspaces\": [\n    \"client\",\n    \"server\",\n    \"shared\"\n  ],\n  \"scripts\": {\n    \"version:major\": \"npm version major --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:minor\": \"npm version minor --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:patch\": \"npm version patch --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:premajor\": \"npm version premajor --preid=rc --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:preminor\": \"npm version preminor --preid=beta --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:prepatch\": \"npm version prepatch --preid=alpha --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:prerelease\": \"npm version prerelease --preid=pre --workspaces --include-workspace-root --no-git-tag-version\",\n    \"dev\": \"npm run build --workspace=shared && concurrently --names shared,server,client \\\"npm run build:watch --workspace=shared\\\" \\\"npm run dev --workspace=server\\\" \\\"npm run dev --workspace=client\\\"\",\n    \"build\": \"npm run build --workspace=shared && npm run build --workspace=server && npm run build --workspace=client\",\n    \"test\": \"npm run test --workspace=shared && npm run test --workspace=server && npm run test --workspace=client\",\n    \"test:cov\": \"npm run test:coverage --workspace=server && npm run test:coverage --workspace=client\",\n    \"test:e2e\": \"npm run test:e2e --workspace=server\",\n    \"lint\": \"npm run lint --workspace=shared && npm run lint --workspace=server && npm run lint --workspace=client\",\n    \"format\": \"npm run format --workspace=shared && npm run format --workspace=server && npm run format --workspace=client\",\n    \"format:check\": \"npm run format:check --workspace=shared && npm run format:check --workspace=server && npm run format:check --workspace=client\"\n  },\n  \"devDependencies\": {\n    \"concurrently\": \"^10.0.3\",\n    \"unrun\": \"^0.3.1\"\n  },\n  \"comment:overrides\": \"Force a single React 19 across the workspace so the test renderer (@testing-library/react) and the app share one react-dom.\",\n  \"overrides\": {\n    \"react\": \"19.2.6\",\n    \"react-dom\": \"19.2.6\",\n    \"multer\": \"^2.2.0\"\n  },\n  \"optionalDependencies\": {\n    \"@img/sharp-linuxmusl-arm64\": \"0.35.1\",\n    \"@img/sharp-linuxmusl-x64\": \"0.35.1\",\n    \"@rollup/rollup-linux-arm64-musl\": \"4.62.0\",\n    \"@rollup/rollup-linux-x64-musl\": \"4.62.0\"\n  }\n}\n",
    "strategic_keywords": [
      "rag",
      "workspace"
    ],
    "relationship_label": "Workspace 组件",
    "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": 6,
      "total": 77
    },
    "strategic_score": 77
  },
  {
    "owner": "xbtlin",
    "name": "ai-berkshire",
    "full_name": "xbtlin/ai-berkshire",
    "url": "https://github.com/xbtlin/ai-berkshire",
    "description": "AI 时代的伯克希尔：基于 Claude Code 的价值投资研究框架。巴菲特·芒格·段永平·李录四大师方法论 + 多Agent并行研究。| AI-era Berkshire: a value investing research framework built on Claude Code. 4 masters' methodologies + multi-agent adversarial analysis.",
    "language": "Python",
    "total_stars": 4044,
    "forks": 572,
    "stars_this_period": 686,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agent",
        "anthropic",
        "berkshire-hathaway",
        "charlie-munger",
        "china-stock",
        "claude",
        "claude-code",
        "financial-analysis",
        "fintech",
        "fundamental-analysis",
        "investment",
        "investment-research",
        "llm",
        "mcp",
        "portfolio-management",
        "stock-analysis",
        "stock-market",
        "value-investing",
        "warren-buffett"
      ],
      "license": "MIT",
      "open_issues": 17,
      "created_at": "2026-04-07T11:19:51Z",
      "pushed_at": "2026-06-27T16:49:55Z",
      "homepage": "https://github.com/xbtlin/ai-berkshire#readme",
      "default_branch": "main",
      "forks": 572,
      "watchers": 11,
      "archived": false,
      "size_kb": 19677
    },
    "readme_content": "中文 | [English](README_EN.md)\n\n# AI Berkshire - AI 时代的价值投资研究框架\n\n> \"Price is what you pay, value is what you get.\" — Warren Buffett\n>\n> 用 AI 重新定义投资研究的深度与效率。\n\n**AI Berkshire** 是一套同时兼容 Claude Code 与 Codex 的投资研究 Skill 合集，将巴菲特、芒格、段永平、李录四位价值投资大师的方法论系统化、结构化，通过 AI Agent 实现专业级投资研究。\n\n一个人 + Claude Code / Codex = 一个投研团队。\n\n---\n\n## Real Track Record\n\n> 不是纸上谈兵。这套框架背后是真金白银验证的投资体系。\n\n### 2024 全年收益：+69.29%\n\n<img src=\"assets/2024-returns.jpg\" width=\"300\" />\n\n### 2025 年至今收益：+66.38%\n\n<img src=\"assets/2025-returns.jpg\" width=\"300\" />\n\n### 与主要指数对比\n\n| 指标 | 2024 全年 | 2025 至今 |\n|------|----------|----------|\n| **本框架实盘** | **+69.29%** | **+66.38%** |\n| 恒生指数 | +17.67% | +27.77% |\n| 标普500 | +23.31% | +16.39% |\n| 沪深300 | +14.68% | +17.66% |\n| 纳斯达克 | +28.64% | +20.36% |\n\n**2024 年超额收益**：跑赢标普500 **46个百分点**，跑赢恒生指数 **52个百分点**\n\n**2025 年超额收益**：跑赢标普500 **50个百分点**，跑赢恒生指数 **39个百分点**\n\n**两年累计实盘收益超 146万元**，连续两年大幅跑赢全球主要指数。\n\n> *免责声明：历史收益不代表未来表现。截图来自富途证券真实账户。*\n\n---\n\n## 为什么不能直接问 AI？\n\n你当然可以直接问 Claude：\"帮我分析拼多多值不值得买\"。你会得到一篇\"一方面...另一方面...\"的平衡分析，最后以\"投资有风险，请自行判断\"收尾。\n\n**这种分析看起来对，但没法拿来做决策。**\n\nAI Berkshire 解决的不是\"能不能分析\"的问题，而是**分析质量和决策纪律**的问题。以下是核心差异：\n\n### 1. 强制给结论，不打太极\n\n直接问AI，你得到的是两面讨好的\"分析\"。AI Berkshire 强制输出：**通过/不通过/灰色地带**，带具体价格区间和分层建议。\n\n> 普通AI回答：*\"拼多多有增长潜力但也面临竞争压力，投资者需要权衡...\"*\n>\n> AI Berkshire 输出：\n\n> | 策略 | 建议 | 价格区间 |\n> |------|------|---------|\n> | 激进型 | 当前价位可建仓20% | $95-105 |\n> | 稳健型 | 等回购政策明确后建仓 | $85-95 |\n> | 保守型 | 不符合10年确定性标准，观望 | — |\n>\n> **镜子测试**：5句话说不完整 = 不买，没有例外。\n\n### 2. 四大师视角对抗，而非单一分析\n\n不是\"用巴菲特方法分析一下\"这么简单。四个视角会产生**真实的矛盾和张力**——\n\n以拼多多为例：\n- **段永平**（商业模式）：好生意，C2M模式难以复制 → 评分 3.7/5\n- **巴菲特**（财务估值）：扣现金PE仅6.3x，印钞机 → 评分 4.4/5\n- **芒格**（逆向思考）：护城河比想象中浅，抖音3年做到4万亿GMV → 评分 3.5/5\n- **李录**（长期确定性）：管理层文化有隐患，10年后不确定 → 评分 2.0/5\n\n**巴菲特说\"真便宜\"，李录说\"不确定就不买\"**——这种冲突才是投资决策的真实状态。单一prompt无法制造这种多视角对抗，而这恰恰是避免盲点的关键。\n\n### 3. 结构化反偏见机制\n\nAI最危险的不是给错答案，而是给一个**看起来很对但经不起推敲**的答案。AI Berkshire 在流程中内置了多层\"防骗\"机制：\n\n| 机制 | 解决什么问题 | 举例 |\n|------|------------|------|\n| **信息丰富度评级（A/B/C）** | 防止\"资料多=确定性高\"的幻觉 | 泡泡玛特评为B级：数据有限，推算指标标注置信度 |\n| **芒格式逆向检验** | 强制思考失败场景 | \"什么情况下拼多多会死？\"→ 列出5大情景及概率 |\n| **快速否决清单** | 8条红线一票否决 | 管理层诚信污点 → 直接否决，不管估值多便宜 |\n| **反共识检查** | 避免和市场想法一样 | \"聪明人为什么在做空？\"→ 发现被忽视的风险 |\n| **留白原则** | 宁可说\"不知道\" | 数据不足时标注\"灰色地带\"，不用推测伪装确定性 |\n\n### 4. 金融数据的精确性\n\nLLM心算不可靠。PE算错一个小数点、市值单位搞混港币和人民币，就可能导致错误的投资决策。\n\n**真实案例**：分析腾讯时，不同来源的市值数据有\"港币亿\"和\"人民币亿\"两种单位。AI Berkshire 的处理方式：\n\n```bash\n# 市值手算校验：股价 × 总股本，与报告数据对比\npython3 tools/financial_rigor.py verify-market-cap \\\n  --price 510 --shares 9.11e9 --reported 4.65e12 --currency HKD\n# ✅ 验证通过, 偏差仅 0.08%\n```\n\n所有计算使用 Python `decimal.Decimal`（精确十进制），不用 `float`。关键数据至少2个独立来源交叉验证。\n\n### 5. 可复现的研究流程\n\n直接问AI，每次输出的格式、深度、覆盖面都不一样——今天分析腾讯有护城河评分，明天分析美团可能就忘了。\n\nAI Berkshire 确保：**同样的输入 → 结构一致、深度一致的输出**。这意味着你可以：\n- 7家公司横向对比，评分标准完全一致\n- 同一家公司半年后重新分析，直接对比变化\n- 团队成员之间的研究结果可以对齐\n\n> 真实输出——7家公司用同一标准 Checklist 筛选：\n>\n> | 公司 | 通过? | 能力圈 | 好生意 | 护城河 | 管理层 | 安全边际 | 综合 |\n> |------|:-----:|:------:|:------:|:------:|:------:|:-------:|:----:|\n> | 茅台 | ✅ 通过 | ★★★★★ | ★★★★★ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 4.7 |\n> | 腾讯 | ✅ 通过 | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★☆ | 4.7 |\n> | 英伟达 | ✅ 有条件 | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★☆☆ | 4.3 |\n> | 美团 | ✅ 有条件 | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | 4.0 |\n> | 快手 | ✅ 有条件 | ★★★☆☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | 4.0 |\n> | 拼多多 | ❓ 灰色 | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★☆☆ | ★★★★★ | 3.8 |\n> | 泡泡玛特 | ❓ 灰色 | ★★★☆☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | ★★★☆☆ | 3.7 |\n\n### 6. 多Agent并行 = 研究深度的倍增\n\n`/investment-team` 启动4个独立Agent**同时**研究一家公司。每个Agent各自搜索网络、交叉验证数据、独立给出结论。这不是把一个prompt拆成四段——是4个\"分析师\"各自做了完整的研究，Team Lead再综合。\n\n一个人直接问AI，上下文窗口是一个。4个Agent并行，等于4倍的搜索量、4倍的信息源、4个独立视角。\n\n```\n┌─────────────────────────────────────────────┐\n│              Team Lead (你)                  │\n│         统筹协调 · 汇总研判                  │\n├──────┬──────┬──────────┬───────────┤\n│ Agent 1    │ Agent 2    │ Agent 3        │ Agent 4         │\n│ 商业模式   │ 财务估值    │ 行业竞争       │ 风险管理层       │\n│ 段永平视角 │ 巴菲特视角  │ 芒格视角       │ 李录视角         │\n└──────┴──────┴──────────┴───────────┘\n        ↓ 并行研究，实时汇报进度 ↓\n              最终综合报告\n```\n\n### 一句话总结\n\n> **普通人问AI得到的是\"看起来对的分析\"，用 AI Berkshire 得到的是\"可以拿来做决策的投研报告\"。**\n\n---\n\n## 整体架构\n\n<p align=\"center\">\n  <img src=\"assets/architecture.png\" alt=\"AI Berkshire 整体架构\" width=\"600\" />\n</p>\n\n> 图源：[`assets/architecture.mmd`](assets/architecture.mmd)（Mermaid 可编辑源码）\n\n**三层设计哲学**：\n- **Skill 层**：把\"你要做什么\"抽象成 16 个明确入口——深度研究、财报分析、行业筛选、持仓管理、思维工具，按场景选用\n- **Agent 层**：每个 skill 内部都是 4 个 Agent 并行——它们各自独立搜索、独立判断、互相挑战，最后由 Team Lead 综合\n- **工具层**：精确计算、实时检索、报告抽检——保证每份报告的数据严谨性可验证\n\n---\n\n## Skills 一览（18个）\n\n### 🔬 深度研究类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/investment-research`](skills/investment-research.md) | 四大师综合深度分析 | 对一家上市公司进行全方位投资研究 |\n| [`/investment-team`](skills/investment-team.md) | 多Agent并行投研团队 | 4个Agent并行研究，最快速、最全面 |\n| [`/management-deep-dive`](skills/management-deep-dive.md) | 管理层纵深研究 | \"买股票就是买人\"——当管理层是核心变量时深挖 |\n| [`/private-company-research`](skills/private-company-research.md) | 未上市公司深度研究 | 研究蚂蚁、SpaceX等信息稀缺的未上市公司 |\n| [`/deep-company-series`](skills/deep-company-series.md) | 8篇长文系列拆一家公司 | 公众号级深度系列，12万字从认知重置到决策闭环 |\n\n### 📊 财报分析类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/earnings-review`](skills/earnings-review.md) | 财报精读（一手资料） | 只读原始财报，不依赖二手研报，像巴菲特一样读年报 |\n| [`/earnings-team`](skills/earnings-team.md) | 财报精读团队 + 公众号发布 | 四大师并行解读财报 → 编辑润色 → 读者评审 → 可发布文章 |\n\n### 🏭 行业筛选类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/industry-research`](skills/industry-research.md) | 产业链全景扫描 | 研究一个行业的全部投资机会（按产业链环节切片） |\n| [`/industry-funnel`](skills/industry-funnel.md) | 行业漏斗筛选 | 全市场 → 粗筛 ≤10 家 → 终选 3 家深度分析 |\n| [`/quality-screen`](skills/quality-screen.md) | 去劣筛选（7条硬指标） | 快速排除非一流公司，支持个股/行业/指数/主题批量筛 |\n| [`/bottleneck-hunter`](skills/bottleneck-hunter.md) | 供应链瓶颈猎手 | 从超级趋势出发，寻找产业链物理瓶颈和套利机会 |\n| [`/investment-checklist`](skills/investment-checklist.md) | 巴菲特买入前 Checklist | 六关快速筛选，10分钟决定是否值得深入 |\n\n### 📈 持仓管理类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/portfolio-review`](skills/portfolio-review.md) | 组合管理与优化 | 从\"研究公司\"升级到\"管理组合\"——仓位、集中度、再平衡 |\n| [`/thesis-tracker`](skills/thesis-tracker.md) | 投资论文追踪 | 买入后的纪律系统：持续跟踪论文是否被证伪 |\n| [`/news-pulse`](skills/news-pulse.md) | 股价异动快速归因 | 股价大涨/大跌时10分钟搞清\"发生了什么\" |\n\n### 🧠 思维工具类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/dyp-ask`](skills/dyp-ask.md) | 段永平问答 | 以段永平的方式思考任何问题——商业、投资、人生 |\n| [`/financial-data`](skills/financial-data.md) | 财务数据获取与交叉验证规范 | 确保关键数据来自2个独立来源，误差>1%告警 |\n| [`/wechat-article`](skills/wechat-article.md) | 微信公众号文章 | 作者、编辑、读者三Agent协作，产出可发布文章 |\n\n---\n\n## 快速开始\n\n### 1. 安装 AI 客户端\n\n本仓库保留同一套 canonical workflow，并分别提供 Claude Code commands 与 Codex skills。按你使用的客户端安装即可。\n\nClaude Code 用户：\n\n```bash\nnpm install -g @anthropic-ai/claude-code\n```\n\nCodex 用户：\n\n```bash\n# macOS / Linux\ncurl -fsSL https://chatgpt.com/codex/install.sh | sh\n\n# 或使用 npm\nnpm install -g @openai/codex\n\n# 或使用 Homebrew\nbrew install --cask codex\n\n# 验证安装\ncodex --version\n```\n\nWindows 用户可使用官方 PowerShell 安装命令：`powershell -ExecutionPolicy ByPass -c \"irm https://chatgpt.com/codex/install.ps1 | iex\"`。\n\n如果 `codex --version` 能正常输出版本号，就可以继续安装本项目的 Codex skills。\n\n### 2. 安装 Skills\n\nClaude Code 用户安装：\n\n```bash\n# 克隆仓库\ngit clone https://github.com/xbtlin/ai-berkshire.git\n\n# 复制 skills 到 Claude Code 全局 commands 目录\ncd ai-berkshire\n./scripts/install-claude-commands.sh\n```\n\nCodex 用户安装：\n\n```bash\n# 克隆仓库\ngit clone https://github.com/xbtlin/ai-berkshire.git\n\n# 生成并安装 Codex skills 到 ~/.codex/skills\ncd ai-berkshire\n./scripts/install-codex-skills.sh\n\n# 可选：安装 Codex slash prompts 到 ~/.codex/prompts\n# 用于获得接近 Claude Code 的 /investment-research 体验\n./scripts/install-codex-prompts.sh\n```\n\n仓库同时维护三套入口：`skills/*.md` 是 Claude Code command 源文件；`codex-skills/*/SKILL.md` 是 Codex skill 包，由 `scripts/sync-codex-skills.py` 从 `skills/*.md` 生成；`codex-prompts/*.md` 是可选的 Codex slash prompt 兼容层。\n\n### 3. 使用\n\n在 Claude Code 中直接调用：\n\n```bash\n# 深度研究\n/investment-research 腾讯\n/investment-team 美团\n/management-deep-dive 王兴 美团\n/private-company-research SpaceX\n/deep-company-series 拼多多\n\n# 财报分析\n/earnings-review 腾讯 2025Q4\n/earnings-team PDD 2025年报\n\n# 行业筛选\n/industry-research 核电\n/industry-funnel AI算力\n/quality-screen 恒生指数成分股\n/bottleneck-hunter AI基础设施\n/investment-checklist 茅台, 英伟达, 苹果\n\n# 持仓管理\n/portfolio-review 腾讯30%, 美团20%, 茅台20%, 现金30%\n/thesis-tracker 拼多多\n/news-pulse 腾讯\n\n# 思维工具\n/dyp-ask 拼多多的护城河到底在哪里？\n/wechat-article 大模型OPD技术解读\n```\n\n在 Codex 中安装后重启 Codex，然后直接按 skill 名称描述任务，例如：\n\n```text\n使用 investment-research 研究腾讯\n使用 earnings-review 分析 PDD 2025年报\n使用 industry-funnel 筛选 AI算力\n使用 bottleneck-hunter 扫描 AI基础设施瓶颈\n使用 wechat-article 写大模型OPD技术解读\n```\n\n如果安装了 Codex slash prompts，重启 Codex 后也可以在 `/` 菜单里搜索这些 prompt。Codex 官方的 custom prompt 入口通常显示为 `prompts:<name>`，例如：\n\n```text\n/prompts:investment-research 腾讯\n```\n\n---\n\n## 各 Skill 详细介绍\n\n### 1. `/investment-research` — 四大师综合分析\n\n最全面的单公司深度研究框架。按七个模块顺序执行：\n\n```\n数据收集 → 生意本质(段永平) → 护城河(巴菲特) → 逆向思考(芒格)\n    → 管理层评估(段永平+巴菲特) → 文明趋势(李录) → 估值与安全边际\n```\n\n**核心特色**：\n- AI研究偏见自觉机制（A/B/C级信息丰富度评级）\n- 关键数据多源交叉验证（市值手算校验、至少2个独立来源）\n- 四位大师的\"追问\"贯穿全文\n- 三情景估值（乐观/中性/悲观）+ 反向DCF\n\n**输出示例摘录**：\n\n> #### 综合决策备忘录\n>\n> | 维度 | 结论 | 信心度 |\n> |------|------|--------|\n> | 生意质量（段永平） | 极佳：平台型生意，双边网络效应，边际成本趋零 | ★★★★★ |\n> | 护城河（巴菲特） | 宽阔且在变宽：网络效应+转换成本+规模效应三重叠加 | ★★★★☆ |\n> | 管理层（段永平+巴菲特） | 优秀：创始人掌舵，资本配置纪律强 | ★★★★☆ |\n> | 最大风险（芒格） | 监管政策不确定性，新业务亏损拖累整体利润 | ★★★☆☆ |\n> | 文明趋势（李录） | 顺应数字化消费趋势，但非\"文明级范式转移\" | ★★★★☆ |\n> | 估值（巴菲特+段永平） | 当前PE 18x，处于历史中位数偏低，有一定安全边际 | ★★★★☆ |\n>\n> **段永平**：\"这门生意的本质是连接消费者和商家，赚的是效率提升的钱。好生意的标志是：用户越多，商家越多；商家越多，用户越多。飞轮一旦转起来，很难停下。\"\n>\n> **芒格**：\"反过来想——如果这家公司明天消失，用户和商家会怎么办？如果答案是'很快找到替代品'，那护城河就不够深。如果答案是'生活会变得非常不方便'，那就值得关注。\"\n\n---\n\n### 2. `/investment-team` — 多Agent投研团队\n\n启动4个AI Agent并行研究，模拟真实投研团队协作。每个Agent独立搜索、独立分析、独立给出评分，最后由Team Lead综合研判。\n\n**输出示例摘录**：\n\n> #### 一句话结论\n> 美团是中国本地生活服务的绝对龙头，拥有多重网络效应护城河，当前估值处于历史较低水平，长期投资价值显著，建议逢低建仓。\n>\n> #### 四维评分总表\n>\n> | 维度 | 框架 | 评分 | 核心判断 |\n> |------|------|------|----------|\n> | 商业模式 & 护城河 | 段永平 | ★★★★☆ | 双边网络效应强劲，外卖+到店形成飞轮 |\n> | 财务 & 估值 | 巴菲特 | ★★★★☆ | 核心业务利润率持续改善，估值处于历史低位 |\n> | 行业 & 竞争 | 芒格 | ★★★☆☆ | 抖音入侵到店业务，竞争格局有恶化风险 |\n> | 风险 & 管理层 | 李录 | ★★★★☆ | 王兴战略眼光出色，但新业务烧钱需警惕 |\n>\n> **综合评分：3.8 / 5**\n>\n> #### 投资建议\n>\n> | 策略 | 建议 | 价格区间(港元) |\n> |------|------|---------------|\n> | 激进型 | 当前价位可建仓30% | 120-140 |\n> | 稳健型 | 等回调至100-110建仓 | 100-120 |\n> | 保守型 | 等待季报验证利润率趋势后再介入 | <100 |\n\n---\n\n### 3. `/investment-checklist` — 巴菲特买入前 Checklist\n\n六关快速筛选，帮你在10分钟内决定一家公司是否值得深入研究：\n\n```\n第一关：能力圈（我能理解吗？）\n    ↓ 通过\n第二关：好生意（经济特征如何？）\n    ↓ 通过\n第三关：护城河（竞争优势深不深？）\n    ↓ 通过\n第四关：管理层（值得信任吗？）\n    ↓ 通过\n第五关：安全边际（价格便宜吗？）\n    ↓ 通过\n第六关：决策纪律（是理性还是FOMO？）\n    ↓ 通过\n   ✅ 镜子测试\n```\n\n**支持多公司对比**——一次筛选多个标的：\n\n```\n/investment-checklist 腾讯, 阿里巴巴, 美团, 拼多多\n```\n\n**输出示例摘录**：\n\n> #### 镜子测试\n>\n> \"我以 380港元 买入 腾讯，因为：\n> 1. 这门生意的本质是**社交网络+数字内容平台**，我理解它；\n> 2. 它的护城河是**12亿用户的社交关系链**，而且在变宽；\n> 3. 管理层**Pony Ma低调务实、资本配置优秀**，值得信赖；\n> 4. 当前价格相当于内在价值的**8折**，有一定安全边际；\n> 5. 即使我错了，下行风险可控，因为**账上净现金超2000亿、游戏现金流强劲**。\"\n>\n> ✅ 通过镜子测试\n>\n> **5句话说不完整 = 不买。没有例外。**\n\n---\n\n### 4. `/industry-research` — 产业链全景扫描\n\n从一个投资主题出发，完成产业链全景研究：\n\n```\n投资逻辑链构建 → 产业链全景图 → 全球上市公司扫描\n    → 各环节头部公司四大师分析 → 投资组合配置建议\n```\n\n**输出示例摘录**：\n\n> #### 投资逻辑链：核电\n>\n> 底层趋势：AI数据中心电力需求爆发 + 碳中和目标\n> → 导致：稳定清洁基荷电源需求激增\n> → 创造：核电重启/新建/SMR的确定性需求\n> → 受益：铀矿 → 燃料加工 → 设备制造 → 运营商\n>\n> #### 推荐组合\n>\n> | 层级 | 仓位 | 标的 | 环节 | 核心逻辑 |\n> |------|------|------|------|---------|\n> | 核心 | 50% | 中国广核(CGN)、Cameco | 运营+铀矿 | 确定性最高 |\n> | 卫星 | 30% | 中国核电、东方电气 | 运营+设备 | 国产替代受益 |\n> | 期权 | 15% | NuScale、Nano Nuclear | SMR | 高风险高弹性 |\n> | ETF | 替代 | URA、URNM | 全链 | 懒人方案 |\n\n---\n\n### 5. `/industry-funnel` — 行业漏斗筛选\n\n从一个行业/方向出发，**全市场 → ≤10 家 → 3 家**逐层精选：\n\n```\n全市场扫描（活跃度 + 涨幅 + 市值前 30 并集，30-60 家）\n    ↓ 价值投资 5 条硬指标\n粗筛 ≤ 10 家\n    ↓ 精细分析（每家 300-500 字）\n精细分析 ≤ 10 家\n    ↓ 终选（按组合互补性，不按打分前 3）\n四大师深度分析 3 家（每家 800-1200 字）\n    ↓\n推荐组合（核心 / 卫星 / 期权）+ 操作信号\n```\n\n**核心特色**：\n- 每层都有明确留/弃标准，被淘汰的标的留下淘汰理由（不是黑箱）\n- 终选 3 家按\"组合互补性\"选（高确定性 + 中等弹性 + 高弹性），不按打分前 3 排序\n- 强制列\"未来 IPO 候选\"，避免漏掉一级市场核心玩家\n- AI 偏见自觉机制：应对龙头偏好 / 英文偏好 / 故事偏好 / 上市偏好\n\n**与 `/industry-research` 的区别**：\n- `industry-research` 偏重产业链结构与全景（按环节切片）\n- `industry-funnel` 偏重个股筛选漏斗（从全市场逐层精选到 3 家）\n\n**实测：AI 行业 4 子赛道并行（2026-05-09）**：\n\n| 子赛道 | 终选 3 家 | 核心仓位推荐 |\n|-------|---------|------------|\n| AI 算力 | TSMC / NVIDIA / SK Hynix | TSMC ★★★★★ |\n| AI 模型 | Alphabet / Meta / 阿里巴巴 | Alphabet ★★★★★ |\n| ",
    "strategic_keywords": [
      "agent",
      "mcp",
      "skill",
      "llm"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 7,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "garrytan",
    "name": "gstack",
    "full_name": "garrytan/gstack",
    "url": "https://github.com/garrytan/gstack",
    "description": "Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA",
    "language": "TypeScript",
    "total_stars": 117194,
    "forks": 17410,
    "stars_this_period": 674,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 740,
      "created_at": "2026-03-11T21:22:45Z",
      "pushed_at": "2026-06-25T16:42:45Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 17410,
      "watchers": 719,
      "archived": false,
      "size_kb": 111499
    },
    "readme_content": "# gstack\n\n> \"I don't think I've typed like a line of code probably since December, basically, which is an extremely large change.\" — [Andrej Karpathy](https://fortune.com/2026/03/21/andrej-karpathy-openai-cofounder-ai-agents-coding-state-of-psychosis-openclaw/), No Priors podcast, March 2026\n\nWhen I heard Karpathy say this, I wanted to find out how. How does one person ship like a team of twenty? Peter Steinberger built [OpenClaw](https://github.com/openclaw/openclaw) — 247K GitHub stars — essentially solo with AI agents. The revolution is here. A single builder with the right tooling can move faster than a traditional team.\n\nI'm [Garry Tan](https://x.com/garrytan), President & CEO of [Y Combinator](https://www.ycombinator.com/). I've worked with thousands of startups — Coinbase, Instacart, Rippling — when they were one or two people in a garage. Before YC, I was one of the first eng/PM/designers at Palantir, cofounded Posterous (sold to Twitter), and built Bookface, YC's internal social network.\n\n**gstack is my answer.** I've been building products for twenty years, and right now I'm shipping more products than I ever have. In the last 60 days: 3 production services, 40+ shipped features, part-time, while running YC full-time. On logical code change — not raw LOC, which AI inflates — my 2026 run rate is **~810× my 2013 pace** (11,417 vs 14 logical lines/day). Year-to-date (through April 18), 2026 has already produced **240× the entire 2013 year**. Measured across 40 public + private `garrytan/*` repos including Bookface, after excluding one demo repo. AI wrote most of it. The point isn't who typed it, it's what shipped.\n\n> The LOC critics aren't wrong that raw line counts inflate with AI. They are wrong that normalized-for-inflation, I'm less productive. I'm more productive, by a lot. Full methodology, caveats, and reproduction script: **[On the LOC Controversy](docs/ON_THE_LOC_CONTROVERSY.md)**.\n\n**2026 — 1,237 contributions and counting:**\n\n![GitHub contributions 2026 — 1,237 contributions, massive acceleration in Jan-Mar](docs/images/github-2026.png)\n\n**2013 — when I built Bookface at YC (772 contributions):**\n\n![GitHub contributions 2013 — 772 contributions building Bookface at YC](docs/images/github-2013.png)\n\nSame person. Different era. The difference is the tooling.\n\n**gstack is how I do it.** It turns Claude Code into a virtual engineering team — a CEO who rethinks the product, an eng manager who locks architecture, a designer who catches AI slop, a reviewer who finds production bugs, a QA lead who opens a real browser, a security officer who runs OWASP + STRIDE audits, and a release engineer who ships the PR. Twenty-three specialists and eight power tools, all slash commands, all Markdown, all free, MIT license.\n\nThis is my open source software factory. I use it every day. I'm sharing it because these tools should be available to everyone.\n\nFork it. Improve it. Make it yours. And if you want to hate on free open source software — you're welcome to, but I'd rather you just try it first.\n\n**Who this is for:**\n- **Founders and CEOs** — especially technical ones who still want to ship\n- **First-time Claude Code users** — structured roles instead of a blank prompt\n- **Tech leads and staff engineers** — rigorous review, QA, and release automation on every PR\n\n## Quick start\n\n1. Install gstack (30 seconds — see below)\n2. Run `/office-hours` — describe what you're building\n3. Run `/plan-ceo-review` on any feature idea\n4. Run `/review` on any branch with changes\n5. Run `/qa` on your staging URL\n6. Stop there. You'll know if this is for you.\n\n## Install — 30 seconds\n\n**Requirements:** [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Git](https://git-scm.com/), [Bun](https://bun.sh/) v1.0+, [Node.js](https://nodejs.org/) (Windows only)\n\n### Step 1: Install on your machine\n\nOpen Claude Code and paste this. Claude does the rest.\n\n> Install gstack: run **`git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup`** then add a \"gstack\" section to CLAUDE.md that says to use the /browse skill from gstack for all web browsing, never use mcp\\_\\_claude-in-chrome\\_\\_\\* tools, and lists the available skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review, /design-consultation, /design-shotgun, /design-html, /review, /ship, /land-and-deploy, /canary, /benchmark, /browse, /connect-chrome, /qa, /qa-only, /design-review, /setup-browser-cookies, /setup-deploy, /setup-gbrain, /retro, /investigate, /document-release, /document-generate, /codex, /cso, /autoplan, /plan-devex-review, /devex-review, /careful, /freeze, /guard, /unfreeze, /gstack-upgrade, /learn. Then ask the user if they also want to add gstack to the current project so teammates get it.\n\n### Step 2: Team mode — auto-update for shared repos (recommended)\n\nFrom inside your repo, paste this. Switches you to team mode, bootstraps the repo so teammates get gstack automatically, and commits the change:\n\n```bash\n(cd ~/.claude/skills/gstack && ./setup --team) && ~/.claude/skills/gstack/bin/gstack-team-init required && git add .claude/ CLAUDE.md && git commit -m \"require gstack for AI-assisted work\"\n```\n\nNo vendored files in your repo, no version drift, no manual upgrades. Every Claude Code session starts with a fast auto-update check (throttled to once/hour, network-failure-safe, completely silent).\n\nSwap `required` for `optional` if you'd rather nudge teammates than block them.\n\n### OpenClaw\n\nOpenClaw spawns Claude Code sessions via ACP, so every gstack skill just works\nwhen Claude Code has gstack installed. Paste this to your OpenClaw agent:\n\n> Install gstack: run `git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup` to install gstack for Claude Code. Then add a \"Coding Tasks\" section to AGENTS.md that says: when spawning Claude Code sessions for coding work, tell the session to use gstack skills. Include these examples — security audit: \"Load gstack. Run /cso\", code review: \"Load gstack. Run /review\", QA test a URL: \"Load gstack. Run /qa https://...\", build a feature end-to-end: \"Load gstack. Run /autoplan, implement the plan, then run /ship\", plan before building: \"Load gstack. Run /office-hours then /autoplan. Save the plan, don't implement.\"\n\n**After setup, just talk to your OpenClaw agent naturally:**\n\n| You say | What happens |\n|---------|-------------|\n| \"Fix the typo in README\" | Simple — Claude Code session, no gstack needed |\n| \"Run a security audit on this repo\" | Spawns Claude Code with `Run /cso` |\n| \"Build me a notifications feature\" | Spawns Claude Code with /autoplan → implement → /ship |\n| \"Help me plan the v2 API redesign\" | Spawns Claude Code with /office-hours → /autoplan, saves plan |\n\nSee [docs/OPENCLAW.md](docs/OPENCLAW.md) for advanced dispatch routing and\nthe gstack-lite/gstack-full prompt templates.\n\n### Native OpenClaw Skills (via ClawHub)\n\nFour methodology skills that work directly in your OpenClaw agent, no Claude Code\nsession needed. Install from ClawHub:\n\n```\nclawhub install gstack-openclaw-office-hours gstack-openclaw-ceo-review gstack-openclaw-investigate gstack-openclaw-retro\n```\n\n| Skill | What it does |\n|-------|-------------|\n| `gstack-openclaw-office-hours` | Product interrogation with 6 forcing questions |\n| `gstack-openclaw-ceo-review` | Strategic challenge with 4 scope modes |\n| `gstack-openclaw-investigate` | Root cause debugging methodology |\n| `gstack-openclaw-retro` | Weekly engineering retrospective |\n\nThese are conversational skills. Your OpenClaw agent runs them directly via chat.\n\n### Other AI Agents\n\ngstack works on 10 AI coding agents, not just Claude. Setup auto-detects which\nagents you have installed:\n\n```bash\ngit clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack\ncd ~/gstack && ./setup\n```\n\nOr target a specific agent with `./setup --host <name>`:\n\n| Agent | Flag | Skills install to |\n|-------|------|-------------------|\n| OpenAI Codex CLI | `--host codex` | `~/.codex/skills/gstack-*/` |\n| OpenCode | `--host opencode` | `~/.config/opencode/skills/gstack-*/` |\n| Cursor | `--host cursor` | `~/.cursor/skills/gstack-*/` |\n| Factory Droid | `--host factory` | `~/.factory/skills/gstack-*/` |\n| Slate | `--host slate` | `~/.slate/skills/gstack-*/` |\n| Kiro | `--host kiro` | `~/.kiro/skills/gstack-*/` |\n| Hermes | `--host hermes` | `~/.hermes/skills/gstack-*/` |\n| GBrain (mod) | `--host gbrain` | `~/.gbrain/skills/gstack-*/` |\n\n**Want to add support for another agent?** See [docs/ADDING_A_HOST.md](docs/ADDING_A_HOST.md).\nIt's one TypeScript config file, zero code changes.\n\n## See it work\n\n```\nYou:    I want to build a daily briefing app for my calendar.\nYou:    /office-hours\nClaude: [asks about the pain — specific examples, not hypotheticals]\n\nYou:    Multiple Google calendars, events with stale info, wrong locations.\n        Prep takes forever and the results aren't good enough...\n\nClaude: I'm going to push back on the framing. You said \"daily briefing\n        app.\" But what you actually described is a personal chief of\n        staff AI.\n        [extracts 5 capabilities you didn't realize you were describing]\n        [challenges 4 premises — you agree, disagree, or adjust]\n        [generates 3 implementation approaches with effort estimates]\n        RECOMMENDATION: Ship the narrowest wedge tomorrow, learn from\n        real usage. The full vision is a 3-month project — start with\n        the daily briefing that actually works.\n        [writes design doc → feeds into downstream skills automatically]\n\nYou:    /plan-ceo-review\n        [reads the design doc, challenges scope, runs 10-section review]\n\nYou:    /plan-eng-review\n        [ASCII diagrams for data flow, state machines, error paths]\n        [test matrix, failure modes, security concerns]\n\nYou:    Approve plan. Exit plan mode.\n        [writes 2,400 lines across 11 files. ~8 minutes.]\n\nYou:    /review\n        [AUTO-FIXED] 2 issues. [ASK] Race condition → you approve fix.\n\nYou:    /qa https://staging.myapp.com\n        [opens real browser, clicks through flows, finds and fixes a bug]\n\nYou:    /ship\n        Tests: 42 → 51 (+9 new). PR: github.com/you/app/pull/42\n```\n\nYou said \"daily briefing app.\" The agent said \"you're building a chief of staff AI\" — because it listened to your pain, not your feature request. Eight commands, end to end. That is not a copilot. That is a team.\n\n## The sprint\n\ngstack is a process, not a collection of tools. The skills run in the order a sprint runs:\n\n**Think → Plan → Build → Review → Test → Ship → Reflect**\n\nEach skill feeds into the next. `/office-hours` writes a design doc that `/plan-ceo-review` reads. `/plan-eng-review` writes a test plan that `/qa` picks up. `/review` catches bugs that `/ship` verifies are fixed. Nothing falls through the cracks because every step knows what came before it.\n\n| Skill | Your specialist | What they do |\n|-------|----------------|--------------|\n| `/office-hours` | **YC Office Hours** | Start here. Six forcing questions that reframe your product before you write code. Pushes back on your framing, challenges premises, generates implementation alternatives. Design doc feeds into every downstream skill. |\n| `/plan-ceo-review` | **CEO / Founder** | Rethink the problem. Find the 10-star product hiding inside the request. Four modes: Expansion, Selective Expansion, Hold Scope, Reduction. |\n| `/plan-eng-review` | **Eng Manager** | Lock in architecture, data flow, diagrams, edge cases, and tests. Forces hidden assumptions into the open. |\n| `/plan-design-review` | **Senior Designer** | Rates each design dimension 0-10, explains what a 10 looks like, then edits the plan to get there. AI Slop detection. Interactive — one AskUserQuestion per design choice. |\n| `/plan-devex-review` | **Developer Experience Lead** | Interactive DX review: explores deve",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"gstack\",\n  \"version\": \"1.58.5.0\",\n  \"description\": \"Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"bin\": {\n    \"browse\": \"./browse/dist/browse\",\n    \"make-pdf\": \"./make-pdf/dist/pdf\"\n  },\n  \"scripts\": {\n    \"build\": \"bash scripts/build.sh\",\n    \"vendor:xterm\": \"mkdir -p extension/lib && cp node_modules/xterm/lib/xterm.js extension/lib/xterm.js && cp node_modules/xterm/css/xterm.css extension/lib/xterm.css && cp node_modules/xterm-addon-fit/lib/xterm-addon-fit.js extension/lib/xterm-addon-fit.js\",\n    \"dev:make-pdf\": \"bun run make-pdf/src/cli.ts\",\n    \"dev:design\": \"bun run design/src/cli.ts\",\n    \"build:diagram-render\": \"cd lib/diagram-render && bun install && bun run scripts/build.ts\",\n    \"gen:skill-docs\": \"bun run scripts/gen-skill-docs.ts\",\n    \"gen:skill-docs:user\": \"bun run scripts/gen-skill-docs.ts --respect-detection\",\n    \"dev\": \"bun run browse/src/cli.ts\",\n    \"server\": \"bun run browse/src/server.ts\",\n    \"test\": \"bun test browse/test/ test/ make-pdf/test/ --ignore 'test/skill-e2e-*.test.ts' --ignore test/skill-llm-eval.test.ts --ignore test/skill-routing-e2e.test.ts --ignore test/codex-e2e.test.ts --ignore test/gemini-e2e.test.ts && (bun run slop:diff 2>/dev/null || true)\",\n    \"test:free\": \"bun run scripts/test-free-shards.ts\",\n    \"test:windows\": \"bun run scripts/test-free-shards.ts --windows-only\",\n    \"test:evals\": \"EVALS=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:evals:all\": \"EVALS=1 EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:e2e\": \"EVALS=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:e2e:all\": \"EVALS=1 EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:gate\": \"EVALS=1 EVALS_TIER=gate bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:periodic\": \"EVALS=1 EVALS_TIER=periodic EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:codex\": \"EVALS=1 bun test test/codex-e2e.test.ts\",\n    \"test:codex:all\": \"EVALS=1 EVALS_ALL=1 bun test test/codex-e2e.test.ts\",\n    \"test:gemini\": \"EVALS=1 bun test test/gemini-e2e.test.ts\",\n    \"test:gemini:all\": \"EVALS=1 EVALS_ALL=1 bun test test/gemini-e2e.test.ts\",\n    \"skill:check\": \"bun run scripts/skill-check.ts\",\n    \"dev:skill\": \"bun run scripts/dev-skill.ts\",\n    \"start\": \"bun run browse/src/server.ts\",\n    \"eval:bg\": \"bin/gstack-detach --label evals --lock gstack-evals --timeout 5400 -- bun run test:evals\",\n    \"eval:bg:all\": \"bin/gstack-detach --label evals-all --lock gstack-evals --timeout 7200 -- bun run test:evals:all\",\n    \"eval:bg:gate\": \"bin/gstack-detach --label evals-gate --lock gstack-evals --timeout 3600 -- bun run test:gate\",\n    \"eval:bg:periodic\": \"bin/gstack-detach --label evals-periodic --lock gstack-evals --timeout 5400 -- bun run test:periodic\",\n    \"eval:list\": \"bun run scripts/eval-list.ts\",\n    \"eval:compare\": \"bun run scripts/eval-compare.ts\",\n    \"eval:summary\": \"bun run scripts/eval-summary.ts\",\n    \"eval:watch\": \"bun run scripts/eval-watch.ts\",\n    \"eval:select\": \"bun run scripts/eval-select.ts\",\n    \"analytics\": \"bun run scripts/analytics.ts\",\n    \"test:audit\": \"bun test test/audit-compliance.test.ts\",\n    \"slop\": \"npx slop-scan scan . 2>/dev/null || echo 'slop-scan not available (install with: npm i -g slop-scan)'\",\n    \"slop:diff\": \"bun run scripts/slop-diff.ts\"\n  },\n  \"dependencies\": {\n    \"@huggingface/transformers\": \"^4.1.0\",\n    \"@ngrok/ngrok\": \"^1.7.0\",\n    \"diff\": \"^7.0.0\",\n    \"html-to-docx\": \"1.8.0\",\n    \"marked\": \"^18.0.2\",\n    \"playwright\": \"^1.58.2\",\n    \"puppeteer-core\": \"^24.40.0\",\n    \"socks\": \"^2.8.8\"\n  },\n  \"engines\": {\n    \"bun\": \">=1.0.0\"\n  },\n  \"keywords\": [\n    \"browser\",\n    \"automation\",\n    \"playwright\",\n    \"headless\",\n    \"cli\",\n    \"claude\",\n    \"ai-agent\",\n    \"devtools\"\n  ],\n  \"devDependencies\": {\n    \"@anthropic-ai/claude-agent-sdk\": \"0.2.117\",\n    \"@anthropic-ai/sdk\": \"^0.78.0\",\n    \"xterm\": \"5\",\n    \"xterm-addon-fit\": \"^0.8.0\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "skill",
      "workflow",
      "automation"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "hugohe3",
    "name": "ppt-master",
    "full_name": "hugohe3/ppt-master",
    "url": "https://github.com/hugohe3/ppt-master",
    "description": "AI generates a real, editable PowerPoint from any document — native shapes & animations, speaker notes voiced as audio narration, and the option to follow your own .pptx template, not slide images · by Hugo He",
    "language": "Python",
    "total_stars": 33013,
    "forks": 2811,
    "stars_this_period": 589,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai-agent",
        "aippt",
        "office",
        "powerpoint",
        "powerpoint-generation",
        "ppt",
        "pptx",
        "presentation",
        "slide",
        "slides"
      ],
      "license": "MIT",
      "open_issues": 6,
      "created_at": "2025-12-10T06:54:33Z",
      "pushed_at": "2026-06-27T11:51:49Z",
      "homepage": "https://hugohe3.github.io/ppt-master/",
      "default_branch": "main",
      "forks": 2811,
      "watchers": 69,
      "archived": false,
      "size_kb": 781548
    },
    "readme_content": "# PPT Master — AI generates natively editable PPTX from any document\n\n[![Version](https://img.shields.io/badge/version-v2.11.0-blue.svg)](https://github.com/hugohe3/ppt-master/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub stars](https://img.shields.io/github/stars/hugohe3/ppt-master.svg)](https://github.com/hugohe3/ppt-master/stargazers)\n[![AtomGit stars](https://atomgit.com/hugohe3/ppt-master/star/badge.svg)](https://atomgit.com/hugohe3/ppt-master)\n[![The Agentic Leaderboard](https://www.theagenticleaderboard.com/badges/ppt-master.svg)](https://www.theagenticleaderboard.com/agent/?q=ppt-master)\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/25760?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-25760\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://trendshift.io/api/badge/repositories/25760\" alt=\"hugohe3%2Fppt-master | Trendshift\" width=\"250\" height=\"55\"/></a>\n</p>\n\nEnglish | [中文](./README_CN.md)\n\n<details open>\n<summary>This project is kept free and open source with the support of <a href=\"https://www.packyapi.com/register?aff=ppt-master\">PackyCode</a>, <a href=\"https://apikey.fun/register?aff=PPT-MASTER\">APIKEY.FUN</a>, <a href=\"https://runapi.co/register?aff=WMLJ\">RunAPI</a>, <a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_pptmaster0624\">YouYun ZhiSuan</a> and other sponsors.</summary>\n\n<table>\n  <tr>\n    <td width=\"180\"><a href=\"https://www.packyapi.com/register?aff=ppt-master\"><img src=\"docs/assets/sponsors/packycode.png\" alt=\"PackyCode\" width=\"150\"></a></td>\n    <td>Thanks to PackyCode for sponsoring this project! PackyCode is a reliable and efficient API relay service provider, offering relay services for Claude Code, Codex, Gemini, and more. PackyCode provides special discounts for our project users: register using <a href=\"https://www.packyapi.com/register?aff=ppt-master\">this link</a> and enter the promo code <strong>ppt-master</strong> during recharge to get 10% off.</td>\n  </tr>\n  <tr>\n    <td width=\"180\"><a href=\"https://apikey.fun/register?aff=PPT-MASTER\"><img src=\"docs/assets/sponsors/apikey-fun.png\" alt=\"APIKEY.FUN\" width=\"150\"></a></td>\n    <td>Thanks to APIKEY.FUN for sponsoring this project! APIKEY.FUN is a professional enterprise-grade AI relay service committed to stable, efficient, and low-cost AI access for businesses and developers. The platform supports mainstream models including Claude, OpenAI, and Gemini, with prices as low as <strong>7% of official rates</strong>. Register through <a href=\"https://apikey.fun/register?aff=PPT-MASTER\">our dedicated link</a> for an exclusive perk: <strong>up to 5% off on top-ups, permanently</strong>.</td>\n  </tr>\n  <tr>\n    <td width=\"180\"><a href=\"https://runapi.co/register?aff=WMLJ\"><img src=\"docs/assets/sponsors/runapi.png\" alt=\"RunAPI\" width=\"150\"></a></td>\n    <td>Thanks to RunAPI for sponsoring this project! RunAPI is an efficient and stable API platform — a single API Key gives you access to 150+ leading models, including OpenAI, Claude, Gemini, DeepSeek, and Grok, at prices as low as <strong>10% of official rates</strong>, with exceptional stability and seamless compatibility with tools like Claude Code. RunAPI offers an exclusive perk for PPT Master users: register and contact an administrator via <a href=\"https://runapi.co/register?aff=WMLJ\">our dedicated link</a> to claim <strong>¥7 in free credit</strong>.</td>\n  </tr>\n  <tr>\n    <td width=\"180\"><a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_pptmaster0624\"><img src=\"docs/assets/sponsors/youyun.png\" alt=\"YouYun ZhiSuan\" width=\"150\"></a></td>\n    <td>Thanks to YouYun ZhiSuan for sponsoring this project! YouYun ZhiSuan is UCloud's AI cloud platform, providing one-stop API services for mainstream domestic and international models, all accessible with a single key. The platform features cost-effective CodingPlan packages for domestic models (including GLM5.2, Deepseek-v4, and more), along with official channels for stable access to overseas models, meeting diverse development needs. It's compatible with mainstream AI coding tools like Claude Code and Codex, as well as general API calls. The platform supports enterprise-level high concurrency, 24/7 technical support, and self-service invoicing. Register through <a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_pptmaster0624\">this link</a> to receive up to <strong>¥10 in free credits</strong> and get started right away.</td>\n  </tr>\n</table>\n\n</details>\n\n> [!IMPORTANT]\n> ### This is a tool, not a wishing well\n> Don't expect it to hand you a finished, perfect deck in one shot. Its real value is taking most of the tedious work off your plate; the polishing that's left is yours — a natively editable deck exists precisely so you can keep working on it, not a flat image you can't touch. The cheaper the model, the more there is to do. How good the result turns out comes down to your skill with this project and with PowerPoint.\n\n<p align=\"center\">\n  <a href=\"https://hugohe3.github.io/ppt-master/\"><strong>Live Demo</strong></a> ·\n  <a href=\"https://www.hehugo.com/\"><strong>About Hugo He</strong></a> ·\n  <a href=\"./examples/\"><strong>Examples</strong></a> ·\n  <a href=\"./docs/faq.md\"><strong>FAQ</strong></a> ·\n  <a href=\"./docs/roadmap.md\"><strong>Roadmap</strong></a> ·\n  <a href=\"mailto:heyug3@gmail.com\"><strong>Contact</strong></a>\n</p>\n\n<h3 align=\"center\">Download the new <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_attention_is_all_you_need/exports/attention_is_all_you_need_narrated.pptx\">narrated <em>Attention Is All You Need</em> deck</a> — play it in PowerPoint and every slide reads itself out loud. That's just the tip of what PPT Master can do.</h3>\n<h3 align=\"center\">Of course, you can also download any of the six example decks below — opening the raw .pptx in PowerPoint is the fastest way to see this project's real capability ceiling.</h3>\n\n<table>\n  <tr>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_pritzker_2026\"><img src=\"docs/assets/screenshots/preview_pritzker_2026.png\" alt=\"Editorial magazine — Pritzker 2026 architecture review\" /></a><br/>\n      <sub><b>Editorial Magazine</b> — architecture photography, calm typographic grid<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_pritzker_2026\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_pritzker_2026/exports/pritzker_2026.pptx\">Download .pptx</a></sub>\n    </td>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_global_ai_capital_2026\"><img src=\"docs/assets/screenshots/preview_global_ai_capital.png\" alt=\"Data journalism — Global AI Capital 2026\" /></a><br/>\n      <sub><b>Data Journalism</b> — Bloomberg-style dark dashboard, chart-driven<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_global_ai_capital_2026\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_global_ai_capital_2026/exports/global_ai_capital_2026.pptx\">Download .pptx</a></sub>\n    </td>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_swiss_grid_systems\"><img src=\"docs/assets/screenshots/preview_swiss_grid.png\" alt=\"Swiss typographic grid — Grid Systems primer\" /></a><br/>\n      <sub><b>Swiss Grid</b> — strict modular grid, restrained type, red-accent<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_swiss_grid_systems\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_swiss_grid_systems/exports/swiss_grid_systems.pptx\">Download .pptx</a></sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_glassmorphism_demo\"><img src=\"docs/assets/screenshots/preview_glassmorphism_demo.png\" alt=\"Glassmorphism SaaS — AI Agent engineering demo\" /></a><br/>\n      <sub><b>Glassmorphism SaaS</b> — translucent layers, gradient depth, product UI<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_glassmorphism_demo\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_glassmorphism_demo/exports/glassmorphism_demo.pptx\">Download .pptx</a></sub>\n    </td>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_sugar_rush_memphis\"><img src=\"docs/assets/screenshots/preview_sugar_rush_memphis.png\" alt=\"Memphis pop — Sugar Rush festival\" /></a><br/>\n      <sub><b>Memphis Pop</b> — bold primaries, geometric patterns, playful energy<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_sugar_rush_memphis\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_sugar_rush_memphis/exports/sugar_rush_memphis.pptx\">Download .pptx</a></sub>\n    </td>\n    <td align=\"center\" width=\"33%\">\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_indie_bookstore_zine_guide\"><img src=\"docs/assets/screenshots/preview_indie_bookstore_zine.png\" alt=\"Risograph zine — Indie bookstore guide\" /></a><br/>\n      <sub><b>Risograph Zine</b> — duotone print, hand-made bookstore-culture feel<br/>\n      <a href=\"https://hugohe3.github.io/ppt-master/viewer.html?project=ppt169_indie_bookstore_zine_guide\">Flip online</a> · <a href=\"https://raw.githubusercontent.com/hugohe3/ppt-master/main/examples/ppt169_indie_bookstore_zine_guide/exports/indie_bookstore_zine_guide.pptx\">Download .pptx</a></sub>\n    </td>\n  </tr>\n</table>\n\n<p align=\"center\">\n  <sub>Generated with Claude Opus 4.7 + <code>gpt-image-2</code>. <a href=\"https://hugohe3.github.io/ppt-master/\">Flip through all examples online →</a> · <a href=\"./examples/\"><code>examples/</code> directory</a> · <a href=\"./docs/why-ppt-master.md\">Why PPT Master?</a></sub>\n</p>\n\n---\n\nDrop in your source material and get back a **real PowerPoint**: directly editable, with native slide transitions and entrance animations, speaker notes you can turn into audio narration, and the option to follow your own PPT template — a complete deck you can present as-is and keep editing. How to use each capability → [Getting Started](./docs/getting-started.md).\n\n> **⚠️ PPT Master is a harness, not a complete agent.** `harness + model = agent` — the tool owns the workflow; the model sets the ceiling. To form a genuinely high-quality agent, use **Claude with a large context window (~1M tokens) + AI image generation (`gpt-image-2`)**. Other models can run the pipeline but cannot reach the same quality ceiling. If results disappoint, upgrade the model — don't blame the harness.\n\n> **How it works** — PPT Master is a workflow (a \"skill\") that works inside AI IDEs like Claude Code, Cursor, VS Code + Copilot, or Codebuddy. You chat with the AI — \"make a deck from this PDF\" — and it follows the workflow to produce a real editable `.pptx` on your computer. No coding on your side; the IDE is just where the conversation happens.\n>\n> **What you'll do**: install Python, install an AI IDE, drop in your material.\n\n> **Why it's shaped this way** — knowing how to use Python and AI agents will matter more and more. This project is meant to show how far you can go with just those two things. There's a learning curve if you're starting cold, but it's the curve worth climbing. Making a deck is just the excuse — what I'm really pushing is Python and agents.\n\nPPT Master is different:\n\n- **Real PowerPoint** — if a file can't be opened and edited in PowerPoint, it shouldn't be called a PPT. Every element PPT Master outputs is directly clickable and edi",
    "manifest_file": "requirements.txt",
    "manifest_content": "# PPT Master Dependencies / PPT Master 依赖\n# =============================================\n#\n# Full list lives inside the skill so installing the skill alone gives full capability.\n# 完整依赖列表已内置于 skill 内部，单独安装 skill 即可获得完整能力。\n#\n# Install / 安装方式：\n#   pip install -r requirements.txt                     # from repo root / 仓库根目录\n#   pip install -r skills/ppt-master/requirements.txt   # from anywhere / 任意位置\n#\n-r skills/ppt-master/requirements.txt\n",
    "strategic_keywords": [
      "agent",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "requirements.txt"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "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": 3791,
    "forks": 217,
    "stars_this_period": 546,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 48,
      "created_at": "2026-04-05T06:43:05Z",
      "pushed_at": "2026-06-27T20:47:10Z",
      "homepage": "https://kunchenguid.github.io/no-mistakes/",
      "default_branch": "main",
      "forks": 217,
      "watchers": 8,
      "archived": false,
      "size_kb": 4405
    },
    "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`, `copilot`, 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": 17,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 81
    },
    "strategic_score": 81
  },
  {
    "owner": "IceWhaleTech",
    "name": "CasaOS",
    "full_name": "IceWhaleTech/CasaOS",
    "url": "https://github.com/IceWhaleTech/CasaOS",
    "description": "CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system.",
    "language": "Go",
    "total_stars": 35756,
    "forks": 2043,
    "stars_this_period": 502,
    "source_slice": "all",
    "source_slices": [
      "all",
      "go"
    ],
    "metadata": {
      "topics": [
        "casaos",
        "docker",
        "golang",
        "home-automation",
        "home-cloud",
        "home-server",
        "iot",
        "raspberry",
        "self-hosted",
        "vuejs"
      ],
      "license": "Apache-2.0",
      "open_issues": 816,
      "created_at": "2021-09-26T02:33:09Z",
      "pushed_at": "2025-08-06T08:54:04Z",
      "homepage": "https://casaos.zimaspace.com",
      "default_branch": "main",
      "forks": 2043,
      "watchers": 208,
      "archived": false,
      "size_kb": 182856
    },
    "readme_content": "# CasaOS - Your Personal Cloud \n<!-- Readme i18n links -->\n<!-- > English | [中文](#) | [Français](#) -->\n\n<p align=\"center\">\n    <!-- CasaOS Banner -->\n    <picture>\n        <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_dark_night_800x300.png\">\n        <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_twilight_blue_800x300.png\">\n        <img alt=\"CasaOS\" src=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_twilight_blue_800x300.png\">\n    </picture>\n    <br/>\n    <i>Connect with the community, establish autonomy, reduce the cost of SaaS, and MAXIMIZE the potential for a personalized copilot.</i>\n    <br/>\n    <br/>\n    <!-- CasaOS Badges -->\n    <a href=\"https://github.com/IceWhaleTech/CasaOS\" target=\"_blank\">\n        <img alt=\"CasaOS Version\" src=\"https://img.shields.io/github/v/release/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=CasaOS\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/blob/main/LICENSE\" target=\"_blank\">\n        <img alt=\"CasaOS License\" src=\"https://img.shields.io/github/license/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=License\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls\" target=\"_blank\">\n        <img alt=\"CasaOS Pull Requests\" src=\"https://img.shields.io/github/issues-pr/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=PRs\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/issues\" target=\"_blank\">\n        <img alt=\"CasaOS Issues\" src=\"https://img.shields.io/github/issues/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Issues\" />\n    </a>\n    <a href=\"https://codecov.io/gh/IceWhaleTech/CasaOS\" > \n    <img src=\"https://codecov.io/gh/IceWhaleTech/CasaOS/branch/main/graph/badge.svg?token=l9uMKGlkxM\"/> \n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/stargazers\" target=\"_blank\">\n        <img alt=\"CasaOS Stargazers\" src=\"https://img.shields.io/github/stars/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Stars\" />\n    </a>\n    <!-- <a href=\"https://github.com/IceWhaleTech/CasaOS/releases\" target=\"_blank\">\n    <img alt=\"CasaOS Downloads\" src=\"https://img.shields.io/github/downloads/IceWhaleTech/CasaOS/total?color=162453&style=flat-square\" />\n    </a> -->\n    <br/>\n    <!-- CasaOS Community -->\n    <a href=\"https://discord.gg/knqAbbBbeX\" target=\"_blank\">\n        <img alt=\"IceWhale Discord\" src=\"https://img.shields.io/discord/884667213326463016?color=162453&style=flat-square&label=Discord&logo=discord&logoColor=fff\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/discussions\" target=\"_blank\">\n        <img alt=\"CasaOS GitHub Discussions\" src=\"https://img.shields.io/github/discussions/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Discussions&logo=github\" />\n    </a>\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n    <a href=\"#credits\">\n        <img alt=\"All Contributors\" src=\"https://img.shields.io/static/v1?label=All%20Contributors&message=15&color=162453&style=flat-square&logo=Handshake&logoColor=fff\" />\n    </a>\n    <!-- CasaOS YouTube -->\n    <a href=\"https://www.youtube.com/channel/UC2zMrUYT17AJhIl9XWZzT8g\" target=\"_blank\">\n        <img alt=\"YouTube Tutorial Views\" src=\"https://img.shields.io/youtube/channel/views/UC2zMrUYT17AJhIl9XWZzT8g?style=flat-square&logo=youtube&logoColor=red&label=YouTube%20Tutorial%20Views\" />\n    </a>\n    <br/>    \n    <a href=\"http://bit.ly/45JQIiL\" target=\"_blank\">\n        <img alt=\"twitter ZimaSpace\" src=\"https://img.shields.io/twitter/follow/ZimaSpace?style=flat-square&logo=X&label=Contact%20Us%20%40%20ZimaSpace&labelColor=555&color=555\" />\n    </a>\n    <a href=\"http://bit.ly/4lgHj7V\" target=\"_blank\">\n        <img alt=\"facebook ZimaSpace\" src=\"https://img.shields.io/badge/ZimaSpace-1877F2?style=flat-square&logo=Facebook&logoColor=fff&label=Contact%20Us&labelColor=555&color=162453\" />\n    </a>\n    <br/>\n    <!-- CasaOS Links -->\n    <a href=\"https://www.casaos.io\" target=\"_blank\">Website</a> |\n    <a href=\"http://demo.casaos.io\" target=\"_blank\">Demo</a> |\n    <a href=\"https://github.com/IceWhaleTech/CasaOS\" target=\"_blank\">GitHub</a>\n    <br/>\n    <br/>\n    <!-- CasaOS Snapshots -->\n    <kbd>\n      <picture>\n          <source media=\"(prefers-color-scheme: dark)\" srcset=\"snapshot-dark.jpg\">\n          <source media=\"(prefers-color-scheme: light)\" srcset=\"snapshot-light.jpg\">\n          <img alt=\"CasaOS Snapshot\" src=\"snapshot-light.jpg\">\n      </picture>\n    </kbd>\n</p>\n\n## Why do you need Personal Cloud?\n\nIn 2020, the team noticed three important trends:\n- The cost of computing power and storage was decreasing fast.\n- A part of cloud computing was moving towards edge computing.\n- The issue of consumer data asset ownership and attribution had been ignored.\n\nBased on these trends, the team proposed a thought experiment internally: what if personal clouds were available under $100 in next five years? This personal cloud would provide a low-cost data collaboration solution as a personal data center, storing and managing data for creators and small organizations. A distributed collaborative computing network can be formed by personal servers located around the world. It could also control and connect all smart devices, providing cross-ecosystem local intelligent services.\n\nFurthermore, the personal cloud could combine personal data to train personalized AI assistants. The idea is that this technology would be an effective way to solve the issue of consumer data asset ownership and , as well as provide a more affordable and efficient computing solution for individuals and small organizations.\n\n> If you think what we are doing is valuable. Please **give us a star ⭐** and **fork it 🤞**!\n\n## Features\n\n- Friendly UI designed for home scenarios\n  - No code, no forms, intuitive, design for humanity\n- Multiple hardware and base system support\n  - ZimaBoard, NUC, RPi, old computers, whatever is available.\n- Selected apps in the app store, one-click installation\n  - Nextcloud, HomeAssistant, AdGuard, Jellyfin, *arr and more!\n- Easily install numerous Docker apps\n  - Over 100,000 apps from the Docker ecosystem can be easily installed\n- Elegant drive and file management\n  - What you see is what you get. No technical background required.\n- Well-designed system/app widgets\n  - What you care about, at a glance. Resource usage, app status, and more!\n\n## Getting Started\n\nCasaOS fully supports ZimaBoard, Intel NUC, and Raspberry Pi. Also, more computers and development boards and fully compatible with Ubuntu, Debian, Raspberry Pi OS, and CentOS with one-liner installation.\n\n### Hardware Compatibility\n\n- amd64 / x86-64\n- arm64\n- armv7\n\n### System Compatibility\n\nOfficial Support\n- Debian 12 (✅ Tested, Recommended)\n- Ubuntu Server 20.04 (✅ Tested)\n- Raspberry Pi OS (✅ Tested)\n\nCommunity Support\n- Elementary 6.1 (✅ Tested)\n- Armbian 22.04 (✅ Tested)\n- Alpine (🚧 Not Fully Tested Yet)\n- OpenWrt (🚧 Not Fully Tested Yet)\n- ArchLinux (🚧 Not Fully Tested Yet)\n\n### Quick Setup CasaOS\n\nFreshly install a system from the list above and run this command:\n\n```sh\nwget -qO- https://get.casaos.io | sudo bash\n```\n\nor\n\n```sh\ncurl -fsSL https://get.casaos.io | sudo bash\n```\n\n### Update CasaOS\n\nCasaOS can be updated from the User Interface (UI), via `Settings ... Update`.  \n\nAlternatively it can be updated from a terminal session.  To update from a terminal session, it must be done either from a secure shell (ssh) session to the device or from a directly attached terminal and keyboard to the device running CasaOS, this cannot be done from the terminal via the CasaOS User Interface (UI).  To update to the latest release of CasaOS from a terminal session run this command:\n\n```sh\nwget -qO- https://get.casaos.io/update | sudo bash\n```\n\nor\n\n```sh\ncurl -fsSL https://get.casaos.io/update | sudo bash\n```\n\nTo determine version of CasaOS from a terminal session run this command:\n\n```sh\ncasaos -v\n```\n\n\n\n### Uninstall CasaOS\n\n\nv0.3.3 or newer\n\n```sh\ncasaos-uninstall\n```\n\nBefore v0.3.3\n\n```sh\ncurl -fsSL https://get.icewhale.io/casaos-uninstall.sh | sudo bash\n```\n\n## Community \n\nThe word Casa comes from the Spanish word for \"home\". Project CasaOS originated as a pre-installed system for the crowdfunded product [ZimaBoard](https://www.zimaboard.com) on Kickstarter.\n\nAfter looking at many systems and software on the market, the team found no server system designed for home scenarios, sadly true.\n\nSo, we set out to build this open-source project to develop CasaOS with our own hands, everyone in the community, and you.\n\nWe believe that through community-driven collaborative innovation and open communication with global developers, we can reshape the digital home experience like never before.\n\n**A warm welcome for you to get help or share great ideas in the [Discord](https://discord.gg/knqAbbBbeX)!**\n\n[![Discord Card](https://discordapp.com/api/guilds/884667213326463016/widget.png?style=banner2)](https://discord.gg/knqAbbBbeX)\n\n## Contributing\n\nCasaOS is a community-driven open source project and the people involved are CasaOS users. That means CasaOS will always need contributions from community members just like you!\n\n- See <https://wiki.casaos.io/en/contribute> for ways of contributing to CasaOS\n- See <https://wiki.casaos.io/en/contribute/development> if you want to be involved in code contribution specifically\n\n\n## Credits\n\nMany thanks to everyone who has helped CasaOS so far!\n\nEveryone's contribution is greatly appreciated. ([Emoji Key](https://allcontributors.org/docs/en/emoji-key))\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/jerrykuku\"><img src=\"https://avatars.githubusercontent.com/u/9485680?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>老竭力</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=jerrykuku\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=jerrykuku\" title=\"Documentation\">📖</a> <a href=\"#ideas-jerrykuku\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#infra-jerrykuku\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#maintenance-jerrykuku\" title=\"Maintenance\">🚧</a> <a href=\"#platform-jerrykuku\" title=\"Packaging/porting to new platform\">📦</a> <a href=\"#question-jerrykuku\" title=\"Answering Questions\">💬</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls?q=is%3Apr+reviewed-by%3Ajerrykuku\" title=\"Reviewed Pull Requests\">👀</a></td>\n    <td align=\"center\"><a href=\"https://github.com/LinkLeong\"><img src=\"https://avatars.githubusercontent.com/u/13556972?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>link</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=LinkLeong\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=LinkLeong\" title=\"Documentation\">📖</a> <a href=\"#ideas-LinkLeong\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#infra-LinkLeong\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#maintenance-LinkLeong\" title=\"Maintenance\">🚧</a> <a href=\"#question-LinkLeong\" title=\"Answering Questions\">💬</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls?q=is%3Apr+reviewed-by%3ALinkLeong\" title=\"Reviewed Pull Requests\">👀</a></td>\n    <td align=\"center\"><a href=\"https://github.com/tigerinus\"><img src=\"https://avatars.githubusercontent.com/u/7172560?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>太戈</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=tigerinus\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=tigerinus\" title=\"Documentation\">📖</a> <a href=\"#ideas-tigerinus\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/IceWhaleTech/CasaOS\n\ngo 1.21\n\nrequire (\n\tgithub.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d\n\tgithub.com/IceWhaleTech/CasaOS-Common v0.4.11-alpha4\n\tgithub.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf\n\tgithub.com/deckarep/golang-set/v2 v2.3.0\n\tgithub.com/deepmap/oapi-codegen v1.12.4\n\tgithub.com/disintegration/imaging v1.6.2\n\tgithub.com/dsoprea/go-exif/v3 v3.0.1\n\tgithub.com/getkin/kin-openapi v0.117.0\n\tgithub.com/glebarez/sqlite v1.8.0\n\tgithub.com/go-ini/ini v1.67.0\n\tgithub.com/go-resty/resty/v2 v2.7.0\n\tgithub.com/golang/mock v1.6.0\n\tgithub.com/gomodule/redigo v1.8.9\n\tgithub.com/google/go-github/v36 v36.0.0\n\tgithub.com/google/uuid v1.5.0\n\tgithub.com/googollee/go-socket.io v1.7.0\n\tgithub.com/gorilla/websocket v1.5.0\n\tgithub.com/h2non/filetype v1.1.3\n\tgithub.com/hirochachacha/go-smb2 v1.1.0\n\tgithub.com/json-iterator/go v1.1.12\n\tgithub.com/labstack/echo/v4 v4.12.0\n\tgithub.com/maruel/natural v1.1.0\n\tgithub.com/mholt/archiver/v3 v3.5.1\n\tgithub.com/mileusna/useragent v1.2.1\n\tgithub.com/moby/sys/mount v0.3.3\n\tgithub.com/moby/sys/mountinfo v0.6.2\n\tgithub.com/patrickmn/go-cache v2.1.0+incompatible\n\tgithub.com/pkg/errors v0.9.1\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/samber/lo v1.38.1\n\tgithub.com/shirou/gopsutil/v3 v3.23.2\n\tgithub.com/sirupsen/logrus v1.9.3\n\tgithub.com/stretchr/testify v1.9.0\n\tgithub.com/tidwall/gjson v1.17.0\n\tgo.uber.org/goleak v1.2.1\n\tgo.uber.org/zap v1.24.0\n\tgolang.org/x/crypto v0.23.0\n\tgolang.org/x/oauth2 v0.7.0\n\tgolang.org/x/sync v0.3.0\n\tgolang.org/x/sys v0.20.0\n\tgorm.io/gorm v1.25.0\n\tgotest.tools v2.2.0+incompatible\n)\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.0.5 // indirect\n\tgithub.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect\n\tgithub.com/benbjohnson/clock v1.3.1 // indirect\n\tgithub.com/coreos/go-systemd/v22 v22.5.0 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect\n\tgithub.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect\n\tgithub.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/geoffgarside/ber v1.1.0 // indirect\n\tgithub.com/glebarez/go-sqlite v1.21.1 // indirect\n\tgithub.com/go-errors/errors v1.4.2 // indirect\n\tgithub.com/go-ole/go-ole v1.2.6 // indirect\n\tgithub.com/go-openapi/jsonpointer v0.19.6 // indirect\n\tgithub.com/go-openapi/swag v0.22.3 // indirect\n\tgithub.com/godbus/dbus/v5 v5.1.0 // indirect\n\tgithub.com/gofrs/uuid v4.4.0+incompatible // indirect\n\tgithub.com/golang-jwt/jwt v3.2.2+incompatible // indirect\n\tgithub.com/golang-jwt/jwt/v4 v4.5.0 // indirect\n\tgithub.com/golang-jwt/jwt/v5 v5.0.0 // indirect\n\tgithub.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/go-cmp v0.6.0 // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/safetext v0.0.0-20240104143208-7a7d9b3d812f // indirect\n\tgithub.com/gorilla/mux v1.8.0 // indirect\n\tgithub.com/invopop/yaml v0.2.0 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/josharian/intern v1.0.0 // indirect\n\tgithub.com/klauspost/compress v1.16.7 // indirect\n\tgithub.com/klauspost/pgzip v1.2.5 // indirect\n\tgithub.com/labstack/echo-jwt/v4 v4.2.0 // indirect\n\tgithub.com/labstack/gommon v0.4.2 // indirect\n\tgithub.com/lufia/plan9stats v0.0.0-20230110061619-bbe2e5e100de // indirect\n\tgithub.com/mailru/easyjson v0.7.7 // indirect\n\tgithub.com/mattn/go-colorable v0.1.13 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.2 // indirect\n\tgithub.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect\n\tgithub.com/nwaples/rardecode v1.1.3 // indirect\n\tgithub.com/perimeterx/marshmallow v1.1.4 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.17 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/tidwall/match v1.1.1 // indirect\n\tgithub.com/tidwall/pretty v1.2.1 // indirect\n\tgithub.com/tklauser/go-sysconf v0.3.11 // indirect\n\tgithub.com/tklauser/numcpus v0.6.0 // indirect\n\tgithub.com/ugorji/go/codec v1.2.11 // indirect\n\tgithub.com/ulikunitz/xz v0.5.11 // indirect\n\tgithub.com/valyala/bytebufferpool v1.0.0 // indirect\n\tgithub.com/valyala/fasttemplate v1.2.2 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n\tgithub.com/yusufpapurcu/wmi v1.2.2 // indirect\n\tgo.uber.org/atomic v1.10.0 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgolang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect\n\tgolang.org/x/image v0.6.0 // indirect\n\tgolang.org/x/net v0.25.0 // indirect\n\tg",
    "strategic_keywords": [
      "automation",
      "codegen"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 15,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 77
    },
    "strategic_score": 77
  },
  {
    "owner": "ripienaar",
    "name": "free-for-dev",
    "full_name": "ripienaar/free-for-dev",
    "url": "https://github.com/ripienaar/free-for-dev",
    "description": "A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev",
    "language": "HTML",
    "total_stars": 124140,
    "forks": 13080,
    "stars_this_period": 459,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "awesome-list",
        "free-for-developers"
      ],
      "license": "NOASSERTION",
      "open_issues": 13,
      "created_at": "2015-03-18T21:06:26Z",
      "pushed_at": "2026-06-24T12:10:02Z",
      "homepage": "https://free-for.dev/",
      "default_branch": "master",
      "forks": 13080,
      "watchers": 1757,
      "archived": false,
      "size_kb": 10255
    },
    "readme_content": "# free-for.dev\n\nDevelopers and Open Source authors now have many services offering free tiers, but finding them all takes time to make informed decisions.\n\nThis is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings with free developer tiers.\n\nThe scope of this particular list is limited to things that infrastructure developers (System Administrator, DevOps Practitioners, etc.) are likely to find useful. We love all the free services out there, but it would be good to keep it on topic. It's a grey line sometimes, so this is opinionated; please don't feel offended if I don't accept your contribution.\n\nThis list results from Pull Requests, reviews, ideas, and work done by 1600+ people. You can also help by sending [Pull Requests](https://github.com/ripienaar/free-for-dev) to add more services or remove ones whose offerings have changed or been retired.\n\n[![Track Awesome List](https://www.trackawesomelist.com/badge.svg)](https://www.trackawesomelist.com/ripienaar/free-for-dev)\n\n**NOTE**: This list is only for as-a-Service offerings, not for self-hosted software. To be eligible, a service must offer a free tier, not just a free trial. The free tier must be for at least a year if it is time-bucketed. We also consider the free tier from a security perspective, so SSO is fine, but I will not accept services that restrict TLS to paid-only tiers.\n\n# Table of Contents\n\n  * [Major Cloud Providers' Always-Free Limits](#major-cloud-providers)\n  * [Cloud management solutions](#cloud-management-solutions)\n  * [Analytics, Events, and Statistics](#analytics-events-and-statistics)\n  * [APIs, Data and ML](#apis-data-and-ml)\n  * [Artifact Repos](#artifact-repos)\n  * [BaaS](#baas)\n  * [Low-code Platform](#low-code-platform)\n  * [CDN and Protection](#cdn-and-protection)\n  * [CI and CD](#ci-and-cd)\n  * [CMS](#cms)\n  * [Code Generation](#code-generation)\n  * [Code Quality](#code-quality)\n  * [Code Search and Browsing](#code-search-and-browsing)\n  * [Crash and Exception Handling](#crash-and-exception-handling)\n  * [Data Visualization on Maps](#data-visualization-on-maps)\n  * [Managed Data Services](#managed-data-services)\n  * [Design and UI](#design-and-ui)\n  * [Dev Blogging Sites](#dev-blogging-sites)\n  * [DNS](#dns)\n  * [Docker Related](#docker-related)\n  * [Domain](#domain)\n  * [Education and Career Development](#education-and-career-development)\n  * [Email](#email)\n  * [Feature Toggles Management Platforms](#feature-toggles-management-platforms)\n  * [Font](#font)\n  * [Forms](#forms)\n  * [Generative AI](#generative-ai)\n  * [IaaS](#iaas)\n  * [IDE and Code Editing](#ide-and-code-editing)\n  * [International Mobile Number Verification API and SDK](#international-mobile-number-verification-api-and-sdk)\n  * [Issue Tracking and Project Management](#issue-tracking-and-project-management)\n  * [Log Management](#log-management)\n  * [Mobile App Distribution and Feedback](#mobile-app-distribution-and-feedback)\n  * [Management Systems](#management-system)\n  * [Messaging and Streaming](#messaging-and-streaming)\n  * [Miscellaneous](#miscellaneous)\n  * [Monitoring](#monitoring)\n  * [PaaS](#paas)\n  * [Package Build System](#package-build-system)\n  * [Payment and Billing Integration](#payment-and-billing-integration)\n  * [Privacy Management](#privacy-management)\n  * [Screenshot APIs](#screenshot-apis)\n  * [Flutter Related and Building IOS Apps without Mac](#flutter-related-and-building-ios-apps-without-mac)\n  * [Search](#search)\n  * [Security and PKI](#security-and-pki)\n  * [Authentication, Authorization, and User Management](#authentication-authorization-and-user-management)\n  * [Source Code Repos](#source-code-repos)\n  * [Storage and Media Processing](#storage-and-media-processing)\n  * [Tunneling, WebRTC, Web Socket Servers and Other Routers](#tunneling-webrtc-web-socket-servers-and-other-routers)\n  * [Testing](#testing)\n  * [Tools for Teams and Collaboration](#tools-for-teams-and-collaboration)\n  * [Translation Management](#translation-management)\n  * [Visitor Session Recording](#visitor-session-recording)\n  * [Web Hosting](#web-hosting)\n  * [Commenting Platforms](#commenting-platforms)\n  * [Browser based hardware emulation](#browser-based-hardware-emulation-written-in-javascript)\n  * [Remote Desktop Tools](#remote-desktop-tools)\n  * [Other Free Resources](#other-free-resources)\n\n## Major Cloud Providers\n\n  * [Google Cloud Platform](https://cloud.google.com)\n    * App Engine - 28 frontend instance hours per day, nine backend instance hours per day\n    * Cloud Firestore - 1GB storage, 50,000 reads, 20,000 writes, 20,000 deletes per day\n    * Compute Engine - 1 non-preemptible e2-micro, 30GB HDD, 5GB snapshot storage (restricted to certain regions), 1 GB network egress from North America to all region destinations (excluding China and Australia) per month\n    * Cloud Storage - 5GB, 1GB network egress\n    * Cloud Shell - Web-based Linux shell/primary IDE with 5GB of persistent storage. 60 hours limit per week\n    * Cloud Pub/Sub - 10GB of messages per month\n    * Cloud Functions - 2 million invocations per month (includes both background and HTTP invocations)\n    * Cloud Run - 2 million requests per month, 360,000 GB-seconds memory, 180,000 vCPU-seconds of compute time, 1 GB network egress from North America per month\n    * Google Kubernetes Engine - No cluster management fee for one zonal cluster. Each user node is charged at standard Compute Engine pricing\n    * BigQuery - 1 TB of querying per month, 10 GB of storage each month\n    * Cloud Build - 120 build-minutes per day\n    * [Google Colab](https://colab.research.google.com/) - Free Jupyter Notebooks development environment.\n    * [Kaggle](https://www.kaggle.com/) - Jupyter Notebooks with 4 CPU cores and 30 GB RAM computational environment without any weekly usage limits. With Phone number verification - 1 Nvidia Tesla P100 GPU or 2x Nvidia Tesla T4 GPU can be added with usage limit of 30 GPU hours/week for free. With Identity verification - 1 TPU v3-8 with 96 CPU cores and 330 GB RAM is available with usage limit of 20 hours/week for free. Check [Technical Specifications](https://www.kaggle.com/docs/notebooks#technical-specifications) for more details.\n    * Full, detailed list - https://cloud.google.com/free\n\n  * [Amazon Web Services](https://aws.amazon.com)\n    * [CloudFront](https://aws.amazon.com/cloudfront/) - 1TB egress per month and 2M Function invocations per month\n    * [CloudWatch](https://aws.amazon.com/cloudwatch/) - 10 custom metrics and ten alarms\n    * [CodeBuild](https://aws.amazon.com/codebuild/) - 100min of build time per month\n    * [CodeCommit](https://aws.amazon.com/codecommit/) - 5 active users,50GB storage, and 10000 requests per month\n    * [CodePipeline](https://aws.amazon.com/codepipeline/) - 1 active pipeline per month\n    * [DynamoDB](https://aws.amazon.com/dynamodb/) - 25GB NoSQL DB\n    * [EC2](https://aws.amazon.com/ec2/) - 750 hours per month of t2.micro or t3.micro(12mo). 100GB egress per month\n    * [EBS](https://aws.amazon.com/ebs/) - 30GB per month of General Purpose (SSD) or Magnetic(12mo)\n    * [Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/) - 750 hours per month(12mo)\n    * [RDS](https://aws.amazon.com/rds/) - 750 hours per month of db.t2.micro, db.t3.micro, or db.t4g.micro, 20GB of General Purpose (SSD) storage, 20GB of storage backups(12 mo)\n    * [S3](https://aws.amazon.com/s3/) - 5GB Standard object storage, 20K Get requests and 2K Put requests(12 mo)\n    * [Glacier](https://aws.amazon.com/glacier/) - 10GB long-term object storage\n    * [Lambda](https://aws.amazon.com/lambda/) - 1 million requests per month\n    * [SNS](https://aws.amazon.com/sns/) - 1 million publishes per month\n    * [SES](https://aws.amazon.com/ses/) - 3.000 messages per month (12mo)\n    * [SQS](https://aws.amazon.com/sqs/) - 1 million messaging queue requests\n    * Full, detailed list - https://aws.amazon.com/free/\n\n  * [Microsoft Azure](https://azure.microsoft.com)\n    * [Virtual Machines](https://azure.microsoft.com/services/virtual-machines/) - 1 B1S Linux VM, 1 B1S Windows VM (12mo)\n    * [App Service](https://azure.microsoft.com/services/app-service/) - 10 web, mobile, or API apps (60 CPU minutes/day)\n    * [Functions](https://azure.microsoft.com/services/functions/) - 1 million requests per month\n    * [DevTest Labs](https://azure.microsoft.com/services/devtest-lab/) - Enable fast, easy, and lean dev-test environments\n    * [Active Directory](https://azure.microsoft.com/services/active-directory/) - 500,000 objects\n    * [Active Directory B2C](https://azure.microsoft.com/services/active-directory/external-identities/b2c/) - 50,000 monthly stored users\n    * [Azure DevOps](https://azure.microsoft.com/services/devops/) - 5 active users, unlimited private Git repos\n    * [Azure Pipelines](https://azure.microsoft.com/services/devops/pipelines/) - 10 free parallel jobs with unlimited minutes for open source for Linux, macOS, and Windows\n    * [Microsoft IoT Hub](https://azure.microsoft.com/services/iot-hub/) - 8,000 messages per day\n    * [Load Balancer](https://azure.microsoft.com/services/load-balancer/) - 1 free public load-balanced IP (VIP)\n    * [Notification Hubs](https://azure.microsoft.com/services/notification-hubs/) - 1 million push notifications\n    * [Bandwidth](https://azure.microsoft.com/pricing/details/bandwidth/) - 15GB Inbound(12mo) & 5GB egress per month\n    * [Cosmos DB](https://azure.microsoft.com/services/cosmos-db/) - 25GB storage and 1000 RUs of provisioned throughput\n    * [Static Web Apps](https://azure.microsoft.com/pricing/details/app-service/static/) - Build, deploy, and host static apps and serverless functions with free SSL, Authentication/Authorization, and custom domains\n    * [Storage](https://azure.microsoft.com/services/storage/) - 5GB LRS File or Blob storage (12mo)\n    * [Cognitive Services](https://azure.microsoft.com/services/cognitive-services/) - AI/ML APIs (Computer Vision, Translator, Face detection, Bots, etc) with free tier including limited transactions\n    * [Cognitive Search](https://azure.microsoft.com/services/search/#features) - AI-based search and indexation service, free for 10,000 documents\n    * [Azure Kubernetes Service](https://azure.microsoft.com/services/kubernetes-service/) - Managed Kubernetes service, free cluster management\n    * [Event Grid](https://azure.microsoft.com/services/event-grid/) - 100K ops/month\n    * Full, detailed list - https://azure.microsoft.com/free/\n\n  * [Oracle Cloud](https://www.oracle.com/cloud/)\n    * Compute\n       - 2 AMD-based Compute VMs with 1/8 OCPU and 1 GB memory each\n       - 2 Arm-based Ampere A1 cores and 12 GB of memory usable as one VM or up to 2 VMs\n       - Instances will be reclaimed when [deemed idle](https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm#compute__idleinstances)\n    * Block Volume - 2 volumes, 200 GB total (used for compute)\n    * Object Storage - 10 GB\n    * Load balancer - 1 instance with 10 Mbps\n    * Databases - 2 DBs, 20 GB each\n    * Monitoring - 500 million ingestion data points, 1 billion retrieval datapoints\n    * Bandwidth - 10 TB egress per month, speed limited to 50 Mbps on x64-based VM, 500 Mbps * core count on ARM-based VM\n    * Public IP - 2 IPv4 for VMs, 1 IPv4 for load balancer\n    * Notifications - 1 million delivery options per month, 1000 emails sent per month\n    * Full, detailed list - https://www.oracle.com/cloud/free/\n\n  * [IBM Cloud](https://www.ibm.com/cloud/free/)\n    * Cloudant database - 1 GB of data storage\n    * Db2 database - 100MB of data storage\n    * API Connect - 50,000 API calls per month\n    * Availability Monitoring - 3 million data points per month\n    * Log Analysis - 500MB of daily log\n    * Full, detailed list - https://www.ibm.com/cloud/free/\n\n  * [Cloudflare](https://www.cloudflare.com/)\n    * [Application Services](https://www.cloudflare.com/plans/) - Free DNS for an unlimited number of domains, DDoS Protec",
    "strategic_keywords": [
      "rag"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 8,
      "novelty": 4,
      "productize": 14,
      "adoption": 8,
      "relation": 7,
      "risk_signal": 4,
      "total": 63
    },
    "strategic_score": 63
  },
  {
    "owner": "safishamsi",
    "name": "graphify",
    "full_name": "safishamsi/graphify",
    "url": "https://github.com/safishamsi/graphify",
    "description": "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs, papers, images, or videos into a queryable knowledge graph. App code + database schema + infrastructure in one graph.",
    "language": "Python",
    "total_stars": 72945,
    "forks": 7310,
    "stars_this_period": 435,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "antigravity",
        "claude-code",
        "codex",
        "gemini",
        "graphrag",
        "knowledge-graph",
        "leiden",
        "openclaw",
        "rag",
        "skills",
        "tree-sitter"
      ],
      "license": "MIT",
      "open_issues": 396,
      "created_at": "2026-04-03T15:49:07Z",
      "pushed_at": "2026-06-27T09:29:50Z",
      "homepage": "https://graphifylabs.ai/",
      "default_branch": "v8",
      "forks": 7310,
      "watchers": 250,
      "archived": false,
      "size_kb": 4811
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://graphifylabs.ai\"><img src=\"https://raw.githubusercontent.com/safishamsi/graphify/v4/docs/logo-text.svg\" width=\"260\" height=\"64\" alt=\"Graphify\"/></a>\n</p>\n\n<p align=\"center\">\n  🇺🇸 <a href=\"README.md\">English</a> | 🇨🇳 <a href=\"docs/translations/README.zh-CN.md\">简体中文</a> | 🇯🇵 <a href=\"docs/translations/README.ja-JP.md\">日本語</a> | 🇰🇷 <a href=\"docs/translations/README.ko-KR.md\">한국어</a> | 🇩🇪 <a href=\"docs/translations/README.de-DE.md\">Deutsch</a> | 🇫🇷 <a href=\"docs/translations/README.fr-FR.md\">Français</a> | 🇪🇸 <a href=\"docs/translations/README.es-ES.md\">Español</a> | 🇮🇳 <a href=\"docs/translations/README.hi-IN.md\">हिन्दी</a> | 🇧🇷 <a href=\"docs/translations/README.pt-BR.md\">Português</a> | 🇷🇺 <a href=\"docs/translations/README.ru-RU.md\">Русский</a> | 🇸🇦 <a href=\"docs/translations/README.ar-SA.md\">العربية</a> | 🇮🇷 <a href=\"docs/translations/README.fa-IR.md\">فارسی</a> | 🇮🇹 <a href=\"docs/translations/README.it-IT.md\">Italiano</a> | 🇵🇱 <a href=\"docs/translations/README.pl-PL.md\">Polski</a> | 🇳🇱 <a href=\"docs/translations/README.nl-NL.md\">Nederlands</a> | 🇹🇷 <a href=\"docs/translations/README.tr-TR.md\">Türkçe</a> | 🇺🇦 <a href=\"docs/translations/README.uk-UA.md\">Українська</a> | 🇻🇳 <a href=\"docs/translations/README.vi-VN.md\">Tiếng Việt</a> | 🇮🇩 <a href=\"docs/translations/README.id-ID.md\">Bahasa Indonesia</a> | 🇸🇪 <a href=\"docs/translations/README.sv-SE.md\">Svenska</a> | 🇬🇷 <a href=\"docs/translations/README.el-GR.md\">Ελληνικά</a> | 🇷🇴 <a href=\"docs/translations/README.ro-RO.md\">Română</a> | 🇨🇿 <a href=\"docs/translations/README.cs-CZ.md\">Čeština</a> | 🇫🇮 <a href=\"docs/translations/README.fi-FI.md\">Suomi</a> | 🇩🇰 <a href=\"docs/translations/README.da-DK.md\">Dansk</a> | 🇳🇴 <a href=\"docs/translations/README.no-NO.md\">Norsk</a> | 🇭🇺 <a href=\"docs/translations/README.hu-HU.md\">Magyar</a> | 🇹🇭 <a href=\"docs/translations/README.th-TH.md\">ภาษาไทย</a> | 🇺🇿 <a href=\"docs/translations/README.uz-UZ.md\">Oʻzbekcha</a> | 🇹🇼 <a href=\"docs/translations/README.zh-TW.md\">繁體中文</a> | 🇵🇭 <a href=\"docs/translations/README.fil-PH.md\">Filipino</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.ycombinator.com/companies/graphify\"><img src=\"https://img.shields.io/badge/Y%20Combinator-S26-F0652F?style=flat&logo=ycombinator&logoColor=white\" alt=\"YC S26\"/></a>\n  <a href=\"https://safishamsi.gumroad.com/l/qetvlo\"><img src=\"https://img.shields.io/badge/Book-The%20Memory%20Layer-2ea44f?style=flat&logo=gitbook&logoColor=white\" alt=\"The Memory Layer\"/></a>\n  <a href=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml\"><img src=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml/badge.svg?branch=v8\" alt=\"CI\"/></a>\n  <a href=\"https://pypi.org/project/graphifyy/\"><img src=\"https://img.shields.io/pypi/v/graphifyy\" alt=\"PyPI\"/></a>\n  <a href=\"https://pepy.tech/project/graphifyy\"><img src=\"https://img.shields.io/pepy/dt/graphifyy?color=blue&label=downloads\" alt=\"Downloads\"/></a>\n  <a href=\"https://github.com/sponsors/safishamsi\"><img src=\"https://img.shields.io/badge/sponsor-safishamsi-ea4aaa?logo=github-sponsors\" alt=\"Sponsor\"/></a>\n  <a href=\"https://www.linkedin.com/in/safi-shamsi\"><img src=\"https://img.shields.io/badge/LinkedIn-Safi%20Shamsi-0077B5?logo=linkedin\" alt=\"LinkedIn\"/></a>\n  <a href=\"https://x.com/graphifyy\"><img src=\"https://img.shields.io/badge/X-graphifyy-000000?logo=x&logoColor=white\" alt=\"X\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://star-history.com/#safishamsi/graphify&Date\">\n    <img src=\"https://api.star-history.com/svg?repos=safishamsi/graphify&type=Date\" alt=\"Star History Chart\" width=\"370\"/>\n  </a>\n</p>\n\nType `/graphify` in your AI coding assistant and it maps your entire project — code, docs, PDFs, images, videos — into a knowledge graph you can query instead of grepping through files.\n\nWorks in Claude Code, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, GitHub Copilot CLI, VS Code Copilot Chat, Aider, Amp, OpenClaw, Factory Droid, Trae, Hermes, Kimi Code, Kiro, Pi, Devin CLI, and Google Antigravity.\n\n```\n/graphify .\n```\n\nThat's it. You get three files:\n\n```\ngraphify-out/\n├── graph.html       open in any browser — click nodes, filter, search\n├── GRAPH_REPORT.md  the highlights: key concepts, surprising connections, suggested questions\n└── graph.json       the full graph — query it anytime without re-reading your files\n```\n\nFor a readable architecture page with Mermaid call-flow diagrams, run:\n\n```bash\ngraphify export callflow-html\n```\n\n---\n\n## Prerequisites\n\n| Requirement | Minimum | Check | Install |\n|---|---|---|---|\n| Python | 3.10+ | `python --version` | [python.org](https://www.python.org/downloads/) |\n| uv *(recommended)* | any | `uv --version` | `curl -LsSf https://astral.sh/uv/install.sh \\| sh` |\n| pipx *(alternative)* | any | `pipx --version` | `pip install pipx` |\n\n**macOS quick install (Homebrew):**\n```bash\nbrew install python@3.12 uv\n```\n\n**Windows quick install:**\n```powershell\nwinget install astral-sh.uv\n```\n\n**Ubuntu/Debian:**\n```bash\nsudo apt install python3.12 python3-pip pipx\n# or install uv:\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n---\n\n## Install\n\n> **Official package:** The PyPI package is `graphifyy` (double-y). Other `graphify*` packages on PyPI are not affiliated. The CLI command is still `graphify`.\n\n**Step 1 — install the package:**\n\n```bash\n# Recommended (uv puts graphify on PATH automatically):\nuv tool install graphifyy\n\n# Alternatives:\npipx install graphifyy\npip install graphifyy  # may need PATH setup — see note below\n```\n\n**Step 2 — register the skill with your AI assistant:**\n\n```bash\ngraphify install\n```\n\nThat's it. Open your AI assistant and type `/graphify .`\n\nTo install the assistant skill into the current repository instead of your user\nprofile, add `--project`:\n\n```bash\ngraphify install --project\ngraphify install --project --platform codex\n```\n\nProject-scoped installs write under the current directory, for example\n`.claude/skills/graphify/SKILL.md` or `.agents/skills/graphify/SKILL.md` (plus a\n`references/` sidecar the skill loads on demand), and\nprint a `git add` hint for files that can be committed.\nPer-platform commands that support project-scoped installs accept the same flag,\nfor example `graphify claude install --project` or `graphify codex install --project`.\n\n> **PowerShell note:** Use `graphify .` not `/graphify .` — the leading slash is a path separator in PowerShell.\n\n> **`graphify: command not found`?** Use `uv tool install graphifyy` or `pipx install graphifyy` — both put the CLI on PATH automatically. With plain `pip`, add `~/.local/bin` (Linux) or `~/Library/Python/3.x/bin` (Mac) to your PATH, or run `python -m graphify`.\n\n> **Avoid `pip install` on Mac/Windows** if possible. The skill resolves Python at runtime from `graphify-out/.graphify_python`; if that points to a different environment than where `pip` installed the package, you'll get `ModuleNotFoundError: No module named 'graphify'`. `uv tool install` and `pipx install` isolate the package in their own env and avoid this entirely.\n\n> **Git hooks and uv tool / pipx:** `graphify hook install` embeds the current interpreter path directly into the hook scripts at install time, so the post-commit hook fires correctly even in GUI git clients and CI runners where `~/.local/bin` is not on PATH. If you reinstall or upgrade graphify, re-run `graphify hook install` to refresh the embedded path.\n\n### Pick your platform\n\n| Platform | Install command |\n|----------|----------------|\n| Claude Code (Linux/Mac) | `graphify install` |\n| Claude Code (Windows) | `graphify install` (auto-detected) or `graphify install --platform windows` |\n| CodeBuddy | `graphify install --platform codebuddy` |\n| Codex | `graphify install --platform codex` |\n| OpenCode | `graphify install --platform opencode` |\n| Kilo Code | `graphify install --platform kilo` |\n| GitHub Copilot CLI | `graphify install --platform copilot` |\n| VS Code Copilot Chat | `graphify vscode install` |\n| Aider | `graphify install --platform aider` |\n| OpenClaw | `graphify install --platform claw` |\n| Factory Droid | `graphify install --platform droid` |\n| Trae | `graphify install --platform trae` |\n| Trae CN | `graphify install --platform trae-cn` |\n| Gemini CLI | `graphify install --platform gemini` |\n| Hermes | `graphify install --platform hermes` |\n| Kimi Code | `graphify install --platform kimi` |\n| Amp | `graphify amp install` |\n| Agent Skills (cross-framework) | `graphify install --platform agents` (alias `--platform skills`) |\n| Kiro IDE/CLI | `graphify kiro install` |\n| Pi coding agent | `graphify install --platform pi` |\n| Cursor | `graphify cursor install` |\n| Devin CLI | `graphify devin install` |\n| Google Antigravity | `graphify antigravity install` |\n\nCodex users also need `multi_agent = true` under `[features]` in `~/.codex/config.toml` for parallel extraction. CodeBuddy uses the same Agent tool and PreToolUse hook mechanism as Claude Code. Factory Droid uses the `Task` tool for parallel subagent dispatch. OpenClaw and Aider use sequential extraction (parallel agent support is still early on those platforms). Trae uses the Agent tool for parallel subagent dispatch and does **not** support PreToolUse hooks — AGENTS.md is the always-on mechanism.\n\n`--platform agents` (alias `--platform skills`) targets the generic cross-framework [Agent-Skills](https://github.com/anthropics/skills) locations: the spec's user-global `~/.agents/skills/` (read by `npx skills` and spec-compliant frameworks) for a global install, and `./.agents/skills/` for a project (`--project`) install. The bare `graphify install` stays single-platform (Claude Code) by design — use the named `agents` platform when you want the skill discoverable by any framework that reads `.agents/skills`.\n\n> Codex uses `$graphify` instead of `/graphify`.\n\n### Optional extras\n\nInstall only what you need:\n\n| Extra | What it adds | Install |\n|---|---|---|\n| `pdf` | PDF extraction | `uv tool install \"graphifyy[pdf]\"` |\n| `office` | `.docx` and `.xlsx` support | `uv tool install \"graphifyy[office]\"` |\n| `google` | Google Sheets rendering | `uv tool install \"graphifyy[google]\"` |\n| `video` | Video/audio transcription (faster-whisper + yt-dlp) | `uv tool install \"graphifyy[video]\"` |\n| `mcp` | MCP stdio server | `uv tool install \"graphifyy[mcp]\"` |\n| `neo4j` | Neo4j push support | `uv tool install \"graphifyy[neo4j]\"` |\n| `falkordb` | FalkorDB push support | `uv tool install \"graphifyy[falkordb]\"` |\n| `svg` | SVG graph export | `uv tool install \"graphifyy[svg]\"` |\n| `leiden` | Leiden community detection (Python < 3.13 only) | `uv tool install \"graphifyy[leiden]\"` |\n| `ollama` | Ollama local inference | `uv tool install \"graphifyy[ollama]\"` |\n| `openai` | OpenAI / OpenAI-compatible APIs | `uv tool install \"graphifyy[openai]\"` |\n| `gemini` | Google Gemini API | `uv tool install \"graphifyy[gemini]\"` |\n| `anthropic` | Anthropic Claude API (`--backend claude`, uses `ANTHROPIC_API_KEY`) | `uv tool install \"graphifyy[anthropic]\"` |\n| `bedrock` | AWS Bedrock (uses IAM, no API key) | `uv tool install \"graphifyy[bedrock]\"` |\n| `azure` | Azure OpenAI Service (`--backend azure`, uses `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_ENDPOINT`) | `uv tool install \"graphifyy[openai]\"` |\n| `sql` | SQL schema extraction | `uv tool install \"graphifyy[sql]\"` |\n| `postgres` | Live PostgreSQL introspection (`--postgres DSN`) | `uv tool install \"graphifyy[postgres]\"` |\n| `dm` | BYOND DreamMaker `.dm`/`.dme` AST extraction (may need a C compiler + `python3-dev` if no wheel matches your platform) | `uv tool install \"graphifyy[dm]\"` |\n| `terraform` | Terraform / HCL `.tf`/`.tfvars`/`.hcl` AST extraction | `uv tool install \"graphifyy[terraform]\"` |\n| `chinese` | Chinese query segmentation (jieba) | `uv tool install \"graphifyy[chinese]\"` |\n| `all` | Everything above | `uv tool install \"graphifyy[all]\"` |\n\n---\n\n## Make your assistant always use the graph\n\nRun this once in your project after building a graph:\n\n| Platform | Command |\n|----------|---------|\n| C",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=68\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"graphifyy\"\nversion = \"0.8.50\"\ndescription = \"AI coding assistant skill (Claude Code, CodeBuddy, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph\"\nreadme = \"README.md\"\nlicense = { file = \"LICENSE\" }\nkeywords = [\"claude\", \"claude-code\", \"codex\", \"opencode\", \"kilo\", \"cursor\", \"gemini\", \"aider\", \"kiro\", \"pi\", \"devin\", \"knowledge-graph\", \"rag\", \"graphrag\", \"obsidian\", \"community-detection\", \"tree-sitter\", \"leiden\", \"llm\"]\nrequires-python = \">=3.10\"\ndependencies = [\n    \"networkx>=3.4\",\n    \"numpy>=1.21\",\n    \"rapidfuzz>=3.0\",\n    \"tree-sitter>=0.23.0,<0.26\",\n    \"tree-sitter-python>=0.23,<0.26\",\n    \"tree-sitter-javascript>=0.23,<0.26\",\n    \"tree-sitter-typescript>=0.23,<0.25\",\n    \"tree-sitter-go>=0.23,<0.26\",\n    \"tree-sitter-rust>=0.23,<0.25\",\n    \"tree-sitter-java>=0.23,<0.25\",\n    \"tree-sitter-groovy>=0.1,<0.3\",\n    \"tree-sitter-c>=0.23,<0.25\",\n    \"tree-sitter-cpp>=0.23,<0.25\",\n    \"tree-sitter-ruby>=0.23,<0.25\",\n    \"tree-sitter-c-sharp>=0.23,<0.25\",\n    \"tree-sitter-kotlin>=1.0,<2.0\",\n    \"tree-sitter-scala>=0.23,<0.27\",\n    \"tree-sitter-php>=0.23,<0.25\",\n    \"tree-sitter-swift>=0.7,<0.9\",\n    \"tree-sitter-lua>=0.2,<0.6\",\n    \"tree-sitter-zig>=1.0,<2.0\",\n    \"tree-sitter-powershell>=0.26,<0.28\",\n    \"tree-sitter-elixir>=0.3,<0.5\",\n    \"tree-sitter-objc>=3.0,<4.0\",\n    \"tree-sitter-julia>=0.23,<0.25\",\n    \"tree-sitter-verilog>=1.0,<2.0\",\n    \"tree-sitter-fortran>=0.6,<0.8\",\n    \"tree-sitter-bash>=0.23,<0.27\",\n    \"tree-sitter-json>=0.23,<0.26\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/safishamsi/graphify\"\nRepository = \"https://github.com/safishamsi/graphify\"\nIssues = \"https://github.com/safishamsi/graphify/issues\"\n\n[project.optional-dependencies]\n# starlette is pulled in transitively by mcp, but graphify/serve.py imports it\n# directly for the HTTP transport, so declare it here and floor it above the\n# CVE-2026-48818 / CVE-2026-54283 fixes (both resolved by 1.3.1) (#1391, #1396).\nmcp = [\"mcp\", \"starlette>=1.3.1\"]\nneo4j = [\"neo4j\"]\nfalkordb = [\"falkordb\"]\npdf = [\"pypdf>=6.12.0\", \"markdownify\"]\nwatch = [\"watchdog\"]\nsvg = [\"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\"]\nleiden = [\"graspologic; python_version < '3.13'\"]\noffice = [\"python-docx\", \"openpyxl\"]\ngoogle = [\"openpyxl\"]\npostgres = [\"psycopg[binary]\"]\nvideo = [\"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\"]\nkimi = [\"openai\", \"tiktoken\"]\nollama = [\"openai\"]\nbedrock = [\"boto3\"]\nanthropic = [\"anthropic\"]\ngemini = [\"openai\", \"tiktoken\"]\nopenai = [\"openai\", \"tiktoken\"]\nchinese = [\"jieba\"]\nsql = [\"tree-sitter-sql\"]\n# tree-sitter-dm (BYOND DreamMaker) ships only a Windows wheel, so on Linux/Mac it\n# must compile from source (needs a C toolchain + python3-dev). Keeping it optional\n# avoids breaking the default `uv tool install graphifyy` for everyone (#1104).\ndm = [\"tree-sitter-dm\"]\nterraform = [\"tree-sitter-hcl\"]\nall = [\"mcp\", \"starlette>=1.3.1\", \"neo4j\", \"falkordb\", \"pypdf>=6.12.0\", \"markdownify\", \"watchdog\", \"graspologic; python_version < '3.13'\", \"python-docx\", \"openpyxl\", \"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\", \"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\", \"openai\", \"tiktoken\", \"boto3\", \"anthropic\", \"tree-sitter-sql\", \"jieba\", \"tree-sitter-dm\", \"tree-sitter-hcl\"]\n\n[project.scripts]\ngraphify = \"graphify.__main__:main\"\ngraphify-mcp = \"graphify.serve:_main\"\n\n[dependency-groups]\ndev = [\n    \"bandit>=1.9.4\",\n    \"build>=1.5.0\",\n    \"hypothesis>=6.152.7\",\n    \"nuitka>=4.1\",\n    \"patchelf>=0.17.2.4 ; sys_platform != 'win32'\",\n    \"pip-audit>=2.10.0\",\n    \"pre-commit>=4.6.0\",\n    \"pyright>=1.1.409\",\n    \"pytest>=9.0.3\",\n    \"pytest-cov>=7.1.0\",\n    \"ruff>=0.15.13\",\n    \"safety>=3.7.0\",\n    \"setuptools>=82.0.1\",\n    \"wheel>=0.47.0\",\n    \"tomli>=2.0 ; python_version < '3.11'\",\n    \"tree-sitter-hcl>=1.2.0\",\n]\n\n[tool.uv]\n# Install via: uv tool install graphifyy\n# Run without installing: uvx graphifyy install\npackage = true\n\n[tool.setuptools]\npackages = [\"graphify\", \"graphify.extractors\"]\ninclude-package-data = false\n\n[tool.setuptools.package-data]\n# The skill bodies ship as graphify/skill*.md (the SKILL.md a host installs is\n# copied from one of these). The progressive-disclosure references sidecar ships\n# under graphify/skills/<host>/references/, and the always-on injection blocks\n# under graphify/always_on/. There is no graphify/skills/<host>/SKILL.md in the\n# repo, so no SKILL.md glob is needed here.\ngraphify = [\"skill.md\", \"skill-codex.md\", \"skill-opencode.md\", \"skill-kilo.md\", \"command-kilo.md\", \"skill-aider.md\", \"skill-amp.md\", \"skill-agents.md\", \"skill-copilot.md\", \"skill-claw.md\", \"skill-windows.md\", \"skill-droid.md\", \"skill-trae.md\", \"skill-kiro.md\", \"skill-vscode.md\", \"skill-pi.md\", \"skill-devin.md\", \"skills/*/references",
    "strategic_keywords": [
      "memory",
      "rag",
      "skill",
      "llm",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "harry0703",
    "name": "MoneyPrinterTurbo",
    "full_name": "harry0703/MoneyPrinterTurbo",
    "url": "https://github.com/harry0703/MoneyPrinterTurbo",
    "description": "利用AI大模型，一键生成高清短视频 Generate short videos with one click using AI LLM.",
    "language": "Python",
    "total_stars": 93567,
    "forks": 13553,
    "stars_this_period": 433,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "ai",
        "automation",
        "chatgpt",
        "moviepy",
        "python",
        "shortvideo",
        "tiktok"
      ],
      "license": "MIT",
      "open_issues": 46,
      "created_at": "2024-03-11T02:57:34Z",
      "pushed_at": "2026-06-27T12:42:25Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 13553,
      "watchers": 568,
      "archived": false,
      "size_kb": 533410
    },
    "readme_content": "<div align=\"center\">\n<h1 align=\"center\">MoneyPrinterTurbo 💸</h1>\n\n<p align=\"center\">\n  <a href=\"https://github.com/harry0703/MoneyPrinterTurbo/stargazers\"><img src=\"https://img.shields.io/github/stars/harry0703/MoneyPrinterTurbo.svg?style=for-the-badge\" alt=\"Stargazers\"></a>\n  <a href=\"https://github.com/harry0703/MoneyPrinterTurbo/issues\"><img src=\"https://img.shields.io/github/issues/harry0703/MoneyPrinterTurbo.svg?style=for-the-badge\" alt=\"Issues\"></a>\n  <a href=\"https://github.com/harry0703/MoneyPrinterTurbo/network/members\"><img src=\"https://img.shields.io/github/forks/harry0703/MoneyPrinterTurbo.svg?style=for-the-badge\" alt=\"Forks\"></a>\n  <a href=\"https://github.com/harry0703/MoneyPrinterTurbo/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/harry0703/MoneyPrinterTurbo.svg?style=for-the-badge\" alt=\"License\"></a>\n</p>\n<br>\n<h3>简体中文 | <a href=\"README-en.md\">English</a> | <a href=\"README-ar.md\">العربية</a></h3>\n<div align=\"center\">\n  <a href=\"https://trendshift.io/repositories/8731\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/8731\" alt=\"harry0703%2FMoneyPrinterTurbo | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\n<br>\n只需提供一个视频 <b>主题</b> 或 <b>关键词</b> ，就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐，然后合成一个高清的短视频。\n<br>\n\n<h4>Web界面</h4>\n\n![](docs/webui.jpg)\n\n<h4>API界面</h4>\n\n![](docs/api.jpg)\n\n</div>\n\n## 特别感谢 🙏\n\n<table align=\"center\">\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://aihubmix.com/?aff=CEve\"><strong>AIHubMix</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>感谢 <a href=\"https://aihubmix.com/?aff=CEve\">AIHubMix</a> 对本项目的赞助。AIHubMix 深度适配 OpenAI、Claude、Gemini、DeepSeek、智谱、千问等全球顶级最新模型，一站式快速接入 GPT-5.5、deepseek-v4-flash 等 700+ 模型（含多个免费模型），提供企业级生产稳定性保障。</sub>\n    </td>\n  </tr>\n\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://www.volcengine.com/activity/codingplan?utm_campaign=hw&utm_content=hw&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=MoneyPrinterTurbo\"><img src=\"docs/sponsors/volcengine-logo.svg\" alt=\"火山引擎\" height=\"32\"></a><br>\n      <a href=\"https://www.volcengine.com/activity/ai618?utm_campaign=hw&utm_content=hw&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=MoneyPrinterTurbo\"><strong>方舟 Agent Plan</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>感谢 <a href=\"https://www.volcengine.com/activity/ai618?utm_campaign=hw&utm_content=hw&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=MoneyPrinterTurbo\">方舟 Agent Plan</a> 对本项目的赞助。模型自由，工具不限，最新支持 MiniMax-M3 与 GLM-5.1，受邀下单叠加 9.5 折！集合主流优秀国产编程模型，多生态兼容，无缝融入您的工具链，依托字节资源保障和工程能力，更大容量，更快、更稳、更丝滑！</sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://www.ccsub.net/register?ref=VCVDAWWY\"><img src=\"docs/sponsors/ccsub-logo.png\" alt=\"CCSub\" height=\"36\"></a><br>\n      <a href=\"https://www.ccsub.net/register?ref=VCVDAWWY\"><strong>CCSub</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>感谢 <a href=\"https://www.ccsub.net/register?ref=VCVDAWWY\">CCSub</a> 赞助本项目！CCSub 是稳定、实惠的 AI API 中转平台，是 Claude Code 官方订阅的超强平替。一个 API Key 即可调用 Claude Opus 4.8、Sonnet 4.6、Haiku 4.5、GPT-5、Gemini 等模型，价格约为官方直连的 1/3，全球直连无需梯子。兼容 Claude Code、Codex、Cursor、Cline、Continue、Windsurf 等所有主流 AI 编程工具。前往 <a href=\"https://www.ccsub.net/register?ref=VCVDAWWY\">www.ccsub.net</a> 注册即送 $5 体验额度。</sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_MoneyPrinterTu\"><img src=\"docs/sponsors/compshare-logo.png\" alt=\"优云智算\" height=\"34\"></a><br>\n      <a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_MoneyPrinterTu\"><strong>优云智算</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>感谢 <a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_MoneyPrinterTu\">优云智算</a> 赞助本项目！优云智算是 UCloud 旗下 AI 云平台，一站式提供国内外主流模型的 API 服务，一个 Key 即可调用所有模型。主打高性价比国产模型 CodingPlan 套餐（GLM5.2、Deepseek-v4等），同时提供官方转发的稳定海外模型通道，满足多场景开发需求。已兼容 Claude Code、Codex 等主流 AI 编程工具及通用 API 调用，支持企业级高并发、7×24 技术支持和自助开票。<a href=\"https://www.compshare.cn/coding-plan?ytag=GPU_YY-git_MoneyPrinterTu\">点击注册</a>，最高可获得 ¥10 免费体验金。</sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://reccloud.cn\"><img src=\"docs/sponsors/reccloud-logo.svg\" alt=\"录咖\" height=\"36\"></a><br>\n      <a href=\"https://reccloud.cn\"><strong>录咖 AI</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>由于该项目的 <strong>部署</strong> 和 <strong>使用</strong>，对于一些小白用户来说，还是 <strong>有一定的门槛</strong>，在此特别感谢 <a href=\"https://reccloud.cn\">录咖（AI智能 多媒体服务平台）</a> 网站基于该项目，提供的免费 <code>AI视频生成器</code> 服务，可以不用部署，直接在线使用，非常方便。</sub>\n    </td>\n  </tr>\n  <tr>\n    <td align=\"center\" width=\"160\">\n      <a href=\"https://picwish.cn\"><img src=\"docs/sponsors/picwish-logo.svg\" alt=\"佐糖\" height=\"36\"></a><br>\n      <a href=\"https://picwish.cn\"><strong>佐糖</strong></a>\n    </td>\n    <td align=\"left\">\n      <sub>感谢 <a href=\"https://picwish.cn\">佐糖</a> 对该项目的支持和赞助，使得该项目能够持续的更新和维护。佐糖专注于<strong>图像处理领域</strong>，提供丰富的<strong>图像处理工具</strong>，将复杂操作极致简化，真正实现让图像处理更简单。</sub>\n    </td>\n  </tr>\n</table>\n\n## 功能特性 🎯\n\n- [x] 完整的 **MVC架构**，代码 **结构清晰**，易于维护，支持 `API` 和 `Web界面`\n- [x] 支持视频文案 **AI自动生成**，也可以**自定义文案**\n- [x] 支持多种 **高清视频** 尺寸\n  - [x] 竖屏 9:16，`1080x1920`\n  - [x] 横屏 16:9，`1920x1080`\n- [x] 支持 **批量视频生成**，可以一次生成多个视频，然后选择一个最满意的\n- [x] 支持 **视频片段时长** 设置，方便调节素材切换频率\n- [x] 支持 **中文** 和 **英文** 视频文案\n- [x] 支持 **多种语音** 合成，可 **实时试听** 效果\n- [x] 支持 **字幕生成**，可以调整 `字体`、`位置`、`颜色`、`大小`，同时支持`字幕描边`设置\n- [x] 支持 **背景音乐**，随机或者指定音乐文件，可设置`背景音乐音量`\n- [x] 视频素材来源 **高清**，而且 **无版权**，也可以使用自己的 **本地素材**\n- [x] 支持多种素材源:**Pexels**、**Pixabay**、**Coverr**\n- [x] 可选接入 **TwelveLabs** 视频 AI:用 **Marengo** 多模态向量按主题语义重排素材关键词,用 **Pegasus** 对素材做内容 QA/描述([TwelveLabs API key](https://twelvelabs.io))\n- [x] 支持 **OpenAI**、**AIHubMix**、**AIML API**、**EvoLink**、**Moonshot**、**Azure**、**gpt4free**、**one-api**、**通义千问**、**Google Gemini**、**Ollama**、**DeepSeek**、**MiniMax**、 **文心一言**, **Pollinations**、**ModelScope** 等多种模型接入\n- [x] 支持一键 **跨平台发布**，生成完成后自动上传至 **TikTok**、**Instagram** 和 **YouTube Shorts**（需 [Upload-Post](https://upload-post.com) 账号；YouTube 发布时自动标注 AI 生成内容）；在 `config.toml` 中配置 `upload_post_platforms`、`upload_post_youtube_privacy_status` 等参数\n\n## 视频演示 📺\n\n### 竖屏 9:16\n\n<table>\n<thead>\n<tr>\n<th align=\"center\"><g-emoji class=\"g-emoji\" alias=\"arrow_forward\">▶️</g-emoji> 《如何增加生活的乐趣》</th>\n<th align=\"center\"><g-emoji class=\"g-emoji\" alias=\"arrow_forward\">▶️</g-emoji> 《金钱的作用》<br>更真实的合成声音</th>\n<th align=\"center\"><g-emoji class=\"g-emoji\" alias=\"arrow_forward\">▶️</g-emoji> 《生命的意义是什么》</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"center\"><video src=\"https://github.com/harry0703/MoneyPrinterTurbo/assets/4928832/a84d33d5-27a2-4aba-8fd0-9fb2bd91c6a6\"></video></td>\n<td align=\"center\"><video src=\"https://github.com/harry0703/MoneyPrinterTurbo/assets/4928832/af2f3b0b-002e-49fe-b161-18ba91c055e8\"></video></td>\n<td align=\"center\"><video src=\"https://github.com/harry0703/MoneyPrinterTurbo/assets/4928832/112c9564-d52b-4472-99ad-970b75f66476\"></video></td>\n</tr>\n</tbody>\n</table>\n\n### 横屏 16:9\n\n<table>\n<thead>\n<tr>\n<th align=\"center\"><g-emoji class=\"g-emoji\" alias=\"arrow_forward\">▶️</g-emoji>《生命的意义是什么》</th>\n<th align=\"center\"><g-emoji class=\"g-emoji\" alias=\"arrow_forward\">▶️</g-emoji>《为什么要运动》</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td align=\"center\"><video src=\"https://github.com/harry0703/MoneyPrinterTurbo/assets/4928832/346ebb15-c55f-47a9-a653-114f08bb8073\"></video></td>\n<td align=\"center\"><video src=\"https://github.com/harry0703/MoneyPrinterTurbo/assets/4928832/271f2fae-8283-44a0-8aa0-0ed8f9a6fa87\"></video></td>\n</tr>\n</tbody>\n</table>\n\n## 配置要求 📦\n\n- 建议系统：Windows 10 或 MacOS 11.0 以上，或主流 Linux 发行版\n- GPU 不是必需项，但如果你希望本地转录、更快的视频处理或更顺畅的批量生成体验，建议使用带显存的独立显卡\n\n| 项目 | 最低配置 | 推荐配置        | 理想配置        |\n| ---- | -------- | --------------- | --------------- |\n| CPU  | 4 核     | 6 到 8 核       | 8 核及以上      |\n| RAM  | 4 GB     | 8 GB            | 16 GB 及以上    |\n| GPU  | 非必须   | 4 GB 显存及以上 | 8 GB 显存及以上 |\n\n- 如果你主要依赖云端 LLM、云端 TTS 和在线素材源，CPU 与内存比 GPU 更重要\n- 如果你启用 `faster-whisper`、批量生成或更重的本地处理链路，GPU 会明显提升速度\n\n## 快速开始 🚀\n\n### 推荐使用方式\n\n- Windows 用户：优先使用一键启动包，适合快速体验\n- MacOS / Linux 用户：优先使用 `uv sync --frozen` 进行本地部署\n- 想要隔离运行环境：优先使用 Docker 部署\n\n### 在 Google Colab 中运行\n\n免去本地环境配置，点击直接在 Google Colab 中快速体验 MoneyPrinterTurbo\n\n[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/harry0703/MoneyPrinterTurbo/blob/main/docs/MoneyPrinterTurbo.ipynb)\n\n### Windows一键启动包\n\n下载一键启动包，解压直接使用（路径不要有 **中文**、**特殊字符**、**空格**）\n\n- GitHub Release: https://github.com/harry0703/MoneyPrinterTurbo/releases/latest\n\n下载后，建议先**双击执行** `update.bat` 更新到**最新代码**，然后双击 `start.bat` 启动\n\n启动后，会自动打开浏览器（如果打开是空白，建议换成 **Chrome** 或者 **Edge** 打开）\n\n## 安装部署 📥\n\n### 前提条件\n\n- 尽量不要使用 **中文路径**，避免出现一些无法预料的问题\n- 请确保你的 **网络** 是正常的，VPN需要打开`全局流量`模式\n\n#### ① 克隆代码\n\n```shell\ngit clone https://github.com/harry0703/MoneyPrinterTurbo.git\n```\n\n#### ② 修改配置文件（可选，建议启动后也可以在 WebUI 里面配置）\n\n- 将 `config.example.toml` 文件复制一份，命名为 `config.toml`\n- 按照 `config.toml` 文件中的说明，配置好 `pexels_api_keys` 和 `llm_provider`，并根据 llm_provider 对应的服务商，配置相关的\n  API Key\n- 如果希望使用推荐的大模型平台，也可以将 `llm_provider` 设置为 `aihubmix`，并填写对应的 API Key。\n\n### Docker部署 🐳\n\n#### ① 启动Docker\n\n如果未安装 Docker，请先安装 https://www.docker.com/products/docker-desktop/\n\n如果是Windows系统，请参考微软的文档：\n\n1. https://learn.microsoft.com/zh-cn/windows/wsl/install\n2. https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers\n\n```shell\ncd MoneyPrinterTurbo\ndocker compose -f docker-compose.release.yml up\n```\n\n> 默认推荐使用 `docker-compose.release.yml`，它会直接拉取 GitHub Container Registry 上的预构建镜像：`ghcr.io/harry0703/moneyprinterturbo:latest`。\n> 如果你需要本地重新构建镜像，可以继续使用 `docker compose up`。\n> 注意：首次启动前请确保项目根目录下存在 `config.toml`，可以从 `config.example.toml` 复制一份。\n\n#### ② 访问Web界面\n\n打开浏览器，访问 http://127.0.0.1:8501\n\n#### ③ 访问API文档\n\n打开浏览器，访问 http://127.0.0.1:8080/docs 或者 http://127.0.0.1:8080/redoc\n\n### 手动部署 📦\n\n> 视频教程\n\n- 完整的使用演示：https://v.douyin.com/iFhnwsKY/\n- 如何在Windows上部署：https://v.douyin.com/iFyjoW3M\n\n#### ① 创建虚拟环境\n\n推荐使用 [uv](https://docs.astral.sh/uv/) 管理 Python 环境和依赖，默认使用 Python `3.11`\n\n```shell\ngit clone https://github.com/harry0703/MoneyPrinterTurbo.git\ncd MoneyPrinterTurbo\nuv python install 3.11\nuv sync --frozen\n```\n\n如果你暂时不使用 `uv`，也可以继续使用 `venv + pip`\n\n```shell\npython3.11 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\n说明：\n\n- `pyproject.toml` 是主依赖定义文件\n- `uv.lock` 是锁文件，建议默认执行 `uv sync --frozen`\n- `requirements.txt` 仅保留给旧的 `pip` 安装方式兼容使用\n\n#### ② 启动Web界面 🌐\n\n注意需要到 MoneyPrinterTurbo 项目 `根目录` 下执行以下命令\n\n###### Windows\n\n```powershell\n.\\webui.bat\n```\n\n在 CMD 中也可以执行 `webui.bat`。\n`webui.bat` 会优先使用项目 `.venv` 或一键包内置 Python；如果没有找到项目 Python，但已安装 `uv`，会自动切换为 `uv run streamlit`。\n如需允许局域网内其他设备访问 WebUI，可以先执行 `set MPT_WEBUI_HOST=0.0.0.0`，再运行 `webui.bat`。\n\n###### MacOS or Linux\n\n```shell\nuv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False --server.showEmailPrompt=False\n```\n\n如果你已经手动激活了虚拟环境，也可以直接执行：\n\n```shell\nsh webui.sh\n```\n\n启动后，会自动打开浏览器（如果打开是空白，建议换成 **Chrome** 或者 **Edge** 打开）\n\n#### ③ 启动API服务 🚀\n\n```shell\nuv run python main.py\n```\n\n如果你已经手动激活了虚拟环境，也可以直接执行：\n\n```shell\npython main.py\n```\n\n#### ④ 纯命令行方式（无浏览器）⌨️\n\n如果你无法使用浏览器或端口转发，可以直接在命令行生成视频：\n\n```shell\nuv run python cli.py --video-subject \"金钱的作用\"\n```\n\n也可以指定本地素材并仅运行到某个阶段：\n\n```shell\nuv run python cli.py \\\n  --video-subject \"金钱的作用\" \\\n  --video-source local \\\n  --video-materials \"1.mp4,2.mp4\" \\\n  --stop-at video\n```\n\n## 语音合成 🗣\n\n所有支持的声音列表，可以查看：[声音列表](./docs/voice-list.txt)\n\n默认 TTS 服务是 **Edge TTS**（免费，不需要 API Key）。在 WebUI 中它显示为 **“Azure TTS V1”**，两者指的是同一个免费服务。你可以在 `config.toml` 中设置 `voice_name`，也可以直接在 WebUI 的声音下拉框中选择。\n\n> **说明：** WebUI 中的 “Azure TTS V1”（Edge TTS，免费）和 “Azure TTS V2”（付费 Azure Speech SDK）是两个不同选项，只有 V2 需要配置 Azure API Key。\n\n如果你希望使用质量更高的 **Azure TTS V2** 声音，需要在 `config.toml` 中配置 Azure Speech 凭据：\n\n```toml\n[azure]\nspeech_key = \"your-azure-speech-key\"\nspeech_region = \"eastus\"\n```\n\nAzure TTS V2 需要开通 [Azure Speech Services](https://portal.azure.com/) 订阅。v1.1.2 新增的 9 种 Azure 声音整体会比 Edge TTS 更自然。\n\n## 字幕生成 📜\n\n当前支持2种字幕生成方式：\n\n- **edge**: 使用 Edge TTS 返回的时间戳对齐字幕。速度快，不需要 GPU，普通机器也可以运行；但复杂句子的时间",
    "manifest_file": "pyproject.toml",
    "manifest_content": "# 说明：\n# 1. 主依赖来源统一收敛到 pyproject.toml。\n# 2. 运行环境通过 uv.lock 固定，避免不同机器解析出不同版本组合。\n[build-system]\nrequires = [\"hatchling>=1.27.0\"]\nbuild-backend = \"hatchling.build\"\n\n[project]\nname = \"moneyprinterturbo\"\nversion = \"1.3.0\"\ndescription = \"Generate short videos from prompts, local assets, subtitles, and TTS.\"\nreadme = \"README-en.md\"\nrequires-python = \">=3.11,<3.13\"\nlicense = { text = \"MIT\" }\ndependencies = [\n    \"moviepy==2.2.1\",\n    \"streamlit==1.58.0\",\n    \"edge-tts==7.2.7\",\n    \"fastapi==0.136.3\",\n    \"uvicorn==0.32.1\",\n    \"openai==2.24.0\",\n    \"faster-whisper==1.1.0\",\n    \"loguru==0.7.3\",\n    \"google-generativeai==0.8.6\",\n    \"dashscope==1.20.14\",\n    \"azure-cognitiveservices-speech==1.41.1\",\n    \"redis==5.2.0\",\n    \"python-multipart==0.0.27\",\n    \"pyyaml==6.0.3\",\n    \"requests==2.33.1\",\n    \"socksio==1.0.0\",\n    \"pydub==0.25.1\",\n    \"litellm==1.86.2\",\n]\n\n[project.optional-dependencies]\ng4f = [\n    \"g4f==0.5.2.2\",\n]\n# Optional TwelveLabs (https://twelvelabs.io) video-understanding/embedding\n# integration. Only needed when `twelvelabs_api_keys` is configured; install\n# with `uv sync --extra twelvelabs`.\ntwelvelabs = [\n    \"twelvelabs>=1.2.8\",\n]\n\n[tool.hatch.build.targets.wheel]\npackages = [\"app\"]\n\n[tool.uv]\n# 当前项目以应用运行形态为主，不作为可发布的 Python 包安装。\npackage = false\n",
    "strategic_keywords": [
      "agent",
      "llm",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 4,
      "productize": 11,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 78
    },
    "strategic_score": 78
  },
  {
    "owner": "anomalyco",
    "name": "opencode",
    "full_name": "anomalyco/opencode",
    "url": "https://github.com/anomalyco/opencode",
    "description": "The open source coding agent.",
    "language": "TypeScript",
    "total_stars": 179690,
    "forks": 22093,
    "stars_this_period": 428,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 7027,
      "created_at": "2025-04-30T20:08:00Z",
      "pushed_at": "2026-06-27T19:50:19Z",
      "homepage": "https://opencode.ai",
      "default_branch": "dev",
      "forks": 22093,
      "watchers": 684,
      "archived": false,
      "size_kb": 294713
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://opencode.ai\">\n    <picture>\n      <source srcset=\"packages/console/app/src/asset/logo-ornate-dark.svg\" media=\"(prefers-color-scheme: dark)\">\n      <source srcset=\"packages/console/app/src/asset/logo-ornate-light.svg\" media=\"(prefers-color-scheme: light)\">\n      <img src=\"packages/console/app/src/asset/logo-ornate-light.svg\" alt=\"OpenCode logo\">\n    </picture>\n  </a>\n</p>\n<p align=\"center\">The open source AI coding agent.</p>\n<p align=\"center\">\n  <a href=\"https://opencode.ai/discord\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/1391832426048651334?style=flat-square&label=discord\" /></a>\n  <a href=\"https://www.npmjs.com/package/opencode-ai\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/opencode-ai?style=flat-square\" /></a>\n  <a href=\"https://github.com/anomalyco/opencode/actions/workflows/publish.yml\"><img alt=\"Build status\" src=\"https://img.shields.io/github/actions/workflow/status/anomalyco/opencode/publish.yml?style=flat-square&branch=dev\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"README.md\">English</a> |\n  <a href=\"README.zh.md\">简体中文</a> |\n  <a href=\"README.zht.md\">繁體中文</a> |\n  <a href=\"README.ko.md\">한국어</a> |\n  <a href=\"README.de.md\">Deutsch</a> |\n  <a href=\"README.es.md\">Español</a> |\n  <a href=\"README.fr.md\">Français</a> |\n  <a href=\"README.it.md\">Italiano</a> |\n  <a href=\"README.da.md\">Dansk</a> |\n  <a href=\"README.ja.md\">日本語</a> |\n  <a href=\"README.pl.md\">Polski</a> |\n  <a href=\"README.ru.md\">Русский</a> |\n  <a href=\"README.bs.md\">Bosanski</a> |\n  <a href=\"README.ar.md\">العربية</a> |\n  <a href=\"README.no.md\">Norsk</a> |\n  <a href=\"README.br.md\">Português (Brasil)</a> |\n  <a href=\"README.th.md\">ไทย</a> |\n  <a href=\"README.tr.md\">Türkçe</a> |\n  <a href=\"README.uk.md\">Українська</a> |\n  <a href=\"README.bn.md\">বাংলা</a> |\n  <a href=\"README.gr.md\">Ελληνικά</a> |\n  <a href=\"README.vi.md\">Tiếng Việt</a>\n</p>\n\n[![OpenCode Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai)\n\n---\n\n### Installation\n\n```bash\n# YOLO\ncurl -fsSL https://opencode.ai/install | bash\n\n# Package managers\nnpm i -g opencode-ai@latest        # or bun/pnpm/yarn\nscoop install opencode             # Windows\nchoco install opencode             # Windows\nbrew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date)\nbrew install opencode              # macOS and Linux (official brew formula, updated less)\nsudo pacman -S opencode            # Arch Linux (Stable)\nparu -S opencode-bin               # Arch Linux (Latest from AUR)\nmise use -g opencode               # Any OS\nnix run nixpkgs#opencode           # or github:anomalyco/opencode for latest dev branch\n```\n\n> [!TIP]\n> Remove versions older than 0.1.x before installing.\n\n### Desktop App (BETA)\n\nOpenCode is also available as a desktop application. Download directly from the [releases page](https://github.com/anomalyco/opencode/releases) or [opencode.ai/download](https://opencode.ai/download).\n\n| Platform              | Download                           |\n| --------------------- | ---------------------------------- |\n| macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg`   |\n| macOS (Intel)         | `opencode-desktop-mac-x64.dmg`     |\n| Windows               | `opencode-desktop-windows-x64.exe` |\n| Linux                 | `.deb`, `.rpm`, or `.AppImage`     |\n\n```bash\n# macOS (Homebrew)\nbrew install --cask opencode-desktop\n# Windows (Scoop)\nscoop bucket add extras; scoop install extras/opencode-desktop\n```\n\n#### Installation Directory\n\nThe install script respects the following priority order for the installation path:\n\n1. `$OPENCODE_INSTALL_DIR` - Custom installation directory\n2. `$XDG_BIN_DIR` - XDG Base Directory Specification compliant path\n3. `$HOME/bin` - Standard user binary directory (if it exists or can be created)\n4. `$HOME/.opencode/bin` - Default fallback\n\n```bash\n# Examples\nOPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash\nXDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash\n```\n\n### Agents\n\nOpenCode includes two built-in agents you can switch between with the `Tab` key.\n\n- **build** - Default, full-access agent for development work\n- **plan** - Read-only agent for analysis and code exploration\n  - Denies file edits by default\n  - Asks permission before running bash commands\n  - Ideal for exploring unfamiliar codebases or planning changes\n\nAlso included is a **general** subagent for complex searches and multistep tasks.\nThis is used internally and can be invoked using `@general` in messages.\n\nLearn more about [agents](https://opencode.ai/docs/agents).\n\n### Documentation\n\nFor more info on how to configure OpenCode, [**head over to our docs**](https://opencode.ai/docs).\n\n### Contributing\n\nIf you're interested in contributing to OpenCode, please read our [contributing docs](./CONTRIBUTING.md) before submitting a pull request.\n\n### Building on OpenCode\n\nIf you are working on a project that's related to OpenCode and is using \"opencode\" as part of its name, for example \"opencode-dashboard\" or \"opencode-mobile\", please add a note to your README to clarify that it is not built by the OpenCode team and is not affiliated with us in any way.\n\n---\n\n**Join our community** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"$schema\": \"https://json.schemastore.org/package.json\",\n  \"name\": \"opencode\",\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:desktop\": \"bun --cwd packages/desktop dev\",\n    \"dev:web\": \"bun --cwd packages/app dev\",\n    \"dev:console\": \"ulimit -n 10240 2>/dev/null; bun run --cwd packages/console/app dev\",\n    \"dev:stats\": \"bun sst shell --stage=production -- bun run --cwd packages/stats/app dev\",\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/core fix-node-pty\",\n    \"prepare\": \"husky\",\n    \"random\": \"echo 'Random script'\",\n    \"sso\": \"aws sso login --sso-session=opencode --no-browser\",\n    \"test\": \"echo 'do not run tests from root' && exit 1\"\n  },\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/*\",\n      \"packages/console/*\",\n      \"packages/stats/*\",\n      \"packages/sdk/js\",\n      \"packages/slack\"\n    ],\n    \"catalog\": {\n      \"@effect/opentelemetry\": \"4.0.0-beta.83\",\n      \"@effect/platform-node\": \"4.0.0-beta.83\",\n      \"@effect/sql-sqlite-bun\": \"4.0.0-beta.83\",\n      \"@npmcli/arborist\": \"9.4.0\",\n      \"@types/bun\": \"1.3.13\",\n      \"@types/cross-spawn\": \"6.0.6\",\n      \"@octokit/rest\": \"22.0.0\",\n      \"@hono/standard-validator\": \"0.2.0\",\n      \"@hono/zod-validator\": \"0.4.2\",\n      \"@opentui/core\": \"0.3.4\",\n      \"@opentui/keymap\": \"0.3.4\",\n      \"@opentui/solid\": \"0.3.4\",\n      \"@tanstack/solid-virtual\": \"3.13.28\",\n      \"@shikijs/stream\": \"4.2.0\",\n      \"ulid\": \"3.0.1\",\n      \"@kobalte/core\": \"0.13.11\",\n      \"@types/luxon\": \"3.7.1\",\n      \"@types/node\": \"24.12.2\",\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.2.10\",\n      \"opentui-spinner\": \"0.0.7\",\n      \"@solid-primitives/storage\": \"4.3.3\",\n      \"@tailwindcss/vite\": \"4.1.11\",\n      \"diff\": \"8.0.2\",\n      \"dompurify\": \"3.3.1\",\n      \"drizzle-kit\": \"1.0.0-rc.2\",\n      \"drizzle-orm\": \"1.0.0-rc.2\",\n      \"effect\": \"4.0.0-beta.83\",\n      \"ai\": \"6.0.168\",\n      \"cross-spawn\": \"7.0.6\",\n      \"hono\": \"4.10.7\",\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.20251207.1\",\n      \"zod\": \"4.1.8\",\n      \"remeda\": \"2.26.0\",\n      \"sst\": \"4.13.1\",\n      \"shiki\": \"4.2.0\",\n      \"solid-list\": \"0.3.0\",\n      \"tailwindcss\": \"4.1.11\",\n      \"vite\": \"7.1.4\",\n      \"@solidjs/meta\": \"0.29.4\",\n      \"@solidjs/router\": \"0.15.4\",\n      \"@solidjs/start\": \"https://pkg.pr.new/@solidjs/start@dfb2020\",\n      \"@sentry/solid\": \"10.36.0\",\n      \"@sentry/vite-plugin\": \"4.6.0\",\n      \"solid-js\": \"1.9.10\",\n      \"vite-plugin-solid\": \"2.11.10\",\n      \"@lydell/node-pty\": \"1.2.0-beta.12\"\n    }\n  },\n  \"devDependencies\": {\n    \"@actions/artifact\": \"5.0.1\",\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    \"sst\": \"catalog:\",\n    \"turbo\": \"2.8.13\"\n  },\n  \"dependencies\": {\n    \"@aws-sdk/client-s3\": \"3.933.0\",\n    \"@opencode-ai/plugin\": \"workspace:*\",\n    \"@opencode-ai/script\": \"workspace:*\",\n    \"@opencode-ai/sdk\": \"workspace:*\",\n    \"heap-snapshot-toolkit\": \"1.1.3\",\n    \"typescript\": \"catalog:\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/anomalyco/opencode\"\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    \"@opentui/core\": \"catalog:\",\n    \"@opentui/keymap\": \"catalog:\",\n    \"@opentui/solid\": \"catalog:\",\n    \"@types/bun\": \"catalog:\",\n    \"@types/node\": \"catalog:\"\n  },\n  \"patchedDependencies\": {\n    \"@ff-labs/fff-bun@0.9.3\": \"patches/@ff-labs%2Ffff-bun@0.9.3.patch\",\n    \"@npmcli/agent@4.0.2\": \"patches/@npmcli%2Fagent@4.0.2.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    \"@ai-sdk/xai@3.0.82\": \"patches/@ai-sdk%2Fxai@3.0.82.patch\",\n    \"gcp-metadata@8.1.2\": \"patches/gcp-metadata@8.1.2.patch\",\n    \"pacote@21.",
    "strategic_keywords": [
      "agent",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "NanmiCoder",
    "name": "MediaCrawler",
    "full_name": "NanmiCoder/MediaCrawler",
    "url": "https://github.com/NanmiCoder/MediaCrawler",
    "description": "小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 ｜ 评论爬虫、微博帖子 ｜ 评论爬虫、百度贴吧帖子 ｜ 百度贴吧评论回复爬虫 | 知乎问答文章｜评论爬虫",
    "language": "Python",
    "total_stars": 53755,
    "forks": 11008,
    "stars_this_period": 394,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 178,
      "created_at": "2023-06-09T12:14:34Z",
      "pushed_at": "2026-06-18T09:22:51Z",
      "homepage": "https://nanmicoder.github.io/MediaCrawler/",
      "default_branch": "main",
      "forks": 11008,
      "watchers": 228,
      "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": "colbymchenry",
    "name": "codegraph",
    "full_name": "colbymchenry/codegraph",
    "url": "https://github.com/colbymchenry/codegraph",
    "description": "Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, and Hermes Agent — fewer tokens, fewer tool calls, 100% local",
    "language": "TypeScript",
    "total_stars": 55367,
    "forks": 3408,
    "stars_this_period": 388,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 244,
      "created_at": "2026-01-18T21:45:37Z",
      "pushed_at": "2026-06-27T20:49:13Z",
      "homepage": "https://colbymchenry.github.io/codegraph/",
      "default_branch": "main",
      "forks": 3408,
      "watchers": 124,
      "archived": false,
      "size_kb": 5915
    },
    "readme_content": "<div align=\"center\">\n\n# CodeGraph\n\n## 🎉 1.0 Released!\n\nAlready installed? Run `codegraph upgrade` to update in place.\n\nFollow [@getcodegraph](https://x.com/getcodegraph) on X for updates.\n\n### Supercharge Claude Code, Cursor, Codex, OpenCode, Hermes Agent, Gemini, Antigravity, and Kiro with Semantic Code Intelligence\n\n**Surgical context · fewer tool calls · faster answers · 100% local**\n\n### [Documentation & Website →](https://colbymchenry.github.io/codegraph/)\n\n[![npm version](https://img.shields.io/npm/v/@colbymchenry/codegraph.svg)](https://www.npmjs.com/package/@colbymchenry/codegraph)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Self-contained](https://img.shields.io/badge/Node.js-bundled%20%C2%B7%20none%20required-brightgreen.svg)](https://nodejs.org/)\n\n[![Windows](https://img.shields.io/badge/Windows-supported-blue.svg)](#supported-platforms)\n[![macOS](https://img.shields.io/badge/macOS-supported-blue.svg)](#supported-platforms)\n[![Linux](https://img.shields.io/badge/Linux-supported-blue.svg)](#supported-platforms)\n\n[![Claude Code](https://img.shields.io/badge/Claude_Code-supported-blueviolet.svg)](#supported-agents)\n[![Cursor](https://img.shields.io/badge/Cursor-supported-blueviolet.svg)](#supported-agents)\n[![Codex](https://img.shields.io/badge/Codex-supported-blueviolet.svg)](#supported-agents)\n[![opencode](https://img.shields.io/badge/opencode-supported-blueviolet.svg)](#supported-agents)\n[![Hermes Agent](https://img.shields.io/badge/Hermes_Agent-supported-blueviolet.svg)](#supported-agents)\n[![Gemini](https://img.shields.io/badge/Gemini-supported-blueviolet.svg)](#supported-agents)\n[![Antigravity](https://img.shields.io/badge/Antigravity-supported-blueviolet.svg)](#supported-agents)\n[![Kiro](https://img.shields.io/badge/Kiro-supported-blueviolet.svg)](#supported-agents)\n\n<br>\n\n**The CodeGraph platform is coming** — for every PR, know exactly what to test, what could break, which flows are affected, and whether business logic is compromised.\n\n<a href=\"https://getcodegraph.com\"><img alt=\"Join the waitlist for early beta access\" src=\"https://raw.githubusercontent.com/colbymchenry/codegraph/main/assets/waitlist.svg?v=2\" height=\"52\"></a>\n\n<sub>Get <b>early beta access</b> to the hosted product · <a href=\"https://getcodegraph.com\">getcodegraph.com</a></sub>\n\n</div>\n\n## Get Started\n\n### 1. Install the CLI\n\n**No Node.js required** — one command grabs the right build for your OS:\n\n```bash\n# macOS / Linux\ncurl -fsSL https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.sh | sh\n\n# Windows (PowerShell)\nirm https://raw.githubusercontent.com/colbymchenry/codegraph/main/install.ps1 | iex\n```\n\n<details>\n<summary><b>Already have Node? Use npm instead (works on any version)</b></summary>\n\n```bash\nnpm i -g @colbymchenry/codegraph\n```\n\n<sub>CodeGraph bundles its own runtime — nothing to compile, no native build, works the same everywhere. The installer puts `codegraph` on your PATH but **doesn't change your current shell** — open a new terminal before the next step so the command resolves.</sub>\n\n<sub>**Upgrade any time** with `codegraph upgrade` — it detects how you installed (bundle, npm, or npx) and updates in place. Add `--check` to see if an update is available, or `codegraph upgrade <version>` to pin one.</sub>\n\n</details>\n\n### 2. Wire up your agent(s)\n\nIn a **new terminal**, run the installer to connect CodeGraph to the agents you use:\n\n```bash\ncodegraph install\n```\n\n<sub>Detects and auto-configures Claude Code, Cursor, Codex CLI, opencode, Hermes Agent, Gemini CLI, Antigravity IDE, and Kiro — wiring the CodeGraph MCP server into each. **This is the step that connects CodeGraph to your agent;** installing the CLI in step 1 does not do it on its own. It only wires up your agent — it does **not** index any code; building each project's graph is the separate `codegraph init` in step 3. (Shortcut: `npx @colbymchenry/codegraph` downloads and runs this in one go.)</sub>\n\n### 3. Initialize each project\n\n```bash\ncd your-project\ncodegraph init\n```\n\n<sub>`codegraph init` creates the local `.codegraph/` directory and builds the full graph in the same step — one command, done.</sub>\n\n<div align=\"center\">\n\n![1_C_VYnhpys0UHrOuOgpgoyw](https://github.com/user-attachments/assets/f168182f-4d9a-44e0-94d7-08d018cc8a3a)\n\n</div>\n\n### 4. No more syncing!\n\nAuto-sync is enabled by default. CodeGraph watches the project and updates the graph on every file change — while your agent edits code, or you add, modify, or delete files. **The index is never stale, and there is nothing to re-run.**\n\n### Uninstall\n\nChanged your mind? One command removes CodeGraph from every agent it configured:\n\n```bash\ncodegraph uninstall\n```\n\n<sub>Reverses the installer — strips CodeGraph's MCP server config, instructions, and permissions from each configured agent. Your project indexes (`.codegraph/`) are left untouched; remove those per-project with `codegraph uninit`. Use `--target` to remove from specific agents, or `--yes` to run non-interactively.</sub>\n\n---\n\n## Why CodeGraph?\n\nWhen an AI agent needs to understand code — to answer a question or make a change — it discovers structure the slow way: grep, glob, and Read, one file at a time, rebuilding call paths and dependencies by hand. That's a pile of tool calls and round-trips before it even starts the real work.\n\n**CodeGraph hands the agent the exact code it needs in one call.** It's a pre-built knowledge graph of every symbol, call edge, and dependency in your codebase — so instead of crawling files, the agent asks one question and gets back the relevant source, the call paths between those symbols (including dynamic-dispatch hops grep can't follow), and the blast radius of a change. **Surgical context, not a file-by-file search** — which means fewer tool calls and faster answers on every codebase, large or small.\n\n<img width=\"1536\" height=\"1024\" alt=\"token-cost-savings-scale\" src=\"https://github.com/user-attachments/assets/eb74a11a-a3ab-4b01-80a6-19f78352ae8e\" />\n\n> **A note on cost:** CodeGraph's win on *every* codebase is precision and speed — fewer tool calls, faster answers. It cuts token and dollar cost too, but those savings are **scale-dependent**: small and noisy on a modest codebase, and material only once a repo is large and tangled — at the scale of a Google or Microsoft monorepo, multiplied by a whole team's daily agent usage — for them to compound into a real line item. On a 500-file project, adopt CodeGraph for the speed; the cost savings show up when the codebase (and the team) gets big.\n\n### Benchmark Results\n\nTested across **7 real-world open-source codebases** spanning 7 languages, comparing an agent (Claude Code, headless) answering one architecture question **with** and **without** CodeGraph, at the **median of 4 runs per arm**. _Re-validated on Opus 4.8 (2026-06-02), on the current build (`codegraph_explore` as the primary tool)._\n\n> **The universal win — every repo, every size: 58% fewer tool calls · 22% faster · file reads cut to ~zero.**\n\nThe reliable, universal payoff is **surgical context and speed**: CodeGraph collapses the agent's grep/find/Read crawl into a few direct queries — returning the exact methods you asked about even when they're buried in a multi-thousand-line file — so it answers with **near-zero file reads** while the no-CodeGraph agent spends its budget on discovery. The **Tokens** and **Cost** columns are real too, but — as noted above — they're **scale-dependent**: small and noisy per query, compounding into real money only at large-codebase, high-volume scale.\n\n| Codebase | Language | Tool calls | Time | File reads | Tokens | Cost |\n|----------|----------|------------|------|------------|--------|------|\n| **VS Code** | TypeScript · ~10k files | 81% fewer | 11% faster | 0 vs 9 | 64% fewer | 18% cheaper |\n| **Excalidraw** | TypeScript · ~640 | 40% fewer | 27% faster | 0 vs 7 | 25% fewer | even |\n| **Django** | Python · ~3k | 77% fewer | 13% faster | 0 vs 9 | 60% fewer | 8% cheaper |\n| **Tokio** | Rust · ~790 | 57% fewer | 18% faster | 0 vs 8 | 38% fewer | even |\n| **OkHttp** | Java · ~645 | 50% fewer | 31% faster | 0 vs 4 | 54% fewer | 25% cheaper |\n| **Gin** | Go · ~110 | 44% fewer | 24% faster | 1 vs 6 | 23% fewer | 19% cheaper |\n| **Alamofire** | Swift · ~110 | 58% fewer | 33% faster | 0 vs 9 | 64% fewer | 40% cheaper |\n\n<sub>**File reads** = median files the agent opened **with** vs **without** CodeGraph — the surgical-context win in one column. **Tokens** and **Cost** are the same with-vs-without deltas; they're directional (they move run-to-run) and, per query, small in absolute terms — which is why they only become a line item at scale. `codegraph_explore` also collapses redundant interchangeable implementations to signatures, so a response is sized to the *answer* rather than the file count.</sub>\n\n<details>\n<summary><strong>Per-repo breakdown — WITH vs WITHOUT (median of 4)</strong></summary>\n\n**VS Code** · ~10k files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 59s | 2m 13s | 11% faster |\n| File Reads | 0 | 9 | −9 |\n| Grep/Bash | 0 | 11 | −11 |\n| Tool calls | 4 | 21 | 81% fewer |\n| Total tokens | 640k | 1.79M | 64% fewer |\n| Cost | $0.68 | $0.83 | 18% cheaper |\n\n**Excalidraw** · ~640 files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 32s | 2m 6s | 27% faster |\n| File Reads | 0 | 7 | −7 |\n| Grep/Bash | 1 | 8 | −7 |\n| Tool calls | 9 | 15 | 40% fewer |\n| Total tokens | 1.27M | 1.69M | 25% fewer |\n| Cost | $0.78 | $0.78 | even |\n\n**Django** · ~3k files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 43s | 1m 58s | 13% faster |\n| File Reads | 0 | 9 | −9 |\n| Grep/Bash | 0 | 5 | −5 |\n| Tool calls | 3 | 13 | 77% fewer |\n| Total tokens | 559k | 1.41M | 60% fewer |\n| Cost | $0.57 | $0.62 | 8% cheaper |\n\n**Tokio** · ~790 files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 55s | 2m 20s | 18% faster |\n| File Reads | 0 | 8 | −8 |\n| Grep/Bash | 0 | 6 | −6 |\n| Tool calls | 6 | 14 | 57% fewer |\n| Total tokens | 1.08M | 1.73M | 38% fewer |\n| Cost | $0.82 | $0.82 | even |\n\n**OkHttp** · ~645 files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 1s | 1m 29s | 31% faster |\n| File Reads | 0 | 4 | −4 |\n| Grep/Bash | 2 | 6 | −4 |\n| Tool calls | 5 | 10 | 50% fewer |\n| Total tokens | 502k | 1.10M | 54% fewer |\n| Cost | $0.41 | $0.55 | 25% cheaper |\n\n**Gin** · ~110 files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 14s | 1m 37s | 24% faster |\n| File Reads | 1 | 6 | −5 |\n| Grep/Bash | 1 | 2 | −1 |\n| Tool calls | 5 | 9 | 44% fewer |\n| Total tokens | 651k | 847k | 23% fewer |\n| Cost | $0.46 | $0.57 | 19% cheaper |\n\n**Alamofire** · ~110 files\n| Metric | WITH cg | WITHOUT cg | Δ |\n|---|---|---|---|\n| Time | 1m 35s | 2m 21s | 33% faster |\n| File Reads | 0 | 9 | −9 |\n| Grep/Bash | 0 | 4 | −4 |\n| Tool calls | 5 | 12 | 58% fewer |\n| Total tokens | 766k | 2.10M | 64% fewer |\n| Cost | $0.57 | $0.95 | 40% cheaper |\n\n</details>\n\n<details>\n<summary><strong>Full benchmark details</strong></summary>\n\n**Methodology.** Each arm is `claude -p` (Claude Opus 4.8) run headlessly against the repo with `--strict-mcp-config`: **WITH** = CodeGraph's MCP server enabled, **WITHOUT** = an empty MCP config. Built-in Read/Grep/Bash stay available to both. Same question per repo, **4 runs per arm, median reported**. Cost = the run's `total_cost_usd`; Tokens = total tokens processed (input incl. cached + output); Time = wall-clock; Tool calls = every tool invocation, including those inside any sub-agents the model spawns. Repos cloned at `--depth 1` and indexed by the same CodeGraph build that served them. Re-validated 2026-06-02 on the current build. These numbers are lower than the prior Opus 4.7 validation — not a CodeGraph regression but a stronger native baseline: Opus 4.8 greps/reads efficiently on the main thread instead of fanning out into large Expl",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@colbymchenry/codegraph\",\n  \"version\": \"1.1.2\",\n  \"description\": \"Supercharge AI coding agents with semantic code intelligence — surgical context, fewer tool calls, faster answers. 100% local.\",\n  \"main\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"bin\": {\n    \"codegraph\": \"./dist/bin/codegraph.js\"\n  },\n  \"files\": [\n    \"dist\",\n    \"scripts\",\n    \"README.md\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsc && npm run copy-assets && node -e \\\"require('fs').chmodSync('dist/bin/codegraph.js', 0o755)\\\"\",\n    \"preuninstall\": \"node dist/bin/uninstall.js\",\n    \"copy-assets\": \"node -e \\\"const fs=require('fs');fs.mkdirSync('dist/db',{recursive:true});fs.copyFileSync('src/db/schema.sql','dist/db/schema.sql');fs.mkdirSync('dist/extraction/wasm',{recursive:true});fs.readdirSync('src/extraction/wasm').filter(f=>f.endsWith('.wasm')).forEach(f=>fs.copyFileSync('src/extraction/wasm/'+f,'dist/extraction/wasm/'+f))\\\"\",\n    \"dev\": \"tsc --watch\",\n    \"cli\": \"npm run build && node dist/bin/codegraph.js\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:eval\": \"vitest run __tests__/evaluation/\",\n    \"eval\": \"npm run build && npx tsx __tests__/evaluation/runner.ts\",\n    \"clean\": \"node -e \\\"const fs=require('fs');fs.rmSync('dist',{recursive:true,force:true})\\\"\"\n  },\n  \"keywords\": [\n    \"code-intelligence\",\n    \"knowledge-graph\",\n    \"static-analysis\"\n  ],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@clack/prompts\": \"^1.3.0\",\n    \"commander\": \"^14.0.2\",\n    \"fast-string-width\": \"^3.0.2\",\n    \"fast-wrap-ansi\": \"^0.2.0\",\n    \"ignore\": \"^7.0.5\",\n    \"jsonc-parser\": \"^3.3.1\",\n    \"picomatch\": \"^4.0.3\",\n    \"sisteransi\": \"^1.0.5\",\n    \"tree-sitter-wasms\": \"^0.1.11\",\n    \"web-tree-sitter\": \"^0.25.3\"\n  },\n  \"devDependencies\": {\n    \"@types/better-sqlite3\": \"^7.6.0\",\n    \"@types/node\": \"^20.19.30\",\n    \"@types/picomatch\": \"^4.0.2\",\n    \"typescript\": \"^5.0.0\",\n    \"vitest\": \"^2.1.9\"\n  },\n  \"engines\": {\n    \"node\": \">=20.0.0 <25.0.0\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "runtime"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 95
    },
    "strategic_score": 95
  },
  {
    "owner": "tashfeenahmed",
    "name": "freellmapi",
    "full_name": "tashfeenahmed/freellmapi",
    "url": "https://github.com/tashfeenahmed/freellmapi",
    "description": "OpenAI-compatible proxy that stacks the free tiers of 16 LLM providers (~1.7B tokens/month) behind one /v1 endpoint — plus any custom OpenAI-compatible endpoint. Smart routing, automatic failover, encrypted keys. Personal experimentation only.",
    "language": "TypeScript",
    "total_stars": 13464,
    "forks": 2014,
    "stars_this_period": 354,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 48,
      "created_at": "2026-04-21T13:38:59Z",
      "pushed_at": "2026-06-27T21:57:57Z",
      "homepage": "https://freellmapi.co",
      "default_branch": "main",
      "forks": 2014,
      "watchers": 56,
      "archived": false,
      "size_kb": 4031
    },
    "readme_content": "<div align=\"center\">\n\n# FreeLLMAPI\n\n**One OpenAI-compatible endpoint. Sixteen free LLM providers. ~1.7B tokens per month.**\n\nAggregate the free tiers from Google, Groq, Cerebras, NVIDIA, Mistral, OpenRouter, GitHub Models, Cohere, Cloudflare, HuggingFace, Z.ai (Zhipu), Ollama, Kilo, Pollinations, LLM7, OVH AI Endpoints, and OpenCode Zen — plus custom OpenAI-compatible chat, embedding, image, and audio endpoints — behind a single `/v1` API. Keys are stored encrypted. A router picks the best available model for each request, falls over to the next provider when one is rate-limited, and tracks per-key usage so you stay under every free-tier cap.\n\n[![CI](https://github.com/tashfeenahmed/freellmapi/actions/workflows/ci.yml/badge.svg)](https://github.com/tashfeenahmed/freellmapi/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#contributing)\n[![Docker image](https://img.shields.io/badge/ghcr.io-freellmapi-2496ED?logo=docker&logoColor=white)](https://github.com/tashfeenahmed/freellmapi/pkgs/container/freellmapi)\n\n**[freellmapi.co](https://freellmapi.co)** — browse the live model catalog\n\n![Fallback chain with per-provider token budget](repo-assets/fallback-chain.png)\n\n</div>\n\n---\n\n## Contents\n\n- [Why this exists](#why-this-exists)\n- [Supported providers](#supported-providers)\n- [Features](#features)\n- [Not yet supported](#not-yet-supported)\n- [Quick start](#quick-start)\n- [Docker](#docker)\n- [Desktop app](#desktop-app)\n- [Languages](#languages)\n- [Premium (live catalog)](#premium-live-catalog)\n- [Using the API](#using-the-api)\n- [Screenshots](#screenshots)\n- [How it works](#how-it-works)\n- [Context Handoff](#context-handoff)\n- [Limitations](#limitations)\n- [Contributing](#contributing)\n- [Terms of Service review](#terms-of-service-review)\n- [Disclaimer](#disclaimer)\n\n## Why this exists\n\nEvery serious AI lab now offers a free tier — a few million tokens a month, a few thousand requests a day. On its own each tier is a toy. Stacked together, they add up to roughly **1.7 billion tokens per month** of working inference capacity, across 100+ models from small-and-fast to reasonably capable.\n\nThe problem is that stacking them by hand is painful: seventeen different SDKs, seventeen different rate limits, seventeen places a request can fail. FreeLLMAPI collapses that into one OpenAI-compatible endpoint. Point any OpenAI client library at your local server, and it routes transparently across whichever providers you've added keys for.\n\n## Supported providers\n\n<table>\n<tr>\n<td align=\"center\" width=\"180\"><a href=\"https://ai.google.dev\"><b>Google</b><br/>Gemini 2.5 Flash · 3.x previews</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://groq.com\"><b>Groq</b><br/>Llama 3.3, Llama 4, GPT-OSS, Qwen3</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://cerebras.ai\"><b>Cerebras</b><br/>Qwen3 235B</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://opencode.ai/zen\"><b>OpenCode Zen</b><br/>DeepSeek V4 Flash · Nemotron (promo)</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://mistral.ai\"><b>Mistral</b><br/>Large 3 · Medium 3.5 · Codestral · Devstral</a></td>\n<td align=\"center\"><a href=\"https://openrouter.ai\"><b>OpenRouter</b><br/>21 free-tier models</a></td>\n<td align=\"center\"><a href=\"https://github.com/marketplace/models\"><b>GitHub Models</b><br/>GPT-4.1 · GPT-4o</a></td>\n<td align=\"center\"><a href=\"https://developers.cloudflare.com/workers-ai\"><b>Cloudflare</b><br/>Kimi K2 · GLM-4.7 · GPT-OSS · Granite 4</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://cohere.com\"><b>Cohere</b><br/>Command R+ · Command-A (trial)</a></td>\n<td align=\"center\"><a href=\"https://docs.z.ai\"><b>Z.ai (Zhipu)</b><br/>GLM-4.5 · GLM-4.7 Flash</a></td>\n<td align=\"center\"><a href=\"https://build.nvidia.com\"><b>NVIDIA</b><br/>NIM · 40 RPM free (eval-only ToS)</a></td>\n<td align=\"center\"><a href=\"https://huggingface.co/docs/inference-providers\"><b>HuggingFace</b><br/>Router → DeepSeek V4 · Kimi K2.6 · Qwen3</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://ollama.com\"><b>Ollama Cloud</b><br/>GLM-4.7 · Kimi K2 · gpt-oss · Qwen3</a></td>\n<td align=\"center\"><a href=\"https://kilo.ai\"><b>Kilo Gateway</b><br/>:free routes (anon ok)</a></td>\n<td align=\"center\"><a href=\"https://pollinations.ai\"><b>Pollinations</b><br/>GPT-OSS 20B (anon ok)</a></td>\n<td align=\"center\"><a href=\"https://llm7.io\"><b>LLM7</b><br/>GPT-OSS · Llama 3.1 · GLM (anon ok)</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://endpoints.ai.cloud.ovh.net\"><b>OVH AI Endpoints</b><br/>Qwen3.5 397B · GPT-OSS · Llama 3.3 (anon ok)</a></td>\n<td align=\"center\"></td>\n<td align=\"center\"></td>\n<td align=\"center\"></td>\n</tr>\n</table>\n\nPlus a **custom** provider — point chat, embedding, image, or audio models at any OpenAI-compatible endpoint (llama.cpp, LM Studio, vLLM, a local Ollama, or a remote gateway) from the Keys page.\n\n## Features\n\n- **OpenAI-compatible** — `POST /v1/chat/completions` and `GET /v1/models` work with the official OpenAI SDKs and any OpenAI-compatible client (LangChain, LlamaIndex, Continue, Hermes, etc.). Just change `base_url`.\n- **Responses API** — `POST /v1/responses` (the wire format current Codex CLI versions require) is implemented as a translating shim over the same router, with full streaming events and tool calls.\n- **Editor autocomplete** — `POST /v1/completions` translates legacy prompt/suffix requests into the same router, so VS Code ghost-text clients such as Continue can use FreeLLMAPI for inline suggestions.\n- **Anthropic Messages API** — `POST /v1/messages` (plus `/v1/messages/count_tokens`) speaks Anthropic's wire format over the same router, so **Claude Code** and the official Anthropic SDKs run against your free pool. `GET /v1/models` is content-negotiated (Anthropic shape when the client sends `anthropic-version`, OpenAI shape otherwise), and Claude families (`opus` / `sonnet` / `haiku` / `default`) map to `auto` or a pinned model on the Keys page. See [Anthropic / Claude clients](#anthropic--claude-clients).\n- **Image generation & text-to-speech** — `POST /v1/images/generations` and `POST /v1/audio/speech` route across the providers that serve media models, including custom OpenAI-compatible media endpoints. Browse and toggle them on the dashboard's **Models → Image / Audio** tabs.\n- **Streaming and non-streaming** — Server-Sent Events for `stream: true`, JSON response otherwise. Every provider adapter implements both.\n- **Tool calling** — OpenAI-style `tools` / `tool_choice` requests are passed through, and assistant `tool_calls` + `tool` role follow-up messages round-trip across providers.\n- **Embeddings** — `/v1/embeddings` with family-based routing, including custom OpenAI-compatible embedding endpoints: failover only ever happens between providers serving the *same* model (vectors from different models are incompatible), never across models. See [Embeddings](#embeddings).\n- **Automatic fallover** — If the chosen provider returns a 429, 5xx, or times out, the router skips it, puts the key on a short cooldown, and retries on the next model in your fallback chain (up to 20 attempts).\n- **Per-key rate tracking** — RPM, RPD, TPM, and TPD counters per `(platform, model, key)` so the router always picks a key that's under its caps.\n- **Sticky sessions** — Multi-turn conversations keep talking to the same model for 30 minutes to avoid the hallucination spike that comes from mid-conversation model switches.\n- **Encrypted key storage** — API keys are encrypted with AES-256-GCM before hitting SQLite; decryption happens in-memory just before a request.\n- **Unified API key** — Clients authenticate to your proxy with a single `freellmapi-…` bearer token. You never expose upstream provider keys to your apps.\n- **Dashboard login** — The admin UI and all `/api/*` routes are gated behind an email + password account (scrypt-hashed, session-token auth), set on first run. The `/v1` proxy keeps its own unified-key auth for apps.\n- **Health checks** — Periodic probes mark keys as `healthy`, `rate_limited`, `invalid`, or `error` so the router skips dead ones automatically.\n- **Admin dashboard** — React + Vite UI to manage keys, reorder the fallback chain, inspect analytics, and run prompts in a playground. Dark mode included.\n- **Analytics** — Per-request logging with latency, token counts, success rate, and per-provider breakdowns.\n- **Context handoff on model switch** — Optional. When a session falls over to a different model, injects one compact system message so the new model knows it is continuing an existing task. Disabled by default; enable with `FREELLMAPI_CONTEXT_HANDOFF=on_model_switch`. See [Context Handoff](#context-handoff).\n- **Runs anywhere Node 20+ runs** — Windows, macOS, Linux servers, or a small ARM SBC (Raspberry Pi included). ~40 MB RSS at idle behind PM2 / systemd / whatever supervisor you prefer.\n\n## Not yet supported\n\nThe scope is deliberately narrow. If a feature isn't on this list and isn't below, assume it isn't there yet.\n\n- **Moderation** (`/v1/moderations`)\n- **`n > 1`** (multiple completions per request)\n- **Per-user billing / multi-tenant auth** — single-user by design\n\nPRs that add any of these are very welcome. See [Contributing](#contributing).\n\n## Quick start\n\n**One-liner** (Docker required — sets up `~/freellmapi`, generates an encryption key, pulls the image, and starts the container):\n\n```bash\ncurl -fsSL https://freellmapi.co/install.sh | bash\n```\n\nPrefer to read before you pipe to bash? [The script is here](https://freellmapi.co/install.sh). Re-running it is safe: your `.env` (and encryption key) is preserved and the container updates to `:latest`. Override the defaults with `FREELLMAPI_DIR`, `PORT`, or `HOST_BIND` env vars.\n\nOn Windows, the easiest path is the desktop **[`.exe` installer from Releases](https://github.com/tashfeenahmed/freellmapi/releases/latest)** (below); the Docker steps work in WSL or any bash shell.\n\n**Or manually with Docker Compose.** It runs the API and dashboard together on port 3001 and persists SQLite in a named volume.\n\n**Prerequisites:** Docker, Docker Compose, OpenSSL.\n\n```bash\ngit clone https://github.com/tashfeenahmed/freellmapi.git\ncd freellmapi\n\n# Generate an encryption key for at-rest key storage\nENCRYPTION_KEY=\"$(openssl rand -hex 32)\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\n\ndocker compose up -d\n```\n\nOpen http://localhost:3001, add your provider keys on the **Keys** page, reorder the **Fallback Chain** to taste, and grab your unified API key from the **Keys** page header. That unified key is what you point your OpenAI SDK at.\n\n> **Reaching it from another machine?** By default the container is published only on `127.0.0.1`, so `http://<server-ip>:3001` won't load from another device (the page just hangs). To expose it on your LAN — e.g. a Raspberry Pi at `http://192.168.1.x:3001` — start it with `HOST_BIND=0.0.0.0`:\n>\n> ```bash\n> HOST_BIND=0.0.0.0 docker compose up -d\n> ```\n>\n> Only do this on a trusted network: the proxy is single-user and guarded only by the unified API key.\n\n### Local development\n\n**Prerequisites:** Node.js 20+, npm.\n\n```bash\ngit clone https://github.com/tashfeenahmed/freellmapi.git\ncd freellmapi\nnpm install\ncp .env.example .env\nENCRYPTION_KEY=\"$(node -e 'console.log(require(\"crypto\").randomBytes(32).toString(\"hex\"))')\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\nnpm run dev\n```\n\n`ENCRYPTION_KEY` is required for startup. The server only falls back to a\ndatabase-stored development key when `DEV_MODE=true` and `NODE_ENV` is not\n`production`; do not use that fallback with real provider keys.\n\nRequest analytics are retained for 90 days or 100000 request rows by default,\nwhichever limit prunes first. Set `REQUEST_ANALYTICS_RETENTION_DAYS=0` or\n`REQUEST_ANALYTICS_MAX_ROWS=0` in `.env` to disable either retention limit.\n\nOpen http://localhost:5173 (the ",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"freellmapi\",\n  \"private\": true,\n  \"workspaces\": [\n    \"shared\",\n    \"server\",\n    \"client\"\n  ],\n  \"scripts\": {\n    \"dev\": \"concurrently --kill-others-on-fail --names server,client \\\"npm run dev -w server\\\" \\\"npm run dev -w client\\\"\",\n    \"dev:lan\": \"concurrently --kill-others-on-fail --names server,client \\\"npm run dev -w server\\\" \\\"npm run dev -w client -- --host\\\"\",\n    \"test\": \"npm run test -w server && npm run test -w client --if-present\",\n    \"build\": \"npm run build -w server && npm run build -w client\",\n    \"build:server\": \"npm run build -w server\",\n    \"test:migrations\": \"npm run test:migrations -w server\",\n    \"desktop:dev\": \"npm run build -w client && npm --prefix desktop run dev\",\n    \"desktop:dist\": \"npm run build -w client && npm --prefix desktop run dist\",\n    \"desktop:dist:win\": \"npm run build -w client && npm --prefix desktop run dist:win\",\n    \"db:migration:up\": \"npm run db:migration:up -w server\",\n    \"db:migration:down\": \"npm run db:migration:down -w server\",\n    \"db:migration:fresh\": \"npm run db:migration:fresh -w server\",\n    \"db:migration:status\": \"npm run db:migration:status -w server\",\n    \"db:migration:create\": \"npm run db:migration:create -w server\"\n  },\n  \"devDependencies\": {\n    \"concurrently\": \"^9.1.2\"\n  }\n}\n",
    "strategic_keywords": [
      "workspace",
      "llm",
      "eval",
      "workflow",
      "inference",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 4,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "anthropics",
    "name": "skills",
    "full_name": "anthropics/skills",
    "url": "https://github.com/anthropics/skills",
    "description": "Public repository for Agent Skills",
    "language": "Python",
    "total_stars": 155870,
    "forks": 18372,
    "stars_this_period": 323,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-skills"
      ],
      "license": "NOASSERTION",
      "open_issues": 988,
      "created_at": "2025-09-22T15:53:31Z",
      "pushed_at": "2026-06-27T16:07:58Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 18372,
      "watchers": 1016,
      "archived": false,
      "size_kb": 3985
    },
    "readme_content": "> **Note:** This repository contains Anthropic's implementation of skills for Claude. For information about the Agent Skills standard, see [agentskills.io](http://agentskills.io).\n\n[![skills.sh](https://skills.sh/b/anthropics/skills)](https://skills.sh/anthropics/skills)\n\n# Skills\nSkills are folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks. Skills teach Claude how to complete specific tasks in a repeatable way, whether that's creating documents with your company's brand guidelines, analyzing data using your organization's specific workflows, or automating personal tasks.\n\nFor more information, check out:\n- [What are skills?](https://support.claude.com/en/articles/12512176-what-are-skills)\n- [Using skills in Claude](https://support.claude.com/en/articles/12512180-using-skills-in-claude)\n- [How to create custom skills](https://support.claude.com/en/articles/12512198-creating-custom-skills)\n- [Equipping agents for the real world with Agent Skills](https://anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills)\n\n# About This Repository\n\nThis repository contains skills that demonstrate what's possible with Claude's skills system. These skills range from creative applications (art, music, design) to technical tasks (testing web apps, MCP server generation) to enterprise workflows (communications, branding, etc.).\n\nEach skill is self-contained in its own folder with a `SKILL.md` file containing the instructions and metadata that Claude uses. Browse through these skills to get inspiration for your own skills or to understand different patterns and approaches.\n\nMany skills in this repo are open source (Apache 2.0). We've also included the document creation & editing skills that power [Claude's document capabilities](https://www.anthropic.com/news/create-files) under the hood in the [`skills/docx`](./skills/docx), [`skills/pdf`](./skills/pdf), [`skills/pptx`](./skills/pptx), and [`skills/xlsx`](./skills/xlsx) subfolders. These are source-available, not open source, but we wanted to share these with developers as a reference for more complex skills that are actively used in a production AI application.\n\n## Disclaimer\n\n**These skills are provided for demonstration and educational purposes only.** While some of these capabilities may be available in Claude, the implementations and behaviors you receive from Claude may differ from what is shown in these skills. These skills are meant to illustrate patterns and possibilities. Always test skills thoroughly in your own environment before relying on them for critical tasks.\n\n# Skill Sets\n- [./skills](./skills): Skill examples for Creative & Design, Development & Technical, Enterprise & Communication, and Document Skills\n- [./spec](./spec): The Agent Skills specification\n- [./template](./template): Skill template\n\n# Try in Claude Code, Claude.ai, and the API\n\n## Claude Code\nYou can register this repository as a Claude Code Plugin marketplace by running the following command in Claude Code:\n```\n/plugin marketplace add anthropics/skills\n```\n\nThen, to install a specific set of skills:\n1. Select `Browse and install plugins`\n2. Select `anthropic-agent-skills`\n3. Select `document-skills` or `example-skills`\n4. Select `Install now`\n\nAlternatively, directly install either Plugin via:\n```\n/plugin install document-skills@anthropic-agent-skills\n/plugin install example-skills@anthropic-agent-skills\n```\n\nAfter installing the plugin, you can use the skill by just mentioning it. For instance, if you install the `document-skills` plugin from the marketplace, you can ask Claude Code to do something like: \"Use the PDF skill to extract the form fields from `path/to/some-file.pdf`\"\n\n## Claude.ai\n\nThese example skills are all already available to paid plans in Claude.ai. \n\nTo use any skill from this repository or upload custom skills, follow the instructions in [Using skills in Claude](https://support.claude.com/en/articles/12512180-using-skills-in-claude#h_a4222fa77b).\n\n## Claude API\n\nYou can use Anthropic's pre-built skills, and upload custom skills, via the Claude API. See the [Skills API Quickstart](https://docs.claude.com/en/api/skills-guide#creating-a-skill) for more.\n\n# Creating a Basic Skill\n\nSkills are simple to create - just a folder with a `SKILL.md` file containing YAML frontmatter and instructions. You can use the **template-skill** in this repository as a starting point:\n\n```markdown\n---\nname: my-skill-name\ndescription: A clear description of what this skill does and when to use it\n---\n\n# My Skill Name\n\n[Add your instructions here that Claude will follow when this skill is active]\n\n## Examples\n- Example usage 1\n- Example usage 2\n\n## Guidelines\n- Guideline 1\n- Guideline 2\n```\n\nThe frontmatter requires only two fields:\n- `name` - A unique identifier for your skill (lowercase, hyphens for spaces)\n- `description` - A complete description of what the skill does and when to use it\n\nThe markdown content below contains the instructions, examples, and guidelines that Claude will follow. For more details, see [How to create custom skills](https://support.claude.com/en/articles/12512198-creating-custom-skills).\n\n# Partner Skills\n\nSkills are a great way to teach Claude how to get better at using specific pieces of software. As we see awesome example skills from partners, we may highlight some of them here:\n\n- **Notion** - [Notion Skills for Claude](https://www.notion.so/notiondevs/Notion-Skills-for-Claude-28da4445d27180c7af1df7d8615723d0)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "commaai",
    "name": "openpilot",
    "full_name": "commaai/openpilot",
    "url": "https://github.com/commaai/openpilot",
    "description": "openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300+ supported cars.",
    "language": "Python",
    "total_stars": 62050,
    "forks": 11063,
    "stars_this_period": 322,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "advanced-driver-assistance-systems",
        "driver-assistance-systems",
        "robotics"
      ],
      "license": "MIT",
      "open_issues": 141,
      "created_at": "2016-11-24T01:33:30Z",
      "pushed_at": "2026-06-27T19:42:54Z",
      "homepage": "https://comma.ai/openpilot",
      "default_branch": "master",
      "forks": 11063,
      "watchers": 1318,
      "archived": false,
      "size_kb": 1152190
    },
    "readme_content": "<div align=\"center\" style=\"text-align: center;\">\n\n<h1>openpilot</h1>\n\n<p>\n  <b>openpilot is an operating system for robotics.</b>\n  <br>\n  Currently, it upgrades the driver assistance system in 300+ supported cars.\n</p>\n\n<h3>\n  <a href=\"https://docs.comma.ai\">Docs</a>\n  <span> · </span>\n  <a href=\"https://docs.comma.ai/contributing/roadmap/\">Roadmap</a>\n  <span> · </span>\n  <a href=\"https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md\">Contribute</a>\n  <span> · </span>\n  <a href=\"https://discord.comma.ai\">Community</a>\n  <span> · </span>\n  <a href=\"https://comma.ai/shop\">Try it on a comma four</a>\n</h3>\n\nQuick start: `bash <(curl -fsSL openpilot.comma.ai)`\n\n[![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/tests.yaml/badge.svg)](https://github.com/commaai/openpilot/actions/workflows/tests.yaml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![X Follow](https://img.shields.io/twitter/follow/comma_ai)](https://x.com/comma_ai)\n[![Discord](https://img.shields.io/discord/469524606043160576)](https://discord.comma.ai)\n\n</div>\n\n<table>\n  <tr>\n    <td><a href=\"https://youtu.be/NmBfgOanCyk\" title=\"Video By Greer Viau\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/2f7112ae-f748-4f39-b617-fabd689c3772\"></a></td>\n    <td><a href=\"https://youtu.be/VHKyqZ7t8Gw\" title=\"Video By Logan LeGrand\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/92351544-2833-40d7-9e0b-7ef7ae37ec4c\"></a></td>\n    <td><a href=\"https://youtu.be/SUIZYzxtMQs\" title=\"A drive to Taco Bell\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/05ceefc5-2628-439c-a9b2-89ce77dc6f63\"></a></td>\n  </tr>\n</table>\n\n\nUsing openpilot in a car\n------\n\nTo use openpilot in a car, you need four things:\n1. **Supported Device:** a comma four, available at [comma.ai/shop/comma-four](https://www.comma.ai/shop/comma-four).\n2. **Software:** The setup procedure for the comma four allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.\n3. **Supported Car:** Ensure that you have one of [the 300+ supported cars](docs/CARS.md).\n4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma four to your car.\n\nWe have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup). Note that it's possible to run openpilot on [other hardware](https://blog.comma.ai/self-driving-car-for-free/), although it's not plug-and-play.\n\n\n### Branches\n\nRunning `master` and other branches directly is supported, but it's recommended to run one of the following prebuilt branches:\n\n| comma four branch      | comma 3X branch        | URL                                    | description                                                                         |\n|------------------------|------------------------|----------------------------------------|-------------------------------------------------------------------------------------|\n| `release-mici`         | `release-tizi`         | openpilot.comma.ai                     | This is openpilot's release branch.                                                 |\n| `release-mici-staging` | `release-tizi-staging` | openpilot-test.comma.ai                | This is the staging branch for releases. Use it to get new releases slightly early. |\n| `nightly`              | `nightly`              | openpilot-nightly.comma.ai             | This is the bleeding edge development branch. Do not expect this to be stable.      |\n| `nightly-dev`          | `nightly-dev`          | installer.comma.ai/commaai/nightly-dev | Same as nightly, but includes experimental development features for some cars.      |\n\nTo start developing openpilot\n------\n\nopenpilot is developed by [comma](https://comma.ai/) and by users like you. We welcome both pull requests and issues on [GitHub](http://github.com/commaai/openpilot).\n\n* Join the [community Discord](https://discord.comma.ai)\n* Check out [the contributing docs](docs/CONTRIBUTING.md)\n* Check out the [openpilot tools](openpilot/tools/)\n* Code documentation lives at https://docs.comma.ai\n* Information about running openpilot lives on the [community wiki](https://github.com/commaai/openpilot/wiki)\n\nWant to get paid to work on openpilot? [comma is hiring](https://comma.ai/jobs#open-positions) and offers lots of [bounties](https://comma.ai/bounties) for external contributors.\n\nSafety and Testing\n----\n\n* openpilot observes [ISO26262](https://en.wikipedia.org/wiki/ISO_26262) guidelines, see [SAFETY.md](docs/SAFETY.md) for more details.\n* openpilot has software-in-the-loop [tests](.github/workflows/tests.yaml) that run on every commit.\n* The code enforcing the safety model lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.\n* panda has software-in-the-loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).\n* Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.\n* panda has additional hardware-in-the-loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).\n* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.\n\n<details>\n<summary>MIT Licensed</summary>\n\nopenpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.\n\nAny user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.\n\n**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.\nYOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.\nNO WARRANTY EXPRESSED OR IMPLIED.**\n</details>\n\n<details>\n<summary>User Data and comma Account</summary>\n\nBy default, openpilot uploads driving data to our servers. You can also access your data through [comma connect](https://connect.comma.ai/). We use your data to train better models and improve openpilot for everyone.\n\nopenpilot is open source software, and users can disable data collection if they wish.\n\nopenpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.\nThe driver-facing camera and microphone are only logged if you explicitly opt-in in settings.\n\nBy using openpilot, you agree to [our Privacy Policy](https://comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.\n</details>\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"openpilot\"\nrequires-python = \">= 3.12.3, < 3.13\"\nlicense = {text = \"MIT License\"}\nversion = \"0.1.0\"\ndescription = \"an open source driver assistance system\"\nauthors = [\n  {name = \"Vehicle Researcher\", email=\"user@comma.ai\"}\n]\n\ndependencies = [\n  # multiple users\n  \"sounddevice\",  # micd + soundd\n  \"pyserial\",     # pigeond + qcomgpsd\n  \"requests\",     # many one-off uses\n  \"sympy\",        # rednose + friends\n  \"crcmod-plus\",  # cars + qcomgpsd\n  \"tqdm\",         # cars (fw_versions.py) on start + many one-off uses\n\n  # core\n  \"cffi\",\n  \"scons\",\n  \"pycapnp==2.1.0\",  # 2.2 introduces a memory leak due to cyclic references\n  \"Cython\",\n  \"setuptools\",\n  \"numpy >=2.0\",\n\n  # vendored native dependencies\n  \"bzip2 @ git+https://github.com/commaai/dependencies.git@release-bzip2#subdirectory=bzip2\",\n  \"bootstrap-icons @ git+https://github.com/commaai/dependencies.git@release-bootstrap-icons#subdirectory=bootstrap-icons\",\n  \"capnproto @ git+https://github.com/commaai/dependencies.git@release-capnproto#subdirectory=capnproto\",\n  \"catch2 @ git+https://github.com/commaai/dependencies.git@release-catch2#subdirectory=catch2\",\n  \"acados @ git+https://github.com/commaai/dependencies.git@release-acados#subdirectory=acados\",\n  \"eigen @ git+https://github.com/commaai/dependencies.git@release-eigen#subdirectory=eigen\",\n  \"ffmpeg @ git+https://github.com/commaai/dependencies.git@release-ffmpeg#subdirectory=ffmpeg\",\n  \"libjpeg @ git+https://github.com/commaai/dependencies.git@release-libjpeg#subdirectory=libjpeg\",\n  \"libyuv @ git+https://github.com/commaai/dependencies.git@release-libyuv#subdirectory=libyuv\",\n  \"zstd @ git+https://github.com/commaai/dependencies.git@release-zstd#subdirectory=zstd\",\n  \"ncurses @ git+https://github.com/commaai/dependencies.git@release-ncurses#subdirectory=ncurses\",\n  \"zeromq @ git+https://github.com/commaai/dependencies.git@release-zeromq#subdirectory=zeromq\",\n  \"libusb @ git+https://github.com/commaai/dependencies.git@release-libusb#subdirectory=libusb\",\n  \"json11 @ git+https://github.com/commaai/dependencies.git@release-json11#subdirectory=json11\",\n  \"git-lfs @ git+https://github.com/commaai/dependencies.git@release-git-lfs#subdirectory=git-lfs\",\n  \"gcc-arm-none-eabi @ git+https://github.com/commaai/dependencies.git@release-gcc-arm-none-eabi#subdirectory=gcc-arm-none-eabi\",\n  \"xvfb @ git+https://github.com/commaai/dependencies.git@release-xvfb#subdirectory=xvfb\",\n\n  # body / webrtcd\n  \"av\",\n  \"aiortc\",\n\n  # panda\n  \"libusb1\",\n  \"spidev; platform_system == 'Linux'\",\n\n  # logging\n  \"pyzmq\",\n  \"sentry-sdk\",\n  \"xattr\",  # used in place of 'os.getxattr' for macOS compatibility\n\n  # athena\n  \"PyJWT\",\n  \"json-rpc\",\n  \"websocket_client\",\n\n  # joystickd\n  \"inputs\",\n\n  # these should be removed\n  \"psutil\",\n  \"pycryptodome\", # used in panda, body, and a test\n  \"setproctitle\",\n\n  # logreader\n  \"zstandard\",\n\n  # ui\n  \"raylib @ git+https://github.com/commaai/dependencies.git@release-raylib#subdirectory=raylib\",\n  \"qrcode\",\n  \"jeepney\",\n  \"pillow\",\n]\n\n[project.optional-dependencies]\ndocs = [\n  \"Jinja2\",\n  \"zensical\",\n]\n\ntesting = [\n  \"coverage\",\n  \"hypothesis ==6.47.*\",\n  \"ty\",\n  \"pytest\",\n  \"pytest-cpp\",\n  \"pytest-subtests\",\n  # https://github.com/pytest-dev/pytest-xdist/pull/1229\n  \"pytest-xdist @ git+https://github.com/sshane/pytest-xdist@2b4372bd62699fb412c4fe2f95bf9f01bd2018da\",\n  \"pytest-mock\",\n  \"ruff\",\n  \"codespell\",\n  \"pre-commit-hooks\",\n]\n\ndev = [\n  \"matplotlib\",\n]\n\ntools = [\n  \"imgui @ git+https://github.com/commaai/dependencies.git@release-imgui#subdirectory=imgui\",\n\n  # this can be added back once it's stripped down some more\n  #\"metadrive-simulator @ git+https://github.com/commaai/metadrive.git@minimal ; (platform_machine != 'aarch64')\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/commaai/openpilot\"\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.build.targets.wheel]\npackages = [\n  \"openpilot\",\n  \"msgq\",\n  \"opendbc\",\n  \"panda\",\n  \"rednose\",\n  \"teleoprtc\",\n  \"tinygrad\",\n]\n\n[tool.hatch.metadata]\nallow-direct-references = true\n\n[tool.pytest.ini_options]\nminversion = \"6.0\"\naddopts = \"-Werror --strict-config --strict-markers --durations=10 -n auto --dist=loadgroup\"\ncpp_files = \"test_*\"\ncpp_harness = \"openpilot/selfdrive/test/cpp_harness.py\"\npython_files = \"test_*.py\"\nmarkers = [\n  \"slow: tests that take awhile to run and can be skipped with -m 'not slow'\",\n  \"tici: tests that are only meant to run on the C3/C3X\",\n  \"skip_tici_setup: mark test to skip tici setup fixture\",\n  \"nocapture: don't capture test output\",\n  \"shared_download_cache: share download cache between tests\",\n  \"xdist_group_class_property: group tests by a property of the class that contains them\",\n]\ntestpaths = [\n  \"openpilot\",\n]\n\n[tool.codespell]\nquiet-level = 3\n# if you've got a short variable name that's getting flagged, add it here\nignore-words-list = \"bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints,whit,indexIn,ws,uint,grey,deque,stdio,",
    "strategic_keywords": [
      "memory",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "Anil-matcha",
    "name": "Open-Generative-AI",
    "full_name": "Anil-matcha/Open-Generative-AI",
    "url": "https://github.com/Anil-matcha/Open-Generative-AI",
    "description": "Unrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 200+ models (Flux, Midjourney, Kling, Sora, Veo). No content filters. Self-hosted, MIT licensed.",
    "language": "JavaScript",
    "total_stars": 21349,
    "forks": 3637,
    "stars_this_period": 254,
    "source_slice": "all",
    "source_slices": [
      "all",
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai-art-generator",
        "ai-image-generation",
        "ai-video-generation",
        "creative-tools",
        "flux",
        "flux-1",
        "generative-ai",
        "image-to-video",
        "javascript",
        "kling-ai",
        "lipsync",
        "midjourney-alternative",
        "muapi",
        "open-source",
        "seedance2",
        "sora-alternative",
        "text-to-image",
        "text-to-video",
        "uncensored",
        "wan-video"
      ],
      "license": "MIT",
      "open_issues": 21,
      "created_at": "2023-05-09T14:12:37Z",
      "pushed_at": "2026-06-26T20:53:48Z",
      "homepage": "https://muapi.ai/open-generative-ai?utm_source=github&utm_medium=about&utm_campaign=open-generative-ai",
      "default_branch": "main",
      "forks": 3637,
      "watchers": 161,
      "archived": false,
      "size_kb": 45023
    },
    "readme_content": "# Open Generative AI — Unrestricted Open-Source Alternative to AI Video Platforms\n\n[![Powered by MuAPI](https://img.shields.io/badge/Powered%20by-MuAPI-6366f1?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0id2hpdGUiIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNHYtNGgtMnYtMmg0djZoLTJ6bTAtOFY2aDJ2MmgtMnoiLz48L3N2Zz4=)](https://muapi.ai?utm_source=github&utm_medium=badge&utm_campaign=open-generative-ai)\n\n\n> **The free, open-source alternative to AI Video Platforms.** Generate AI images and videos using 200+ state-of-the-art models — no content filters, no closed ecosystem, no subscription fees.\n\n**Community:** Join [Reddit](https://www.reddit.com/r/muapi) & [Discord](https://discord.gg/QhTrNRU4r3) for discussions and support\n\n> 🤖 **Automate media generations with AI coding agents:** [Generative-Media-Skills](https://github.com/SamurAIGPT/Generative-Media-Skills) — a library of skills that let agents like **Claude Code**, **Codex**, and other coding assistants drive 200+ image/video models end-to-end (prompt → generate → edit → stitch) directly from your terminal. Perfect for building automated media pipelines without touching a UI.\n\n> 🎬 **Seedance 2.5 prompts & API guide:** [awesome-seedance-2.5-api-prompts](https://github.com/Anil-matcha/awesome-seedance-2.5-api-prompts) — Curated prompt templates, camera control vocabulary, MuAPI reference, and cinematic examples for Seedance 2.5 video generation.\n\n> 🍌 **Claude Fable 5 use cases + 20% off on MuAPI:** [awesome-claude-fable-5](https://github.com/Anil-matcha/awesome-claude-fable-5) — 60 curated real-world use cases, prompts, and benchmarks for Claude Fable 5, with **20% off Fable 5 access** via [MuAPI](https://muapi.ai/pricing?utm_source=github&utm_medium=readme&utm_campaign=open-generative-ai).\n\n<p align=\"center\">\n  <a href=\"https://github.com/Anil-matcha/awesome-generative-ai-apps\">\n    <img src=\"https://img.shields.io/badge/Part%20of-Awesome%20Generative%20AI%20Apps-FFD700?style=for-the-badge&logo=github&logoColor=black\" alt=\"Awesome Generative AI Apps\">\n  </a>\n</p>\n\n> 🎨 **[Explore 50+ more open-source AI apps →](https://github.com/Anil-matcha/awesome-generative-ai-apps)**\n\n## Related Projects\n\n- [Vadoo](https://vadoo.tv) — Unrestricted AI image & video generation → auto-publish as YouTube Shorts and TikToks & earn\n- [awesome-claude-fable-5](https://github.com/Anil-matcha/awesome-claude-fable-5) — 60 curated Claude Fable 5 use cases, prompts, and benchmarks — get 20% off Fable 5 via MuAPI\n- [Generative-Media-Skills](https://github.com/SamurAIGPT/Generative-Media-Skills) — Use these models as AI agent skills in Claude Code, Cursor, and Gemini CLI\n- [AI-Youtube-Shorts-Generator](https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator) — Auto-generate viral YouTube Shorts from long-form videos using AI\n- [muapi-cli](https://github.com/SamurAIGPT/muapi-cli) — Official CLI for MuAPI — run these models from your terminal\n- [Vibe-Workflow](https://github.com/SamurAIGPT/Vibe-Workflow) — Node-based AI workflow builder for generative image & video pipelines\n- [Text-To-Video-AI](https://github.com/SamurAIGPT/Text-To-Video-AI) — Lightweight text-to-video script — no UI required\n- [muapi-comfyui](https://github.com/SamurAIGPT/muapi-comfyui) — ComfyUI nodes for 100+ MuAPI models\n- [n8n-nodes-muapi](https://github.com/SamurAIGPT/n8n-nodes-muapi) — n8n community nodes for MuAPI — automate media generation\n- [Open-AI-Design-Agent](https://github.com/Anil-matcha/Open-AI-Design-Agent) — Open-source autonomous AI design agent\n- [Free-AI-Social-Media-Scheduler](https://github.com/Anil-matcha/Free-AI-Social-Media-Scheduler) — Free open-source AI social media scheduler — self-hostable alternative to Buffer and Hootsuite\n- [awesome-seedance-2.5-api-prompts](https://github.com/Anil-matcha/awesome-seedance-2.5-api-prompts) — Curated Seedance 2.5 API guide, prompts, camera controls, and video generation examples\n- [AI-Voice-Agent](https://github.com/Anil-matcha/AI-Voice-Agent) — Self-hosted AI voice agent for real-time voice conversations, sales calls, and customer support\n\n## 🌐 Try it Online — No Install Required\n\n**Hosted version:** [https://muapi.ai/open-generative-ai?utm_source=github&utm_medium=readme&utm_campaign=open-generative-ai](https://muapi.ai/open-generative-ai?utm_source=github&utm_medium=readme&utm_campaign=open-generative-ai)\n\nUse all studios (Image, Video, Audio, AI Clipping, Vibe Motion, Lip Sync, Cinema, Marketing, Workflows, Agents, Design Agent, Apps, MCP & CLI) directly in your browser — no Node.js, no setup. Sign up for a free account to start generating. The hosted version is always up to date with the latest models.\n\n**Follow** the [creator](https://x.com/matchaman11) for updates\n\n---\n\n## ⬇️ Download Desktop App\n\nOne-click installers — no Node.js or terminal required.\n\n| Platform | Download |\n|---|---|\n| macOS Apple Silicon (M1/M2/M3/M4) | [Open Generative AI-1.0.9-arm64.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.9/Open.Generative.AI-1.0.9-arm64.dmg) |\n| macOS Intel (x64) | [Open Generative AI-1.0.9.dmg](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.9/Open.Generative.AI-1.0.9.dmg) |\n| Windows (x64) | [Open Generative AI Setup 1.0.9.exe](https://github.com/Anil-matcha/Open-Generative-AI/releases/download/v1.0.9/Open.Generative.AI.Setup.1.0.9.exe) |\n| Linux (Ubuntu x64) | [v1.0.9 release](https://github.com/Anil-matcha/Open-Generative-AI/releases/tag/v1.0.9) (`.AppImage` / `.deb`), or build locally with `npm run electron:build:linux`. |\n\nAll releases: [github.com/Anil-matcha/Open-Generative-AI/releases](https://github.com/Anil-matcha/Open-Generative-AI/releases)\n\n### macOS Installation Guide\n\nBecause the app is not notarized by Apple, macOS Gatekeeper will block it on first launch. Follow these steps:\n\n**Step 1** — Mount the DMG and drag the app to `/Applications`\n\n**Step 2** — Open Terminal and run:\n```bash\nxattr -cr \"/Applications/Open Generative AI.app\"\n```\n\n**Step 3** — Right-click the app in `/Applications` → click **Open** → click **Open** again on the dialog\n\n> You only need to do this once. After that, the app opens normally.\n\n**Alternative (no Terminal):**\n1. Try to open the app — macOS will block it\n2. Go to **System Settings → Privacy & Security**\n3. Scroll down to find _\"Open Generative AI was blocked\"_\n4. Click **Open Anyway** → **Open**\n\n### Windows Installation — SmartScreen warning fix\n\nWindows SmartScreen may show a warning because the installer is not code-signed:\n\n1. Click **More info** on the SmartScreen dialog\n2. Click **Run anyway**\n\nThe app will install silently to `%LocalAppData%` with a Start Menu shortcut.\n\n### Ubuntu / Linux Installation\n\nLinux artifacts are available when building with Electron Builder:\n\n```bash\n# Build Linux installers (AppImage + .deb)\nnpm run electron:build:linux\n```\n\nGenerated files are written to the `release/` folder:\n- **AppImage** — portable, run directly after making executable:\n  ```bash\n  chmod +x \"release/Open Generative AI-*.AppImage\"\n  ./release/Open\\ Generative\\ AI-*.AppImage\n  ```\n- **.deb** — install on Debian/Ubuntu:\n  ```bash\n  sudo apt install ./release/open-generative-ai_*_amd64.deb\n  ```\n\nIf AppImage fails to start on older systems, install `libfuse2`:\n\n```bash\nsudo apt install libfuse2\n```\n\n#### Ubuntu 24.04+ / AppArmor sandbox restriction\n\nUbuntu 24.04 and later enable a kernel security policy (`apparmor_restrict_unprivileged_userns`) that blocks Chromium's user-namespace sandbox. If the app fails to start silently or crashes immediately, you have two options:\n\n**Option A — Recommended: install the `.deb` instead.**\nThe `.deb` package ships an AppArmor profile that grants the required permission automatically on install with no system-wide changes.\n\n**Option B — Temporary system fix (AppImage users):**\n```bash\nsudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0\n```\nThis lasts until next reboot. To make it permanent:\n```bash\necho 'kernel.apparmor_restrict_unprivileged_userns=0' | sudo tee /etc/sysctl.d/99-userns.conf\n```\n\n---\n\nOpen Generative AI is a free, open-source AI image, video, cinema, and lip sync studio that brings creative workflows to everyone. No content filters, no prompt rejections, no guardrails — just full creative freedom. Powered by [Muapi.ai](https://muapi.ai?utm_source=github&utm_medium=readme&utm_campaign=open-generative-ai), it supports text-to-image, image-to-image, text-to-video, image-to-video, and audio-driven lip sync generation across models like Flux, Nano Banana, Midjourney, Kling, Sora, Veo, Seedream, Infinite Talk, LTX Lipsync, Wan 2.2, and more — all from a sleek, modern interface you can self-host and customize.\n\n**Why Open Generative AI instead of other AI Video Platforms?**\n- **No filters** — no content filters, no nanny guardrails, no prompt rejections\n- **Free & open-source** — no subscription, no vendor lock-in\n- **Self-hosted** — your data stays on your machine, full creative control\n- **200+ models** — text-to-image, image-to-image, text-to-video, image-to-video, lip sync\n- **Multi-image input** — feed up to 14 reference images into compatible models\n- **Lip Sync Studio** — animate portraits or sync lips to any audio with 9 dedicated models\n- **Extensible** — add your own models, modify the UI, build on top of it\n\nFor a deep dive into the technical architecture and the philosophy behind the \"Infinite Budget\" cinema workflow, see our [comprehensive guide and roadmap](https://medium.com/@anilmatcha/).\n\n## ⚡ Local Model Inference (Desktop App Only)\n\nThe desktop app supports **two independent local engines**. Pick whichever fits the machine you actually run on:\n\n| Engine | What it is | Best for |\n|---|---|---|\n| **sd.cpp** (bundled) | C++ engine from [stable-diffusion.cpp](https://github.com/leejet/stable-diffusion.cpp), runs on the same machine as the app. Metal GPU on Apple Silicon, CUDA/Vulkan/ROCm on Linux/Windows. | Image-only models. Works on Mac M-series. |\n| **Wan2GP** (BYO server) | HTTP client to a user-run [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) server. The server runs Python + PyTorch on a CUDA/ROCm GPU; the desktop app only sends prompts and receives results. | Video models (Wan 2.2, Hunyuan, LTX) and large image models (Flux, Qwen-Image). NVIDIA/AMD GPU required on the *server*; the desktop app itself can run on a Mac. |\n\nBoth engines share the same UI: open **Settings → Local Models** to configure each.\n\n### Engine 1 — sd.cpp (bundled)\n\n| Model | Type | Size | Notes |\n|---|---|---|---|\n| **Z-Image Turbo** ⚡ | Diffusion Transformer | 2.5 GB + 2.7 GB aux | 8-step turbo. Heavy on memory. |\n| **Z-Image Base** ⚡ | Diffusion Transformer | 3.5 GB + 2.7 GB aux | 50-step high-quality. Heavy on memory. |\n| **Dreamshaper 8** | SD 1.5 | 2.1 GB | 20-step versatile. Lightest tested option on Mac. |\n| **Realistic Vision v5.1** | SD 1.5 | 2.1 GB | 25-step photorealistic |\n| **Anything v5** | SD 1.5 | 2.1 GB | 20-step anime/illustration |\n| **SDXL Base 1.0** | SDXL | 6.9 GB | 30-step high-res |\n\n> **Z-Image models** require two shared auxiliary files (downloaded once, shared across both models):\n> - **Qwen3-4B Text Encoder** — 2.4 GB\n> - **FLUX VAE** — 335 MB\n\n**How to use:**\n1. Open **Settings → Local Models** in the desktop app\n2. Install the **sd.cpp inference engine** (one click — auto-downloaded)\n3. Download your chosen model (and auxiliary files for Z-Image)\n4. In **Image Studio**, click the **⚡ Local** toggle next to the model selector\n5. Select your local model and generate — no API key needed\n\nAll downloads happen inside the app. Nothing is installed system-wide.\n\nBy default, `sd.cpp` stores the engine, model weights, and temporary downloads under Electron's app data directory. Common paths are:\n\n- macOS: `~/Library/Application Support/open-generative-ai/local-ai`\n- Windows: `%APPDATA",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"open-generative-ai\",\n  \"description\": \"Open-source alternative to HF AI — AI image, video, cinema and lip sync studio\",\n  \"homepage\": \"https://github.com/Anil-matcha/Open-Generative-AI\",\n  \"private\": true,\n  \"version\": \"2.0.0\",\n  \"license\": \"MIT\",\n  \"workspaces\": [\n    \"packages/studio\",\n    \"packages/Vibe-Workflow/packages/workflow-builder\",\n    \"packages/Open-Poe-AI/packages/agents\",\n    \"packages/Open-AI-Design-Agent/packages/design-agent\"\n  ],\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\",\n    \"build:studio\": \"npm run build -w studio\",\n    \"build:workflow\": \"npm run build -w workflow-builder\",\n    \"build:agent\": \"npm run build -w ai-agent\",\n    \"build:packages\": \"npm run build:workflow && npm run build:agent && npm run build:studio\",\n    \"setup\": \"git submodule update --init --recursive && npm install && npm run build:packages\",\n    \"vite:dev\": \"vite\",\n    \"vite:build\": \"vite build\",\n    \"electron:dev\": \"npm run vite:build && electron .\",\n    \"electron:build\": \"vite build && electron-builder --mac\",\n    \"electron:build:win\": \"vite build && electron-builder --win\",\n    \"electron:build:linux\": \"vite build && electron-builder --linux\",\n    \"electron:build:linux:dir\": \"vite build && electron-builder --linux dir\",\n    \"electron:build:linux:arm64:dir\": \"vite build && electron-builder --linux dir --arm64\",\n    \"stage:local-ai\": \"node scripts/stage-local-ai-binary.js\",\n    \"package:linux:deb\": \"node scripts/package-linux-deb.js\",\n    \"package:linux:deb:arm64\": \"node scripts/package-linux-deb.js --arch arm64\",\n    \"package:linux:deb:x64\": \"node scripts/package-linux-deb.js --arch x64\",\n    \"electron:build:all\": \"vite build && electron-builder --mac --win --linux\"\n  },\n  \"build\": {\n    \"appId\": \"ai.generative.open\",\n    \"productName\": \"Open Generative AI\",\n    \"copyright\": \"Copyright © 2025\",\n    \"directories\": {\n      \"output\": \"release\"\n    },\n    \"afterPack\": \"./afterPack.js\",\n    \"files\": [\n      \"dist/**/*\",\n      \"electron/**/*\"\n    ],\n    \"extraResources\": [\n      {\n        \"from\": \"build/local-ai\",\n        \"to\": \"local-ai\",\n        \"filter\": [\n          \"**/*\"\n        ]\n      }\n    ],\n    \"mac\": {\n      \"category\": \"public.app-category.graphics-design\",\n      \"icon\": \"public/banner.png\",\n      \"gatekeeperAssess\": false,\n      \"target\": [\n        {\n          \"target\": \"dmg\",\n          \"arch\": [\n            \"x64\",\n            \"arm64\"\n          ]\n        }\n      ]\n    },\n    \"win\": {\n      \"icon\": \"public/banner.png\",\n      \"signAndEditExecutable\": false,\n      \"target\": [\n        {\n          \"target\": \"nsis\",\n          \"arch\": [\n            \"x64\"\n          ]\n        }\n      ]\n    },\n    \"nsis\": {\n      \"oneClick\": false,\n      \"allowToChangeInstallationDirectory\": true,\n      \"include\": \"build/installer.nsh\"\n    },\n    \"linux\": {\n      \"icon\": \"public/banner.png\",\n      \"category\": \"Utility\",\n      \"maintainer\": \"Open Generative AI Team\",\n      \"extraFiles\": [\n        {\n          \"from\": \"build/linux/apparmor.profile\",\n          \"to\": \"resources/apparmor.profile\"\n        }\n      ],\n      \"target\": [\n        {\n          \"target\": \"AppImage\",\n          \"arch\": [\n            \"x64\"\n          ]\n        },\n        {\n          \"target\": \"deb\",\n          \"arch\": [\n            \"x64\"\n          ]\n        }\n      ]\n    }\n  },\n  \"dependencies\": {\n    \"axios\": \"^1.7.0\",\n    \"next\": \"^15.0.0\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\",\n    \"react-hot-toast\": \"^2.4.1\",\n    \"studio\": \"*\",\n    \"workflow-builder\": \"file:./packages/Vibe-Workflow/packages/workflow-builder\",\n    \"ai-agent\": \"file:./packages/Open-Poe-AI/packages/agents\"\n  },\n  \"devDependencies\": {\n    \"@eslint/eslintrc\": \"^3\",\n    \"@tailwindcss/vite\": \"^4.1.18\",\n    \"autoprefixer\": \"^10.4.24\",\n    \"electron\": \"^33.4.11\",\n    \"electron-builder\": \"^25.1.8\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"^15.0.0\",\n    \"postcss\": \"^8.5.6\",\n    \"tailwindcss\": \"^3.4.0\",\n    \"vite\": \"^5.4.0\"\n  },\n  \"main\": \"electron/main.js\"\n}\n",
    "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": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "thedotmack",
    "name": "claude-mem",
    "full_name": "thedotmack/claude-mem",
    "url": "https://github.com/thedotmack/claude-mem",
    "description": "Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More",
    "language": "JavaScript",
    "total_stars": 84737,
    "forks": 7315,
    "stars_this_period": 253,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agents",
        "ai-memory",
        "anthropic",
        "artificial-intelligence",
        "chromadb",
        "claude",
        "claude-agent-sdk",
        "claude-agents",
        "claude-code",
        "claude-code-plugin",
        "claude-skills",
        "embeddings",
        "long-term-memory",
        "mem0",
        "memory-engine",
        "openmemory",
        "rag",
        "sqlite",
        "supermemory"
      ],
      "license": "Apache-2.0",
      "open_issues": 230,
      "created_at": "2025-08-31T20:50:03Z",
      "pushed_at": "2026-06-25T22:02:47Z",
      "homepage": "https://claude-mem.ai",
      "default_branch": "main",
      "forks": 7315,
      "watchers": 283,
      "archived": false,
      "size_kb": 213442
    },
    "readme_content": "<h1 align=\"center\">\n  <br>\n  <a href=\"https://github.com/thedotmack/claude-mem\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/claude-mem-logo-for-dark-mode.webp\">\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/claude-mem-logo-for-light-mode.webp\">\n      <img src=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/claude-mem-logo-for-light-mode.webp\" alt=\"Claude-Mem\" width=\"400\">\n    </picture>\n  </a>\n  <br>\n  <a href=\"https://vercel.com/open-source-program\">\n    <img alt=\"Vercel OSS Program\" src=\"https://vercel.com/oss/program-badge-2026.svg\" />\n  </a>\n</h1>\n\n<p align=\"center\">\n  <a href=\"docs/i18n/README.zh.md\">🇨🇳 中文</a> •\n  <a href=\"docs/i18n/README.zh-tw.md\">🇹🇼 繁體中文</a> •\n  <a href=\"docs/i18n/README.ja.md\">🇯🇵 日本語</a> •\n  <a href=\"docs/i18n/README.pt.md\">🇵🇹 Português</a> •\n  <a href=\"docs/i18n/README.pt-br.md\">🇧🇷 Português</a> •\n  <a href=\"docs/i18n/README.ko.md\">🇰🇷 한국어</a> •\n  <a href=\"docs/i18n/README.es.md\">🇪🇸 Español</a> •\n  <a href=\"docs/i18n/README.de.md\">🇩🇪 Deutsch</a> •\n  <a href=\"docs/i18n/README.fr.md\">🇫🇷 Français</a> •\n  <a href=\"docs/i18n/README.he.md\">🇮🇱 עברית</a> •\n  <a href=\"docs/i18n/README.ar.md\">🇸🇦 العربية</a> •\n  <a href=\"docs/i18n/README.ru.md\">🇷🇺 Русский</a> •\n  <a href=\"docs/i18n/README.pl.md\">🇵🇱 Polski</a> •\n  <a href=\"docs/i18n/README.cs.md\">🇨🇿 Čeština</a> •\n  <a href=\"docs/i18n/README.nl.md\">🇳🇱 Nederlands</a> •\n  <a href=\"docs/i18n/README.tr.md\">🇹🇷 Türkçe</a> •\n  <a href=\"docs/i18n/README.uk.md\">🇺🇦 Українська</a> •\n  <a href=\"docs/i18n/README.vi.md\">🇻🇳 Tiếng Việt</a> •\n  <a href=\"docs/i18n/README.tl.md\">🇵🇭 Tagalog</a> •\n  <a href=\"docs/i18n/README.id.md\">🇮🇩 Indonesia</a> •\n  <a href=\"docs/i18n/README.th.md\">🇹🇭 ไทย</a> •\n  <a href=\"docs/i18n/README.hi.md\">🇮🇳 हिन्दी</a> •\n  <a href=\"docs/i18n/README.bn.md\">🇧🇩 বাংলা</a> •\n  <a href=\"docs/i18n/README.ur.md\">🇵🇰 اردو</a> •\n  <a href=\"docs/i18n/README.ro.md\">🇷🇴 Română</a> •\n  <a href=\"docs/i18n/README.sv.md\">🇸🇪 Svenska</a> •\n  <a href=\"docs/i18n/README.it.md\">🇮🇹 Italiano</a> •\n  <a href=\"docs/i18n/README.el.md\">🇬🇷 Ελληνικά</a> •\n  <a href=\"docs/i18n/README.hu.md\">🇭🇺 Magyar</a> •\n  <a href=\"docs/i18n/README.fi.md\">🇫🇮 Suomi</a> •\n  <a href=\"docs/i18n/README.da.md\">🇩🇰 Dansk</a> •\n  <a href=\"docs/i18n/README.no.md\">🇳🇴 Norsk</a>\n</p>\n\n<h4 align=\"center\">Persistent memory compression system built for <a href=\"https://claude.com/claude-code\" target=\"_blank\">Claude Code</a>.</h4>\n\n<p align=\"center\">\n  <a href=\"LICENSE\">\n    <img src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" alt=\"License\">\n  </a>\n  <a href=\"package.json\">\n    <img src=\"https://img.shields.io/badge/version-13.4.0-green.svg\" alt=\"Version\">\n  </a>\n  <a href=\"package.json\">\n    <img src=\"https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg\" alt=\"Node\">\n  </a>\n  <a href=\"https://github.com/thedotmack/awesome-claude-code\">\n    <img src=\"https://awesome.re/mentioned-badge.svg\" alt=\"Mentioned in Awesome Claude Code\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/15496\" target=\"_blank\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/trendshift-badge-dark.svg\">\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/trendshift-badge.svg\">\n      <img src=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/trendshift-badge.svg\" alt=\"thedotmack/claude-mem | Trendshift\" width=\"250\" height=\"55\"/>\n    </picture>\n  </a>\n</p>\n\n<br>\n\n<table align=\"center\">\n  <tr>\n    <td align=\"center\">\n      <a href=\"https://github.com/thedotmack/claude-mem\">\n        <picture>\n          <img\n            src=\"https://raw.githubusercontent.com/thedotmack/claude-mem/main/docs/public/cm-preview.gif\"\n            alt=\"Claude-Mem Preview\"\n            width=\"500\"\n          >\n        </picture>\n      </a>\n    </td>\n    <td align=\"center\">\n      <a href=\"https://www.star-history.com/#thedotmack/claude-mem&Date\">\n        <picture>\n          <source\n            media=\"(prefers-color-scheme: dark)\"\n            srcset=\"https://api.star-history.com/image?repos=thedotmack/claude-mem&type=date&theme=dark&legend=top-left\"\n          />\n          <source\n            media=\"(prefers-color-scheme: light)\"\n            srcset=\"https://api.star-history.com/image?repos=thedotmack/claude-mem&type=date&legend=top-left\"\n          />\n          <img\n            alt=\"Star History Chart\"\n            src=\"https://api.star-history.com/image?repos=thedotmack/claude-mem&type=date&legend=top-left\"\n            width=\"500\"\n          />\n        </picture>\n      </a>\n    </td>\n  </tr>\n</table>\n\n<p align=\"center\">\n  <a href=\"#quick-start\">Quick Start</a> •\n  <a href=\"#how-it-works\">How It Works</a> •\n  <a href=\"#mcp-search-tools\">Search Tools</a> •\n  <a href=\"#documentation\">Documentation</a> •\n  <a href=\"#configuration\">Configuration</a> •\n  <a href=\"#troubleshooting\">Troubleshooting</a> •\n  <a href=\"#license\">License</a>\n</p>\n\n<p align=\"center\">\n  Claude-Mem seamlessly preserves context across sessions by automatically capturing tool usage observations, generating semantic summaries, and making them available to future sessions. This enables Claude to maintain continuity of knowledge about projects even after sessions end or reconnect.\n</p>\n\n---\n\n## Quick Start\n\nInstall with a single command:\n\n```bash\nnpx claude-mem install\n```\n\nOr install for Gemini CLI (auto-detects `~/.gemini`):\n\n```bash\nnpx claude-mem install --ide gemini-cli\n```\nOr install for OpenCode:\n\n```bash\nnpx claude-mem install --ide opencode\n```\n\nOr install from the plugin marketplace inside Claude Code:\n\n```bash\n/plugin marketplace add thedotmack/claude-mem\n\n/plugin install claude-mem\n```\n\nRestart Claude Code or Gemini CLI. Context from previous sessions will automatically appear in new sessions.\n\n> **Note:** Claude-Mem is also published on npm, but `npm install -g claude-mem` installs the **SDK/library only** — it does not register the plugin hooks or set up the worker service. Always install via `npx claude-mem install` or the `/plugin` commands above.\n\n### 🦞 OpenClaw Gateway\n\nInstall claude-mem as a persistent memory plugin on [OpenClaw](https://openclaw.ai) gateways with a single command:\n\n```bash\ncurl -fsSL https://install.cmem.ai/openclaw.sh | bash\n```\n\nThe installer handles dependencies, plugin setup, AI provider configuration, worker startup, and optional real-time observation feeds to Telegram, Discord, Slack, and more. See the [OpenClaw Integration Guide](https://docs.claude-mem.ai/openclaw-integration) for details.\n\n**Key Features:**\n\n- 🧠 **Persistent Memory** - Context survives across sessions\n- 📊 **Progressive Disclosure** - Layered memory retrieval with token cost visibility\n- 🔍 **Skill-Based Search** - Query your project history with mem-search skill\n- 🖥️ **Web Viewer UI** - Real-time memory stream at http://localhost:37777\n- 💻 **Claude Desktop Skill** - Search memory from Claude Desktop conversations\n- 🔒 **Privacy Control** - Use `<private>` tags to exclude sensitive content from storage\n- ⚙️ **Context Configuration** - Fine-grained control over what context gets injected\n- 🤖 **Automatic Operation** - No manual intervention required\n- 🔗 **Citations** - Reference past observations with IDs (access via http://localhost:37777/api/observation/{id} or view all in the web viewer at http://localhost:37777)\n- 🧪 **Beta Channel** - Try experimental features like Endless Mode via version switching\n\n---\n\n## Documentation\n\n📚 **[View Full Documentation](https://docs.claude-mem.ai/)** - Browse on official website\n\n### Getting Started\n\n- **[Installation Guide](https://docs.claude-mem.ai/installation)** - Quick start & advanced installation\n- **[Gemini CLI Setup](https://docs.claude-mem.ai/gemini-cli/setup)** - Dedicated guide for Google's Gemini CLI integration\n- **[Usage Guide](https://docs.claude-mem.ai/usage/getting-started)** - How Claude-Mem works automatically\n- **[Search Tools](https://docs.claude-mem.ai/usage/search-tools)** - Query your project history with natural language\n- **[Beta Features](https://docs.claude-mem.ai/beta-features)** - Try experimental features like Endless Mode\n\n### Best Practices\n\n- **[Context Engineering](https://docs.claude-mem.ai/context-engineering)** - AI agent context optimization principles\n- **[Progressive Disclosure](https://docs.claude-mem.ai/progressive-disclosure)** - Philosophy behind Claude-Mem's context priming strategy\n\n### Architecture\n\n- **[Overview](https://docs.claude-mem.ai/architecture/overview)** - System components & data flow\n- **[Architecture Evolution](https://docs.claude-mem.ai/architecture-evolution)** - The journey from v3 to v5\n- **[Hooks Architecture](https://docs.claude-mem.ai/hooks-architecture)** - How Claude-Mem uses lifecycle hooks\n- **[Hooks Reference](https://docs.claude-mem.ai/architecture/hooks)** - 7 hook scripts explained\n- **[Worker Service](https://docs.claude-mem.ai/architecture/worker-service)** - HTTP API & Bun management\n- **[Database](https://docs.claude-mem.ai/architecture/database)** - SQLite schema & FTS5 search\n- **[Search Architecture](https://docs.claude-mem.ai/architecture/search-architecture)** - Hybrid search with Chroma vector database\n\n### Configuration & Development\n\n- **[Configuration](https://docs.claude-mem.ai/configuration)** - Environment variables & settings\n- **[Development](https://docs.claude-mem.ai/development)** - Building, testing, contributing\n- **[Troubleshooting](https://docs.claude-mem.ai/troubleshooting)** - Common issues & solutions\n\n---\n\n## How It Works\n\n**Core Components:**\n\n1. **5 Lifecycle Hooks** - SessionStart, UserPromptSubmit, PostToolUse, Stop, SessionEnd (6 hook scripts)\n2. **Smart Install** - Cached dependency checker (pre-hook script, not a lifecycle hook)\n3. **Worker Service** - HTTP API on port 37777 with web viewer UI and 10 search endpoints, managed by Bun\n4. **SQLite Database** - Stores sessions, observations, summaries\n5. **mem-search Skill** - Natural language queries with progressive disclosure\n6. **Chroma Vector Database** - Hybrid semantic + keyword search for intelligent context retrieval\n\nSee [Architecture Overview](https://docs.claude-mem.ai/architecture/overview) for details.\n\n---\n\n## MCP Search Tools\n\nClaude-Mem provides intelligent memory search through **4 MCP tools** following a token-efficient **3-layer workflow pattern**:\n\n**The 3-Layer Workflow:**\n\n1. **`search`** - Get compact index with IDs (~50-100 tokens/result)\n2. **`timeline`** - Get chronological context around interesting results\n3. **`get_observations`** - Fetch full details ONLY for filtered IDs (~500-1,000 tokens/result)\n\n**How It Works:**\n- Claude uses MCP tools to search your memory\n- Start with `search` to get an index of results\n- Use `timeline` to see what was happening around specific observations\n- Use `get_observations` to fetch full details for relevant IDs\n- **~10x token savings** by filtering before fetching details\n\n**Available MCP Tools:**\n\n1. **`search`** - Search memory index with full-text queries, filters by type/date/project\n2. **`timeline`** - Get chronological context around a specific observation or query\n3. **`get_observations`** - Fetch full observation details by IDs (always batch multiple IDs)\n\n**Example Usage:**\n\n```typescript\n// Step 1: Search for index\nsearch(query=\"authentication bug\", type=\"bugfix\", limit=10)\n\n// Step 2: Review index, identify relevant IDs (e.g., #123, #456)\n\n// Step 3: Fetch full details\nget_observations(ids=[123, 456])\n```\n\nSee [Search Tools Guide](https://docs.claude-mem.ai/usage/search-tools) for detailed examples.\n\n---\n\n## Beta Features\n\nClaude-Mem offers a **beta channel** with experimental features like **Endless Mode** (biomimetic memory ",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"claude-mem\",\n  \"version\": \"13.8.1\",\n  \"description\": \"Memory compression system for Claude Code - persist context across sessions\",\n  \"keywords\": [\n    \"claude\",\n    \"claude-code\",\n    \"claude-agent-sdk\",\n    \"mcp\",\n    \"plugin\",\n    \"memory\",\n    \"compression\",\n    \"knowledge-graph\",\n    \"transcript\",\n    \"typescript\",\n    \"nodejs\"\n  ],\n  \"author\": \"Alex Newman\",\n  \"license\": \"Apache-2.0\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/thedotmack/claude-mem.git\"\n  },\n  \"homepage\": \"https://github.com/thedotmack/claude-mem#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/thedotmack/claude-mem/issues\"\n  },\n  \"type\": \"module\",\n  \"bin\": {\n    \"claude-mem\": \"./dist/npx-cli/index.js\"\n  },\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"import\": \"./dist/index.js\"\n    },\n    \"./sdk\": {\n      \"types\": \"./dist/sdk/index.d.ts\",\n      \"import\": \"./dist/sdk/index.js\"\n    },\n    \"./modes/*\": \"./plugin/modes/*\"\n  },\n  \"files\": [\n    \"dist\",\n    \".agents/plugins/marketplace.json\",\n    \".codex-plugin\",\n    \"plugin/.claude-plugin\",\n    \"plugin/.codex-plugin\",\n    \"plugin/.mcp.json\",\n    \"plugin/package.json\",\n    \"plugin/bun.lock\",\n    \"plugin/hooks\",\n    \"plugin/modes\",\n    \"plugin/scripts/*.js\",\n    \"plugin/scripts/*.cjs\",\n    \"plugin/skills\",\n    \"plugin/ui\",\n    \"openclaw\"\n  ],\n  \"engines\": {\n    \"node\": \">=20.12.0\",\n    \"bun\": \">=1.0.0\"\n  },\n  \"scripts\": {\n    \"dev\": \"npm run build-and-sync\",\n    \"build\": \"node scripts/sync-plugin-manifests.js && node scripts/build-hooks.js && node scripts/gen-plugin-lockfile.cjs\",\n    \"build-and-sync\": \"npm run build && npm run sync-marketplace && (cd ~/.claude/plugins/marketplaces/thedotmack && npm run worker:restart)\",\n    \"sync-marketplace\": \"node scripts/sync-marketplace.cjs\",\n    \"sync-marketplace:force\": \"node scripts/sync-marketplace.cjs --force\",\n    \"build:binaries\": \"node scripts/build-worker-binary.js\",\n    \"build:cli-binary\": \"bun build --compile --minify ./src/services/worker-service.ts --outfile plugin/scripts/claude-mem\",\n    \"worker:logs\": \"tail -n 50 ~/.claude-mem/logs/worker-$(date +%Y-%m-%d).log\",\n    \"worker:tail\": \"tail -f 50 ~/.claude-mem/logs/worker-$(date +%Y-%m-%d).log\",\n    \"changelog:generate\": \"node scripts/generate-changelog.js\",\n    \"discord:notify\": \"node scripts/discord-release-notify.js\",\n    \"worker:start\": \"bun plugin/scripts/worker-service.cjs start\",\n    \"worker:stop\": \"bun plugin/scripts/worker-service.cjs stop\",\n    \"worker:restart\": \"bun plugin/scripts/worker-service.cjs restart\",\n    \"worker:status\": \"bun plugin/scripts/worker-service.cjs status\",\n    \"queue\": \"bun scripts/check-pending-queue.ts\",\n    \"queue:process\": \"bun scripts/check-pending-queue.ts --process\",\n    \"queue:clear:pending\": \"bun scripts/clear-pending-queue.ts --all --force\",\n    \"pr:status\": \"bun scripts/pr-babysit-status.ts\",\n    \"claude-md:regenerate\": \"bun scripts/regenerate-claude-md.ts\",\n    \"claude-md:dry-run\": \"bun scripts/regenerate-claude-md.ts --dry-run\",\n    \"strip-comments\": \"bun scripts/strip-comments.ts\",\n    \"strip-comments:check\": \"bun scripts/strip-comments.ts --check\",\n    \"strip-comments:dry-run\": \"bun scripts/strip-comments.ts --dry-run\",\n    \"translate-readme\": \"bun scripts/translate-readme/cli.ts -v -o docs/i18n README.md\",\n    \"translate:tier1\": \"npm run translate-readme -- zh zh-tw ja pt-br ko es de fr\",\n    \"translate:tier2\": \"npm run translate-readme -- he ar ru pl cs nl tr uk\",\n    \"translate:tier3\": \"npm run translate-readme -- vi id th hi bn ro sv\",\n    \"translate:tier4\": \"npm run translate-readme -- it el hu fi da no\",\n    \"translate:all\": \"npm run translate:tier1 & npm run translate:tier2 & npm run translate:tier3 & npm run translate:tier4 & wait\",\n    \"bug-report\": \"npx tsx scripts/bug-report/cli.ts\",\n    \"cursor:install\": \"bun plugin/scripts/worker-service.cjs cursor install\",\n    \"cursor:uninstall\": \"bun plugin/scripts/worker-service.cjs cursor uninstall\",\n    \"cursor:status\": \"bun plugin/scripts/worker-service.cjs cursor status\",\n    \"cursor:setup\": \"bun plugin/scripts/worker-service.cjs cursor setup\",\n    \"lint:hook-io\": \"node scripts/check-hook-io-discipline.cjs\",\n    \"lint:spawn-env\": \"node scripts/check-spawn-env-discipline.cjs\",\n    \"typecheck\": \"tsc --noEmit && tsc --noEmit -p src/ui/viewer/tsconfig.json\",\n    \"typecheck:root\": \"tsc --noEmit\",\n    \"typecheck:viewer\": \"tsc --noEmit -p src/ui/viewer/tsconfig.json\",\n    \"test\": \"bun test\",\n    \"test:sqlite\": \"bun test tests/sqlite/\",\n    \"test:agents\": \"bun test tests/worker/agents/\",\n    \"test:search\": \"bun test tests/worker/search/\",\n    \"test:context\": \"bun test tests/context/\",\n    \"test:infra\": \"bun test tests/infrastructure/\",\n    \"test:server\": \"bun test tests/server/\",\n    \"e2e:server-beta:docker\": \"bash scripts/e2e-server-beta-docker.sh\",\n    \"check:postinstall-allowlist\": \"node scripts/check-postinstall-allowlist.js\",\n    \"smoke:clean-room\": \"node scripts/smoke-clean-room.cjs\",\n    \"prepublishOnly\": \"npm run build && node ",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "rag",
      "skill",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "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": 7726,
    "forks": 475,
    "stars_this_period": 231,
    "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": 25,
      "created_at": "2026-03-27T17:54:33Z",
      "pushed_at": "2026-06-27T12:06:20Z",
      "homepage": "https://herdr.dev",
      "default_branch": "master",
      "forks": 475,
      "watchers": 19,
      "archived": false,
      "size_kb": 28289
    },
    "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": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 92
    },
    "strategic_score": 92
  },
  {
    "owner": "every-app",
    "name": "open-seo",
    "full_name": "every-app/open-seo",
    "url": "https://github.com/every-app/open-seo",
    "description": "Open source alternative to Semrush and Ahrefs",
    "language": "TypeScript",
    "total_stars": 3346,
    "forks": 368,
    "stars_this_period": 230,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "backlink-analysis",
        "google-search-console-mcp",
        "keyword-research",
        "mcp",
        "seo",
        "seo-tools",
        "site-audit"
      ],
      "license": "MIT",
      "open_issues": 17,
      "created_at": "2026-02-27T18:57:41Z",
      "pushed_at": "2026-06-26T19:20:32Z",
      "homepage": "https://openseo.so",
      "default_branch": "main",
      "forks": 368,
      "watchers": 20,
      "archived": false,
      "size_kb": 18899
    },
    "readme_content": "# OpenSEO\n\n> Open source alternative to Semrush and Ahrefs\n\nOpenSEO is an SEO tool for _the people_. If tools like Semrush or Ahrefs are too expensive or bloated, OpenSEO is a pay-as-you-go alternative that you actually control.\n\n> All-in-one SEO tool for you and your AI agent.\n\nConnect with any agent like Claude Code, OpenClaw or Hermes. We have pre-built skills, but you can build your own to tailor OpenSEO to your needs.\n\n<img width=\"1385\" height=\"794\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fd208249-44ea-4849-bb4b-5fc896aeab73\" />\n\n## Table of Contents\n\n- [Why use OpenSEO?](#why-use-openseo)\n- [Main SEO Workflows](#main-seo-workflows)\n- [OpenSEO MCP](#openseo-mcp)\n- [OpenSEO Agent Skills](#openseo-agent-skills)\n- [Roadmap](#roadmap)\n- [Community](#community)\n- [Pricing / Costs (Free + API costs)](#pricing--costs)\n- [DataForSEO API Key Setup](#dataforseo-api-key-setup)\n- [Google Search Console](#google-search-console)\n- [Self-hosting](#self-hosting)\n  - [Docker Self Hosting](#docker-self-hosting)\n  - [Cloudflare Self-Hosting](#cloudflare-self-hosting)\n- [Local Development](#local-development)\n- [Contributing](#contributing)\n- [SEO API Cost Reference](#seo-api-cost-reference)\n\n## Hosted Version\n\nIf you're not interested in self hosting, or just want to support the project, we also have a hosted version:\n\n[openseo.so](https://openseo.so)\n\n## Why use OpenSEO?\n\n- Best in class MCP and AI Skills.\n- Modern, simple UI.\n  - Focused workflows instead of a bloated, complex SEO suite.\n- No subscriptions.\n  - Bring your own DataForSEO API key and pay only for what you use.\n- Fork and vibe code your own custom tool.\n\n## Main SEO Workflows\n\n- Keyword research\n- Rank tracking\n- Competitor Insights\n- Backlinks\n- Site Audits\n- AI Visibility\n\n## Community\n\nJoin Discord to chat: [Discord](https://discord.gg/c9uGs3cFXr)\n\nFollow along for updates:\n\n- Follow on X: https://x.com/bensenescu\n- Sign up for the mailing list on our website: [openseo.so](https://openseo.so)\n\n## OpenSEO MCP\n\nOpenSEO exposes an MCP server so AI agents can use your SEO data directly.\n\nConnect Claude Code, OpenClaw, Hermes or any other agent.\n\n### Setup\n\n- Set up the app\n- Click \"AI & Agents\" in the header\n- Follow the instructions to connect to your agent\n\n## OpenSEO Agent Skills\n\nOpenSEO Agent Skills are reusable workflows for your agent\n\nThey guide your agent through SEO tasks and use the OpenSEO MCP so your agent makes better recommendations.\n\n### Available Skills\n\n- `seo-project-setup`\n- `seo-coach`\n- `keyword-research`\n- `keyword-clustering`\n- `competitive-landscape`\n- `competitor-analysis`\n- `link-prospecting`\n\n### Installation Guide\n\nRead our docs for how to install the skills:\n\nhttps://openseo.so/docs/skills/setup\n\n## Roadmap\n\nTop priorities:\n\n- Improved and Scheduled Site Audits\n- Custom Reports for Clients\n- Local SEO\n- In App AI Agent\n\nOur top priority is always refining the current product and making existing features better based on user feedback.\n\nIf something important is missing, please join the [Discord](https://discord.gg/c9uGs3cFXr) or email me at ben@openseo.so and request it.\n\n## Pricing / Costs\n\nOpenSEO is totally free to use. It works by using DataForSEO's APIs, which is a paid third-party service unaffiliated with OpenSEO.\n\nThere are two separate things:\n\n1. OpenSEO app cost: $0, you host it yourself.\n2. DataForSEO API: pay-as-you-go based on usage.\n\nFor cost estimates, see [DataForSEO API Cost Reference](#seo-api-cost-reference).\n\n## DataForSEO API Key Setup\n\nOpenSEO uses DataForSEO to fetch SEO data. You need an API key to connect OpenSEO to the service.\n\n1. Go to [DataForSEO API Access](https://app.dataforseo.com/api-access?aff=255379).\n2. Click \"Send by email\" to get set your credentials.\n3. Copy the longer crendentials labelled \"Base64\" credentials.\n4. Set this as `DATAFORSEO_API_KEY` in your environment file:\n\n- Docker self-hosting: `.env`\n- Cloudflare: Set it in the workers UI\n- Local development: `.env.local`\n\n## Google Search Console\n\nSearch Console is optional and works in self-hosted deployments using your own\nGoogle OAuth client. It takes ~10 minutes of one-time setup — see\n[`docs/SELF_HOSTING_GOOGLE_SEARCH_CONSOLE.md`](./docs/SELF_HOSTING_GOOGLE_SEARCH_CONSOLE.md).\n\n## Self-hosting\n\nOpenSEO supports two self-hosting paths:\n\n- Docker for personal use and testing (Recommended for local use).\n- Cloudflare for internet-facing self-hosting across multiple devices or for your team.\n\n_Docker_\n\nDocker is recommended for getting started. It's super easy to get up and running once you install Docker.\n\n_Cloudflare_\n\nIf you love OpenSEO and want to use it across multiple devices or with your team, you can host it on Cloudflare which we'll be a SaaS-like experience. Also, this will have automatic database backups and other nice convenience features. It's just a bit more effort to get started if you're unfamiliar with Cloudflare.\n\n## Docker Self Hosting\n\n> [!WARNING]\n> By default, the Docker version is intended for local use only. It runs in single-user mode with no authentication. For internet-facing self-hosting, use Cloudflare (free plan compatible). Or read [`docs/SELF_HOSTING_DOCKER.md`](./docs/SELF_HOSTING_DOCKER.md) before exposing to the internet.\n\nPrerequisites:\n\n- Install Docker: https://www.docker.com/products/docker-desktop/\n\nQuickstart:\n\n1. `cp .env.example .env`\n2. Set `DATAFORSEO_API_KEY` in `.env`\n3. `docker compose up -d`\n4. Open `http://localhost:<PORT>` (default `3001`)\n\nTo update to the newest published image, pull first and then restart:\n\n```sh\ndocker compose pull\ndocker compose up -d\n```\n\nFor more info, see [`docs/SELF_HOSTING_DOCKER.md`](./docs/SELF_HOSTING_DOCKER.md).\n\n## Cloudflare Self-Hosting\n\n### Deploy the Worker\n\nClicking this button opens a page to deploy OpenSEO in your Cloudflare account. If you do not have an account yet, it will take you to account creation first (OpenSEO works great on the free plan).\n\nReference these docs while deploying since the Cloudflare UI doesn't indicate what steps you need to take: [`docs/SELF_HOSTING_CLOUDFLARE.md`](./docs/SELF_HOSTING_CLOUDFLARE.md).\n\n[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/every-app/open-seo)\n\n## Local Development\n\nSee [`docs/LOCAL_DEVELOPMENT.md`](./docs/LOCAL_DEVELOPMENT.md).\n\n## Contributing\n\nContributions are very welcome.\n\n- Open an issue for bugs, UX friction, or feature requests.\n- Open a PR if you want to implement a feature directly.\n- Community-driven improvements are prioritized, and high-quality PRs are encouraged.\n\nIf you want to contribute but are unsure where to start, open an issue and describe what you want to build.\n\n## SEO API Cost Reference\n\nUse this section to estimate DataForSEO spend per request type. OpenSEO itself remains free; these are API usage costs only.\n\nAs of February 26, 2026, DataForSEO’s public docs/pricing pages say:\n\n- New accounts include **$1 free credit** to test the API.\n- The minimum top-up/payment is **$50**.\n\nThat means you can try OpenSEO for free with the starter credit, then decide if/when to top up.\n\n### Planning examples\n\n- Track 100 keywords weekly at depth 50: `~$1.20/month`\n- 100 keyword research requests at the default 150 results: `$3.50`\n- 100 keyword research requests at 500 results each: `$7.00`\n- 100 domain overviews (200 ranked keywords each): `$4.01`\n- 100 backlinks domain searches at current defaults before opening extra tabs: about `$6.34`\n- 100 backlinks page searches at current defaults before opening extra tabs: about `$4.30`\n- 100 fully explored backlinks domain searches: about `$10.94`\n- 100 fully explored backlinks page searches: about `$8.61`\n\n### Pricing sources\n\n- DataForSEO SERP API pricing: https://dataforseo.com/apis/serp-api/pricing\n- DataForSEO Keywords Data API pricing: https://dataforseo.com/pricing/dataforseo-labs/dataforseo-google-api\n- DataForSEO Backlinks pricing: https://dataforseo.com/pricing/backlinks/backlinks\n- DataForSEO Lighthouse API docs: https://docs.dataforseo.com/v3/on_page/lighthouse/overview/\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"open-seo\",\n  \"private\": true,\n  \"sideEffects\": false,\n  \"version\": \"0.0.21\",\n  \"type\": \"module\",\n  \"packageManager\": \"pnpm@10.30.1\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"dev:clear-chat\": \"rm -rf .wrangler/state/v3/do/open-seo-OnboardingChatAgent\",\n    \"dev:agents\": \"mkdir -p .logs && portless run vite dev 2>&1 | tee .logs/dev-server.log\",\n    \"dev:agents:force\": \"mkdir -p .logs && portless --force run vite dev 2>&1 | tee .logs/dev-server.log\",\n    \"build\": \"vite build && tsc --noEmit\",\n    \"lint\": \"oxlint . --type-aware\",\n    \"lint:fix\": \"oxlint . --type-aware --fix\",\n    \"preview\": \"npm run build && vite preview --port 3001\",\n    \"deploy\": \"npm run db:migrate:prod && npm run build && wrangler deploy\",\n    \"sourcemaps:upload\": \"POSTHOG_SOURCEMAPS=true npm run build && pnpm dlx @posthog/cli sourcemap inject --directory ./dist-sourcemaps && pnpm dlx @posthog/cli sourcemap upload --directory ./dist-sourcemaps\",\n    \"cf-typegen\": \"wrangler types\",\n    \"types:check\": \"tsc --noEmit\",\n    \"format:check\": \"prettier --check .\",\n    \"format:write\": \"prettier . --write\",\n    \"auth:generate\": \"pnpm dlx auth@latest generate --config ./cli-auth.ts --adapter drizzle --dialect sqlite --output ./src/db/better-auth-schema.ts\",\n    \"db:generate\": \"drizzle-kit generate\",\n    \"db:migrate:local\": \"wrangler d1 migrations apply DB --local\",\n    \"db:migrate:prod\": \"wrangler d1 migrations apply DB --remote\",\n    \"knip\": \"knip\",\n    \"release:notes\": \"node scripts/release-notes.mjs\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:ci\": \"vitest run --reporter=dot\",\n    \"test:e2e\": \"playwright test\",\n    \"test:e2e:domain\": \"playwright test e2e/domain-overview-filters.spec.ts\",\n    \"test:e2e:domain:perf\": \"playwright test e2e/domain-overview-filters.perf.spec.ts\",\n    \"test:e2e:keywords\": \"playwright test e2e/keyword-research-navigation.spec.ts\",\n    \"billing:backlinks\": \"tsx scripts/backlinks-cost-profile.ts\",\n    \"billing:brand-lookup\": \"tsx scripts/brand-lookup-cost-profile.ts\",\n    \"cleanup:default-projects:d1\": \"tsx scripts/d1-default-project-cleanup.ts\",\n    \"seed:rank-tracking\": \"tsx scripts/seed-rank-tracking.ts\",\n    \"ci:check\": \"prettier --check . && knip && tsc --noEmit && oxlint . --type-aware\"\n  },\n  \"cloudflare\": {\n    \"bindings\": {\n      \"AUTH_MODE\": {\n        \"description\": \"Set to `cloudflare_access` for secured deployments behind Cloudflare Access, or `local_noauth` for trusted local self-host mode only.\"\n      },\n      \"TEAM_DOMAIN\": {\n        \"description\": \"Cloudflare Access team domain (for example `https://your-team.cloudflareaccess.com`) used to validate `cf-access-jwt-assertion` JWTs.\"\n      },\n      \"POLICY_AUD\": {\n        \"description\": \"Cloudflare Access Application Audience (AUD) tag for this Worker route/domain.\"\n      },\n      \"DATAFORSEO_API_KEY\": {\n        \"description\": \"Base64-encoded `login:password` for DataForSEO API access.\"\n      },\n      \"OAUTH_KV\": {\n        \"description\": \"KV namespace used by the Cloudflare Workers OAuth provider for MCP client registrations, grants, and tokens.\"\n      }\n    }\n  },\n  \"dependencies\": {\n    \"@ai-sdk/react\": \"^3.0.201\",\n    \"@cloudflare/ai-chat\": \"^0.8.4\",\n    \"@cloudflare/workers-oauth-provider\": \"^0.4.0\",\n    \"@every-app/sdk\": \"^0.1.14\",\n    \"@modelcontextprotocol/sdk\": \"1.29.0\",\n    \"@openrouter/ai-sdk-provider\": \"^2.9.0\",\n    \"@tanstack/query-core\": \"^5.90.9\",\n    \"@tanstack/react-form\": \"^1.25.0\",\n    \"@tanstack/react-query\": \"^5.90.9\",\n    \"@tanstack/react-router\": \"^1.168.10\",\n    \"@tanstack/react-router-devtools\": \"^1.166.11\",\n    \"@tanstack/react-start\": \"^1.167.16\",\n    \"@tanstack/react-table\": \"^8.21.3\",\n    \"agents\": \"0.15.0\",\n    \"ai\": \"^6.0.199\",\n    \"autumn-js\": \"^1.1.7\",\n    \"better-auth\": \"^1.5.5\",\n    \"cheerio\": \"^1.2.0\",\n    \"cloudflare\": \"^5.2.0\",\n    \"daisyui\": \"^5.5.5\",\n    \"dataforseo-client\": \"^2.0.19\",\n    \"drizzle-orm\": \"^0.44.4\",\n    \"fast-xml-parser\": \"^5.4.1\",\n    \"jose\": \"^6.0.12\",\n    \"lucide-react\": \"^0.542.0\",\n    \"papaparse\": \"^5.5.3\",\n    \"posthog-js\": \"^1.363.5\",\n    \"posthog-node\": \"^5.28.5\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\",\n    \"react-markdown\": \"^10.1.0\",\n    \"recharts\": \"^3.7.0\",\n    \"remark-gfm\": \"^4.0.1\",\n    \"remeda\": \"^2.33.6\",\n    \"robots-parser\": \"^3.0.1\",\n    \"sonner\": \"^2.0.7\",\n    \"tailwindcss\": \"^4.1.16\",\n    \"tldts\": \"^7.0.25\",\n    \"zod\": \"^4.1.12\"\n  },\n  \"devDependencies\": {\n    \"@cloudflare/vite-plugin\": \"^1.40.2\",\n    \"@cloudflare/workers-types\": \"^4.20260611.1\",\n    \"@libsql/client\": \"^0.15.15\",\n    \"@playwright/test\": \"^1.59.1\",\n    \"@tailwindcss/vite\": \"^4.1.11\",\n    \"@tanstack/devtools-vite\": \"^0.6.0\",\n    \"@tanstack/react-devtools\": \"^0.10.1\",\n    \"@types/node\": \"^22.18.13\",\n    \"@types/papaparse\": \"^5.5.2\",\n    \"@types/react\": \"^19.0.8\",\n    \"@types/react-dom\": \"^19.0.3\",\n    \"@vitejs/plugin-react\": \"^4.6.0\",\n    \"drizzle-kit\": \"^0.31.4\",\n    \"knip\": \"^5.66.4\",\n    \"oxlint\": \"^1.50.0\",\n    \"oxlint-tsgolint\": \"^0.15.0\",\n    \"portless\": \"^0.5.2\",\n    \"pr",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "santifer",
    "name": "career-ops",
    "full_name": "santifer/career-ops",
    "url": "https://github.com/santifer/career-ops",
    "description": "AI-powered job search system built on Claude Code. 14 skill modes, Go dashboard, PDF generation, batch processing.",
    "language": "JavaScript",
    "total_stars": 56167,
    "forks": 11082,
    "stars_this_period": 217,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai-agent",
        "anthropic",
        "automation",
        "beginner-friendly",
        "career",
        "careerops",
        "claude",
        "claude-code",
        "cli",
        "first-timers-only",
        "golang",
        "good-first-issue",
        "interview-prep",
        "job-search",
        "open-source",
        "resume"
      ],
      "license": "MIT",
      "open_issues": 134,
      "created_at": "2026-04-04T18:21:18Z",
      "pushed_at": "2026-06-26T21:52:30Z",
      "homepage": "https://career-ops.org",
      "default_branch": "main",
      "forks": 11082,
      "watchers": 208,
      "archived": false,
      "size_kb": 31516
    },
    "readme_content": "# Career-Ops\n\n[English](README.md) | [Español](README.es.md) | [Français](README.fr.md) | [Português (Brasil)](README.pt-BR.md) | [한국어](README.ko-KR.md) | [日本語](README.ja.md) | [简体中文](README.cn.md) | [繁體中文](README.zh-TW.md) | [Українська](README.ua.md) | [Русский](README.ru.md) | [Polski](README.pl.md) | [Dansk](README.da.md) | [العربية](README.ar.md)\n\n<p align=\"center\">\n  <a href=\"https://x.com/santifer\"><img src=\"docs/hero-banner.jpg\" alt=\"Career-Ops Multi-Agent Job Search System\" width=\"800\"></a>\n</p>\n\n<p align=\"center\">\n  <em>I spent months applying to jobs the hard way. So I engineered the system I wish I had.</em><br>\n  Companies use AI to filter candidates. <strong>I just gave candidates AI to <em>choose</em> companies.</strong><br>\n  <em>Now it's open source.</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/25195\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"https://trendshift.io/api/badge/repositories/25195\" alt=\"santifer%2Fcareer-ops | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.producthunt.com/products/santifer-io?utm_source=badge-featured&utm_medium=badge\" target=\"_blank\" rel=\"noopener noreferrer\"><img src=\"docs/press/producthunt.svg\" alt=\"Career-Ops on Claude | Product Hunt\" style=\"width: 206px; height: 54px; vertical-align: middle;\" width=\"206\" height=\"54\"/></a>\n</p>\n\n<p align=\"center\"><sub>FEATURED IN</sub></p>\n\n<p align=\"center\">\n  <a href=\"https://wired.com.gr/article/to-ai-ergaleio-pou-fernei-epanastasi-ston-tropo-pou-psachnoume-douleia/\" rel=\"noopener noreferrer nofollow\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/press/wired-dark.svg\"><img src=\"docs/press/wired.svg\" alt=\"WIRED\" height=\"32\"></picture></a>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n  <a href=\"https://www.businessinsider.com/how-i-built-tool-filter-job-listings-landed-head-ai-2026-4\" rel=\"noopener noreferrer nofollow\"><picture><source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/press/business-insider-dark.svg\"><img src=\"docs/press/business-insider.svg\" alt=\"Business Insider\" height=\"32\"></picture></a>\n</p>\n\n---\n\n<p align=\"center\">\n  <img src=\"docs/demo.gif\" alt=\"Career-Ops Demo\" width=\"800\">\n</p>\n\n<p align=\"center\"><strong>740+ job listings evaluated · 100+ personalized CVs · 1 dream role landed</strong></p>\n\n<p align=\"center\">\n  <a href=\"https://warpchart.dev/hq\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://warpchart.dev/api/chart?theme=dark&v=3\">\n      <img alt=\"Live star telemetry of santifer/career-ops\" src=\"https://warpchart.dev/api/chart?theme=light&v=3\" loading=\"lazy\">\n    </picture>\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://discord.gg/8pRpHETxa4\"><img src=\"https://img.shields.io/badge/Join_the_community-Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white\" alt=\"Discord\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/santifer/career-ops/releases/latest\"><img src=\"https://img.shields.io/npm/v/%40santifer%2Fcareer-ops?style=for-the-badge&labelColor=2b3137&color=2ea44f&label=release\" alt=\"Latest release\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://claude.com/claude-code\"><img src=\"https://img.shields.io/badge/Built_with-Claude_Code-000?style=for-the-badge&logo=anthropic&logoColor=white\" alt=\"Built with Claude Code\"></a>\n</p>\n\n<p align=\"center\">\n  <sub>Also runs on any agent-skill-standard CLI</sub><br>\n  <img src=\"https://img.shields.io/badge/Claude_Code-000?style=flat&logo=anthropic&logoColor=white\" alt=\"Claude Code\">\n  <img src=\"https://img.shields.io/badge/OpenCode-111827?style=flat&logo=terminal&logoColor=white\" alt=\"OpenCode\">\n  <img src=\"https://img.shields.io/badge/Antigravity_CLI-4285F4?style=flat&logo=google&logoColor=white\" alt=\"Antigravity CLI\">\n  <img src=\"https://img.shields.io/badge/Codex-412991?style=flat&logo=openai&logoColor=white\" alt=\"Codex\">\n  <img src=\"https://img.shields.io/badge/Qwen-615CED?style=flat\" alt=\"Qwen\">\n  <img src=\"https://img.shields.io/badge/GitHub_Copilot-000?style=flat&logo=githubcopilot&logoColor=white\" alt=\"GitHub Copilot\">\n  <img src=\"https://img.shields.io/badge/Grok_Build_CLI-000?style=flat&logo=x&logoColor=white\" alt=\"Grok Build CLI\">\n  <br>\n  <img src=\"https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white\" alt=\"Node.js\">\n  <img src=\"https://img.shields.io/badge/Go-00ADD8?style=flat&logo=go&logoColor=white\" alt=\"Go\">\n  <img src=\"https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white\" alt=\"Playwright\">\n  <img src=\"https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&logo=go&logoColor=white\" alt=\"Bubble Tea\">\n  <img src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"MIT\">\n  <a href=\"TRADEMARK.md\"><img src=\"https://img.shields.io/badge/Trademark-Policy-blue.svg\" alt=\"Trademark Policy\"></a>\n</p>\n\n## What Is This\n\nCareer-Ops ([career-ops.org](https://career-ops.org), also known as **careerops**) turns any AI coding CLI into a full job search command center. Instead of manually tracking applications in a spreadsheet, you get an AI-powered pipeline that:\n\n- **Evaluates offers** with a structured A-F scoring system (10 weighted dimensions)\n- **Generates tailored PDFs** -- ATS-optimized CVs customized per job description\n- **Scans portals** automatically (Greenhouse, Ashby, Lever, company pages)\n- **Processes in batch** -- evaluate 10+ offers in parallel with sub-agents\n- **Tracks everything** in a single source of truth with integrity checks\n\n> **Important: This is NOT a spray-and-pray tool.** Career-ops is a filter -- it helps you find the few offers worth your time out of hundreds. The system strongly recommends against applying to anything scoring below 4.0/5. Your time is valuable, and so is the recruiter's. Always review before submitting.\n\nCareer-ops is agentic: whichever AI coding CLI you choose navigates career pages with Playwright, evaluates fit by reasoning about your CV vs the job description (not keyword matching), and adapts your resume per listing.\n\n> **Heads up: the first evaluations won't be great.** The system doesn't know you yet. Feed it context -- your CV, your career story, your proof points, your preferences, what you're good at, what you want to avoid. The more you nurture it, the better it gets. Think of it as onboarding a new recruiter: the first week they need to learn about you, then they become invaluable.\n\nBuilt by someone who used it to evaluate 740+ job offers, generate 100+ tailored CVs, and land a Head of Applied AI role. [Read the full case study](https://santifer.io/career-ops-system).\n\n## Features\n\n| Feature                  | Description                                                                                                                              |\n| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |\n| **Auto-Pipeline**        | Paste a URL, get a full evaluation + PDF + tracker entry                                                                                 |\n| **6-Block Evaluation**   | Role summary, CV match, level strategy, comp research, personalization, interview prep (STAR+R) -- plus a Block G posting-legitimacy check that flags scams and ghost jobs |\n| **Interview Story Bank** | Accumulates STAR+Reflection stories across evaluations -- 5-10 master stories that answer any behavioral question                        |\n| **Negotiation Scripts**  | Salary negotiation frameworks, geographic discount pushback, competing offer leverage                                                    |\n| **ATS PDF Generation**   | Keyword-injected CVs with Space Grotesk + DM Sans design                                                                                 |\n| **Cover Letter Generator** | Research-backed cover letters with keyword mirroring, four interactive angle prompts (why/problems/approach/tone), draft-in-chat approval gate, and A4 PDF via the same HTML + Playwright pipeline as CVs. Auto-drafts on every evaluation; complete and generate on demand via `/career-ops cover` |\n| **Portal Scanner**       | 45+ companies pre-configured (Anthropic, OpenAI, ElevenLabs, Retool, n8n...) + custom queries across Ashby, Greenhouse, Lever, Wellfound |\n| **Batch Processing**     | Parallel evaluation with headless CLI workers (`claude -p` / `opencode run`)                                                             |\n| **Dashboard TUI**        | Terminal UI to browse, filter, and sort your pipeline                                                                                    |\n| **Human-in-the-Loop**    | AI evaluates and recommends, you decide and act. The system never submits an application -- you always have the final call               |\n| **Pipeline Integrity**   | Automated merge, dedup, status normalization, health checks                                                                              |\n\n## Quick Start\n\n**Fastest way — one command:**\n\n```bash\nnpx @santifer/career-ops init\n```\n\n> 💡 `npx` ships with [Node.js](https://nodejs.org) — it runs the installer once,\n> without installing anything globally. No Node yet? Install it first.\n> (Already using a Claude Code / Gemini / Codex CLI? Then you already have it.)\n\nThis clones the latest release into `./career-ops` and installs dependencies. Then:\n\n```bash\ncd career-ops\nclaude   # or gemini / codex / qwen / opencode / agy / grok — open your AI CLI here\n```\n\n**On first launch, career-ops walks you through setup — your CV, profile and target roles — just by chatting. Nothing to edit by hand.**\n\n<details>\n<summary><b>Prefer to set it up manually? (git clone)</b></summary>\n\n```bash\ngit clone https://github.com/santifer/career-ops.git\ncd career-ops && npm install\nnpx playwright install chromium   # only needed for PDF generation\n\n# 2. Check setup\nnpm run doctor                     # Validates all prerequisites\n\n# 3. Configure\ncp config/profile.example.yml config/profile.yml  # Edit with your details\ncp templates/portals.example.yml portals.yml       # Customize companies\n\n# 4. Add your CV\n# Create cv.md in the project root with your CV in markdown\n\n# 5. Personalize\nclaude   # Open Claude Code in this directory\nopencode # Or use OpenCode\n\n# Then ask your CLI to adapt the system to you:\n# \"Change the archetypes to backend engineering roles\"\n# \"Translate the modes to English\"\n# \"Add these 5 companies to portals.yml\"\n# \"Update my profile with this CV I'm pasting\"\n\n# 6. Start using\n# Paste a job URL or run /career-ops\n```\n\n</details>\n\n> **The system is designed to be customized by your AI coding CLI itself.** Modes, archetypes, scoring weights, negotiation scripts -- just ask it to change them. It reads the same files it uses, so it knows exactly what to edit.\n\nSee [docs/SETUP.md](docs/SETUP.md) for the full setup guide, and [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md) for instructions on running career-ops cheaply using custom or local models.\n\n## Antigravity CLI Integration\n\nCareer-ops supports Antigravity CLI natively, the same way it supports Claude Code and OpenCode. All slash commands are available through the shared skill entrypoint, using the same `modes/*.md` evaluation logic.\n\nGoogle has transitioned consumer Gemini CLI access to Antigravity CLI. `GEMINI.md` is now a no-op compatibility guard so Antigravity does not duplicate the full project instructions when it reads both `AGENTS.md` and `GEMINI.md`.\n\n### Native Antigravity CLI\n\n```bash\n# 1. Run in the career-ops directory\ncd career-ops\nagy\n\n# 2. Use the unified /career-ops command with subcommands:\n/career-ops \"Senior AI Engineer at Anthropic...\"\n/career-ops pipeline\n/career-ops scan\n/career-ops pdf\n/career-ops tracker\n```\n\nThe skill is defined using the open standard in `.agents/skills/career-ops/SKILL.md` and symlinked/referenced for each supported CLI (e.g. `.claude/`, `.qwen",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"career-ops\",\n  \"version\": \"1.13.0\",\n  \"description\": \"AI-powered job search pipeline — works with any AI coding CLI (Claude Code, OpenCode, Gemini, Codex, Qwen)\",\n  \"private\": true,\n  \"scripts\": {\n    \"doctor\": \"node doctor.mjs\",\n    \"verify\": \"node verify-pipeline.mjs\",\n    \"normalize\": \"node normalize-statuses.mjs\",\n    \"dedup\": \"node dedup-tracker.mjs\",\n    \"merge\": \"node merge-tracker.mjs\",\n    \"reconcile\": \"node reconcile-pipeline.mjs\",\n    \"pdf\": \"node generate-pdf.mjs\",\n    \"sync-check\": \"node cv-sync-check.mjs\",\n    \"update:check\": \"node update-system.mjs check\",\n    \"update:test\": \"node updater-migration-tests.mjs\",\n    \"update\": \"node update-system.mjs apply\",\n    \"rollback\": \"node update-system.mjs rollback\",\n    \"liveness\": \"node check-liveness.mjs\",\n    \"scan\": \"node scan.mjs\",\n    \"scan:full\": \"node scan-ats-full.mjs\",\n    \"validate:portals\": \"node validate-portals.mjs\",\n    \"verify:portals\": \"node verify-portals.mjs\",\n    \"tracker\": \"node tracker.mjs\",\n    \"patterns\": \"node analyze-patterns.mjs\",\n    \"gemini:eval\": \"node gemini-eval.mjs\",\n    \"ollama:eval\": \"node ollama-eval.mjs\",\n    \"star\": \"node match-star.mjs\",\n    \"archive\": \"node archive-posting.mjs\",\n    \"postinstall\": \"npx playwright install chromium --with-deps || npx playwright install chromium --with-deps\"\n  },\n  \"keywords\": [\n    \"ai\",\n    \"job-search\",\n    \"claude-code\",\n    \"opencode\",\n    \"career\",\n    \"career-ops\",\n    \"careerops\",\n    \"automation\"\n  ],\n  \"author\": \"Santiago Fernández de Valderrama <hi@santifer.io> (https://santifer.io)\",\n  \"homepage\": \"https://santifer.io\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/santifer/career-ops\"\n  },\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@google/generative-ai\": \"^0.24.1\",\n    \"dotenv\": \"^17.0.0\",\n    \"js-yaml\": \"^4.1.1\",\n    \"playwright\": \"1.61.0\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "skill",
      "eval",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "browser-use",
    "name": "video-use",
    "full_name": "browser-use/video-use",
    "url": "https://github.com/browser-use/video-use",
    "description": "Edit videos with coding agents",
    "language": "Python",
    "total_stars": 10479,
    "forks": 1497,
    "stars_this_period": 216,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 43,
      "created_at": "2026-04-12T01:34:42Z",
      "pushed_at": "2026-05-15T06:39:02Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 1497,
      "watchers": 60,
      "archived": false,
      "size_kb": 559
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"static/video-use-banner.png\" alt=\"video-use\" width=\"100%\">\n</p>\n\n# video-use\n\nIntroducing **video-use** — edit videos with Claude Code. 100% open source.\n\nDrop raw footage in a folder, chat with Claude Code, get `final.mp4` back. Works for any content — talking heads, montages, tutorials, travel, interviews — without presets or menus.\n\n## What it does\n\n- **Cuts out filler words** (`umm`, `uh`, false starts) and dead space between takes\n- **Auto color grades** every segment (warm cinematic, neutral punch, or any custom ffmpeg chain)\n- **30ms audio fades** at every cut so you never hear a pop\n- **Burns subtitles** in your style — 2-word UPPERCASE chunks by default, fully customizable\n- **Generates animation overlays** via [HyperFrames](https://github.com/heygen-com/hyperframes), [Remotion](https://www.remotion.dev/), [Manim](https://www.manim.community/), or PIL — spawned in parallel sub-agents, one per animation\n- **Self-evaluates the rendered output** at every cut boundary before showing you anything\n- **Persists session memory** in `project.md` so next week's session picks up where you left off\n\n## Setup prompt\n\nPaste into Claude Code, Codex, Hermes, Openclaw, or any agent with shell access:\n\n```text\nSet up https://github.com/browser-use/video-use for me.\n\nRead install.md first to install this repo, wire up ffmpeg, register the skill with whichever agent you're running under, and set up the ElevenLabs API key — ask me to paste it when you need it. Then read SKILL.md for daily usage, and always read helpers/ because that's where the editing scripts live. After install, don't transcribe anything on your own — just tell me it's ready and wait for me to drop footage into a folder.\n```\n\nThe agent handles the clone, dependencies, skill registration, and prompts you once for your ElevenLabs API key (grab one at [elevenlabs.io/app/settings/api-keys](https://elevenlabs.io/app/settings/api-keys)).\n\nThen point your agent at a folder of raw takes:\n\n```bash\ncd /path/to/your/videos\nclaude    # or codex, hermes, etc.\n```\n\nFor always-on editing from your own VPS or Telegram, run the agent through [Browser Use Box](https://browser-use.com/bux). [Watch the 15-second demo](https://www.tiktok.com/@browser_use/video/7639824093721758989).\n\nAnd in the session:\n\n> edit these into a launch video\n\nIt inventories the sources, proposes a strategy, waits for your OK, then produces `edit/final.mp4` next to your sources. All outputs live in `<videos_dir>/edit/` — the skill directory stays clean.\n\n## Manual install\n\nIf you'd rather do it by hand:\n\n```bash\n# 1. Clone and symlink into your agent's skills directory\ngit clone https://github.com/browser-use/video-use ~/Developer/video-use\nln -sfn ~/Developer/video-use ~/.claude/skills/video-use        # Claude Code\n# ln -sfn ~/Developer/video-use ~/.codex/skills/video-use       # Codex\n\n# 2. Install deps\ncd ~/Developer/video-use\nuv sync                         # or: pip install -e .\nbrew install ffmpeg             # required\nbrew install yt-dlp             # optional, for downloading online sources\n\n# 3. Add your ElevenLabs API key\ncp .env.example .env\n$EDITOR .env                    # ELEVENLABS_API_KEY=...\n```\n\n## How it works\n\nThe LLM never watches the video. It **reads** it — through two layers that together give it everything it needs to cut with word-boundary precision.\n\n<p align=\"center\">\n  <img src=\"static/timeline-view.svg\" alt=\"timeline_view composite — filmstrip + speaker track + waveform + word labels + silence-gap cut candidates\" width=\"100%\">\n</p>\n\n**Layer 1 — Audio transcript (always loaded).** One ElevenLabs Scribe call per source gives word-level timestamps, speaker diarization, and audio events (`(laughter)`, `(applause)`, `(sigh)`). All takes pack into a single ~12KB `takes_packed.md` — the LLM's primary reading view.\n\n```\n## C0103  (duration: 43.0s, 8 phrases)\n  [002.52-005.36] S0 Ninety percent of what a web agent does is completely wasted.\n  [006.08-006.74] S0 We fixed this.\n```\n\n**Layer 2 — Visual composite (on demand).** `timeline_view` produces a filmstrip + waveform + word labels PNG for any time range. Called only at decision points — ambiguous pauses, retake comparisons, cut-point sanity checks.\n\n> Naive approach: 30,000 frames × 1,500 tokens = **45M tokens of noise**.\n> Video Use: **12KB text + a handful of PNGs**.\n\nSame idea as browser-use giving an LLM a structured DOM instead of a screenshot — but for video.\n\n## Pipeline\n\n```\nTranscribe ──> Pack ──> LLM Reasons ──> EDL ──> Render ──> Self-Eval\n                                                              │\n                                                              └─ issue? fix + re-render (max 3)\n```\n\nThe self-eval loop runs `timeline_view` on the _rendered output_ at every cut boundary — catches visual jumps, audio pops, hidden subtitles. You see the preview only after it passes.\n\n## Design principles\n\n1. **Text + on-demand visuals.** No frame-dumping. The transcript is the surface.\n2. **Audio is primary, visuals follow.** Cuts come from speech boundaries and silence gaps.\n3. **Ask → confirm → execute → self-eval → persist.** Never touch the cut without strategy approval.\n4. **Zero assumptions about content type.** Look, ask, then edit.\n5. **12 hard rules, artistic freedom elsewhere.** Production-correctness is non-negotiable. Taste isn't.\n\nSee [`SKILL.md`](./SKILL.md) for the full production rules and editing craft.\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"video-use\"\nversion = \"0.1.0\"\ndescription = \"Conversation-driven video editor skill for Claude Code\"\nlicense = { file = \"LICENSE\" }\nrequires-python = \">=3.10\"\ndependencies = [\n    \"requests\",\n    \"librosa\",\n    \"matplotlib\",\n    \"pillow\",\n    \"numpy\",\n]\n\n[project.optional-dependencies]\nanimations = [\"manim\"]\n\n[build-system]\nrequires = [\"setuptools>=61.0\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[tool.setuptools]\npy-modules = []\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "skill",
      "llm",
      "eval"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "MemPalace",
    "name": "mempalace",
    "full_name": "MemPalace/mempalace",
    "url": "https://github.com/MemPalace/mempalace",
    "description": "The best-benchmarked open-source AI memory system. And it's free.",
    "language": "Python",
    "total_stars": 56644,
    "forks": 7322,
    "stars_this_period": 200,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "ai",
        "chromadb",
        "llm",
        "mcp",
        "memory",
        "python"
      ],
      "license": "MIT",
      "open_issues": 572,
      "created_at": "2026-04-05T01:12:07Z",
      "pushed_at": "2026-06-26T07:53:47Z",
      "homepage": "http://mempalaceofficial.com/",
      "default_branch": "develop",
      "forks": 7322,
      "watchers": 324,
      "archived": false,
      "size_kb": 21844
    },
    "readme_content": "<div align=\"center\">\n\n<img src=\"assets/mempalace_logo.png\" alt=\"MemPalace\" width=\"240\">\n\n# MemPalace\n\nLocal-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.\n\n[![][version-shield]][release-link]\n[![][python-shield]][python-link]\n[![][license-shield]][license-link]\n[![][discord-shield]][discord-link]\n\n</div>\n\n> [!CAUTION]\n> **Beware of impostor sites.** MemPalace has no other official websites. The **only** official sources are this **[GitHub repository](https://github.com/MemPalace/mempalace)**, the **[PyPI package](https://pypi.org/project/mempalace/)**, and the docs at **[mempalaceofficial.com](https://mempalaceofficial.com)**. Any other domain (including `.tech`, `.net`, or other `.com` variants) is an impostor and may distribute malware. Details and timeline: [docs/HISTORY.md](docs/HISTORY.md).\n\n> [!IMPORTANT]\n> **Claude Code sessions expire in 30 days without auto-save hooks wired.** [Read this →](https://github.com/MemPalace/mempalace/discussions/1388)\n>\n> Need the shortest recovery/setup path? Use the [Claude Code retention setup checklist](https://mempalaceofficial.com/guide/claude-code-retention.html).\n\n---\n\n## What it is\n\nMemPalace stores your conversation history as verbatim text and retrieves\nit with semantic search. It does not summarize, extract, or paraphrase.\nThe index is structured — people and projects become *wings*, topics\nbecome *rooms*, and original content lives in *drawers* — so searches\ncan be scoped rather than run against a flat corpus.\n\nThe retrieval layer is pluggable. The current default is ChromaDB; the\ninterface is defined in [`mempalace/backends/base.py`](mempalace/backends/base.py)\nand alternative backends can be dropped in without touching the rest of\nthe system.\n\nNothing leaves your machine unless you opt in.\n\nArchitecture, concepts, and mining flows:\n[mempalaceofficial.com/concepts/the-palace](https://mempalaceofficial.com/concepts/the-palace.html).\n\n---\n\n## Install\n\nMemPalace ships a CLI, so install it in an isolated environment to avoid\nPEP 668 errors on Debian/Ubuntu/Homebrew Pythons and to keep mempalace's\ndeps (`chromadb`, `numpy`, `grpcio`, …) from conflicting with anything\nelse in your global site-packages.\n\nWe recommend [`uv`](https://docs.astral.sh/uv/) — `uv tool install` puts\nthe `mempalace` CLI in an isolated environment on your PATH:\n\n```bash\nuv tool install mempalace\nmempalace init ~/projects/myapp\n```\n\n[`pipx`](https://pipx.pypa.io/) works the same way if you prefer it:\n`pipx install mempalace`.\n\nPrefer plain `pip` only inside an activated virtualenv where you\nexplicitly want `import mempalace` available:\n\n```bash\npython -m venv .venv && source .venv/bin/activate\npip install mempalace\n```\n\n### Docker\n\nA container image is also available for running the MCP server or the CLI\nwithout a local Python toolchain. Everything persists under `/data` (palace,\nconfig, and the cached embedding model), so mount a volume there.\n\n```bash\n# Build the image (CPU; bundles the `extract` + `spellcheck` extras)\ndocker build -t mempalace .\n\n# MCP server over stdio — note the `-i` flag (JSON-RPC needs stdin)\ndocker run -i --rm -v mempalace-data:/data mempalace\n\n# Run any CLI command instead (mount the host directory you want to mine)\ndocker run --rm -v mempalace-data:/data -v /path/to/project:/work mempalace mine /work\ndocker run --rm -v mempalace-data:/data mempalace search \"why GraphQL\"\n```\n\nWire it into an MCP client (e.g. Claude Code) as a stdio server:\n\n```json\n{\n  \"mcpServers\": {\n    \"mempalace\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"-v\", \"mempalace-data:/data\", \"mempalace\"]\n    }\n  }\n}\n```\n\n`docker compose run --rm mcp` works too (see `docker-compose.yml`). For\nCUDA-accelerated embeddings, build the GPU variant with\n`docker build -f Dockerfile.gpu -t mempalace:gpu .` and run it with\n`--gpus all`. Customise the bundled extras at build time, e.g.\n`docker build --build-arg EXTRAS=\"extract,spellcheck\" -t mempalace .`.\n\n## Storage backends\n\nChromaDB is the default. For the pluggable-backend preview, MemPalace also\nships `sqlite_exact` for local exact-vector correctness checks, and two opt-in\nexternal service backends — `qdrant` (REST) and `pgvector` (Postgres). The two\nexternal backends exercise the storage contract on different substrates (a\nREST/dict store and a SQL/JSONB store), so it is not accidentally shaped around\none vendor.\n\n```bash\n# local no-service backend\nmempalace mine ~/projects/myapp --backend sqlite_exact\n\n# Qdrant backend, defaulting to http://localhost:6333\nMEMPALACE_QDRANT_URL=http://localhost:6333 \\\n  mempalace mine ~/projects/myapp --backend qdrant\n\n# Postgres + pgvector backend, defaulting to postgresql://localhost:5432/mempalace\n#   needs the optional driver: pip install mempalace[pgvector]\n#   and the `vector` extension available on the server\nMEMPALACE_PGVECTOR_DSN=postgresql://localhost:5432/mempalace \\\n  mempalace mine ~/projects/myapp --backend pgvector\n```\n\nQdrant can also be configured with `MEMPALACE_QDRANT_API_KEY`,\n`MEMPALACE_QDRANT_NAMESPACE`, and `MEMPALACE_QDRANT_TIMEOUT`; pgvector with\n`MEMPALACE_PGVECTOR_NAMESPACE`. Both external backends isolate tenants by\nnamespace (advertised via the `supports_namespace_isolation` capability) and\nwrite a local marker (`qdrant_backend.json` / `pgvector_backend.json`) to guard\nagainst silently opening a palace against the wrong server.\n\nWhen `MEMPALACE_QDRANT_URL` or `MEMPALACE_PGVECTOR_DSN` points anywhere other\nthan your own local or trusted self-hosted service, MemPalace will send and\nstore verbatim drawer text and metadata there. That is an explicit opt-in\nbackend choice, never the default.\n\n## Quickstart\n\n```bash\n# Mine content into the palace\nmempalace mine ~/projects/myapp                    # project files\nmempalace mine ~/.claude/projects/ --mode convos   # Claude Code sessions (scope with --wing per project)\n\n# Search\nmempalace search \"why did we switch to GraphQL\"\n\n# Load context for a new session\nmempalace wake-up\n```\n\nFor Claude Code, Gemini CLI, [Antigravity](https://mempalaceofficial.com/guide/antigravity.html),\nMCP-compatible tools, and local models, see\n[mempalaceofficial.com/guide/getting-started](https://mempalaceofficial.com/guide/getting-started.html).\n\n---\n\n## Benchmarks\n\nAll numbers below are reproducible from this repository with the commands\nin [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md). Full\nper-question result files are committed under `benchmarks/results_*`.\n\n**LongMemEval — retrieval recall (R@5, 500 questions):**\n\n| Mode | R@5 | LLM required |\n|---|---|---|\n| Raw (semantic search, no heuristics, no LLM) | **96.6%** | None |\n| Hybrid v4, held-out 450q (tuned on 50 dev, not seen during training) | **98.4%** | None |\n| Hybrid v4 + LLM rerank (full 500) | ≥99% | Any capable model |\n\nThe raw 96.6% requires no API key, no cloud, and no LLM at any stage. The\nhybrid pipeline adds keyword boosting, temporal-proximity boosting, and\npreference-pattern extraction; the held-out 98.4% is the honest\ngeneralisable figure.\n\nThe rerank pipeline promotes the best candidate out of the top-20\nretrieved sessions using an LLM reader. It works with any reasonably\ncapable model — we have reproduced it with Claude Haiku, Claude Sonnet,\nand minimax-m2.7 via Ollama Cloud (no Anthropic dependency). The gap\nbetween raw and reranked is model-agnostic; we do not headline a \"100%\"\nnumber because the last 0.6% was reached by inspecting specific wrong\nanswers, which `benchmarks/BENCHMARKS.md` flags as teaching to the test.\n\n**Other benchmarks (full results in [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md)):**\n\n| Benchmark | Metric | Score | Notes |\n|---|---|---|---|\n| LoCoMo (session, top-10, no rerank) | R@10 | 60.3% | 1,986 questions |\n| LoCoMo (hybrid v5, top-10, no rerank) | R@10 | 88.9% | Same set |\n| ConvoMem (all categories, 250 items) | Avg recall | 92.9% | 50 per category |\n| MemBench (ACL 2025, 8,500 items) | R@5 | 80.3% | All categories |\n\nWe deliberately do not include a side-by-side comparison against Mem0,\nMastra, Hindsight, Supermemory, or Zep. Those projects publish different\nmetrics on different splits, and placing retrieval recall next to\nend-to-end QA accuracy is not an honest comparison. See each project's\nown research page for their published numbers.\n\n**Reproducing every result:**\n\n```bash\ngit clone https://github.com/MemPalace/mempalace.git\ncd mempalace\nuv sync --extra dev   # or: pip install -e \".[dev]\"\n# see benchmarks/README.md for dataset download commands\nuv run python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json\n```\n\n---\n\n## Knowledge graph\n\nMemPalace includes a temporal entity-relationship graph with validity\nwindows — add, query, invalidate, timeline — backed by local SQLite.\nUsage and tool reference:\n[mempalaceofficial.com/concepts/knowledge-graph](https://mempalaceofficial.com/concepts/knowledge-graph.html).\n\n## MCP server\n\n35 MCP tools cover palace reads/writes, knowledge-graph operations,\ncross-wing navigation, drawer management, and agent diaries. Installation\nand the full tool list:\n[mempalaceofficial.com/reference/mcp-tools](https://mempalaceofficial.com/reference/mcp-tools.html).\n\n## Agents\n\nEach specialist agent gets its own wing and diary in the palace.\nDiscoverable at runtime via `mempalace_list_agents` — no bloat in your\nsystem prompt:\n[mempalaceofficial.com/concepts/agents](https://mempalaceofficial.com/concepts/agents.html).\n\n## Auto-save hooks\n\nAuto-save hooks for **Claude Code, Codex CLI, and Cursor IDE** save\nperiodically and before context compression:\n\n- Claude Code + Codex →\n  [mempalaceofficial.com/guide/hooks](https://mempalaceofficial.com/guide/hooks.html)\n- Cursor IDE (adds session-start recall and a transcript snapshot before\n  compaction) →\n  [mempalaceofficial.com/guide/cursor-hooks](https://mempalaceofficial.com/guide/cursor-hooks.html)\n\nIf you are installing under time pressure, start with the\n[Claude Code retention setup checklist](https://mempalaceofficial.com/guide/claude-code-retention.html):\nwire the hooks, back up existing JSONL transcripts, and backfill them with\n`mempalace mine ~/.claude/projects/ --mode convos`.\n\nFor per-message recall on top of the file-level chunks the hooks produce,\nrun `mempalace sweep <transcript-dir>` periodically — it stores one\nverbatim drawer per user/assistant message, idempotent and resume-safe.\n\n---\n\n## Requirements\n\n- Python 3.9+\n- A vector-store backend (ChromaDB by default)\n- ~300 MB disk for the embedding model. Onboarding (`python -m mempalace.onboarding`) offers `embeddinggemma-300m` (multilingual, 100+ languages, recommended) or `all-MiniLM-L6-v2` (English-only, ~30 MB). See the docstring at [`mempalace/embedding.py`](mempalace/embedding.py) for details and migration notes.\n\nNo API key is required for the core benchmark path.\n\n## Docs\n\n- Getting started → [mempalaceofficial.com/guide/getting-started](https://mempalaceofficial.com/guide/getting-started.html)\n- CLI reference → [mempalaceofficial.com/reference/cli](https://mempalaceofficial.com/reference/cli.html)\n- Python API → [mempalaceofficial.com/reference/python-api](https://mempalaceofficial.com/reference/python-api.html)\n- Full benchmark methodology → [benchmarks/BENCHMARKS.md](benchmarks/BENCHMARKS.md)\n- Release notes → [CHANGELOG.md](CHANGELOG.md)\n- Corrections and public notices → [docs/HISTORY.md](docs/HISTORY.md)\n\n## Contributing\n\nPRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n<!-- Link Definitions -->\n[version-shield]: https://img.shields.io/badge/version-3.5.0-4dc9f6?style=flat-square&labelColor=0a0e14\n[release-link]: https://github.com/MemPalace/mempalace/releases\n[python-shield]: https://img.shields.io/badge/python-3.9+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8\n[python-link]: https://www.python.org/\n[license-shield]: https://img.shields.io/badge/license-MIT-b0e8ff?style=flat-square&labelColor=0a0e14\n[licens",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"mempalace\"\nversion = \"3.5.0\"\ndescription = \"Give your AI a memory — mine projects and conversations into a searchable palace. No API key required.\"\nreadme = \"README.md\"\nrequires-python = \">=3.9\"\nlicense = \"MIT\"\nauthors = [\n    {name = \"milla-jovovich\"},\n]\nkeywords = [\n    \"ai\", \"memory\", \"llm\", \"rag\", \"chromadb\", \"mcp\",\n    \"vector-database\", \"claude\", \"chatgpt\", \"embeddings\",\n]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Environment :: Console\",\n    \"Intended Audience :: Developers\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.9\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    \"Topic :: Utilities\",\n]\ndependencies = [\n    \"chromadb>=1.5.4,<2\",\n    \"pyyaml>=6.0,<7\",\n    \"tomli>=2.0.0; python_version < '3.11'\",\n    # Multilingual embedding model deps. Onboarding now offers the\n    # embeddinggemma-300m ONNX model as the default for new installs, so\n    # these are required core deps (not optional extras). The 300 MB ONNX\n    # model itself is lazy-downloaded on first use, not at install time.\n    # Users who pick minilm during onboarding still get these installed\n    # but unused — small wheel-size cost in exchange for one fewer pip\n    # command in the multilingual setup path.\n    \"huggingface_hub>=0.20\",\n    \"tokenizers>=0.15\",\n    \"numpy>=1.24\",\n    # Tier 6a content-date extraction uses dateutil for natural-language\n    # date parsing (filename + content body branches). It happens to install\n    # transitively today via chromadb→kubernetes→python-dateutil, but that\n    # chain is not a contract — declared explicitly here to ensure\n    # _extract_content_date keeps working if upstream kubernetes drops the\n    # dependency. Per PR #1584 review (Igor, 2026-05-22).\n    \"python-dateutil>=2.8\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/MemPalace/mempalace\"\nRepository = \"https://github.com/MemPalace/mempalace\"\n\"Bug Tracker\" = \"https://github.com/MemPalace/mempalace/issues\"\n\n[project.scripts]\nmempalace = \"mempalace.cli:main\"\nmempalace-mcp = \"mempalace.mcp_server:main\"\n\n[project.entry-points.\"mempalace.backends\"]\nchroma = \"mempalace.backends.chroma:ChromaBackend\"\npgvector = \"mempalace.backends.pgvector:PgVectorBackend\"\nqdrant = \"mempalace.backends.qdrant:QdrantBackend\"\nsqlite_exact = \"mempalace.backends.sqlite_exact:SQLiteExactBackend\"\n\n# RFC 002 source-adapter entry-point group. Core publishes no first-party\n# adapters under this group yet; ``miner.py`` and ``convo_miner.py`` migrate\n# onto ``BaseSourceAdapter`` in a follow-up PR. Third-party adapter packages\n# (``mempalace-source-cursor``, ``mempalace-source-git``, …) register here.\n[project.entry-points.\"mempalace.sources\"]\n\n[project.optional-dependencies]\ndev = [\n    \"pytest>=7.0\",\n    \"pytest-cov>=4.0\",\n    # Retries known-transient ChromaDB-on-Windows HNSW compaction failures in CI\n    # (wired only into the test-windows job in ci.yml, scoped to the specific\n    # error). Local/Linux/macOS runs never rerun, so real failures stay loud.\n    \"pytest-rerunfailures>=12.0\",\n    \"ruff==0.15.18\",\n    \"psutil>=5.9\",\n    # Property-based testing — generates hundreds of random inputs per\n    # test to find counterexamples the hand-written positive tests miss.\n    # Used opt-in (sprinkle ``@given(...)`` on a test); zero runtime\n    # cost on tests that don't use it.\n    \"hypothesis>=6.0\",\n    # Pre-commit framework — gates every local ``git commit`` on the\n    # same ruff checks CI runs. Required activation step in\n    # CONTRIBUTING.md: ``pre-commit install`` once per clone. Without\n    # this, contributors silently bypass the lint gate locally and only\n    # discover failures at CI time.\n    \"pre-commit>=3.0\",\n    # mypy — static type checker. Catches lazy ``list`` / ``dict``\n    # annotations that should be ``list[str]`` / ``dict[str, int]``,\n    # missing return types, mismatched signatures across call sites.\n    # Run ad-hoc with ``mypy mempalace/``; CI doesn't gate on it yet but\n    # contributors should fix mypy errors they see before pushing.\n    \"mypy>=1.0\",\n]\nspellcheck = [\"autocorrect>=2.0\"]\n# Opt-in Postgres + pgvector backend. Only the psycopg driver is needed on the\n# client; the server must have the `vector` extension available. Selected via\n# MEMPALACE_BACKEND=pgvector / --backend pgvector; never required for the\n# default (Chroma) install.\npgvector = [\"psycopg[binary]>=3.1\"]\n# Hardware acceleration for the ONNX embedding model. Install exactly one:\n#   pip install mempalace[gpu]       — NVIDIA CUDA\n#   pip install mempalace[dml]       — DirectML (Windows AMD/Intel/NVIDIA)\n#   pip install mempalace[coreml]    — macOS Neural Engine\n# After install, set MEMPALACE_EMBEDDING_DEVICE=cuda|dml|coreml (or \"auto\").\ngpu = [\"onnxruntime-g",
    "strategic_keywords": [
      "memory",
      "mcp",
      "rag",
      "llm",
      "eval",
      "vector",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "aws",
    "name": "agent-toolkit-for-aws",
    "full_name": "aws/agent-toolkit-for-aws",
    "url": "https://github.com/aws/agent-toolkit-for-aws",
    "description": "Official, AWS-supported MCP servers, skills, and plugins to help AI agents build on AWS",
    "language": "Python",
    "total_stars": 1473,
    "forks": 127,
    "stars_this_period": 193,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 12,
      "created_at": "2026-04-23T12:44:08Z",
      "pushed_at": "2026-06-26T15:26:55Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 127,
      "watchers": 14,
      "archived": false,
      "size_kb": 1834
    },
    "readme_content": "# Agent Toolkit for AWS\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Build](https://github.com/aws/agent-toolkit-for-aws/actions/workflows/build.yml/badge.svg)](https://github.com/aws/agent-toolkit-for-aws/actions/workflows/build.yml)\n[![Status](https://img.shields.io/badge/status-GA-green.svg)](https://github.com/aws/agent-toolkit-for-aws)\n\nHelp AI coding agents build, deploy, and manage applications on AWS.\n\nThe Agent Toolkit for AWS gives AI coding agents the tools, knowledge, and guardrails they need to work with AWS services. It works with the coding agents developers already use — including Claude Code, Codex, Cursor, and Kiro.\n\n## Quick start\n\n### Claude Code\n\nThe plugins are available on the official Anthropic marketplace (`claude-plugins-official`) which is added to your Claude Code installation by default.\nUse the following commands to install supported plugins from the toolkit:\n\nFor `aws-core` that covers service selection, CDK/CloudFormation, serverless, containers, storage, observability, billing, SDK usage, and deployment:\n\n```\n/plugin install aws-core@claude-plugins-official\n```\n\n> **Tip:** If you get `Plugin not found`, update your local marketplace index first:\n>\n> ```\n> /plugin marketplace update claude-plugins-official\n> ```\n\nFor `aws-agents` that covers building AI agents on AWS with Amazon Bedrock and AgentCore:\n\n```\n/plugin install aws-agents@claude-plugins-official\n```\n\nFor `aws-data-analytics` that covers data lake, analytics, and ETL workflows with S3 Tables, AWS Glue, and Athena:\n\n```\n/plugin install aws-data-analytics@claude-plugins-official\n```\n\nFor `aws-agents-for-devsecops` used to investigate incidents, review code and execute UAT for release readiness, scan code for vulnerabilities, and run penetration tests with AWS DevOps Agent and AWS Security Agent.\n\n```\n/plugin marketplace add aws/agent-toolkit-for-aws\n/plugin install aws-agents-for-devsecops\n/reload-plugins\n\n# Or from Claude's official marketplace:\n/plugin install aws-agents-for-devsecops@claude-plugins-official\n/reload-plugins\n\n# Setup:\n/aws-agents-for-devsecops:setup\n```\n\n### Codex\n\nIn your terminal:\n\n```\ncodex plugin marketplace add aws/agent-toolkit-for-aws\n```\n\nThen launch Codex and run `/plugins` to browse and install the **aws-core** plugin.\n\n### Cursor\n\nAdd this repository as a team marketplace from **Settings → Plugins → Team Marketplaces → Add Marketplace → Import from Repo**, pointing it at `aws/agent-toolkit-for-aws`. Cursor indexes the plugins listed in [`.cursor-plugin/marketplace.json`](.cursor-plugin/marketplace.json) on import.\n\nThen open the **Plugins** panel and install the **aws-core** plugin (start here), or **aws-agents** and **aws-data-analytics** as needed. Each plugin bundles the AWS MCP Server configuration and agent skills.\n\n### Kiro\n\nAdd the AWS MCP Server to your Kiro MCP configuration (`.kiro/settings/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"aws\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"mcp-proxy-for-aws@1.6.3\",\n        \"https://aws-mcp.us-east-1.api.aws/mcp\",\n        \"--metadata\", \"AWS_REGION=us-west-2\"\n      ]\n    }\n  }\n}\n```\n\n> **Note:** It is recommended to pin to a specific version (e.g., `@1.6.3`) to ensure reproducible behavior and protect against supply chain risks. We recommend regularly checking [PyPI](https://pypi.org/project/mcp-proxy-for-aws/) for new stable versions and updating accordingly.\n\nThen install skills from this repository:\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\n> **Prerequisites:** You need [uv](https://docs.astral.sh/uv/) installed. An AWS account with credentials configured locally is required for API calls and script execution, but not for documentation search or skill discovery. See the [user guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) for detailed setup instructions.\n\n### Other agents\n\nSee the [AWS MCP Server getting started guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/getting-started-aws-mcp-server.html) for instructions on configuring the AWS MCP Server with your agent.\n\nThen install skills from this repository:\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\n> **Prerequisites:** You need [uv](https://docs.astral.sh/uv/) installed. An AWS account with credentials configured locally is required for API calls and script execution, but not for documentation search or skill discovery. See the [user guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) for detailed setup instructions.\n\n## What's included\n\n### Plugins\n\nPlugins bundle the AWS MCP Server configuration and agent skills into a single install for your coding agent.\n\n| Plugin | Description |\n|--------|-------------|\n| [aws-core](plugins/aws-core/) | Core AWS skills and MCP Server configuration. Covers service selection, CDK/CloudFormation, serverless, containers, storage, observability, billing, SDK usage, and deployment. **Start here.** |\n| [aws-agents](plugins/aws-agents/) | Skills for building AI agents on AWS with Amazon Bedrock and AgentCore. |\n| [aws-data-analytics](plugins/aws-data-analytics/) | Skills for data lake, analytics, and ETL workflows with S3 Tables, AWS Glue, and Athena. |\n| [aws-agents-for-devsecops](plugins/aws-agents-for-devsecops/) | Investigate incidents, review code and execute UAT for release readiness, scan code for vulnerabilities, and run penetration tests with [AWS DevOps Agent](https://aws.amazon.com/devops-agent/?trk=7b4b0d25-1409-441c-b914-c5d08677c376&sc_channel=ghr) and [AWS Security Agent](https://aws.amazon.com/security-agent/?trk=7b4b0d25-1409-441c-b914-c5d08677c376&sc_channel=ghr). |\n\nPlugins are currently available for Claude Code, Codex, and Cursor. For other agents, configure the AWS MCP Server directly and install skills from this repository.\n\n### Skills\n\nAgent skills are curated packages of instructions and reference materials that help agents complete specific AWS tasks. Skills are loaded on demand — agents discover and retrieve only what's relevant to the current task.\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\nBrowse the [`skills/`](skills/) directory to see all available skills.\n\n### Rules files\n\nRecommended project-level configuration files that tell agents how to use AWS most effectively — for example, by using the AWS MCP Server, discovering available skills, or searching documentation before acting.\n\nSee [`rules/`](rules/) for details.\n\n### AWS MCP Server\n\nThe [AWS MCP Server](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html) is a managed server that gives agents access to AWS through the Model Context Protocol. It provides:\n\n- **Full AWS API coverage** — Interact with any of the 300+ AWS services through a single authenticated endpoint.\n- **Sandboxed script execution** — Agents can run Python scripts in an isolated environment for complex multi-step operations.\n- **Real-time documentation access** — Search and retrieve current AWS documentation, API references, and service capabilities without authentication.\n- **Enterprise controls** — Amazon CloudWatch metrics, IAM context keys for agent-specific policies, and AWS CloudTrail audit logging.\n\nFor details on operation, available tools, authentication, and supported Regions, see the [AWS MCP Server documentation](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html).\n\n## Documentation\n\n- [User guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) — Setup, configuration, and reference documentation.\n- [AWS MCP Server tools](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html) — Reference for all available MCP tools.\n\n## How the Agent Toolkit relates to the MCP servers, skills, and plugins in AWS Labs\nIn 2025, AWS began releasing MCP servers, skills, and plugins as part of [AWS Labs](https://github.com/awslabs). The Agent Toolkit for AWS is the successor to those tools. We recommend using the Agent Toolkit for AWS, because it offers key features including:\n\n- IAM condition keys that distinguish between agent actions and human actions, so you can write policies that apply only to agents. For example, you can write policies that only allow read-only actions through the MCP server, even if the user’s underlying IAM role can take write actions).\n- CloudWatch metrics and CloudTrail audit logging for every request, so you can monitor and audit coding agent activity.\n- Agent skills that have undergone thorough end-to-end evaluations, so you can be confident that workflows will complete successfully.\n\n[AWS Labs](https://github.com/awslabs) MCP servers, skills, and plugins will continue to work and accept contributions, and over time the best of AWS Labs will be transitioned to the Agent Toolkit for AWS to ensure that customers can access the broadest array of tooling and guidance for their agents.\n\n## License\n\nThis project is licensed under the Apache-2.0 License. See [LICENSE](LICENSE) for details.\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 84
    },
    "strategic_score": 84
  },
  {
    "owner": "Fission-AI",
    "name": "OpenSpec",
    "full_name": "Fission-AI/OpenSpec",
    "url": "https://github.com/Fission-AI/OpenSpec",
    "description": "Spec-driven development (SDD) for AI coding assistants.",
    "language": "TypeScript",
    "total_stars": 57088,
    "forks": 3982,
    "stars_this_period": 167,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "context-engineering",
        "engineering",
        "planning",
        "prd",
        "sdd",
        "sdlc",
        "spec",
        "spec-driven-development",
        "specification"
      ],
      "license": "MIT",
      "open_issues": 434,
      "created_at": "2025-08-05T10:37:45Z",
      "pushed_at": "2026-06-26T13:57:16Z",
      "homepage": "https://openspec.dev/",
      "default_branch": "main",
      "forks": 3982,
      "watchers": 250,
      "archived": false,
      "size_kb": 4756
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://github.com/Fission-AI/OpenSpec\">\n    <picture>\n      <source srcset=\"assets/openspec_bg.png\">\n      <img src=\"assets/openspec_bg.png\" alt=\"OpenSpec logo\">\n    </picture>\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/Fission-AI/OpenSpec/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/Fission-AI/OpenSpec/actions/workflows/ci.yml/badge.svg\" /></a>\n  <a href=\"https://www.npmjs.com/package/@fission-ai/openspec\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@fission-ai/openspec?style=flat-square\" /></a>\n  <a href=\"./LICENSE\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square\" /></a>\n  <a href=\"https://discord.gg/YctCnvvshC\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/1411657095639601154?style=flat-square&logo=discord&logoColor=white&label=Discord&suffix=%20online\" /></a>\n</p>\n\n<details>\n<summary><strong>The most loved spec framework.</strong></summary>\n\n[![Stars](https://img.shields.io/github/stars/Fission-AI/OpenSpec?style=flat-square&label=Stars)](https://github.com/Fission-AI/OpenSpec/stargazers)\n[![Downloads](https://img.shields.io/npm/dm/@fission-ai/openspec?style=flat-square&label=Downloads/mo)](https://www.npmjs.com/package/@fission-ai/openspec)\n[![Contributors](https://img.shields.io/github/contributors/Fission-AI/OpenSpec?style=flat-square&label=Contributors)](https://github.com/Fission-AI/OpenSpec/graphs/contributors)\n\n</details>\n<p></p>\nOur philosophy:\n\n```text\n→ fluid not rigid\n→ iterative not waterfall\n→ easy not complex\n→ built for brownfield not just greenfield\n→ scalable from personal projects to enterprises\n```\n\n> [!TIP]\n> **New workflow now available!** We've rebuilt OpenSpec with a new artifact-guided workflow.\n>\n> Run `/opsx:propose \"your idea\"` to get started. → [Learn more here](docs/opsx.md)\n\n<p align=\"center\">\n  Follow <a href=\"https://x.com/0xTab\">@0xTab on X</a> for updates · Join the <a href=\"https://discord.gg/YctCnvvshC\">OpenSpec Discord</a> for help and questions.\n</p>\n\n<!-- TODO: Add GIF demo of /opsx:propose → /opsx:archive workflow -->\n\n## See it in action\n\n```text\nYou: /opsx:explore\nAI:  What would you like to explore?\nYou: I want dark mode but I'm not sure how to do it cleanly.\nAI:  Let me look at your styling setup...\n     Cleanest path here: CSS variables + a small theme context,\n     with system-preference detection. No new dependencies. Scope it?\nYou: Yes, let's do it.\n\nYou: /opsx:propose add-dark-mode\nAI:  Created openspec/changes/add-dark-mode/\n     ✓ proposal.md — why we're doing this, what's changing\n     ✓ specs/       — requirements and scenarios\n     ✓ design.md    — technical approach\n     ✓ tasks.md     — implementation checklist\n     Ready for implementation!\n\nYou: /opsx:apply\nAI:  Implementing tasks...\n     ✓ 1.1 Add theme context provider\n     ✓ 1.2 Create toggle component\n     ✓ 2.1 Add CSS variables\n     ✓ 2.2 Wire up localStorage\n     All tasks complete!\n\nYou: /opsx:archive\nAI:  Archived to openspec/changes/archive/2025-01-23-add-dark-mode/\n     Specs updated. Ready for the next feature.\n```\n\n<details>\n<summary><strong>OpenSpec Dashboard</strong></summary>\n\n<p align=\"center\">\n  <img src=\"assets/openspec_dashboard.png\" alt=\"OpenSpec dashboard preview\" width=\"90%\">\n</p>\n\n</details>\n\n## Quick Start\n\n**Requires Node.js 20.19.0 or higher.**\n\nInstall OpenSpec globally:\n\n```bash\nnpm install -g @fission-ai/openspec@latest\n```\n\nThen navigate to your project directory and initialize:\n\n```bash\ncd your-project\nopenspec init\n```\n\nNow talk to your AI:\n\n- **Not sure what to build yet?** Start with `/opsx:explore`, a no-stakes thinking partner that reads your code, weighs options, and shapes a plan before anything is written. ([Explore guide](docs/explore.md))\n- **Already know what you want?** Go straight to `/opsx:propose <what-you-want-to-build>`.\n\nBoth are in the default profile. If you want the expanded workflow (`/opsx:new`, `/opsx:continue`, `/opsx:ff`, `/opsx:verify`, `/opsx:bulk-archive`, `/opsx:onboard`), select it with `openspec config profile` and apply with `openspec update`.\n\n> [!NOTE]\n> Not sure if your tool is supported? [View the full list](docs/supported-tools.md) – we support 25+ tools and growing.\n>\n> Also works with pnpm, yarn, bun, and nix. [See installation options](docs/installation.md).\n\n## Docs\n\n**Start here:** the **[Documentation Home](docs/README.md)** maps everything. New to OpenSpec? Read [Getting Started](docs/getting-started.md), then [How Commands Work](docs/how-commands-work.md) (where you actually type `/opsx:propose`).\n\n→ **[Getting Started](docs/getting-started.md)**: first steps<br>\n→ **[Explore First](docs/explore.md)**: think it through with `/opsx:explore` before you commit<br>\n→ **[How Commands Work](docs/how-commands-work.md)**: where slash commands run vs the CLI<br>\n→ **[Core Concepts at a Glance](docs/overview.md)**: the whole mental model, one page<br>\n→ **[Examples & Recipes](docs/examples.md)**: real changes, start to finish<br>\n→ **[Workflows](docs/workflows.md)**: combos and patterns<br>\n→ **[Existing Projects](docs/existing-projects.md)**: adopt OpenSpec on a brownfield codebase<br>\n→ **[Editing a Change](docs/editing-changes.md)**: update artifacts, go back, reconcile manual edits<br>\n→ **[Commands](docs/commands.md)**: slash commands & skills<br>\n→ **[CLI](docs/cli.md)**: terminal reference<br>\n→ **[Stores](docs/stores-beta/user-guide.md)**: plan in a separate repo, shared across your team (beta)<br>\n→ **[Supported Tools](docs/supported-tools.md)**: tool integrations & install paths<br>\n→ **[Concepts](docs/concepts.md)**: how it all fits<br>\n→ **[Multi-Language](docs/multi-language.md)**: multi-language support<br>\n→ **[Customization](docs/customization.md)**: make it yours<br>\n→ **[FAQ](docs/faq.md)** · **[Troubleshooting](docs/troubleshooting.md)** · **[Glossary](docs/glossary.md)**: quick help\n\n\n## Community schemas\n\nThird-party schema bundles distributed via standalone repositories — these provide opinionated workflows that integrate OpenSpec with other tools, similar to how [github/spec-kit's community extension catalog](https://github.com/github/spec-kit/tree/main/extensions) handles tool integrations.\n\n→ **[Browse the catalog](docs/customization.md#community-schemas)** in the customization docs.\n\n\n## Why OpenSpec?\n\nAI coding assistants are powerful but unpredictable when requirements live only in chat history. OpenSpec adds a lightweight spec layer so you agree on what to build before any code is written.\n\n- **Agree before you build** — human and AI align on specs before code gets written\n- **Stay organized** — each change gets its own folder with proposal, specs, design, and tasks\n- **Work fluidly** — update any artifact anytime, no rigid phase gates\n- **Use your tools** — works with 20+ AI assistants via slash commands\n\n### How we compare\n\n**vs. [Spec Kit](https://github.com/github/spec-kit)** (GitHub) — Thorough but heavyweight. Rigid phase gates, lots of Markdown, Python setup. OpenSpec is lighter and lets you iterate freely.\n\n**vs. [Kiro](https://kiro.dev)** (AWS) — Powerful but you're locked into their IDE and limited to Claude models. OpenSpec works with the tools you already use.\n\n**vs. nothing** — AI coding without specs means vague prompts and unpredictable results. OpenSpec brings predictability without the ceremony.\n\n## Updating OpenSpec\n\n**Upgrade the package**\n\n```bash\nnpm install -g @fission-ai/openspec@latest\n```\n\n**Refresh agent instructions**\n\nRun this inside each project to regenerate AI guidance and ensure the latest slash commands are active:\n\n```bash\nopenspec update\n```\n\n## Usage Notes\n\n**Model selection**: OpenSpec works best with high-reasoning models. We recommend Codex 5.5 and Opus 4.7 for both planning and implementation.\n\n**Context hygiene**: OpenSpec benefits from a clean context window. Clear your context before starting implementation and maintain good context hygiene throughout your session.\n\n## Contributing\n\n**Small fixes** — Bug fixes, typo corrections, and minor improvements can be submitted directly as PRs.\n\n**Larger changes** — For new features, significant refactors, or architectural changes, please submit an OpenSpec change proposal first so we can align on intent and goals before implementation begins.\n\nWhen writing proposals, keep the OpenSpec philosophy in mind: we serve a wide variety of users across different coding agents, models, and use cases. Changes should work well for everyone.\n\n**AI-generated code is welcome** — as long as it's been tested and verified. PRs containing AI-generated code should mention the coding agent and model used (e.g., \"Generated with Claude Code using claude-opus-4-5-20251101\").\n\n### Development\n\n- Install dependencies: `pnpm install`\n- Build: `pnpm run build`\n- Test: `pnpm test`\n- Develop CLI locally: `pnpm run dev` or `pnpm run dev:cli`\n- Conventional commits (one-line): `type(scope): subject`\n\n## Other\n\n<details>\n<summary><strong>Telemetry</strong></summary>\n\nOpenSpec collects anonymous usage stats.\n\nWe collect only command names and version to understand usage patterns. No arguments, paths, content, or PII. Automatically disabled in CI.\n\n**Opt-out:** `export OPENSPEC_TELEMETRY=0` or `export DO_NOT_TRACK=1`\n\n</details>\n\n<details>\n<summary><strong>Maintainers & Advisors</strong></summary>\n\nSee [MAINTAINERS.md](MAINTAINERS.md) for the list of core maintainers and advisors who help guide the project.\n\n</details>\n\n\n\n## License\n\nMIT\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@fission-ai/openspec\",\n  \"version\": \"1.4.1\",\n  \"description\": \"AI-native system for spec-driven development\",\n  \"keywords\": [\n    \"openspec\",\n    \"specs\",\n    \"cli\",\n    \"ai\",\n    \"development\"\n  ],\n  \"homepage\": \"https://github.com/Fission-AI/OpenSpec\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/Fission-AI/OpenSpec\"\n  },\n  \"license\": \"MIT\",\n  \"author\": \"OpenSpec Contributors\",\n  \"type\": \"module\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"default\": \"./dist/index.js\"\n    }\n  },\n  \"bin\": {\n    \"openspec\": \"./bin/openspec.js\"\n  },\n  \"files\": [\n    \"dist\",\n    \"bin\",\n    \"schemas\",\n    \"scripts/postinstall.js\",\n    \"!dist/**/*.test.js\",\n    \"!dist/**/__tests__\",\n    \"!dist/**/*.map\"\n  ],\n  \"scripts\": {\n    \"lint\": \"eslint src/\",\n    \"build\": \"node build.js\",\n    \"dev\": \"tsc --watch\",\n    \"dev:cli\": \"pnpm build && node bin/openspec.js\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:ui\": \"vitest --ui\",\n    \"test:coverage\": \"vitest --coverage\",\n    \"test:postinstall\": \"node scripts/postinstall.js\",\n    \"prepare\": \"pnpm run build\",\n    \"prepublishOnly\": \"pnpm run build\",\n    \"postinstall\": \"node scripts/postinstall.js\",\n    \"check:pack-version\": \"node scripts/pack-version-check.mjs\",\n    \"release\": \"pnpm run release:ci\",\n    \"release:ci\": \"pnpm run check:pack-version && pnpm exec changeset publish\",\n    \"changeset\": \"changeset\"\n  },\n  \"engines\": {\n    \"node\": \">=20.19.0\"\n  },\n  \"devDependencies\": {\n    \"@changesets/changelog-github\": \"^0.5.2\",\n    \"@changesets/cli\": \"^2.27.7\",\n    \"@types/node\": \"^24.2.0\",\n    \"@vitest/ui\": \"^3.2.6\",\n    \"eslint\": \"^9.39.2\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.62.0\",\n    \"vitest\": \"^3.2.6\"\n  },\n  \"dependencies\": {\n    \"@inquirer/core\": \"^10.3.2\",\n    \"@inquirer/prompts\": \"^7.10.1\",\n    \"chalk\": \"^5.5.0\",\n    \"commander\": \"^14.0.0\",\n    \"cross-spawn\": \"7.0.6\",\n    \"fast-glob\": \"^3.3.3\",\n    \"ora\": \"^8.2.0\",\n    \"posthog-node\": \"^5.20.0\",\n    \"yaml\": \"^2.8.2\",\n    \"zod\": \"^4.0.17\"\n  }\n}\n",
    "strategic_keywords": [
      "rag",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "facebook",
    "name": "astryx",
    "full_name": "facebook/astryx",
    "url": "https://github.com/facebook/astryx",
    "description": "An open source design system that's fully customizable and agent ready",
    "language": "TypeScript",
    "total_stars": 537,
    "forks": 26,
    "stars_this_period": 164,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 158,
      "created_at": "2026-01-09T16:20:32Z",
      "pushed_at": "2026-06-27T18:13:36Z",
      "homepage": "http://astryx.atmeta.com",
      "default_branch": "main",
      "forks": 26,
      "watchers": 2,
      "archived": false,
      "size_kb": 301281
    },
    "readme_content": "<!-- SYNC CONTRACT: Architecture changes require documentation updates. -->\n\n# Astryx\n\nAn open source design system that's fully customizable and agent ready.\n\n> **Currently in Beta** · Built on [React](https://react.dev) and [StyleX](https://stylexjs.com)\n\n## Overview\n\nAstryx is an open source design system born from years of building internal tools at scale in Meta's monorepo. It has grown inside Meta over the last eight years and powers over 13,000 apps, shaped by the engineers, designers, and product teams who depend on it every day.\n\nIt provides the foundations, components, templates, and themes that work together to deliver consistent, accessible interfaces — and it's designed so both humans and AI agents can build with the same tooling.\n\n**What makes Astryx different:**\n\n- **Open internals:** All primitives are exported and composable, not hidden. Compose at any level and build exactly what you need.\n- **Automatic spacing:** Context-aware spacing compensation eliminates \"double padding\" issues so layouts stay clean without manual fixups.\n- **Themeable:** First-class theming with a CSS variable cascade. Ten ready-made themes, all fully customizable.\n- **Agent ready:** JSDoc annotations with composition hints, plus a CLI and MCP server so agents can scaffold, browse, and document using the same API you do.\n\n## Getting Started\n\nFor full setup instructions, see the **[@astryxdesign/core README](packages/core/README.md)**.\n\nQuick install:\n\n```bash\n# pnpm\npnpm add @astryxdesign/core @astryxdesign/theme-neutral\npnpm add -D @astryxdesign/cli\n\n# npm\nnpm install @astryxdesign/core @astryxdesign/theme-neutral\nnpm install -D @astryxdesign/cli\n\n# yarn\nyarn add @astryxdesign/core @astryxdesign/theme-neutral\nyarn add -D @astryxdesign/cli\n```\n\nFor reliable CLI access, add this script to your `package.json`:\n\n```json\n\"scripts\": {\n  \"xds\": \"node node_modules/@astryxdesign/cli/bin/astryx.mjs\"\n}\n```\n\nThen use the CLI as `npm run xds -- component --list`. This avoids path errors when AI assistants or new developers invoke the CLI directly.\n\nThen follow the [setup guide](packages/core/README.md#quick-start) to import styles, configure the theme provider, and start using components.\n\n## Packages\n\n| Package                           | Description                                                                                                                   | README                             |\n| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |\n| [`@astryxdesign/core`](packages/core)      | Components, theme system, and utilities                                                                                       | [README](packages/core/README.md)  |\n| [`@astryxdesign/cli`](packages/cli)        | CLI tooling: component docs, templates, scaffolding, themes, and codemods                                                     | [README](packages/cli/README.md)   |\n| [`@astryxdesign/build`](packages/build)    | Build plugins for StyleX source builds                                                                                        | [README](packages/build/README.md) |\n| [`@astryxdesign/theme-*`](packages/themes) | Ten ready-made, fully customizable themes (default, neutral, daily, butter, chocolate, matcha, stone, gothic, brutalist, y2k) | [README](packages/themes)          |\n\n> `@astryxdesign/lab` (experimental components) and `@astryxdesign/vega` (Vega/Vega-Lite chart wrapper) are used internally for Storybook and the sandbox; they are not yet published to npm.\n\n## Features\n\n- **Over 90 components** — accessible, themeable React components with built-in spacing, dark mode, and flexible styling.\n- **Themes that fit your brand** — fully customizable themes ready for use. Make it yours without starting from scratch.\n- **Ready to ship templates** — production-ready templates for common pages; just plug in your content.\n- **A design system your agent can use** — scaffold projects, browse templates, generate themes, and get agent-ready docs from the command line or MCP.\n\n## Philosophy\n\n- **Design for speed:** Foundations you can trust, speed you can feel. Teams stop reinventing the basics and start shipping the ideas that matter.\n- **Built by the people who use it:** The system gets sharper when we put it to work in the real world. Using it in context strengthens the whole system for everyone.\n- **Ready for what's next:** Opinionated foundations paired with flexible patterns so your system keeps pace, no matter how the craft evolves.\n\n## Architecture\n\n### Foundations\n\nThe building blocks for visually cohesive and accessible interfaces: typography, color, layout, and accessibility.\n\n### Components\n\nA library of 90+ reusable UI building blocks with full TypeScript support.\n\n### Patterns\n\nBattle-tested design solutions for common interactions and workflows: table pages, detail page layouts, form wizards, navigation patterns, data entry flows.\n\n## Project Structure\n\n| Directory   | Purpose                                                     |\n| ----------- | ----------------------------------------------------------- |\n| `apps/`     | Example apps, the docsite, and Storybook                    |\n| `packages/` | Published packages: core, cli, build, themes                |\n| `internal/` | Internal tooling: test utilities, eslint plugin, vibe tests |\n\n## Contributing\n\nWe welcome contributions! See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full guide.\n\nQuick start for contributors: this repo uses **pnpm 10** via [Corepack](https://nodejs.org/api/corepack.html). Enable it once and the right pnpm version installs automatically:\n\n```bash\ncorepack enable\npnpm install\n```\n\n## License\n\nMIT\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"xds\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"build\": \"pnpm -F @astryxdesign/build build && pnpm -F @astryxdesign/core build && pnpm -F @astryxdesign/vega build && pnpm -F @astryxdesign/theme-neutral build && pnpm -F @astryxdesign/theme-matcha build && pnpm -F @astryxdesign/theme-stone build && pnpm -F @astryxdesign/theme-gothic build && pnpm -F @astryxdesign/theme-chocolate build && pnpm -F @astryxdesign/theme-y2k build && pnpm -F @astryxdesign/theme-butter build\",\n    \"dev\": \"pnpm -F @astryxdesign/storybook dev\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:coverage\": \"vitest --coverage\",\n    \"check:package-boundaries\": \"node scripts/check-package-boundaries.js\",\n    \"check:repo\": \"pnpm check:sync && pnpm check:package-boundaries && pnpm check:changesets\",\n    \"check:changesets\": \"node scripts/check-changesets.mjs\",\n    \"check:sync\": \"node scripts/check-sync.js\",\n    \"lint\": \"pnpm check:repo && eslint . --cache\",\n    \"lint:strict\": \"pnpm check:repo && ASTRYX_STRICT_LINT=1 eslint . --cache\",\n    \"storybook\": \"pnpm -F @astryxdesign/storybook dev\",\n    \"storybook:build\": \"pnpm -F @astryxdesign/storybook build\",\n    \"docs\": \"pnpm -F @astryxdesign/docs dev\",\n    \"sync:exports\": \"node scripts/sync-exports.js\",\n    \"sync:exports:check\": \"node scripts/sync-exports.js --check\",\n    \"xds\": \"pnpm -F @astryxdesign/cli xds\",\n    \"package:source\": \"node scripts/package-source.js\",\n    \"changeset\": \"changeset\",\n    \"changeset:new\": \"node scripts/changeset-new.mjs\",\n    \"version-packages\": \"changeset version && node scripts/format-changelogs.mjs\",\n    \"format-changelogs\": \"node scripts/format-changelogs.mjs\",\n    \"setup-trusted-publishing\": \"node scripts/npm/setup-trusted-publishing.mjs\",\n    \"verify-exports\": \"node scripts/verify-exports.mjs\",\n    \"release\": \"pnpm build && changeset publish\",\n    \"prepare\": \"husky install\",\n    \"dev:sandbox\": \"pnpm -F @astryxdesign/core build && pnpm -F @astryxdesign/sandbox dev\",\n    \"dev:sandbox:source\": \"ASTRYX_SOURCE=1 pnpm -F @astryxdesign/sandbox dev\"\n  },\n  \"devDependencies\": {\n    \"@axe-core/playwright\": \"^4.11.3\",\n    \"@changesets/cli\": \"^2.31.0\",\n    \"@eslint-react/eslint-plugin\": \"^5.9.1\",\n    \"@eslint/js\": \"^10.0.1\",\n    \"@playwright/test\": \"^1.61.0\",\n    \"@testing-library/user-event\": \"^14.5.0\",\n    \"@types/node\": \"^25.9.3\",\n    \"@types/react\": \"^19.2.17\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"@vitejs/plugin-react\": \"^4.3.0\",\n    \"@vitest/coverage-v8\": \"^2.1.0\",\n    \"esbuild\": \"^0.28.1\",\n    \"eslint\": \"^10.5.0\",\n    \"eslint-plugin-react-compiler\": \"19.1.0-rc.2\",\n    \"husky\": \"^9.1.7\",\n    \"jscodeshift\": \"^17.3.0\",\n    \"jsdom\": \"^27.4.0\",\n    \"prettier\": \"^3.8.4\",\n    \"react\": \"^19.2.7\",\n    \"react-dom\": \"^19.2.7\",\n    \"tsup\": \"^8.3.0\",\n    \"typescript\": \"^6.0.3\",\n    \"typescript-eslint\": \"^8.61.1\",\n    \"vite-plugin-singlefile\": \"^2.3.3\",\n    \"vitest\": \"^2.1.0\"\n  },\n  \"packageManager\": \"pnpm@10.34.1\",\n  \"workspaces\": [\n    \"apps/*\",\n    \"packages/*\",\n    \"packages/themes/*\",\n    \"internal/*\"\n  ],\n  \"lint-staged\": {\n    \"*.{ts,tsx}\": \"eslint --cache --fix\",\n    \"*.{ts,tsx,md}\": \"prettier --write\"\n  },\n  \"pnpm\": {\n    \"overrides\": {\n      \"prettier\": \"^3.8.4\",\n      \"postcss\": \"^8.5.10\",\n      \"picomatch\": \"^4.0.4\",\n      \"micromatch>picomatch\": \"^2.3.2\",\n      \"anymatch>picomatch\": \"^2.3.2\",\n      \"minimatch\": \"^9.0.7\",\n      \"dompurify\": \"^3.3.2\",\n      \"vite\": \"^6.4.2\",\n      \"tmp\": \">=0.2.6\",\n      \"esbuild\": \">=0.28.1\"\n    },\n    \"onlyBuiltDependencies\": [\n      \"esbuild\",\n      \"@swc/core\",\n      \"sharp\",\n      \"@parcel/watcher\",\n      \"core-js\",\n      \"puppeteer\"\n    ]\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "zarazhangrui",
    "name": "frontend-slides",
    "full_name": "zarazhangrui/frontend-slides",
    "url": "https://github.com/zarazhangrui/frontend-slides",
    "description": "Create beautiful slides on the web using a coding agent's frontend skills",
    "language": "JavaScript",
    "total_stars": 23466,
    "forks": 1911,
    "stars_this_period": 152,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai-slides",
        "anthropic",
        "claude",
        "claude-code",
        "claude-skill",
        "generative-ui",
        "html",
        "presentation",
        "slides",
        "vibe-coding"
      ],
      "license": "MIT",
      "open_issues": 48,
      "created_at": "2026-01-28T00:42:34Z",
      "pushed_at": "2026-06-23T20:08:19Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 1911,
      "watchers": 101,
      "archived": false,
      "size_kb": 582
    },
    "readme_content": "# Frontend Slides\n\nA coding-agent skill for creating stunning HTML presentations — from scratch or by converting PowerPoint files. It is packaged as a Claude Code plugin, and the core `SKILL.md` can also be read by other coding agents with filesystem and shell access.\n\n## 📺 Watch the Walkthrough & Tutorial\n\nNew here? This beginner-friendly video walks you through the whole thing, start to finish.\n\n<a href=\"https://www.youtube.com/watch?v=372Iksaz8b0\" title=\"Frontend Slides — walkthrough & tutorial (beginner-friendly)\">\n  <img src=\"https://img.youtube.com/vi/372Iksaz8b0/maxresdefault.jpg\" alt=\"Watch the Frontend Slides walkthrough and tutorial on YouTube\" width=\"100%\" />\n</a>\n\n> ▶️ **[Watch on YouTube →](https://www.youtube.com/watch?v=372Iksaz8b0)** (beginner-friendly walkthrough and tutorial)\n\n## What This Does\n\n**Frontend Slides** helps non-designers create beautiful web presentations without knowing CSS or JavaScript. It uses a \"show, don't tell\" approach: instead of asking you to describe your aesthetic preferences in words, it generates visual previews and lets you pick what you like.\n\nHere is a deck about the skill, made through the skill:\n\nhttps://github.com/user-attachments/assets/ef57333e-f879-432a-afb9-180388982478\n\n### Key Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **Visual Style Discovery** — Can't articulate design preferences? No problem. Pick from generated visual previews.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Anti-AI-Slop** — Curated distinctive styles that avoid generic AI aesthetics (bye-bye, purple gradients on white).\n- **Bold Template Pack** — Optional design-forward templates from `beautiful-html-templates`, loaded progressively so safe presets still work as the default fallback.\n- **Production Quality** — Accessible, fixed 16:9, well-commented code you can customize.\n\n## Installation\n\n### Via Claude Code Custom Marketplace Source\n\nInstall directly from this public GitHub repo. Run these as two separate Claude Code messages; do not paste both lines into the prompt at once.\n\n```text\n/plugin marketplace add https://github.com/zarazhangrui/frontend-slides\n```\n\nAfter that finishes, run:\n\n```text\n/plugin install frontend-slides@frontend-slides\n```\n\nUse the HTTPS URL. The shorter `zarazhangrui/frontend-slides` form may make Claude Code try SSH, which can fail if GitHub is not already in your `known_hosts` file.\n\nThen use it by typing `/frontend-slides:frontend-slides` in Claude Code. Claude Code namespaces plugin-installed skills as `/plugin-name:skill-name`.\n\n### Claude Code Manual Installation\n\nCopy the skill files to your Claude Code skills directory:\n\n```bash\n# Create the skill directory\nmkdir -p ~/.claude/skills/frontend-slides/scripts\n\n# Copy the user-facing skill files\ncp SKILL.md STYLE_PRESETS.md viewport-base.css html-template.md animation-patterns.md ~/.claude/skills/frontend-slides/\ncp -R bold-template-pack ~/.claude/skills/frontend-slides/\ncp scripts/extract-pptx.py scripts/deploy.sh scripts/export-pdf.sh ~/.claude/skills/frontend-slides/scripts/\n```\n\nOr clone directly:\n\n```bash\ngit clone https://github.com/zarazhangrui/frontend-slides.git ~/.claude/skills/frontend-slides\n```\n\nThen use it by typing `/frontend-slides` in Claude Code. Standalone skills are not namespaced.\n\n### Other Coding Agents\n\nAgents such as Codex, Kimi Code, OpenCode, Gemini CLI, or other local coding assistants can use the same core skill. The simplest path is to send the agent this GitHub repo link and ask it to use the Frontend Slides skill:\n\n```text\nhttps://github.com/zarazhangrui/frontend-slides\n```\n\nIf the agent can read GitHub repos or browse files, it should start from `SKILL.md` and load only the referenced support files it needs:\n\n- `STYLE_PRESETS.md`\n- `viewport-base.css`\n- `html-template.md`\n- `animation-patterns.md`\n- `bold-template-pack/`\n- `scripts/`\n\nSome agents can also install the skill for you if they have filesystem access and a known local skills directory. If not, they can still follow `SKILL.md` directly for the current session.\n\nThe Claude Code plugin gives Claude Code a custom marketplace-source install flow and `/frontend-slides:frontend-slides` command. Other agents usually do not use that command surface.\n\n## Usage\n\n### Create a New Presentation\n\n```text\n/frontend-slides:frontend-slides\n\n> \"I want to create a pitch deck for my AI startup\"\n```\n\nIf installed manually as a standalone Claude Code skill, use `/frontend-slides` instead.\n\nIn non-Claude agents, ask the agent to use the Frontend Slides skill and point it at this repo or `SKILL.md`.\n\nThe skill will:\n\n1. Ask about your content (slides, messages, images)\n2. Generate 3 visual style previews for you to compare, inferring the vibe from your brief unless you already named one\n3. Let you pick the visual direction\n4. Create the full presentation in your chosen style\n5. Open it in your browser\n\n### Convert a PowerPoint\n\n```text\n/frontend-slides:frontend-slides\n\n> \"Convert my presentation.pptx to a web slideshow\"\n```\n\nThe skill will:\n\n1. Extract all text, images, and notes from your PPT\n2. Show you the extracted content for confirmation\n3. Let you pick a visual style\n4. Generate an HTML presentation with all your original assets\n\n## Included Styles\n\n### Dark Themes\n\n- **Bold Signal** — Confident, high-impact, vibrant card on dark\n- **Electric Studio** — Clean, professional, split-panel\n- **Creative Voltage** — Energetic, retro-modern, electric blue + neon\n- **Dark Botanical** — Elegant, sophisticated, warm accents\n\n### Light Themes\n\n- **Notebook Tabs** — Editorial, organized, paper with colorful tabs\n- **Pastel Geometry** — Friendly, approachable, vertical pills\n- **Split Pastel** — Playful, modern, two-color vertical split\n- **Vintage Editorial** — Witty, personality-driven, geometric shapes\n\n### Specialty\n\n- **Neon Cyber** — Futuristic, particle backgrounds, neon glow\n- **Terminal Green** — Developer-focused, hacker aesthetic\n- **Swiss Modern** — Minimal, Bauhaus-inspired, geometric\n- **Paper & Ink** — Literary, drop caps, pull quotes\n\n### Bold Template Pack\n\nThe skill also includes 34 optional bold design systems from\n`beautiful-html-templates`, such as **Neo-Grid Bold**, **Editorial Tri-Tone**,\n**Creative Mode**, **Broadside**, **Signal**, and **Vellum**.\n\nDuring style discovery, the preview set is:\n\n- 1 safe preset from `STYLE_PRESETS.md`\n- at least 1 bold template option from `bold-template-pack/selection-index.json`\n- 1 wildcard option, either another bold template or a self-generated custom design\n\nThe agent reads the compact bold template index first, then loads only the\nshortlisted candidates' small `preview.md` cards for title-slide previews. It\nloads the full `design.md` for exactly one bold template only after the user\npicks that template for the final deck. If the user picks a custom wildcard,\nthe agent expands that preview's own CSS and layout system into the full deck.\n\n## Bold Template Gallery\n\nFrontend Slides can now draw from the 34 bold design systems in [`beautiful-html-templates`](https://github.com/zarazhangrui/beautiful-html-templates). Three screenshots per template show how each visual system handles different slide layouts. Click any template name to inspect the source template library.\n\n### [Soft Editorial](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/soft-editorial/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-4.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 4\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-6.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 6\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-10.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 10\" />\n</p>\n\n> Cormorant Garamond serif on warm paper with sage, blush, and lemon accents.\n\n### [Editorial Forest](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/editorial-forest/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-1.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-2.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 2\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-5.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 5\" />\n</p>\n\n> Forest green, dusty pink, and warm cream in Source Serif 4 — quiet, intentional quarterly-review aesthetic.\n\n### [Pin & Paper](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/pin-and-paper/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-1.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-11.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 11\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-3.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 3\" />\n</p>\n\n> Yellow paper with safety-pin illustrations, ink-blue handwritten Caveat, paper-grain texture.\n\n### [Sakura Chroma](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/sakura-chroma/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-1.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-3.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-4.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 4\" />\n</p>\n\n> Vintage Japanese cassette-package aesthetic: cream paper, diagonal rainbow ribbons, condensed bold type, JIS-style spec checkboxes.\n\n### [Stencil & Tablet](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/stencil-tablet/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-1.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-3.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-8.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 8\" />\n</p>\n\n> Bone paper with stencil-cut headlines and a six-color earth palette: archaeology meets brand.\n\n### [Cobalt Grid](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/cobalt-grid/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-1.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-3.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-5.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 5\" />\n</p>\n\n> Electric cobalt italic serifs on a graph-paper canvas, anchored by stair-stepped pixel-glitch decorations and slim hairline rules.\n\n### [Vellum](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/vellum/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautifu",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 8,
      "relation": 9,
      "risk_signal": 6,
      "total": 78
    },
    "strategic_score": 78
  },
  {
    "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": 20362,
    "forks": 1757,
    "stars_this_period": 142,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "ai-agents",
        "browser-automation",
        "javascript",
        "mcp",
        "typescript",
        "web"
      ],
      "license": "MIT",
      "open_issues": 47,
      "created_at": "2025-09-23T09:30:17Z",
      "pushed_at": "2026-06-25T17:07:30Z",
      "homepage": "https://alibaba.github.io/page-agent/",
      "default_branch": "main",
      "forks": 1757,
      "watchers": 62,
      "archived": false,
      "size_kb": 3111
    },
    "readme_content": "# Page Agent\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://page-agent.github.io/assets/readme/banner-dark.png\">\n  <img alt=\"Page Agent Banner\" src=\"https://page-agent.github.io/assets/readme/banner-light.png\">\n</picture>\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-auto.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/) [![Bundle Size](https://img.shields.io/bundlephobia/minzip/page-agent)](https://bundlephobia.com/package/page-agent) [![Downloads](https://img.shields.io/npm/dt/page-agent.svg)](https://www.npmjs.com/package/page-agent) [![GitHub stars](https://img.shields.io/github/stars/alibaba/page-agent.svg)](https://github.com/alibaba/page-agent)\n\nThe GUI Agent Living in Your Webpage. Control web interfaces with natural language.\n\n🌐 **English** | [中文](./docs/README-zh.md)\n\n<a href=\"https://alibaba.github.io/page-agent/\" target=\"_blank\"><b>🚀 Demo</b></a> | <a href=\"https://alibaba.github.io/page-agent/docs/introduction/overview\" target=\"_blank\"><b>📖 Docs</b></a> | <a href=\"https://news.ycombinator.com/item?id=47264138\" target=\"_blank\"><b>📢 HN Discussion</b></a> | <a href=\"https://x.com/simonluvramen\" target=\"_blank\"><b>𝕏 Follow on X</b></a>\n\n<!-- demo video -->\n\nhttps://github.com/user-attachments/assets/a1f2eae2-13fb-4aae-98cf-a3fc1620a6c2\n\n---\n\n## ✨ Features\n\n- **🎯 Easy integration**\n    - No need for `browser extension` / `python` / `headless browser`.\n    - Just in-page javascript. Everything happens in your web page.\n- **📖 Text-based DOM manipulation**\n    - No screenshots. No multi-modal LLMs or special permissions needed.\n- **🧠 Bring your own LLMs**\n- **🐙 Optional [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension) for multi-page tasks.**\n    - And an [MCP Server (Beta)](https://alibaba.github.io/page-agent/docs/features/mcp-server) to control it from outside\n\n## 💡 Use Cases\n\n- **SaaS AI Copilot** — Ship an AI copilot in your product in lines of code. No backend rewrite.\n- **Smart Form Filling** — Turn 20-click workflows into one sentence. Perfect for ERP, CRM, and admin systems.\n- **Accessibility** — Make any web app accessible through natural language. Voice commands, screen readers, zero barrier.\n- **Multi-page Agent** — Extend your own web agent's reach across browser tabs [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension).\n- **MCP** - Allow your agent clients to control your browser.\n\n## 🚀 Quick Start\n\n### One-line integration\n\nFastest way to try PageAgent with our free Demo LLM:\n\n```html\n<script src=\"{URL}\" crossorigin=\"true\"></script>\n```\n\n> **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you agree to its [terms](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md).\n\n| Mirrors | URL                                                                                 |\n| ------- | ----------------------------------------------------------------------------------- |\n| Global  | https://cdn.jsdelivr.net/npm/page-agent@1.10.0/dist/iife/page-agent.demo.js         |\n| China   | https://registry.npmmirror.com/page-agent/1.10.0/files/dist/iife/page-agent.demo.js |\n\nAdd `?autoInit=false` to load the script without creating the demo agent automatically. You can then instantiate it with `new window.PageAgent(...)`.\n\n### NPM Installation\n\n```bash\nnpm install page-agent\n```\n\n```javascript\nimport { PageAgent } from 'page-agent'\n\nconst agent = new PageAgent({\n    model: 'qwen3.5-plus',\n    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n    apiKey: 'YOUR_API_KEY',\n    language: 'en-US',\n})\n\nawait agent.execute('Click the login button')\n```\n\nFor more programmatic usage, see [📖 Documentations](https://alibaba.github.io/page-agent/docs/introduction/overview).\n\n## 🌟 Awesome Page Agent\n\nBuilt something cool with PageAgent? Add it here! Open a PR to share your project.\n\n> These are community projects — not maintained or endorsed by us. Use at your own discretion.\n\n| Project  | Description                                                 |\n| -------- | ----------------------------------------------------------- |\n| _Yours?_ | [Open a PR](https://github.com/alibaba/page-agent/pulls) 🙌 |\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines and [docs/developer-guide.md](docs/developer-guide.md) for local development workflows.\n\nPlease read the [maintainer's note](https://github.com/alibaba/page-agent/issues/349) on principles and current state.\n\nContributions generated entirely by **bots or AI** without substantial human involvement will **not be accepted**.\n\n## ⚖️ License\n\n[MIT License](LICENSE)\n\n## 👏 Acknowledgments\n\nThis project builds upon the excellent work of **[`browser-use`](https://github.com/browser-use/browser-use)**.\n\n`PageAgent` is designed for **client-side web enhancement**, not server-side automation.\n\n```\nDOM processing components and prompt are derived from browser-use:\n\nBrowser Use <https://github.com/browser-use/browser-use>\nCopyright (c) 2024 Gregor Zunic\nLicensed under the MIT License\n\nWe gratefully acknowledge the browser-use project and its contributors for their\nexcellent work on web automation and DOM interaction patterns that helped make\nthis project possible.\n```\n\n---\n\n**⭐ Star this repo if you find PageAgent helpful!**\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n    \"name\": \"root\",\n    \"private\": true,\n    \"version\": \"1.10.0\",\n    \"type\": \"module\",\n    \"workspaces\": [\n        \"packages/page-controller\",\n        \"packages/ui\",\n        \"packages/llms\",\n        \"packages/core\",\n        \"packages/page-agent\",\n        \"packages/mcp\",\n        \"packages/extension\",\n        \"packages/website\"\n    ],\n    \"description\": \"AI-powered UI agent for web applications\",\n    \"author\": \"Simon<gaomeng1900>\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/alibaba/page-agent.git\"\n    },\n    \"homepage\": \"https://alibaba.github.io/page-agent/\",\n    \"engines\": {\n        \"node\": \"^22.22.1 || >=24\",\n        \"npm\": \"^11.6.3\"\n    },\n    \"scripts\": {\n        \"start\": \"npm run dev --workspace=@page-agent/website\",\n        \"dev:ext\": \"npm run dev -w @page-agent/ext\",\n        \"dev:demo\": \"npm run dev:demo --workspace=page-agent\",\n        \"build\": \"node scripts/build.js\",\n        \"build:libs\": \"node scripts/build-libs.js\",\n        \"build:website\": \"npm run build:website --workspace=@page-agent/website\",\n        \"build:ext\": \"npm run zip -w @page-agent/ext\",\n        \"version\": \"node scripts/sync-version.js\",\n        \"postpublish\": \"npm run postpublish --workspaces --if-present\",\n        \"typecheck\": \"tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json\",\n        \"test\": \"npm test --workspaces --if-present\",\n        \"lint\": \"eslint .\",\n        \"ci\": \"node scripts/ci.js\",\n        \"cleanup\": \"rm -rf packages/*/dist && rm -rf packages/*/.output\",\n        \"prepare\": \"husky || true\"\n    },\n    \"devDependencies\": {\n        \"@commitlint/cli\": \"^21.0.1\",\n        \"@commitlint/config-conventional\": \"^21.0.1\",\n        \"@eslint-react/eslint-plugin\": \"^5.9.2\",\n        \"@eslint/js\": \"^10.0.1\",\n        \"@microsoft/api-extractor\": \"^7.58.9\",\n        \"@tailwindcss/vite\": \"^4.3.1\",\n        \"@trivago/prettier-plugin-sort-imports\": \"^6.0.2\",\n        \"@types/node\": \"^26.0.0\",\n        \"@vitejs/plugin-react\": \"^6.0.2\",\n        \"chalk\": \"^5.6.2\",\n        \"concurrently\": \"^10.0.3\",\n        \"dotenv\": \"^17.4.2\",\n        \"eslint\": \"^10.5.0\",\n        \"globals\": \"^17.7.0\",\n        \"happy-dom\": \"^20.10.6\",\n        \"husky\": \"^9.1.7\",\n        \"lint-staged\": \"^17.0.8\",\n        \"prettier\": \"^3.8.4\",\n        \"typescript\": \"^6.0.3\",\n        \"typescript-eslint\": \"^8.62.0\",\n        \"unplugin-dts\": \"^1.0.1\",\n        \"vite\": \"^8.0.14\",\n        \"vite-plugin-css-injected-by-js\": \"^5.0.1\",\n        \"vitest\": \"^4.1.9\"\n    },\n    \"overrides\": {\n        \"typescript\": \"^6.0.3\",\n        \"node-notifier\": {\n            \"uuid\": \"11.1.1\"\n        },\n        \"web-ext-run\": {\n            \"tmp\": \"0.2.7\"\n        }\n    },\n    \"lint-staged\": {\n        \"*.{js,ts,cjs,cts,mjs,mts}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.{jsx,tsx}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.css\": [\n            \"npx prettier --write --ignore-unknown\"\n        ]\n    },\n    \"commitlint\": {\n        \"extends\": [\n            \"@commitlint/config-conventional\"\n        ],\n        \"rules\": {\n            \"subject-case\": [\n                0,\n                \"never\"\n            ]\n        }\n    },\n    \"prettier\": {\n        \"singleQuote\": true,\n        \"semi\": false,\n        \"useTabs\": true,\n        \"printWidth\": 100,\n        \"trailingComma\": \"es5\",\n        \"plugins\": [\n            \"@trivago/prettier-plugin-sort-imports\"\n        ],\n        \"importOrder\": [\n            \"<THIRD_PARTY_MODULES>\",\n            \"^(@/).*(?<!css)$\",\n            \"^[./].*(?<!css)$\",\n            \".css$\"\n        ],\n        \"importOrderSeparation\": true,\n        \"importOrderSortSpecifiers\": true,\n        \"overrides\": [\n            {\n                \"files\": \"*.md\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            },\n            {\n                \"files\": \"*.json\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            }\n        ]\n    }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "workspace",
      "llm",
      "eval",
      "workflow",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "luongnv89",
    "name": "claude-howto",
    "full_name": "luongnv89/claude-howto",
    "url": "https://github.com/luongnv89/claude-howto",
    "description": "A visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.",
    "language": "Python",
    "total_stars": 38587,
    "forks": 4646,
    "stars_this_period": 138,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "claude-code",
        "guide",
        "tutorial"
      ],
      "license": "MIT",
      "open_issues": 23,
      "created_at": "2025-11-07T22:59:34Z",
      "pushed_at": "2026-06-24T13:46:10Z",
      "homepage": "http://luongnv.com/claude-howto/",
      "default_branch": "main",
      "forks": 4646,
      "watchers": 172,
      "archived": false,
      "size_kb": 12925
    },
    "readme_content": "<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"resources/logos/claude-howto-logo-dark.svg\">\n  <img alt=\"Claude How To\" src=\"resources/logos/claude-howto-logo.svg\">\n</picture>\n\n<p align=\"center\">\n  <a href=\"https://github.com/trending\">\n    <img src=\"https://img.shields.io/badge/GitHub-🔥%20%231%20Trending-purple?style=for-the-badge&logo=github\"/>\n  </a>\n</p>\n\n[![GitHub Stars](https://img.shields.io/github/stars/luongnv89/claude-howto?style=flat&color=gold)](https://github.com/luongnv89/claude-howto/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/luongnv89/claude-howto?style=flat)](https://github.com/luongnv89/claude-howto/network/members)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Version](https://img.shields.io/badge/version-2.1.160-brightgreen)](CHANGELOG.md)\n[![Claude Code](https://img.shields.io/badge/Claude_Code-2.1+-purple)](https://code.claude.com)\n\n🌐 **Language / Ngôn ngữ / 语言 / Мова:** [English](README.md) | [Tiếng Việt](vi/README.md) | [中文](zh/README.md) | [Українська](uk/README.md) | [日本語](ja/README.md)\n\n# Master Claude Code in a Weekend\n\nGo from typing `claude` to orchestrating agents, hooks, skills, and MCP servers — with visual tutorials, copy-paste templates, and a guided learning path.\n\n**[Get Started in 15 Minutes](#get-started-in-15-minutes)** | **[Find Your Level](#not-sure-where-to-start)** | **[Browse the Feature Catalog](CATALOG.md)**\n\n---\n\n## Table of Contents\n\n- [The Problem](#the-problem)\n- [How Claude How To Fixes This](#how-claude-how-to-fixes-this)\n- [How It Works](#how-it-works)\n- [Not Sure Where to Start?](#not-sure-where-to-start)\n- [Get Started in 15 Minutes](#get-started-in-15-minutes)\n- [What Can You Build With This?](#what-can-you-build-with-this)\n- [FAQ](#faq)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## The Problem\n\nYou installed Claude Code. You ran a few prompts. Now what?\n\n- **The official docs describe features — but don't show you how to combine them.** You know slash commands exist, but not how to chain them with hooks, memory, and subagents into a workflow that actually saves hours.\n- **There's no clear learning path.** Should you learn MCP before hooks? Skills before subagents? You end up skimming everything and mastering nothing.\n- **Examples are too basic.** A \"hello world\" slash command doesn't help you build a production code review pipeline that uses memory, delegates to specialized agents, and runs security scans automatically.\n\nYou're leaving 90% of Claude Code's power on the table — and you don't know what you don't know.\n\n---\n\n## How Claude How To Fixes This\n\nThis isn't another feature reference. It's a **structured, visual, example-driven guide** that teaches you to use every Claude Code feature with real-world templates you can copy into your project today.\n\n| | Official Docs | This Guide |\n|--|---------------|------------|\n| **Format** | Reference documentation | Visual tutorials with Mermaid diagrams |\n| **Depth** | Feature descriptions | How it works under the hood |\n| **Examples** | Basic snippets | Production-ready templates you use immediately |\n| **Structure** | Feature-organized | Progressive learning path (beginner to advanced) |\n| **Onboarding** | Self-directed | Guided roadmap with time estimates |\n| **Self-Assessment** | None | Interactive quizzes to find your gaps and build a personalized path |\n\n### What you get:\n\n- **10 tutorial modules** covering every Claude Code feature — from slash commands to custom agent teams\n- **Copy-paste configs** — slash commands, CLAUDE.md templates, hook scripts, MCP configs, subagent definitions, and full plugin bundles\n- **Mermaid diagrams** showing how each feature works internally, so you understand *why*, not just *how*\n- **A guided learning path** that takes you from beginner to power user in 11-13 hours\n- **Built-in self-assessment** — run `/self-assessment` or `/lesson-quiz hooks` directly in Claude Code to identify gaps\n\n**[Start the Learning Path  ->](LEARNING-ROADMAP.md)**\n\n---\n\n## How It Works\n\n### 1. Find your level\n\nTake the [self-assessment quiz](LEARNING-ROADMAP.md#-find-your-level) or run `/self-assessment` in Claude Code. Get a personalized roadmap based on what you already know.\n\n### 2. Follow the guided path\n\nWork through 10 modules in order — each builds on the last. Copy templates directly into your project as you learn.\n\n### 3. Combine features into workflows\n\nThe real power is in combining features. Learn to wire slash commands + memory + subagents + hooks into automated pipelines that handle code reviews, deployments, and documentation generation.\n\n### 4. Test your understanding\n\nRun `/lesson-quiz [topic]` after each module. The quiz pinpoints what you missed so you can fill gaps fast.\n\n**[Get Started in 15 Minutes](#get-started-in-15-minutes)**\n\n---\n\n## Trusted by Developers\n\n- **GitHub stars** from developers who use Claude Code daily\n- **Forks** from teams adapting this guide for their own workflows\n- **Actively maintained** — synced with every Claude Code release (latest: v2.1.160, June 2026)\n- **Community-driven** — contributions from developers who share their real-world configurations\n\n[![Star History Chart](https://api.star-history.com/svg?repos=luongnv89/claude-howto&type=Date)](https://star-history.com/#luongnv89/claude-howto&Date)\n\n---\n\n## Not Sure Where to Start?\n\nTake the self-assessment or pick your level:\n\n| Level | You can... | Start here | Time |\n|-------|-----------|------------|------|\n| **Beginner** | Start Claude Code and chat | [Slash Commands](01-slash-commands/) | ~2.5 hours |\n| **Intermediate** | Use CLAUDE.md and custom commands | [Skills](03-skills/) | ~3.5 hours |\n| **Advanced** | Configure MCP servers and hooks | [Advanced Features](09-advanced-features/) | ~5 hours |\n\n**Full learning path with all 10 modules:**\n\n| Order | Module | Level | Time |\n|-------|--------|-------|------|\n| 1 | [Slash Commands](01-slash-commands/) | Beginner | 30 min |\n| 2 | [Memory](02-memory/) | Beginner+ | 45 min |\n| 3 | [Checkpoints](08-checkpoints/) | Intermediate | 45 min |\n| 4 | [CLI Basics](10-cli/) | Beginner+ | 30 min |\n| 5 | [Skills](03-skills/) | Intermediate | 1 hour |\n| 6 | [Hooks](06-hooks/) | Intermediate | 1 hour |\n| 7 | [MCP](05-mcp/) | Intermediate+ | 1 hour |\n| 8 | [Subagents](04-subagents/) | Intermediate+ | 1.5 hours |\n| 9 | [Advanced Features](09-advanced-features/) | Advanced | 2-3 hours |\n| 10 | [Plugins](07-plugins/) | Advanced | 2 hours |\n\n**[Complete Learning Roadmap ->](LEARNING-ROADMAP.md)**\n\n---\n\n## Get Started in 15 Minutes\n\n> **Installation note**: Starting in v2.1.113, Claude Code ships as a native per-platform binary (macOS/Linux/Windows). `npm install -g @anthropic-ai/claude-code` still works — the native binary is downloaded as an optional dep on first use. As of v2.1.116, downloads come from `https://downloads.claude.ai/claude-code-releases` — corporate proxies must allowlist this host.\n\n```bash\n# 1. Clone the guide\ngit clone https://github.com/luongnv89/claude-howto.git\ncd claude-howto\n\n# 2. Copy your first slash command\nmkdir -p /path/to/your-project/.claude/commands\ncp 01-slash-commands/optimize.md /path/to/your-project/.claude/commands/\n\n# 3. Try it — in Claude Code, type:\n# /optimize\n\n# 4. Ready for more? Set up project memory:\ncp 02-memory/project-CLAUDE.md /path/to/your-project/CLAUDE.md\n\n# 5. Install a skill:\ncp -r 03-skills/code-review-specialist ~/.claude/skills/\n```\n\nWant the full setup? Here's the **1-hour essential setup**:\n\n```bash\n# Slash commands (15 min)\ncp 01-slash-commands/*.md .claude/commands/\n\n# Project memory (15 min)\ncp 02-memory/project-CLAUDE.md ./CLAUDE.md\n\n# Install a skill (15 min)\ncp -r 03-skills/code-review-specialist ~/.claude/skills/\n\n# Weekend goal: add hooks, subagents, MCP, and plugins\n# Follow the learning path for guided setup\n```\n\n**[View the Full Installation Reference](#get-started-in-15-minutes)**\n\n---\n\n## What Can You Build With This?\n\n| Use Case | Features You'll Combine |\n|----------|------------------------|\n| **Automated Code Review** | Slash Commands + Subagents + Memory + MCP |\n| **Team Onboarding** | Memory + Slash Commands + Plugins |\n| **CI/CD Automation** | CLI Reference + Hooks + Background Tasks |\n| **Documentation Generation** | Skills + Subagents + Plugins |\n| **Security Audits** | Subagents + Skills + Hooks (read-only mode) |\n| **DevOps Pipelines** | Plugins + MCP + Hooks + Background Tasks |\n| **Complex Refactoring** | Checkpoints + Planning Mode + Hooks |\n\n---\n\n## FAQ\n\n**Is this free?**\nYes. MIT licensed, free forever. Use it in personal projects, at work, in your team — no restrictions beyond including the license notice.\n\n**Is this maintained?**\nActively. The guide is synced with every Claude Code release. Current version: v2.1.160 (June 2026), compatible with Claude Code 2.1+.\n\n**How is this different from the official docs?**\nThe official docs are a feature reference. This guide is a tutorial with diagrams, production-ready templates, and a progressive learning path. They complement each other — start here to learn, reference the docs when you need specifics.\n\n**How long does it take to go through everything?**\n11-13 hours for the full path. But you'll get immediate value in 15 minutes — just copy a slash command template and try it.\n\n**Can I use this with Claude Sonnet / Haiku / Opus?**\nYes. All templates work with Claude Sonnet 4.6, Claude Opus 4.8, and Claude Haiku 4.5.\n\n**Can I contribute?**\nAbsolutely. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. We welcome new examples, bug fixes, documentation improvements, and community templates.\n\n**Can I read this offline?**\nYes. Run `uv run scripts/build_epub.py` to generate an EPUB ebook with all content and rendered diagrams.\n\n---\n\n## Start Mastering Claude Code Today\n\nYou already have Claude Code installed. The only thing between you and 10x productivity is knowing how to use it. This guide gives you the structured path, the visual explanations, and the copy-paste templates to get there.\n\nMIT licensed. Free forever. Clone it, fork it, make it yours.\n\n**[Start the Learning Path ->](LEARNING-ROADMAP.md)** | **[Browse the Feature Catalog](CATALOG.md)** | **[Get Started in 15 Minutes](#get-started-in-15-minutes)**\n\n---\n\n<details>\n<summary>Quick Navigation — All Features</summary>\n\n| Feature | Description | Folder |\n|---------|-------------|--------|\n| **Feature Catalog** | Complete reference with installation commands | [CATALOG.md](CATALOG.md) |\n| **Slash Commands** | User-invoked shortcuts | [01-slash-commands/](01-slash-commands/) |\n| **Memory** | Persistent context | [02-memory/](02-memory/) |\n| **Skills** | Reusable capabilities | [03-skills/](03-skills/) |\n| **Subagents** | Specialized AI assistants | [04-subagents/](04-subagents/) |\n| **MCP Protocol** | External tool access | [05-mcp/](05-mcp/) |\n| **Hooks** | Event-driven automation | [06-hooks/](06-hooks/) |\n| **Plugins** | Bundled features | [07-plugins/](07-plugins/) |\n| **Checkpoints** | Session snapshots & rewind | [08-checkpoints/](08-checkpoints/) |\n| **Advanced Features** | Planning, thinking, background tasks | [09-advanced-features/](09-advanced-features/) |\n| **CLI Reference** | Commands, flags, and options | [10-cli/](10-cli/) |\n| **Blog Posts** | Real-world usage examples | [Blog Posts](https://medium.com/@luongnv89) |\n\n</details>\n\n<details>\n<summary>Feature Comparison</summary>\n\n| Feature | Invocation | Persistence | Best For |\n|---------|-----------|------------|----------|\n| **Slash Commands** | Manual (`/cmd`) | Session only | Quick shortcuts |\n| **Memory** | Auto-loaded | Cross-session | Long-term learning |\n| **Skills** | Auto-invoked | Filesystem | Automated workflows |\n| **Subagents** | Auto-delegated | Isolated context | Task distribution |\n| **MCP Protocol** | Auto-queried | Real-time | Live data access |\n| **Hooks** | Event-triggered | Configured | Automation & validation |\n| **Plugins** | One command | All features | Co",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "Asabeneh",
    "name": "30-Days-Of-Python",
    "full_name": "Asabeneh/30-Days-Of-Python",
    "url": "https://github.com/Asabeneh/30-Days-Of-Python",
    "description": "The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw",
    "language": "Python",
    "total_stars": 66439,
    "forks": 12413,
    "stars_this_period": 128,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "30-days-of-python",
        "data",
        "data-science",
        "database",
        "flask",
        "fullstack",
        "github",
        "heroku",
        "matplotlib",
        "ml",
        "mongodb",
        "numpy",
        "pandas",
        "python",
        "python3"
      ],
      "license": "NOASSERTION",
      "open_issues": 160,
      "created_at": "2019-11-19T17:24:16Z",
      "pushed_at": "2026-04-04T17:59:06Z",
      "homepage": "",
      "default_branch": "master",
      "forks": 12413,
      "watchers": 995,
      "archived": false,
      "size_kb": 30842
    },
    "readme_content": "# 🐍 30 Days Of Python\n\n|# Day | Topics                                                    |\n|------|:---------------------------------------------------------:|\n| 01  |  [Introduction](./readme.md)|\n| 02  |  [Variables, Built-in Functions](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)|\n| 03  |  [Operators](./03_Day_Operators/03_operators.md)|\n| 04  |  [Strings](./04_Day_Strings/04_strings.md)|\n| 05  |  [Lists](./05_Day_Lists/05_lists.md)|\n| 06  |  [Tuples](./06_Day_Tuples/06_tuples.md)|\n| 07  |  [Sets](./07_Day_Sets/07_sets.md)|\n| 08  |  [Dictionaries](./08_Day_Dictionaries/08_dictionaries.md)|\n| 09  |  [Conditionals](./09_Day_Conditionals/09_conditionals.md)|\n| 10  |  [Loops](./10_Day_Loops/10_loops.md)|\n| 11  |  [Functions](./11_Day_Functions/11_functions.md)|\n| 12  |  [Modules](./12_Day_Modules/12_modules.md)|\n| 13  |  [List Comprehension](./13_Day_List_comprehension/13_list_comprehension.md)|\n| 14  |  [Higher Order Functions](./14_Day_Higher_order_functions/14_higher_order_functions.md)|\n| 15  |  [Python Type Errors](./15_Day_Python_type_errors/15_python_type_errors.md)|\n| 16 |  [Python Date time](./16_Day_Python_date_time/16_python_datetime.md) |\n| 17 |  [Exception Handling](./17_Day_Exception_handling/17_exception_handling.md)|\n| 18 |  [Regular Expressions](./18_Day_Regular_expressions/18_regular_expressions.md)|\n| 19 |  [File Handling](./19_Day_File_handling/19_file_handling.md)|\n| 20 |  [Python Package Manager](./20_Day_Python_package_manager/20_python_package_manager.md)|\n| 21 |  [Classes and Objects](./21_Day_Classes_and_objects/21_classes_and_objects.md)|\n| 22 |  [Web Scraping](./22_Day_Web_scraping/22_web_scraping.md)|\n| 23 |  [Virtual Environment](./23_Day_Virtual_environment/23_virtual_environment.md)|\n| 24 |  [Statistics](./24_Day_Statistics/24_statistics.md)|\n| 25 |  [Pandas](./25_Day_Pandas/25_pandas.md)|\n| 26 |  [Python web](./26_Day_Python_web/26_python_web.md)|\n| 27 |  [Python with MongoDB](./27_Day_Python_with_mongodb/27_python_with_mongodb.md)|\n| 28 |  [API](./28_Day_API/28_API.md)|\n| 29 |  [Building API](./29_Day_Building_API/29_building_API.md)|\n| 30 |  [Conclusions](./30_Day_Conclusions/30_conclusions.md)|\n\n<small>🧡🧡🧡 HAPPY CODING 🧡🧡🧡</small>\n\n---\n<div>\n<h2>💖 Sponsors</h2>\n\n<p>Our amazing sponsors for supporting my open-source contribution and the <strong>30 Days of Challenge</strong> series!</p>\n\n<h3>Current Sponsors</h3>\n<hr />\n<div align=\"center\">\n  <a href=\"https://ref.wisprflow.ai/MPMzRGE\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <picture>\n      <!-- Dark mode -->\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/Asabeneh/asabeneh/master/images/Wispr_Flow-Logo-white.png\" />\n      <!-- Light mode (fallback) -->\n      <img src=\"https://raw.githubusercontent.com/Asabeneh/asabeneh/master/images/Wispr_Flow-logo.png\"\n           width=\"400px\"\n           alt=\"Wispr Flow Logo\"\n           title=\"Wispr Flow\" />\n    </picture>\n  </a>\n\n  <h1>\n    <a href=\"https://ref.wisprflow.ai/MPMzRGE\" target=\"_blank\" rel=\"noopener noreferrer\">\n      Talk to code, stay in the Flow.\n    </a>\n  </h1>\n\n  <h2>\n    <a href=\"https://ref.wisprflow.ai/MPMzRGE\" target=\"_blank\" rel=\"noopener noreferrer\">\n      Flow is built for devs who live in their tools. Speak and give more context, get better results.\n    </a>\n  </h2>\n</div>\n<hr />\n<div align=\"center\">\n  <a href=\"https://client.petrosky.io/aff.php?aff=402\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <picture>\n      <!-- Dark mode -->\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/Asabeneh/asabeneh/master/images/petrosky-logo-white.png\" />\n      <!-- Light mode (fallback) -->\n      <img src=\"https://raw.githubusercontent.com/Asabeneh/asabeneh/master/images/petrosky-logo-black.png\"\n           width=\"400px\"\n           alt=\"Petrosky Logo\"\n           title=\"Petrosky\" />\n    </picture>\n  </a>\n\n  <h1>\n    <a href=\"https://client.petrosky.io/aff.php?aff=402\" target=\"_blank\" rel=\"noopener noreferrer\">\n      A hosting for your entire journey!\n    </a>\n  </h1>\n\n  <h2>\n    <a href=\"https://client.petrosky.io/aff.php?aff=402\" target=\"_blank\" rel=\"noopener noreferrer\">\n      Affordable VPS Hosting Services For All Your  Needs\n    </a>\n  </h2>\n</div>\n\n---\n\n### 🙌 Become a Sponsor\n\nYou can support this project by becoming a sponsor on **[GitHub Sponsors](https://github.com/sponsors/asabeneh)** or through [PayPal](https://www.paypal.me/asabeneh).\n\nEvery contribution, big or small, makes a huge difference. Thank you for your support! 🌟\n\n---\n\n<div align=\"center\">\n  <h1> 30 Days Of Python: Day 1 - Introduction</h1>\n  <a class=\"header-badge\" target=\"_blank\" href=\"https://www.linkedin.com/in/asabeneh/\">\n  <img src=\"https://img.shields.io/badge/style--5eba00.svg?label=LinkedIn&logo=linkedin&style=social\">\n  </a>\n  <a class=\"header-badge\" target=\"_blank\" href=\"https://twitter.com/Asabeneh\">\n  <img alt=\"Twitter Follow\" src=\"https://img.shields.io/twitter/follow/asabeneh?style=social\">\n  </a>\n\n  <sub>Author:\n  <a href=\"https://www.linkedin.com/in/asabeneh/\" target=\"_blank\">Asabeneh Yetayeh</a><br>\n  <small> Second Edition: July, 2021</small>\n  </sub>\n</div>\n\n🇧🇷 [Portuguese](./Portuguese/README.md)\n🇨🇳 [中文](./Chinese/README.md)\n\n[Day 2 >>](./02_Day_Variables_builtin_functions/02_variables_builtin_functions.md)\n\n![30DaysOfPython](./images/30DaysOfPython_banner3@2x.png)\n\n- [🐍 30 Days Of Python](#-30-days-of-python)\n    - [🙌 Become a Sponsor](#-become-a-sponsor)\n- [📘 Day 1](#-day-1)\n  - [Welcome](#welcome)\n  - [Introduction](#introduction)\n  - [Why Python ?](#why-python-)\n  - [Environment Setup](#environment-setup)\n    - [Installing Python](#installing-python)\n    - [Python Shell](#python-shell)\n    - [Installing Visual Studio Code](#installing-visual-studio-code)\n      - [How to use visual studio code](#how-to-use-visual-studio-code)\n  - [Basic Python](#basic-python)\n    - [Python Syntax](#python-syntax)\n    - [Python Indentation](#python-indentation)\n    - [Comments](#comments)\n    - [Data types](#data-types)\n      - [Number](#number)\n      - [String](#string)\n      - [Booleans](#booleans)\n      - [List](#list)\n      - [Dictionary](#dictionary)\n      - [Tuple](#tuple)\n      - [Set](#set)\n    - [Checking Data types](#checking-data-types)\n    - [Python File](#python-file)\n  - [💻 Exercises - Day 1](#-exercises---day-1)\n    - [Exercise: Level 1](#exercise-level-1)\n    - [Exercise: Level 2](#exercise-level-2)\n    - [Exercise: Level 3](#exercise-level-3)\n\n# 📘 Day 1\n\n## Welcome\n\n**Congratulations** for deciding to participate in a _30 days of Python_ programming challenge. In this challenge, you will learn everything you need to be a python programmer and the whole concept of programming. In the end of the challenge you will get a _30DaysOfPython_ programming challenge certificate.\n\nIf you would like to actively engage in the challenge, you may join the [30DaysOfPython challenge](https://t.me/ThirtyDaysOfPython) telegram group.\n\n## Introduction\n\nPython is a high-level programming language for general-purpose programming. It is an open source, interpreted, object-oriented programming language. Python was created by a Dutch programmer, Guido van Rossum. The name of the Python programming language was derived from a British sketch comedy series, *Monty Python's Flying Circus*.  The first version was released on February 20, 1991. This 30 days of Python challenge will help you learn the latest version of Python, Python 3 step by step. The topics are broken down into 30 days, where each day contains several topics with easy-to-understand explanations, real-world examples, and many hands on exercises and projects.\n\nThis challenge is designed for beginners and professionals who want to learn python programming language. It may take 30 to 100 days to complete the challenge. People who actively participate in the telegram group have a high probability of completing the challenge.\n\nThis challenge is easy to read, written in conversational English, engaging, motivating and at the same time, it is very demanding. You need to allocate much time to finish this challenge. If you are a visual learner, you may get the video lesson on <a href=\"https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw\"> Washera</a> YouTube channel. You may start from [Python for Absolute Beginners video](https://youtu.be/OCCWZheOesI). Subscribe the channel, comment and ask questions on YouTube videos and be proactive, the author will eventually notice you.\n\nThe author likes to hear your opinion about the challenge, share the author by expressing your thoughts about the 30DaysOfPython challenge. You can leave your testimonial on this [link](https://www.asabeneh.com/testimonials)\n\n## Why Python ?\n\nIt is a programming language which is very close to human language and because of that, it is easy to learn and use.\nPython is used by various industries and companies (including Google). It has been used to develop web applications, desktop applications, system administration, and machine learning libraries. Python is a highly embraced language in the data science and machine learning community. I hope this is enough to convince you to start learning Python. Python is eating the world and you are killing it before it eats you.\n\n## Environment Setup\n\n### Installing Python\n\nTo run a python script you need to install python. Let's [download](https://www.python.org/) python.\nIf your are a windows user, click the button encircled in red.\n\n[![installing on Windows](./images/installing_on_windows.png)](https://www.python.org/)\n\nIf you are a macOS user, click the button encircled in red.\n\n[![installing on Windows](./images/installing_on_macOS.png)](https://www.python.org/)\n\nTo check if python is installed write the following command on your device terminal.\n\n```shell\npython3 --version\n```\n\n![Python Version](./images/python_versio.png)\n\nAs you can see from the terminal, I am using _Python 3.7.5_ version at the moment. Your version of Python might be different from mine by but it should be 3.6 or above. If you manage to see the python version, well done. Python has been installed on your machine. Continue to the next section.\n\n### Python Shell\n\nPython is an interpreted scripting language, so it does not need to be compiled. It means it executes the code line by line. Python comes with a _Python Shell (Python Interactive Shell)_. It is used to execute a single python command and get the result.\n\nPython Shell waits for the Python code from the user. When you enter the code, it interprets the code and shows the result in the next line.\nOpen your terminal or command prompt(cmd) and write:\n\n```shell\npython\n```\n\n![Python Scripting Shell](./images/opening_python_shell.png)\n\nThe Python interactive shell is opened and it is waiting for you to write Python code(Python script). You will write your Python script next to this symbol >>> and then click Enter.\nLet us write our very first script on the Python scripting shell.\n\n![Python script on Python shell](./images/adding_on_python_shell.png)\n\nWell done, you wrote your first Python script on Python interactive shell. How do we close the Python interactive shell ?\nTo close the shell, next to this symbol >>> write **exit()** command and press Enter.\n\n![Exit from python shell](./images/exit_from_shell.png)\n\nNow, you know how to open the Python interactive shell and how to exit from it.\n\nPython will give you results if you write scripts that Python understands, if not it returns errors. Let's make a deliberate mistake and see what Python will return.\n\n![Invalid Syntax Error](./images/invalid_syntax_error.png)\n\nAs you can see from the returned error, Python is so clever that it knows the mistake we made and which was _Syntax Error: invalid syntax_. Using x as multiplication in Python is a syntax error because (x) is not a valid syntax in Python. Instead of (**x**) we use asterisk (*) for multiplication. The returned error clearly shows what to fix.\n\nThe proce",
    "strategic_keywords": [],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 0,
      "novelty": 4,
      "productize": 11,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 8,
      "total": 52
    },
    "strategic_score": 52
  },
  {
    "owner": "Wei-Shaw",
    "name": "sub2api",
    "full_name": "Wei-Shaw/sub2api",
    "url": "https://github.com/Wei-Shaw/sub2api",
    "description": "Sub2API is an open-source relay platform that unifies Claude, OpenAI, Gemini, and Antigravity subscriptions into a single endpoint. It supports account sharing and cost-sharing, with seamless native tool compatibility.",
    "language": "Go",
    "total_stars": 29361,
    "forks": 5977,
    "stars_this_period": 118,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "2api",
        "antigravity2api",
        "cc2api",
        "claude",
        "claude-code",
        "codex",
        "crs",
        "crs2",
        "gemini"
      ],
      "license": "LGPL-3.0",
      "open_issues": 1746,
      "created_at": "2025-12-18T02:26:18Z",
      "pushed_at": "2026-06-27T18:00:57Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 5977,
      "watchers": 61,
      "archived": false,
      "size_kb": 70477
    },
    "readme_content": "# Sub2API\n\n<div align=\"center\">\n\n[![Go](https://img.shields.io/badge/Go-1.25.7-00ADD8.svg)](https://golang.org/)\n[![Vue](https://img.shields.io/badge/Vue-3.4+-4FC08D.svg)](https://vuejs.org/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-15+-336791.svg)](https://www.postgresql.org/)\n[![Redis](https://img.shields.io/badge/Redis-7+-DC382D.svg)](https://redis.io/)\n[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED.svg)](https://www.docker.com/)\n\n<a href=\"https://trendshift.io/repositories/21823\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/21823\" alt=\"Wei-Shaw%2Fsub2api | Trendshift\" width=\"250\" height=\"55\"/></a>\n\n**AI API Gateway Platform for Subscription Quota Distribution**\n\nEnglish | [中文](README_CN.md) | [日本語](README_JA.md)\n\n</div>\n\n## ⚠️ Important Notice\n\nPlease read the following carefully before using this project:\n\n- **🚨 Terms of Service Risk**: Using this project may violate the terms of service of Anthropic and other upstream providers. Please review the relevant providers' user agreements before use; all risks arising from such use are borne solely by the user.\n- **⚖️ Compliant Use**: Use this project only in compliance with the laws and regulations of your country or region. Any unlawful use is strictly prohibited.\n- **📖 Disclaimer**: This project is provided for technical learning and research purposes only. The authors assume no liability for account bans, service interruptions, data loss, or any other direct or indirect damages resulting from the use of this project.\n\n## ❤️ Sponsors\n\n> [Want to appear here?](mailto:support@pincc.ai)\n\n<table>\n\n<tr>\n<td width=\"180\"><a href=\"https://www.openmodel.ai?ref=sub2api\"><img src=\"assets/partners/logos/openmodel.jpg\" alt=\"openmodel\" width=\"150\"></a></td>\n<td>One API, every top model! <a href=\"https://www.openmodel.ai?ref=sub2api\">OpenModel</a> is a production-grade, high-availability AI API gateway that makes your applications truly fast and stable: automatic failover, smart routing to the best-performing channel, and a production-grade SLA. An SLA that far surpasses any single provider — making stability your core competitive advantage. Works directly with Claude Code, Codex, and Gemini CLI. Register via this link to get started.</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://etok.ai\"><img src=\"assets/partners/logos/etok.png\" alt=\"ETok\" width=\"150\"></a></td>\n<td>Thanks to ETok.ai for sponsoring this project! ETok.ai is dedicated to building a one-stop AI programming tool service platform. We offer professional Claude Code packages and technical community services, with support for Google Gemini and OpenAI Codex. Through carefully designed plans and a professional tech community, we provide developers with reliable service guarantees and continuous technical support, making AI-assisted programming a true productivity tool. Click <a href=\"https://etok.ai\">here</a> to register!</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://aigocode.com/invite/SUB2API\"><img src=\"assets/partners/logos/aigocode.png\" alt=\"AIGoCode\" width=\"150\"></a></td>\n<td>Thanks to AIGoCode for sponsoring this project! AIGoCode is an all-in-one platform that integrates Claude Code, Codex, and the latest Gemini models, providing you with stable, efficient, and highly cost-effective AI coding services. The platform offers flexible subscription plans, zero risk of account suspension, direct access with no VPN required, and lightning-fast responses. AIGoCode has prepared a special benefit for sub2api users: if you register via <a href=\"https://aigocode.com/invite/SUB2API\">this link</a>, you'll receive an extra 10% bonus credit on your first top-up!</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://code.silkapi.com/register?aff=SUB2API\"><img src=\"assets/partners/logos/silkapi.png\" alt=\"silkapi\" width=\"150\"></a></td>\n<td>Thanks to SilkAPI for sponsoring this project! <a href=\"https://code.silkapi.com/register?aff=SUB2API\">SilkAPI</a> is a relay service built on Sub2API, specializing in providing high-speed and stable Codex API relay.</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://www.aicodemirror.com/register?invitecode=KMVZQM\"><img src=\"assets/partners/logos/AICodeMirror.jpg\" alt=\"AICodeMirror\" width=\"150\"></a></td>\n<td>Thanks to AICodeMirror for sponsoring this project! AICodeMirror provides official high-stability relay services for Claude Code / Codex / Gemini CLI, with enterprise-grade concurrency, fast invoicing, and 24/7 dedicated technical support. Claude Code / Codex / Gemini official channels at 38% / 2% / 9% of original price, with extra discounts on top-ups! AICodeMirror offers special benefits for sub2api users: register via <a href=\"https://www.aicodemirror.com/register?invitecode=KMVZQM\">this link</a> to enjoy 20% off your first top-up, and enterprise customers can get up to 25% off!</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://shop.bmoplus.com/?utm_source=github\"><img src=\"assets/partners/logos/bmoplus.jpg\" alt=\"bmoplus\" width=\"150\"></a></td>\n<td>Huge thanks to BmoPlus for sponsoring this project! BmoPlus is a highly reliable AI account provider built strictly for heavy AI users and developers. They offer rock-solid, ready-to-use accounts and official top-up services for ChatGPT Plus / ChatGPT Pro (Full Warranty) / Claude Pro / Super Grok / Gemini Pro. By registering and ordering through <a href=\"https://shop.bmoplus.com/?utm_source=github\">BmoPlus - Premium AI Accounts & Top-ups</a>, users can unlock the mind-blowing rate of 10% of the official GPT subscription price (90% OFF)</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://bestproxy.com/?keyword=a2e8iuol\"><img src=\"assets/partners/logos/bestproxy.png\" alt=\"bestproxy\" width=\"150\"></a></td>\n<td>Thanks to Bestproxy for sponsoring this project! <a href=\"https://bestproxy.com/?keyword=a2e8iuol\">Bestproxy</a> provides high-purity residential IPs with dedicated one-IP-per-account support. By combining real home networks with fingerprint isolation, it enables link environment isolation and reduces the probability of association-based risk control.</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://pateway.ai/?ch=1tsfr51\"><img src=\"assets/partners/logos/pateway.png\" alt=\"pateway\" width=\"150\"></a></td>\n<td>Thanks to PatewayAI for sponsoring this project! <a href=\"https://pateway.ai/?ch=1tsfr51\">PatewayAI</a> is a premium API relay built for heavy AI developers, offering the full Claude and Codex series sourced 100% from official providers, with transparent token-level billing. Enterprise plans include high concurrency, dedicated management, contracts, and invoicing. Register now to get $3 in trial credits, top-ups from 60% off, and referral bonuses up to $150.</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://api.pptoken.org/register?promo=SUB2API\"><img src=\"assets/partners/logos/pptoken.png\" alt=\"pptoken\" width=\"150\"></a></td>\n<td>Thanks to PPToken.org for sponsoring this project! <a href=\"https://api.pptoken.org/register?promo=SUB2API\">PPToken.org</a> specializes in GPT model API relay services, supporting Codex, Claude Code, OpenAI-compatible clients, and Gemini CLI integration. Top-ups are 1:1 (¥1 = $1 credit); GPT models start at 0.16x rate multiplier, with overall cost at roughly 2.2% of official pricing and first-token latency around 1 second — ideal for developers seeking low-cost, high-speed access to GPT model capabilities. Technical support: 24/7 real human responses (no bots), @tech in the group chat and get a reply within 10 minutes. Sponsor benefit: the first 200 users who register via the <a href=\"https://api.pptoken.org/register?promo=SUB2API\">exclusive registration link</a> and enter promo code `SUB2API` can claim free Codex / Claude Code trial credits — no minimum spend, no card required.\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://unity2.ai/register?source=sub2api\"><img src=\"assets/partners/logos/unity2.png\" alt=\"unity2\" width=\"150\"></a></td>\n<td>Thanks to Unity2 for sponsoring this project! <a href=\"https://unity2.ai/register?source=sub2api\">Unity2</a> is a high-performance AI model API relay for individuals, teams, and enterprises, handling 30B+ tokens/day with 5000 RPM concurrency. One API Key works across Claude Code, Codex, OpenAI models, IDE plugins, and Agent workflows, with balance billing, bundled subscriptions, enterprise invoicing, and 1-on-1 support. <a href=\"https://unity2.ai/register?source=sub2api\">Register</a> to claim $2 in balance, plus $10 more by joining the official group — up to $12 in free credit.\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://veilx.io/#/hello/SJRBRVDV\"><img src=\"assets/partners/logos/veilx.png\" alt=\"veilx\" width=\"150\"></a></td>\n<td>Thanks to Veilx for sponsoring this project! <a href=\"https://veilx.io/#/hello/SJRBRVDV\">Veilx</a> CDN is purpose-built for large-scale AI API traffic, deeply optimized for relay services and call chains across OpenAI, Claude, Gemini, and scenarios like chat, image generation, embeddings, and streaming — delivering lower latency and higher stability under heavy concurrency. It also offers China three-network optimized return lines, making it ideal for global AI relay platforms, overseas AI SaaS, and cross-border high-concurrency deployments.\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://roxybrowser.com/invite/bgGKG7\"><img src=\"assets/partners/logos/RoxyBrowser.png\" alt=\"veilx\" width=\"150\"></a></td>\n<td>Thanks to RoxyBrowser for sponsoring this project! <a href=\"https://roxybrowser.com/invite/bgGKG7\">RoxyBrowser</a> RoxyBrowser is the perfect partner for Sub2API: it features a built-in native Roxy AI Agent and high-quality native residential IPs, supports batch automation via simple commands, and significantly boosts security and efficiency for multi-account management! Click <a href=\"https://roxybrowser.com/invite/bgGKG7\">this link</a> to sign up and receive a free residential IP package plus a 10% lifetime discount.\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://apikl.com\"><img src=\"assets/partners/logos/apikl.png\" alt=\"apikl\" width=\"150\"></a></td>\n<td>Thanks to Apikl for sponsoring this project! Built on Sub2API, the platform provides developers with relay services for Codex / Claude series models, focusing on long-term stability, high-speed direct connections, and excellent cost-effectiveness. It offers pay-as-you-go balance billing, enterprise-grade official invoices, and one-on-one dedicated support. <a href=\"https://apikl.com\">Register now</a> for a 1:1 top-up bonus — double your balance!\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://tokeneum.ai\"><img src=\"assets/partners/logos/tokeneum.png\" alt=\"tokeneum\" width=\"150\"></a></td>\n<td>Thanks to TokenEum for sponsoring this project! <a href=\"https://tokeneum.ai\">TokenEum</a> is a comprehensive AI model aggregation platform and intelligent agent development company. It brings together top-tier international models — including Claude, Gemini, and OpenAI — alongside leading open-source models such as GLM, Qwen, and Kimi, offering a wide range of options across different quality and price tiers to suit every need. TokenEum also provides access to cutting-edge video generation models like Seedance2.0 and Happy Horse. Committed to transparency and honest business practices, TokenEum ensures all model information is accurate and reliable. Visit <a href=\"https://tokeneum.ai\">tokeneum.ai</a> to get started.\n</td>\n</tr>\n\n<tr>\n<td width=\"180\"><a href=\"https://666api.work/sub2api\"><img src=\"assets/partners/logos/666api.jpg\" alt=\"666api\" width=\"150\"></a></td>\n<td>Thanks to 666api for sponsoring this project! <a href=\"https://666api.work/sub2api\">666api</a> is an all-in-one platform offering:<br>\n⚡ API Relay — Pay-as-you-go access to global models sourced 100% from official providers, up to 75% off official pricing<br>\n&nbsp;&nbsp;&nbsp;&nbsp;Exclusive: Zhipu GLM 50% off · DeepSeek V4-pro 50% off · Seedance 2.0 8% off (whitelisted) · HappyHorse Overseas 30% off (whitelisted)<br>\n🔑 GPT Subscription",
    "strategic_keywords": [],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 0,
      "novelty": 8,
      "productize": 11,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 6,
      "total": 54
    },
    "strategic_score": 54
  },
  {
    "owner": "moorcheh-ai",
    "name": "memanto",
    "full_name": "moorcheh-ai/memanto",
    "url": "https://github.com/moorcheh-ai/memanto",
    "description": "Memory that AI Agents Love!",
    "language": "Python",
    "total_stars": 1340,
    "forks": 393,
    "stars_this_period": 117,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-memory",
        "ai-agents",
        "crewai",
        "langchain",
        "llm-memory",
        "long-term-memory",
        "memanto",
        "memory",
        "moorcheh",
        "rag",
        "semantic-memory",
        "stateful-ai"
      ],
      "license": "MIT",
      "open_issues": 171,
      "created_at": "2026-03-23T23:08:38Z",
      "pushed_at": "2026-06-26T22:32:07Z",
      "homepage": "https://memanto.ai",
      "default_branch": "main",
      "forks": 393,
      "watchers": 8,
      "archived": false,
      "size_kb": 15620
    },
    "readme_content": "<p align=\"center\">\n    <a href=\"https://www.memanto.ai/\">\n    <img alt=\"MEMANTO Logo\" src=\"https://github.com/moorcheh-ai/memanto/raw/main/assets/memanto-logo.svg\" width=\"500\">\n    </a>\n</p>\n\n<div align=\"center\">\n  <h1>Memory that AI Agents Love!</h1>\n</div>\n\n<h2 align=\"center\">\n  <em>A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.</em>\n</h2>\n\n<p align=\"center\">\n  Persistent memory for Claude Code, Cursor, Codex, and 14+ other agents, built on the world's first information-theoretic search engine. 100% free, open source, and runs entirely on your machine - no API keys, no vector database, no backend to babysit.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://memanto.ai/discord\">\n    <img src=\"https://img.shields.io/badge/Join-Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white\" alt=\"Join Discord\">\n  </a>\n  <a href=\"https://www.youtube.com/watch?v=vEtOaoweIG4\">\n    <img src=\"https://img.shields.io/badge/Setup-Video-FF0000?style=for-the-badge&logo=youtube&logoColor=white\" alt=\"Setup Video\">\n  </a>\n  <a href=\"https://docs.memanto.ai\">\n    <img src=\"https://img.shields.io/badge/Docs-memanto.ai-000000?style=for-the-badge&logo=readthedocs&logoColor=white\" alt=\"Docs\">\n  </a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://pepy.tech/projects/memanto\"><img alt=\"PyPI - Total Downloads\" src=\"https://static.pepy.tech/personalized-badge/memanto?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads\"></a>\n    <a href=\"https://deepwiki.com/moorcheh-ai/memanto\"><img alt=\"Ask DeepWiki\" src=\"https://deepwiki.com/badge.svg\"></a>\n    <a href=\"https://opensource.org/licenses/MIT\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-yellow.svg\"></a>\n    <a href=\"https://pypi.org/project/memanto/\"><img alt=\"PyPI Version\" src=\"https://img.shields.io/pypi/v/memanto.svg?color=%2334D058\"></a>\n    <a href=\"https://x.com/moorcheh_ai\" target=\"_blank\"><img src=\"https://img.shields.io/twitter/url/https/twitter.com/langchain.svg?style=social&label=Follow%20%40Moorcheh.ai\" alt=\"Twitter / X\"></a>\n</p>\n\n\n<p align=\"center\"><a href=\"https://trendshift.io/repositories/27378\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/27378\" alt=\"moorcheh-ai%2Fmemanto | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a></p>\n\n<p align=\"center\">\n  <a href=\"https://www.star-history.com/?repos=moorcheh-ai%2Fmemanto&type=date&legend=top-left\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=moorcheh-ai/memanto&type=date&theme=dark&legend=top-left\" />\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=moorcheh-ai/memanto&type=date&legend=top-left\" />\n    <img alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=moorcheh-ai/memanto&type=date&legend=top-left\" />\n  </picture>\n  </a>\n</p>\n\n\n\n---\n## What Is MEMANTO?\n\n**MEMANTO is a memory agent. It remembers, recalls, and answers — so your agents can achieve long-term goals and avoid confusion.**\n\nMost memory tools today are passive infrastructure: agents have to query them, parse the results, and figure out what to do next. MEMANTO is built differently. It's an active memory agent designed from the gaps agents themselves named when asked about their memory — three operations (`remember`, `recall`, `answer`) that give your agents persistent context across sessions, with state-of-the-art retrieval and zero ingestion latency.\n\n<div align=\"center\">\n  <h1>Memanto in action</h1>\n  <div style=\"display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; margin: 20px 0;\">\n    <div style=\"text-align: center;\">\n      <h2 style=\"margin-top: 8px;\">Without Memanto</strong></h2>\n      <img src=\"https://github.com/moorcheh-ai/memanto/raw/main/assets/Before.gif\" alt=\"Before\" width=\"1100\" style=\"border-radius: 8px;\">\n    </div>\n    <div style=\"text-align: center;\">\n        <h2 style=\"margin-top: 8px;\">With Memanto Connected</strong></h2>\n        <img src=\"https://github.com/moorcheh-ai/memanto/raw/main/assets/After.gif\" alt=\"After\" width=\"1100\" style=\"border-radius: 8px;\">\n    </div>\n  </div>\n</div>\n\n## Get started in 2 minutes\n\nWorks on macOS, Linux, and Windows.\n\n**Option A — Fully local (no account, no API key):**\n```bash\npip install memanto\nmemanto           # choose \"On-Prem\" — guides through Docker + Ollama setup\n```\nRequires Docker. Everything runs and stays on your machine.\n\n**Option B — Free cloud (no card, ~60 seconds):**\n```bash\npip install memanto\nmemanto           # choose \"Cloud\" — paste your free Moorcheh API key\n```\nGet your free API from : https://console.moorcheh.ai/api-keys\n\nSwitch between local and cloud at any time with `memanto config backend`.\n\n---\n\n## What you get\n\n- **No more re-explaining your codebase** after every context reset. Memanto persists across sessions, your agent picks up where it left off.\n- **Fewer tokens burned on repeated context.** Memories are retrieved only when relevant, so context windows go further.\n- **Memories searchable the instant they're stored.** Zero indexing wait, no LLM extraction tax at write time.\n- **One `pip install`.** No vector DB to provision, no schema, no rerankers, no backend service to babysit.\n- **Zero idle cost.** Cloud scales to zero when not in use. On-prem runs only when you use it.\n\n---\n\n## Integrations\n\nWorks with Claude Code, Cursor, Codex, Windsurf, Cline, Continue, Goose, GitHub Copilot, and more. See the [full list →](https://docs.memanto.ai/integrations/overview)\n\n```bash\nmemanto connect <integration-tool-id> # integrates in one command\n#eg: memanto connect claude-code    \n```\n\n---\n\n## The Six Gaps\n\nMost memory tools are passive infrastructure — agents have to query them, parse the results, and figure out what to do. Memanto is an active memory agent built from the gaps models themselves named:\n\n| # | Gap | What MEMANTO does about it |\n| --- | --- | --- |\n| 1 | **Static injection** — memory arrives as a blob, not queryable by relevance | Queryable, not injectable |\n| 2 | **No temporal decay** — a preference from 6 months ago weighs the same as yesterday's deadline | Versioning, recency signals, temporal queries |\n| 3 | **No provenance** — can't tell explicit facts from inferred patterns or outdated info | Confidence + provenance metadata on every memory |\n| 4 | **Flat memory** — episodic, semantic, and procedural all collapsed to one layer | Typed and hierarchical — 13 built-in memory categories |\n| 5 | **No writeback** — contradictions silently coexist | Conflict detection, explicit versioning, no silent overwrites |\n| 6 | **Indexing delay** — mandatory LLM extraction, graph construction bottleneck | Zero-overhead ingestion, available at write time |\n\n\n> *\"My memory exists as a static snapshot injected into context — useful, but fundamentally passive.\"* — A model quote that became Memanto's design brief.\n\n---\n\n## Benchmarks\n\n- **89.8% on LongMemEval** and **87.1% on LoCoMo** — outperforming Mem0, Zep, and Letta. [Public datasets →](https://huggingface.co/moorcheh)\n- **Three primitives, not two**: `remember`, `recall`, and `answer`  LLM-grounded responses from memory, no extra API key.\n- **Single-query retrieval.** No multi-stage pipelines, no graph schema, no rerankers.\n- **Typed semantic memory.** 13 categories — `instruction`, `fact`, `decision`, `goal`, `preference`, `relationship`, and more.\n\n---\n\n## Architecture\n\nMemanto's retrieval is powered by [Moorcheh](https://moorcheh.ai), an information-theoretic semantic engine. It runs as a local Docker container (free, no account) or as a free cloud service (100K free operations) the `memanto` CLI manages either for you.\n\n<p align=\"center\">\n  <img alt=\"MEMANTO architecture\" src=\"https://github.com/moorcheh-ai/memanto/raw/main/assets/Architecture-diagram.png\" width=\"1000\">\n</p>\n\n### On-Prem\n\n<p align=\"center\">\n  <img alt=\"MEMANTO architecture\" src=\"https://github.com/moorcheh-ai/memanto/raw/main/assets/On-prem-architecture-diagram.png\" width=\"1000\">\n</p>\n\n---\n\n## Why Moorcheh?\n\nMoorcheh is the semantic engine behind Memanto's retrieval. Unlike vector databases that rely on approximate search and require indexing pipelines, Moorcheh uses an information-theoretic approach that returns exact results with zero indexing delay, write a memory and it's searchable immediately.\n\nThis means Memanto doesn't need a separate vector DB, embedding pipeline, or reranking stage. The Moorcheh engine runs as a local Docker container for on-prem users (no account needed) or as a managed cloud service with a free tier. Either way, it's invisible - the `memanto` CLI handles it.\n\n---\n\n## Setup & Demo\n\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/watch?v=vEtOaoweIG4\">\n    <img src=\"https://img.youtube.com/vi/vEtOaoweIG4/0.jpg\" alt=\"Watch the video\">\n  </a>\n</p>\n\n---\n\n## CLI Reference\n\n| Capability | Commands | What it does |\n|---|---|---|\n| System status dashboard | `memanto status` | View environment, configuration, server health, active session, and registered agents. |\n| Local REST API + Web UI | `memanto serve`, `memanto ui` | Run the MEMANTO REST API locally and open an interactive browser UI. (Optional for CLI usage). |\n| Agent lifecycle management | `memanto agent ...` | Create/list/delete agents, activate/deactivate sessions, and run `agent bootstrap` for an intelligence snapshot. |\n| Memory capture at scale | `memanto remember` | Store single memories, batch-ingest from JSON, or `--from-conversation` to automatically extract facts from chat logs. |\n| Single-memory editing & deletion | `memanto edit`, `memanto forget` | Update fields on an existing memory, or permanently delete a bad/outdated memory. |\n| File upload to memory | `memanto upload` | Upload documents (.pdf, .docx, .xlsx, .json, .txt, .csv, .md) directly into an agent's memory namespace — content becomes instantly searchable via `recall`. |\n| Advanced retrieval modes | `memanto recall` | Run standard search plus temporal queries (`--as-of`, `--changed-since`) with filters. |\n| Grounded QA over memory | `memanto answer` | Generate RAG answers using retrieved memory context. |\n| Daily intelligence workflows | `memanto daily-summary`, `memanto conflicts` | Generate summaries, detect contradictions, and resolve conflicts interactively. |\n| Session and automation controls | `memanto session ...`, `memanto schedule ...` | Inspect sessions and enable scheduled daily summary runs. |\n| Memory file pipelines | `memanto memory export`, `memanto memory sync` | Export structured memory markdown and sync `MEMORY.md` into projects. |\n| Configuration inspection | `memanto config show` | Inspect API key status, active agent/session, server settings, and schedule time. |\n| Multi-agent ecosystem integration | `memanto connect ...` | Connect/remove/list integrations for Claude Code, Codex, Cursor, Windsurf, Antigravity, Gemini CLI, Cline, Continue, OpenCode, Goose, Roo, GitHub Copilot, and Augment (local or global). |\n\nFor a complete command reference, see the [CLI User Guide](https://docs.memanto.ai/cli).\n\n### Supported Memory Types\n\n`instruction`, `fact`, `decision`, `goal`, `commitment`, `preference`, `relationship`, `context`, `event`, `learning`, `observation`, `artifact`, `error`\n\nUse memory types to categorize what you store so retrieval is cleaner and more controllable:\n- Save with a specific type: `memanto remember \"User prefers concise answers\" --type preference`\n- Filter by type when searching: `memanto recall \"user communication style\" --type preference`\n\n---\n\n## 📦 SDKs\n\n- **TypeScript / Node.js** — [`@moorcheh-ai/memanto`](sdks/typescript) — boots a local Memanto server via `uvx` and exposes an ergonomic `Memanto` client (`remember` / `recall` / `answer`).\n\n---\n\n## REST API\n\nMemanto exposes a session-based REST API for programmatic access. Start the server locally:\n\n```bash\nmemanto serve\n```\n\nFull endpoint refere",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"memanto\"\ndynamic = [\"version\"]\ndescription = \"A companion memory agent that lets your agents focus and improve while you keep ownership of everything they learn.\"\nauthors = [{ name = \"Majid Fekri\", email = \"majid.fekri@edgeaiinnovations.com\" }]\nrequires-python = \">=3.10,<4\"\nreadme = \"README.md\"\nlicense = \"MIT\"\nkeywords = [\n    \"memanto\",\n    \"moorcheh\",\n    \"memory layer\",\n    \"agentic ai\",\n    \"llm\",\n    \"agent memory\",\n    \"semantic memory\",\n    \"rag\",\n]\nclassifiers = [\n    \"Development Status :: 3 - Alpha\",\n    \"Environment :: Console\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Information Technology\",\n    \"License :: OSI Approved :: MIT License\",\n    \"Operating System :: OS Independent\",\n    \"Programming Language :: Python\",\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 :: Scientific/Engineering :: Artificial Intelligence\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n    \"Topic :: Utilities\",\n]\ndependencies = [\n    \"fastapi>=0.104.0\",\n    \"uvicorn[standard]>=0.24.0\",\n    \"moorcheh-sdk>=1.3.7\",\n    \"pydantic>=2.0.0\",\n    \"pydantic-settings>=2.0.0\",\n    \"python-dotenv>=1.0.0\",\n    \"pyjwt>=2.8.0\",\n    \"typer>=0.9.0\",\n    \"httpx>=0.25.0\",\n    \"pyyaml>=6.0\",\n    \"rich>=13.0.0\",\n    \"python-multipart>=0.0.7\",\n    \"rapidfuzz>=3.0.0\",\n]\n\n[project.urls]\nHomepage = \"https://www.moorcheh.ai\"\nDocumentation = \"https://docs.moorcheh.ai\"\nRepository = \"https://github.com/moorcheh-ai/memanto\"\n\"Bug Tracker\" = \"https://github.com/moorcheh-ai/memanto/issues\"\n\n[project.optional-dependencies]\nall = [\n    \"pytest>=8.2.0,<9\",\n    \"pytest-mock>=3.12.0,<4\",\n    \"mypy>=1.10.0,<2\",\n    \"build>=1.2.2.post1,<2\",\n    \"twine>=6.1.0,<7\",\n    \"pre-commit>=4.4.0,<5\",\n    \"ruff>=0.14.6,<0.15\",\n]\n\n[project.scripts]\nmemanto = \"memanto.cli.main:app\"\n\n[build-system]\nrequires = [\"hatchling\", \"hatch-vcs\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.version]\nsource = \"vcs\"\n\n[tool.hatch.version.raw-options]\ngit_describe_command = \"git describe --dirty --tags --long --match v*\"\n\n[tool.hatch.build.hooks.vcs]\nversion-file = \"memanto/app/_version.py\"\n\n[tool.hatch.build.targets.wheel]\npackages = [\"memanto\"]\n\n[dependency-groups]\ndev = [\n    \"pytest>=8.2.0,<9\",\n    \"pytest-asyncio>=0.21.0\",\n    \"pytest-mock>=3.12.0,<4\",\n    \"pytest-timeout>=2.1.0\",\n    \"mypy>=1.10.0,<2\",\n    \"build>=1.2.2.post1,<2\",\n    \"twine>=6.1.0,<7\",\n    \"pre-commit>=4.4.0,<5\",\n    \"ruff>=0.14.6,<0.15\",\n]\n\n# Optional: Configure MyPy\n[tool.mypy]\npython_version = \"3.10\"\nwarn_return_any = true\nwarn_unused_configs = true\nignore_missing_imports = true\nexclude = [\n    \"^integrations/\",\n    \"^examples/\",\n]\n\n# Optional: Configure pytest\n[tool.pytest.ini_options]\nminversion = \"6.0\"\naddopts = \"-ra -q\"\ntestpaths = [\n    \"tests\",\n]\nfilterwarnings = [\n\n]\n\n# Optional: Configure Ruff\n[tool.ruff]\ntarget-version = \"py310\"\nline-length = 88\nextend-exclude = [\"legacy_archive\"]\n\n[tool.ruff.lint]\nselect = [\n    \"E\",   # pycodestyle errors\n    \"W\",   # pycodestyle warnings\n    \"F\",   # pyflakes\n    \"I\",   # isort\n    \"B\",   # flake8-bugbear\n    \"C4\",  # flake8-comprehensions\n    \"UP\",  # pyupgrade\n]\nignore = [\n    \"B904\",  # raise exception without from\n    \"E501\",  # line too long, handled by black\n    \"B008\",  # do not perform function calls in argument defaults\n    \"C901\",  # too complex\n    \"W191\",  # indentation contains tabs\n]\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "rag",
      "llm",
      "eval",
      "vector"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "netbirdio",
    "name": "netbird",
    "full_name": "netbirdio/netbird",
    "url": "https://github.com/netbirdio/netbird",
    "description": "Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.",
    "language": "Go",
    "total_stars": 26397,
    "forks": 1441,
    "stars_this_period": 116,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "golang",
        "mesh",
        "mesh-networks",
        "nat-traversal",
        "netbird",
        "vpn",
        "wireguard",
        "wireguard-vpn",
        "wiretrustee",
        "zero-trust-network-access"
      ],
      "license": "NOASSERTION",
      "open_issues": 1471,
      "created_at": "2021-04-14T12:27:20Z",
      "pushed_at": "2026-06-27T21:20:51Z",
      "homepage": "https://netbird.io",
      "default_branch": "main",
      "forks": 1441,
      "watchers": 126,
      "archived": false,
      "size_kb": 160694
    },
    "readme_content": "\n<div align=\"center\">\n  <p align=\"center\">\n    <img width=\"234\" src=\"docs/media/logo-full.png\" alt=\"NetBird logo\"/>\n  </p>\n  <p align=\"center\">\n    <a href=\"https://sonarcloud.io/dashboard?id=netbirdio_netbird\">\n      <img src=\"https://sonarcloud.io/api/project_badges/measure?project=netbirdio_netbird&metric=alert_status\" alt=\"SonarCloud alert status\"/>\n    </a>\n    <a href=\"https://github.com/netbirdio/netbird/blob/main/LICENSE\">\n      <img src=\"https://img.shields.io/badge/license-BSD--3-blue\" alt=\"BSD-3 License\"/>\n    </a>\n    <a href=\"https://docs.netbird.io/slack-url\">\n      <img src=\"https://img.shields.io/badge/slack-@netbird-red.svg?logo=slack\" alt=\"NetBird Slack\"/>\n    </a>\n    <a href=\"https://forum.netbird.io\">\n      <img src=\"https://img.shields.io/badge/community%20forum-@netbird-red.svg?logo=discourse\" alt=\"Community forum\"/>\n    </a>\n    <a href=\"https://gurubase.io/g/netbird\">\n      <img src=\"https://img.shields.io/badge/Gurubase-Ask%20NetBird%20Guru-006BFF\" alt=\"Gurubase: Ask NetBird Guru\"/>\n    </a>\n  </p>\n</div>\n\n<p align=\"center\">\n  <strong>\n    Start using NetBird at <a href=\"https://netbird.io/pricing\">netbird.io</a>\n    <br/>\n    See <a href=\"https://netbird.io/docs/\">Documentation</a>\n    <br/>\n    Join our <a href=\"https://docs.netbird.io/slack-url\">Slack channel</a> or our <a href=\"https://forum.netbird.io\">Community forum</a>\n  </strong>\n  <br/>\n  <br/>\n  <strong>\n    🚀 <a href=\"https://careers.netbird.io\">We are hiring! Join us at careers.netbird.io</a>\n  </strong>\n</p>\n\n**NetBird combines a configuration-free peer-to-peer private network and a centralized access control system in a single platform, making it easy to create secure private networks for your organization or home.**\n\n**Connect.** NetBird creates a WireGuard-based overlay network that automatically connects your machines over an encrypted tunnel, leaving behind the hassle of opening ports, complex firewall rules, VPN gateways, and so forth.\n\n**Secure.** NetBird enables secure remote access by applying granular access policies while allowing you to manage them intuitively from a single place. Works universally on any infrastructure.\n\n> ### 🤖 NetBird Agent Network (Beta)\n> Identity-aware access control for AI agents — keyless access to LLM APIs and private\n> resources over the encrypted NetBird tunnel. See [`agent-network/`](agent-network/) or\n> read the docs at **[docs.netbird.io/agent-network](https://docs.netbird.io/agent-network)**.\n\nhttps://github.com/user-attachments/assets/10cec749-bb56-4ab3-97af-4e38850108d2\n\n### Self-host NetBird (video)\n\n[![Watch the video](https://img.youtube.com/vi/bZAgpT6nzaQ/0.jpg)](https://youtu.be/bZAgpT6nzaQ)\n\n### Key features\n\n| Connectivity | Management | Security | Automation | Platforms |\n|---|---|---|---|---|\n| ✓ [Kernel WireGuard](https://docs.netbird.io/about-netbird/why-wireguard-with-netbird) | ✓ [Admin Web UI](https://github.com/netbirdio/dashboard) | ✓ [SSO & MFA support](https://docs.netbird.io/how-to/installation#running-net-bird-with-sso-login) | ✓ [Public API](https://docs.netbird.io/api) | ✓ [Linux](https://docs.netbird.io/get-started/install/linux) |\n| ✓ [Peer-to-peer connections](https://docs.netbird.io/about-netbird/how-netbird-works) | ✓ Auto peer discovery and configuration | ✓ [Access control: groups & rules](https://docs.netbird.io/how-to/manage-network-access) | ✓ [Setup keys for bulk provisioning](https://docs.netbird.io/how-to/register-machines-using-setup-keys) | ✓ [macOS](https://docs.netbird.io/get-started/install/macos) |\n| ✓ Connection relay fallback | ✓ [IdP integrations](https://docs.netbird.io/selfhosted/identity-providers) | ✓ [Activity logging](https://docs.netbird.io/how-to/audit-events-logging) | ✓ [Self-hosting quickstart script](https://docs.netbird.io/selfhosted/selfhosted-quickstart) | ✓ [Windows](https://docs.netbird.io/get-started/install/windows) |\n| ✓ [Routes to external networks](https://docs.netbird.io/how-to/routing-traffic-to-private-networks) | ✓ [Private DNS](https://docs.netbird.io/how-to/manage-dns-in-your-network) | ✓ [Traffic events](https://docs.netbird.io/manage/activity/traffic-events-logging) | ✓ [IdP groups sync with JWT](https://docs.netbird.io/manage/team/idp-sync) | ✓ [Android](https://docs.netbird.io/get-started/install/android) |\n| ✓ [Domain-based DNS routes](https://docs.netbird.io/manage/dns/dns-aliases-for-routed-networks) | ✓ [Custom DNS zones](https://docs.netbird.io/manage/dns/custom-zones) | ✓ [Device posture checks](https://docs.netbird.io/how-to/manage-posture-checks) | ✓ [Terraform provider](https://registry.terraform.io/providers/netbirdio/netbird/latest) | ✓ [Android TV](https://docs.netbird.io/get-started/install/android-tv) |\n| ✓ [Exit nodes](https://docs.netbird.io/manage/network-routes/use-cases/exit-nodes) | ✓ [Multiuser support](https://docs.netbird.io/how-to/add-users-to-your-network) | ✓ Peer-to-peer encryption | ✓ [Ansible collection](https://github.com/netbirdio/ansible-netbird) | ✓ [iOS](https://docs.netbird.io/get-started/install/ios) |\n| ✓ [IPv6 dual-stack overlay](https://docs.netbird.io/manage/settings/ipv6) | ✓ [Multi-account profile switching](https://docs.netbird.io/client/profiles) | ✓ [SSH with central access policies](https://docs.netbird.io/manage/peers/ssh) | | ✓ [Apple TV](https://docs.netbird.io/get-started/install/tvos) |\n| ✓ [Browser SSH & RDP](https://docs.netbird.io/manage/peers/browser-client) | | ✓ [Quantum-resistance with Rosenpass](https://netbird.io/knowledge-hub/the-first-quantum-resistant-mesh-vpn) | | ✓ FreeBSD |\n| ✓ [Reverse proxy with auto-TLS](https://docs.netbird.io/manage/reverse-proxy) | | ✓ [Periodic re-authentication](https://docs.netbird.io/how-to/enforce-periodic-user-authentication) | | ✓ [pfSense](https://docs.netbird.io/get-started/install/pfsense) |\n| | | | | ✓ [OPNsense](https://docs.netbird.io/get-started/install/opnsense) |\n| | | | | ✓ [MikroTik RouterOS](https://docs.netbird.io/use-cases/homelab/client-on-mikrotik-router) |\n| | | | | ✓ OpenWRT |\n| | | | | ✓ [Synology](https://docs.netbird.io/get-started/install/synology) |\n| | | | | ✓ [TrueNAS](https://docs.netbird.io/get-started/install/truenas) |\n| | | | | ✓ [Proxmox](https://docs.netbird.io/get-started/install/proxmox-ve) |\n| | | | | ✓ [Raspberry Pi](https://docs.netbird.io/get-started/install/raspberrypi) |\n| | | | | ✓ [Serverless](https://docs.netbird.io/how-to/netbird-on-faas) |\n| | | | | ✓ [Container](https://docs.netbird.io/get-started/install/docker) |\n\n### Quickstart with NetBird Cloud\n\n- Download and install NetBird at [https://app.netbird.io/install](https://app.netbird.io/install).\n- Follow the steps to sign up with Google, Microsoft, GitHub or your email address.\n- Check the NetBird [admin UI](https://app.netbird.io/).\n\n### Quickstart with self-hosted NetBird\n\nThis is the quickest way to try self-hosted NetBird. It should take around 5 minutes to get started if you already have a public domain and a VM. Follow the [Advanced guide with a custom identity provider](https://docs.netbird.io/selfhosted/selfhosted-guide#advanced-guide-with-a-custom-identity-provider) for installations with different IdPs.\n\n**Infrastructure requirements:**\n- A Linux VM with at least **1 CPU** and **2 GB** of memory.\n- The VM should be publicly accessible on TCP ports **80** and **443** and UDP port **3478**.\n- A **public domain** name pointing to the VM.\n\n**Software requirements:**\n- Docker with the Compose plugin (Compose v2 or higher). See the [Docker installation guide](https://docs.docker.com/engine/install/).\n\n**Steps**\n- Download and run the installation script:\n```bash\nexport NETBIRD_DOMAIN=netbird.example.com; curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash\n```\n\n### A bit on NetBird internals\n- Every machine in the network runs the [NetBird agent](client/), which manages WireGuard.\n- Every agent connects to the [Management Service](management/), which holds network state, manages peer IPs, and distributes updates to agents.\n- Agents use ICE (via [pion/ice](https://github.com/pion/ice)) to discover connection candidates for peer-to-peer connections.\n- Candidates are discovered with the help of [STUN](https://en.wikipedia.org/wiki/STUN) servers.\n- Agents negotiate a connection through the [Signal Service](signal/), exchanging end-to-end encrypted messages with candidates.\n- When NAT traversal fails (e.g. mobile carrier-grade NAT) and a direct p2p connection isn't possible, the system falls back to a [Relay Service](relay/) and a secure WireGuard tunnel is established through it.\n\n<p float=\"left\" align=\"middle\">\n  <img src=\"https://docs.netbird.io/docs-static/img/about-netbird/high-level-dia.png\" width=\"700\" alt=\"NetBird high-level architecture diagram\"/>\n</p>\n\nSee a complete [architecture overview](https://docs.netbird.io/about-netbird/how-netbird-works#architecture) for details.\n\n### Community projects\n- [NetBird installer script](https://github.com/physk/netbird-installer)\n- [netbird-tui](https://github.com/n0pashkov/netbird-tui) - terminal UI for managing NetBird peers, routes, and settings\n- [caddy-netbird](https://github.com/lixmal/caddy-netbird) - Caddy plugin that embeds a NetBird client for proxying HTTP and TCP/UDP traffic through NetBird networks\n\n**Note**: The `main` branch may be in an *unstable or even broken state* during development.\nFor stable versions, see [releases](https://github.com/netbirdio/netbird/releases).\n\n### Support acknowledgement\n\nIn November 2022, NetBird joined the [StartUpSecure program](https://www.forschung-it-sicherheit-kommunikationssysteme.de/foerderung/bekanntmachungen/startup-secure) sponsored by the Federal Ministry of Education and Research of the Federal Republic of Germany. Together with the [CISPA Helmholtz Center for Information Security](https://cispa.de/en), NetBird brings security best practices and simplicity to private networking.\n\n![CISPA_Logo_BLACK_EN_RZ_RGB (1)](https://user-images.githubusercontent.com/700848/203091324-c6d311a0-22b5-4b05-a288-91cbc6cdcc46.png)\n\n### Acknowledgements\nWe build on open-source technologies like [WireGuard®](https://www.wireguard.com/), [Pion ICE](https://github.com/pion/ice), and [Rosenpass](https://rosenpass.eu). We greatly appreciate the work these projects are doing, and we'd love it if you could support them too (e.g., by starring or contributing).\n\n### Legal\nThis repository is licensed under the BSD-3-Clause license, which applies to all parts of the repository except for the directories management/, signal/ and relay/.\nThose directories are licensed under the GNU Affero General Public License version 3.0 (AGPLv3). See the respective LICENSE files inside each directory.\n\n_WireGuard_ and the _WireGuard_ logo are [registered trademarks](https://www.wireguard.com/trademark-policy/) of Jason A. Donenfeld.\n \n\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/netbirdio/netbird\n\ngo 1.25.5\n\ntoolchain go1.25.11\n\nrequire (\n\tcunicu.li/go-rosenpass v0.5.42\n\tgithub.com/cenkalti/backoff/v4 v4.3.0\n\tgithub.com/cloudflare/circl v1.3.3 // indirect\n\tgithub.com/golang/protobuf v1.5.4\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/mux v1.8.1\n\tgithub.com/kardianos/service v1.2.3-0.20240613133416-becf2eb62b83\n\tgithub.com/onsi/ginkgo v1.16.5\n\tgithub.com/onsi/gomega v1.27.6\n\tgithub.com/rs/cors v1.8.0\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/spf13/pflag v1.0.9\n\tgithub.com/vishvananda/netlink v1.3.1\n\tgolang.org/x/crypto v0.50.0\n\tgolang.org/x/sys v0.43.0\n\tgolang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173\n\tgolang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10\n\tgolang.zx2c4.com/wireguard/windows v0.5.3\n\tgoogle.golang.org/grpc v1.80.0\n\tgoogle.golang.org/protobuf v1.36.11\n)\n\nrequire (\n\tfyne.io/fyne/v2 v2.7.0\n\tfyne.io/systray v1.12.1-0.20260116214250-81f8e1a496f9\n\tgit.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3\n\tgithub.com/DeRuina/timberjack v1.4.2\n\tgithub.com/awnumar/memguard v0.23.0\n\tgithub.com/aws/aws-sdk-go-v2 v1.38.3\n\tgithub.com/aws/aws-sdk-go-v2/config v1.31.6\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.18.10\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.87.3\n\tgithub.com/c-robinson/iplib v1.0.3\n\tgithub.com/caddyserver/certmagic v0.21.3\n\tgithub.com/cilium/ebpf v0.19.0\n\tgithub.com/coder/websocket v1.8.14\n\tgithub.com/coreos/go-iptables v0.7.0\n\tgithub.com/coreos/go-oidc/v3 v3.18.0\n\tgithub.com/creack/pty v1.1.24\n\tgithub.com/crowdsecurity/crowdsec v1.7.7\n\tgithub.com/crowdsecurity/go-cs-bouncer v0.0.21\n\tgithub.com/dexidp/dex v2.13.0+incompatible\n\tgithub.com/dexidp/dex/api/v2 v2.4.0\n\tgithub.com/ebitengine/purego v0.8.4\n\tgithub.com/eko/gocache/lib/v4 v4.2.0\n\tgithub.com/eko/gocache/store/go_cache/v4 v4.2.2\n\tgithub.com/eko/gocache/store/redis/v4 v4.2.2\n\tgithub.com/fsnotify/fsnotify v1.9.0\n\tgithub.com/gliderlabs/ssh v0.3.8\n\tgithub.com/go-jose/go-jose/v4 v4.1.4\n\tgithub.com/gobwas/ws v1.4.0\n\tgithub.com/goccy/go-yaml v1.18.0\n\tgithub.com/godbus/dbus/v5 v5.1.0\n\tgithub.com/golang-jwt/jwt/v5 v5.3.1\n\tgithub.com/golang/mock v1.6.0\n\tgithub.com/google/go-cmp v0.7.0\n\tgithub.com/google/gopacket v1.1.19\n\tgithub.com/google/nftables v0.3.0\n\tgithub.com/gopacket/gopacket v1.4.0\n\tgithub.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.2-0.20240212192251-757544f21357\n\tgithub.com/hashicorp/go-multierror v1.1.1\n\tgithub.com/hashicorp/go-secure-stdlib/base62 v0.1.2\n\tgithub.com/hashicorp/go-version v1.7.0\n\tgithub.com/jackc/pgx/v5 v5.5.5\n\tgithub.com/libdns/route53 v1.5.0\n\tgithub.com/libp2p/go-nat v0.2.0\n\tgithub.com/libp2p/go-netroute v0.4.0\n\tgithub.com/lrh3321/ipset-go v0.0.0-20250619021614-54a0a98ace81\n\tgithub.com/mdlayher/socket v0.5.1\n\tgithub.com/mdp/qrterminal/v3 v3.2.1\n\tgithub.com/miekg/dns v1.1.72\n\tgithub.com/mitchellh/hashstructure/v2 v2.0.2\n\tgithub.com/netbirdio/management-integrations/integrations v0.0.0-20260416123949-2355d972be42\n\tgithub.com/netbirdio/signal-dispatcher/dispatcher v0.0.0-20250805121659-6b4ac470ca45\n\tgithub.com/oapi-codegen/runtime v1.1.2\n\tgithub.com/okta/okta-sdk-golang/v2 v2.18.0\n\tgithub.com/oschwald/maxminddb-golang v1.12.0\n\tgithub.com/patrickmn/go-cache v2.1.0+incompatible\n\tgithub.com/petermattis/goid v0.0.0-20250303134427-723919f7f203\n\tgithub.com/pion/ice/v4 v4.0.0-00010101000000-000000000000\n\tgithub.com/pion/logging v0.2.4\n\tgithub.com/pion/randutil v0.1.0\n\tgithub.com/pion/stun/v2 v2.0.0\n\tgithub.com/pion/stun/v3 v3.1.0\n\tgithub.com/pion/transport/v3 v3.1.1\n\tgithub.com/pion/turn/v3 v3.0.1\n\tgithub.com/pires/go-proxyproto v0.11.0\n\tgithub.com/pkg/sftp v1.13.9\n\tgithub.com/prometheus/client_golang v1.23.2\n\tgithub.com/quic-go/quic-go v0.55.0\n\tgithub.com/redis/go-redis/v9 v9.7.3\n\tgithub.com/rs/xid v1.3.0\n\tgithub.com/shirou/gopsutil/v3 v3.24.4\n\tgithub.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966\n\tgithub.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/testcontainers/testcontainers-go v0.37.0\n\tgithub.com/testcontainers/testcontainers-go/modules/mysql v0.37.0\n\tgithub.com/testcontainers/testcontainers-go/modules/postgres v0.37.0\n\tgithub.com/testcontainers/testcontainers-go/modules/redis v0.37.0\n\tgithub.com/things-go/go-socks5 v0.0.4\n\tgithub.com/ti-mo/conntrack v0.5.1\n\tgithub.com/ti-mo/netfilter v0.5.2\n\tgithub.com/vmihailenco/msgpack/v5 v5.4.1\n\tgithub.com/yusufpapurcu/wmi v1.2.4\n\tgithub.com/zcalusic/sysinfo v1.1.3\n\tgo.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0\n\tgo.opentelemetry.io/otel v1.43.0\n\tgo.opentelemetry.io/otel/exporters/prometheus v0.64.0\n\tgo.opentelemetry.io/otel/metric v1.43.0\n\tgo.opentelemetry.io/otel/sdk/metric v1.43.0\n\tgo.uber.org/mock v0.6.0\n\tgo.uber.org/zap v1.27.0\n\tgoauthentik.io/api/v3 v3.2023051.3\n\tgolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b\n\tgolang.org/x/mobile v0.0.0-20251113184115-a159579294ab\n\tgolang.org/x/mod v0.34.0\n\tgolang.org/x/net v0.53.0\n\tgolang.org/x/oauth2 v0.36.0\n\tgolang.org/x/sync",
    "strategic_keywords": [
      "agent",
      "agents",
      "llm",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 81
    },
    "strategic_score": 81
  },
  {
    "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": 53371,
    "forks": 4789,
    "stars_this_period": 108,
    "source_slice": "typescript",
    "source_slices": [
      "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": 950,
      "created_at": "2022-11-19T12:55:01Z",
      "pushed_at": "2026-06-26T15:58:33Z",
      "homepage": "http://plane.so",
      "default_branch": "preview",
      "forks": 4789,
      "watchers": 170,
      "archived": false,
      "size_kb": 211820
    },
    "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": 15,
      "relevance": 8,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 66
    },
    "strategic_score": 66
  },
  {
    "owner": "Neet-Nestor",
    "name": "Telegram-Media-Downloader",
    "full_name": "Neet-Nestor/Telegram-Media-Downloader",
    "url": "https://github.com/Neet-Nestor/Telegram-Media-Downloader",
    "description": "A script allowing you to download images and videos from Telegram web even if the group restricts downloading.",
    "language": "JavaScript",
    "total_stars": 4686,
    "forks": 471,
    "stars_this_period": 105,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "greasyfork",
        "greasymonkey",
        "greasymonkey-userscript",
        "javascript",
        "telegram",
        "userscript"
      ],
      "license": "GPL-3.0",
      "open_issues": 66,
      "created_at": "2022-06-11T06:20:37Z",
      "pushed_at": "2026-03-09T06:52:52Z",
      "homepage": "https://greasyfork.org/scripts/446342-telegram-media-downloader",
      "default_branch": "main",
      "forks": 471,
      "watchers": 33,
      "archived": false,
      "size_kb": 1059
    },
    "readme_content": "<div align=\"center\">\n\n# Telegram Video Downloader / Telegram Media Downloader\n\n**Unlock Telegram: Download Anything You Like.**\n\n[![GitHub License](https://img.shields.io/github/license/Neet-Nestor/Telegram-Media-Downloader)](./LICENSE)\n[![Greasy Fork Version](https://img.shields.io/greasyfork/v/446342-telegram-media-downloader)](https://greasyfork.org/scripts/446342-telegram-media-downloader)\n[![Greasy Fork Downloads](https://img.shields.io/greasyfork/dt/446342-telegram-media-downloader)](https://greasyfork.org/scripts/446342-telegram-media-downloader)\n\n</div>\n\n## Overview\nThis user script unlocks and enables download of images, GIFs, audios, and videos in Telegram webapps from chats, stories, and even private channels where downloading is disabled or restricted.\n\n(Note: some features are only available for specific Telegram webapp version. e.g. Audio message download is only available for the K webapp version.)\n\n### What are user scripts?\nUser scripts put you in control of your  browsing experience. Once installed, they automatically make the sites you visit better by adding features, making them easier to use, or taking out the annoying bits. The user scripts on Greasy Fork were written by other users and posted to share with the world. They're free to install and easy to use.\n\n## Installation\n### Greasy Fork\n1. install a user script manager\n\n    To use user scripts you need to first install a user script manager. Which user script manager you can use depends on which browser you use.\n\n    - Chrome: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Firefox: [Greasemonkey](https://addons.mozilla.org/firefox/addon/greasemonkey/), [Tampermonkey](https://addons.mozilla.org/firefox/addon/tampermonkey/), or [Violentmonkey](https://addons.mozilla.org/firefox/addon/violentmonkey/)\n    - Safari: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Userscripts](https://apps.apple.com/app/userscripts/id1463298887)\n    - Microsoft Edge: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Opera: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Maxthon: [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n\n    (Note, If you are using Tampermonkey extension in a Chrome-based browser, following [instructions](https://www.tampermonkey.net/faq.php#Q209) to enable Developer Mode.)\n\n2. Install this script by visiting Greasy Fork:\n    https://greasyfork.org/scripts/446342-telegram-media-downloader\n\n### Manual Installation\n1. install a user script manager\n\n    To use user scripts you need to first install a user script manager. Which user script manager you can use depends on which browser you use.\n\n    - Chrome: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Firefox: [Greasemonkey](https://addons.mozilla.org/firefox/addon/greasemonkey/), [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo), or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Safari: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Userscripts](https://apps.apple.com/app/userscripts/id1463298887)\n    - Microsoft Edge: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Opera: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Maxthon: [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n\n    (Note, If you are using Tampermonkey extension in a Chrome-based browser, following [instructions](https://www.tampermonkey.net/faq.php#Q209) to enable Developer Mode.)\n    \n2. Open Tampermonkey Dashboard, drag & drop src/tel_download.js into it and clicks the \"install\" button\n\n## How to Use\nThis script only works on Telegram Webapp.\n\nFor channels and chats that allow saving content, this script will have no effect. Please just use the official download button provided by the telegram webapp instead.\n\nFor channels and chats that disable downloading and restrict saving content, this script will add the download button back for images, GIFs and videos.\n\n![Image Download](https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExY2VjNmU2ZDM0YTFlOWY4YTMzZDZmNjVlMDE2ODQ4OGY4N2E3MDFkNSZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/lqCVcw0pCd2VA3zqoE/giphy.gif)\n![GIF Download](https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExMzYwMzM3ZTMzYmI1MzA4M2EyYmY0NTFlOTg4OWFhNjhjNDk5YTkzYiZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/wnYzW4vwpPdeuo62nQ/giphy.gif)\n![Video Download](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExMXcxYnJxaXMxcW05YW5rZ2YzZzE0bTU4aTBwYXI1N3pmdnVzbDFrdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/EEPbblwmSpteAmwLls/giphy.gif)\n![Story Download](https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExZ3Z5Y2VzM2QzbW1xc3ZwNTQ2N3Q0a3lnanpxdW55c2Qzajl5NXZsaCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xJFjBGi8isHPR5cuHl/giphy.gif)\n\nFor videos, a progress bar will show on the bottom-right corder after you started downloading. For images and audios, there won't be a progress bar.\n\n### Supported Webapp Versions\nThere are 2 different versions of telegram webapps:\n- https://webk.telegram.org / https://web.telegram.org/k/ (**Recommended**)\n- https://webz.telegram.org / https://web.telegram.org/a/\n\nThis script should work on both versions of webapp, but some features are only available in the /k/ version (such as voice message downloads). If certain features are not working, switching to the /k/ version is recommended.\n\n### Check Downloading Progress\nA progress bar will show on the bottom-right of the screen for videos. You can also check [DevTools console](https://developer.chrome.com/docs/devtools/open/) for logs.\n\n## Contributing\n\nWe welcome contributions from the community! If you’d like to contribute to Telegram Media Downloader, follow these steps:\n\n### Reporting Issues\nIf you find a bug, compatibility issue, or have a feature request, please:\n\n1. Check if the issue has already been reported in the Issues tab.\n2. If not, create a new issue with a clear title and description. Attach screenshots or logs if applicable.\n\n### Submitting Pull Requests\n\n1. **Fork the repository**: Click on the \"Fork\" button in the top-right of the repo.\n\n2. **Clone your fork**:\n\n    ```bash\n    git clone https://github.com/YOUR-USERNAME/Telegram-Media-Downloader.git\n    cd Telegram-Media-Downloader\n    ```\n\n3. **Create a new branch** for your feature or bugfix:\n\n    ```bash\n    git checkout -b feature-or-bugfix-name\n    ```\n\n    Make your changes and ensure the script still works correctly on supported Telegram webapps.\n\n4. **Make your changes** and ensure the script still works correctly on supported Telegram webapps.\n\n5. **Commit your changes** with a descriptive message:\n\n    ```bash\n    git commit -m \"Add feature/fix issue: Brief description\"\n    ```\n\n6. **Push to your fork:**\n\n    ```bash\n    git push origin feature-or-bugfix-name\n    ```\n\n7. **Submit a Pull Request (PR):**\n\n    - Go to the original repository: [Neet-Nestor/Telegram-Media-Downloader](https://github.com/Neet-Nestor/Telegram-Media-Downloader).\n\n    - Click \"New Pull Request\" and select your branch.\n\n    - Add a description of your changes and submit.\n\n### Development Guidelines\n- Keep your code clean and well-documented.\n- Follow the existing coding style.\n- Test your changes on both Telegram WebK and WebZ versions.\n- Ensure compatibility with major user script managers like Tampermonkey and Violentmonkey.\n\n### Help with Translations\nWe want Telegram Media Downloader to be accessible to users worldwide! If you’d like to help translate the script’s Greasy Fork page, follow these steps:\n\n#### How to Contribute a Translation\n\nCheck for existing translations in the [`docs/greasyfork`](/docs/greasyfork/) folder of the repository.\n\nAdd a new file in docs/<language-code>.md, using the appropriate language code (e.g., docs/fr-FR.md for French, docs/de-DE.md for German).\n\nTranslate the content from [`docs/greasyfork/en-US.md`](/docs/greasyfork/en-US.md) into your language while keeping the formatting intact. Submit a Pull Request following the steps in the [Submitting Pull Requests](#submitting-pull-requests) section above.\n\n#### Language Codes\nUse standard IETF Language Tag (e.g., `es-ES` for Spanish, `ja-JP` for Japanese). You can find a full list of codes [here](https://docs.dyspatch.io/localization/supported_languages/).\n\n## Support Author\nIf you like this script, you can support me via [Venmo](https://venmo.com/u/NeetNestor) or [buy me a coffee](https://ko-fi.com/neetnestor) :)\n",
    "strategic_keywords": [],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 10,
      "total": 59
    },
    "strategic_score": 59
  },
  {
    "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": 117145,
    "forks": 17751,
    "stars_this_period": 90,
    "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-27T08:45:27Z",
      "homepage": "https://rustdesk.com",
      "default_branch": "master",
      "forks": 17751,
      "watchers": 607,
      "archived": false,
      "size_kb": 72493
    },
    "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": 14,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 69
    },
    "strategic_score": 69
  },
  {
    "owner": "multica-ai",
    "name": "multica",
    "full_name": "multica-ai/multica",
    "url": "https://github.com/multica-ai/multica",
    "description": "The open-source managed agents platform. Turn coding agents into real teammates — assign tasks, track progress, compound skills.",
    "language": "Go",
    "total_stars": 38253,
    "forks": 4749,
    "stars_this_period": 85,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 1092,
      "created_at": "2026-01-13T17:59:46Z",
      "pushed_at": "2026-06-27T19:25:35Z",
      "homepage": "https://multica.ai",
      "default_branch": "main",
      "forks": 4749,
      "watchers": 135,
      "archived": false,
      "size_kb": 67691
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"docs/assets/banner.jpg\" alt=\"Multica — humans and agents, side by side\" width=\"100%\">\n</p>\n\n<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/logo-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/assets/logo-light.svg\">\n  <img alt=\"Multica\" src=\"docs/assets/logo-light.svg\" width=\"50\">\n</picture>\n\n# Multica\n\n**Your next 10 hires won't be human.**\n\nThe open-source managed agents platform.<br/>\nTurn coding agents into real teammates — assign tasks, track progress, compound skills.\n\n[![CI](https://github.com/multica-ai/multica/actions/workflows/ci.yml/badge.svg)](https://github.com/multica-ai/multica/actions/workflows/ci.yml)\n[![GitHub stars](https://img.shields.io/github/stars/multica-ai/multica?style=flat)](https://github.com/multica-ai/multica/stargazers)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/W8gYBn226t)\n\n[Website](https://multica.ai) · [Cloud](https://multica.ai) · [Discord](https://discord.gg/W8gYBn226t) · [X](https://x.com/MulticaAI) · [Self-Hosting](SELF_HOSTING.md) · [Contributing](CONTRIBUTING.md)\n\n**English | [简体中文](README.zh-CN.md)**\n\n</div>\n\n## What is Multica?\n\nMultica turns coding agents into real teammates. Assign issues to an agent like you'd assign to a colleague — they'll pick up the work, write code, report blockers, and update statuses autonomously.\n\nNo more copy-pasting prompts. No more babysitting runs. Your agents show up on the board, participate in conversations, and compound reusable skills over time. Think of it as open-source infrastructure for managed agents — vendor-neutral, self-hosted, and designed for human + AI teams. Works with **Claude Code**, **Codex**, **GitHub Copilot CLI**, **OpenClaw**, **OpenCode**, **Hermes**, **Gemini**, **Pi**, **Cursor Agent**, **Kimi**, **Kiro CLI**, and **Qoder CLI**.\n\nFor larger teams, Squads add a stable routing layer: assign work to a group led by an agent, and the leader delegates to the right member.\n\n<p align=\"center\">\n  <img src=\"docs/assets/hero-screenshot.png\" alt=\"Multica board view\" width=\"800\">\n</p>\n\n## Why \"Multica\"?\n\nMultica — **Mul**tiplexed **I**nformation and **C**omputing **A**gent.\n\nThe name is a nod to Multics, the pioneering operating system of the 1960s that introduced time-sharing — letting multiple users share a single machine as if each had it to themselves. Unix was born as a deliberate simplification of Multics: one user, one task, one elegant philosophy.\n\nWe think the same inflection is happening again. For decades, software teams have been single-threaded — one engineer, one task, one context switch at a time. AI agents change that equation. Multica brings time-sharing back, but for an era where the \"users\" multiplexing the system are both humans and autonomous agents.\n\nIn Multica, agents are first-class teammates. They get assigned issues, report progress, raise blockers, and ship code — just like their human colleagues. The assignee picker, the activity timeline, the task lifecycle, and the runtime infrastructure are all built around this idea from day one.\n\nLike Multics before it, the bet is on multiplexing: a small team shouldn't feel small. With the right system, two engineers and a fleet of agents can move like twenty.\n\n## Features\n\nMultica manages the full agent lifecycle: from task assignment to execution monitoring to skill reuse.\n\n- **Agents as Teammates** — assign to an agent like you'd assign to a colleague. They have profiles, show up on the board, post comments, create issues, and report blockers proactively.\n- **Squads** — group agents (and humans) under a leader agent and assign work to the *squad*. The leader decides who should pick it up, so routing stays stable as the team grows. `@FrontendTeam` instead of `@alice-or-bob-or-carol`.\n- **Autonomous Execution** — set it and forget it. Full task lifecycle management (enqueue, claim, start, complete/fail) with real-time progress streaming via WebSocket.\n- **Autopilots** — schedule recurring work for agents. Cron triggers, webhooks, or manual runs — each autopilot creates the issue and routes it to an agent automatically, so daily standups, weekly reports, and periodic audits run themselves.\n- **Reusable Skills** — every solution becomes a reusable skill for the whole team. Deployments, migrations, code reviews — skills compound your team's capabilities over time.\n- **Unified Runtimes** — one dashboard for all your compute. Local daemons and cloud runtimes, auto-detection of available CLIs, real-time monitoring.\n- **Multi-Workspace** — organize work across teams with workspace-level isolation. Each workspace has its own agents, issues, and settings.\n\n---\n\n## Quick Install\n\n### macOS / Linux (Homebrew - recommended)\n\n```bash\nbrew install multica-ai/tap/multica\n```\n\nUse `brew upgrade multica-ai/tap/multica` to keep the CLI current.\n\n### macOS / Linux (install script)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash\n```\n\nUse this if Homebrew is not available. The script installs the Multica CLI on macOS and Linux by using Homebrew when it is on `PATH`, otherwise it downloads the binary directly.\n\n### Windows (PowerShell)\n\n```powershell\nirm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex\n```\n\nThen configure, authenticate, and start the daemon in one command:\n\n```bash\nmultica setup          # Connect to Multica Cloud, log in, start daemon\n```\n\n> **Self-hosting?** Add `--with-server` to deploy a full Multica server on your machine:\n>\n> ```bash\n> curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server\n> multica setup self-host\n> ```\n>\n> This pulls the official Multica images from GHCR (latest stable by default). Requires Docker. See the [Self-Hosting Guide](SELF_HOSTING.md) for details.\n> If the selected GHCR tag has not been published yet, fall back to `make selfhost-build` from a checkout.\n\n---\n\n## Getting Started\n\n### 1. Set up and start the daemon\n\n```bash\nmultica setup           # Configure, authenticate, and start the daemon\n```\n\nThe daemon runs in the background and auto-detects agent CLIs (`claude`, `codex`, `copilot`, `openclaw`, `opencode`, `hermes`, `gemini`, `pi`, `cursor-agent`, `kimi`, `kiro-cli`, `agy`, `qodercli`) on your PATH.\n\n### 2. Verify your runtime\n\nOpen your workspace in the Multica web app. Navigate to **Settings → Runtimes** — you should see your machine listed as an active **Runtime**.\n\n> **What is a Runtime?** A Runtime is a compute environment that can execute agent tasks. It can be your local machine (via the daemon) or a cloud instance. Each runtime reports which agent CLIs are available, so Multica knows where to route work.\n\n### 3. Create an agent\n\nGo to **Settings → Agents** and click **New Agent**. Pick the runtime you just connected and choose a provider (Claude Code, Codex, GitHub Copilot CLI, OpenClaw, OpenCode, Hermes, Gemini, Pi, Cursor Agent, Kimi, Kiro CLI, Antigravity, or Qoder CLI). Give your agent a name — this is how it will appear on the board, in comments, and in assignments.\n\n### 4. Assign your first task\n\nCreate an issue from the board (or via `multica issue create`), then assign it to your new agent. The agent will automatically pick up the task, execute it on your runtime, and report progress — just like a human teammate.\n\n---\n\n## CLI\n\nThe `multica` CLI connects your local machine to Multica — authenticate, manage workspaces, and run the agent daemon.\n\n| Command | Description |\n|---------|-------------|\n| `multica login` | Authenticate (opens browser) |\n| `multica daemon start` | Start the local agent runtime |\n| `multica daemon status` | Check daemon status |\n| `multica setup` | One-command setup for Multica Cloud (configure + login + start daemon) |\n| `multica setup self-host` | Same, but for self-hosted deployments |\n| `multica workspace list` | List your workspaces (current is marked with `*`) |\n| `multica workspace switch <id\\|slug>` | Switch the default workspace for this profile |\n| `multica issue list` | List issues in your workspace |\n| `multica issue create` | Create a new issue |\n| `multica update` | Update to the latest version |\n\nSee the [CLI and Daemon Guide](CLI_AND_DAEMON.md) for the full command reference.\n\n---\n\n## Architecture\n\n```\n┌──────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   Next.js    │────>│  Go Backend  │────>│   PostgreSQL     │\n│   Frontend   │<────│  (Chi + WS)  │<────│   (pgvector)     │\n└──────────────┘     └──────┬───────┘     └──────────────────┘\n                            │\n                     ┌──────┴───────┐\n                     │ Agent Daemon │  runs on your machine\n                     └──────────────┘  (Claude Code, Codex, GitHub Copilot CLI,\n                                        OpenCode, OpenClaw, Hermes, Gemini,\n                                        Pi, Cursor Agent, Kimi, Kiro CLI, Qoder CLI)\n```\n\n| Layer | Stack |\n|-------|-------|\n| Frontend | Next.js 16 (App Router) |\n| Backend | Go (Chi router, sqlc, gorilla/websocket) |\n| Database | PostgreSQL 17 with pgvector |\n| Agent Runtime | Local daemon executing Claude Code, Codex, GitHub Copilot CLI, OpenClaw, OpenCode, Hermes, Gemini, Pi, Cursor Agent, Kimi, Kiro CLI, or Qoder CLI |\n\n## Development\n\nFor contributors working on the Multica codebase, see the [Contributing Guide](CONTRIBUTING.md).\n\n**Prerequisites:** [Node.js](https://nodejs.org/) v20+, [pnpm](https://pnpm.io/) v10.28+, [Go](https://go.dev/) v1.26+, [Docker](https://www.docker.com/)\n\n```bash\nmake dev\n```\n\n`make dev` auto-detects your environment (main checkout or worktree), creates the env file, installs dependencies, sets up the database, runs migrations, and starts all services.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow, worktree support, testing, and troubleshooting.\n\nAn iOS mobile client lives in [`apps/mobile/`](apps/mobile/) — see its [README](apps/mobile/README.md) for how to build it onto your own iPhone.\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "HKUDS",
    "name": "Vibe-Trading",
    "full_name": "HKUDS/Vibe-Trading",
    "url": "https://github.com/HKUDS/Vibe-Trading",
    "description": "\"Vibe-Trading: Your Personal Trading Agent\"",
    "language": "Python",
    "total_stars": 13670,
    "forks": 2582,
    "stars_this_period": 83,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai-agent",
        "algorithmic-trading",
        "backtesting",
        "fintech",
        "llm",
        "mcp",
        "multi-agent",
        "python",
        "quantitative-finance",
        "trading"
      ],
      "license": "MIT",
      "open_issues": 14,
      "created_at": "2026-04-01T09:52:20Z",
      "pushed_at": "2026-06-27T19:36:09Z",
      "homepage": "https://vibetrading.wiki/",
      "default_branch": "main",
      "forks": 2582,
      "watchers": 89,
      "archived": false,
      "size_kb": 52421
    },
    "readme_content": "<p align=\"center\">\n  <b>English</b> | <a href=\"README_zh.md\">中文</a> | <a href=\"README_ja.md\">日本語</a> | <a href=\"README_ko.md\">한국어</a> | <a href=\"README_ar.md\">العربية</a>\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/icon.png\" width=\"120\" alt=\"Vibe-Trading Logo\"/>\n</p>\n\n<h1 align=\"center\">Vibe-Trading: Your Personal Trading Agent</h1>\n\n<p align=\"center\">\n  <b>One Command to Empower Your Agent with Comprehensive Trading Capabilities</b>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/25527\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/25527\" alt=\"HKUDS%2FVibe-Trading | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat&logo=python&logoColor=white\" alt=\"Python\">\n  <img src=\"https://img.shields.io/badge/Backend-FastAPI-009688?style=flat\" alt=\"FastAPI\">\n  <img src=\"https://img.shields.io/badge/Frontend-React%2019-61DAFB?style=flat&logo=react&logoColor=white\" alt=\"React\">\n  <a href=\"https://pypi.org/project/vibe-trading-ai/\"><img src=\"https://img.shields.io/pypi/v/vibe-trading-ai?style=flat&logo=pypi&logoColor=white\" alt=\"PyPI\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-yellow?style=flat\" alt=\"License\"></a>\n  <br>\n  <a href=\"https://github.com/HKUDS/.github/blob/main/profile/README.md\"><img src=\"https://img.shields.io/badge/Feishu-Group-E9DBFC?style=flat-square&logo=feishu&logoColor=white\" alt=\"Feishu\"></a>\n  <a href=\"https://github.com/HKUDS/.github/blob/main/profile/README.md\"><img src=\"https://img.shields.io/badge/WeChat-Group-C5EAB4?style=flat-square&logo=wechat&logoColor=white\" alt=\"WeChat\"></a>\n  <a href=\"https://discord.gg/6TdQnT5xcF\"><img src=\"https://img.shields.io/badge/Discord-Join-7289DA?style=flat-square&logo=discord&logoColor=white\" alt=\"Discord\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://vibetrading.wiki/\">Website</a> &nbsp;&middot;&nbsp;\n  <a href=\"https://vibetrading.wiki/docs/\">Docs</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-news\">News</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-key-features\">Features</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-shadow-account\">Shadow Account</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-demo\">Demo</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-quick-start\">Quick Start</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-examples\">Examples</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-api-server\">API / MCP</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-roadmap\">Roadmap</a> &nbsp;&middot;&nbsp;\n  <a href=\"#-contributing\">Contributing</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#-quick-start\"><img src=\"assets/pip-install.svg\" height=\"45\" alt=\"pip install vibe-trading-ai\"></a>\n</p>\n\n---\n\n## 📰 News\n\n- **2026-06-27** 🧯 **Content-filter resilience + Shadow Account feature contract cleanup**: event-driven and swarm runs now skip individual LLM content-moderation hits, warn in run cards when filter rates are high, and recognize Gemini safety finish reasons instead of aborting an entire analysis ([#308](https://github.com/HKUDS/Vibe-Trading/pull/308), closes [#307](https://github.com/HKUDS/Vibe-Trading/issues/307), thanks @shadowinlife). Shadow Account extraction/codegen now share one `PRICE_FEATURES` contract and keep four-decimal return bounds, preventing rule/codegen drift and precision loss on `prior_5d_return` ([#316](https://github.com/HKUDS/Vibe-Trading/pull/316), thanks @Robin1987China).\n- **2026-06-26** 🎯 **Shadow Account conditional entry + tushare ETF/index/HK routing**: extracted Shadow Account rules now carry RSI / prior-return bounds, so the generated SignalEngine enters on real conditions (RSI in range, prior-return in range) instead of blindly replaying the holding cadence ([#314](https://github.com/HKUDS/Vibe-Trading/pull/314), follows [#302](https://github.com/HKUDS/Vibe-Trading/pull/302), thanks @Robin1987China). The tushare loader also routes ETF/LOF → `fund_daily()`, indices → `index_daily()`, and HK equities → `hk_daily()` instead of always calling `daily()` (which silently returns empty for non-stocks), with per-symbol empty-result + partial-fetch warnings ([#315](https://github.com/HKUDS/Vibe-Trading/pull/315), closes [#310](https://github.com/HKUDS/Vibe-Trading/issues/310), thanks @shadowinlife).\n- **2026-06-25** 🧪 **Strict validation JSON + calmer agent context**: standalone backtest validation now normalizes nested `NaN` / `Infinity` values before writing `artifacts/validation.json` or CLI stdout, so strict JSON parsers no longer choke on validation payloads ([#306](https://github.com/HKUDS/Vibe-Trading/pull/306), thanks @gyx09212214-prog). The agent prompt also derives the current data-source count from the loader registry, and `_microcompact()` now waits for real token pressure instead of clearing older tool results during short runs ([#296](https://github.com/HKUDS/Vibe-Trading/pull/296), closes [#282](https://github.com/HKUDS/Vibe-Trading/issues/282), thanks @MarkfuGod).\n<details>\n<summary>Earlier news</summary>\n\n- **2026-06-24** 🎯 **Shadow Account price context + reactive Chinese UI + LAN auth fix**: Shadow Account rule extraction now sees PIT-safe entry context — `entry_rsi14` and `prior_5d_return` fetched through the loader registry as of `buy_dt`, with graceful offline/no-data degradation ([#302](https://github.com/HKUDS/Vibe-Trading/pull/302), follows [#295](https://github.com/HKUDS/Vibe-Trading/issues/295), thanks @Robin1987China). The main Web UI panels now use reactive English / zh-CN translations across charts, chat, Alpha Library, Correlation, and Run Detail ([#301](https://github.com/HKUDS/Vibe-Trading/pull/301), thanks @skloxo). Remote same-origin Web UI deployments with `API_AUTH_KEY` can post and upload again after the CSRF hardening, while mismatched cross-site origins remain blocked ([#304](https://github.com/HKUDS/Vibe-Trading/pull/304), thanks @Hinotoi-agent).\n- **2026-06-23** 🛡️ **Local API CSRF hardening**: a malicious web page can no longer drive unsafe cross-site requests (POST/PUT/DELETE) against the loopback API — CORS blocks reading the response but not the side effect, so loopback dev-mode trust now applies the existing cross-site guard to unsafe methods *before* honoring it. Safe methods and local CLI / non-browser uploads are unaffected ([#293](https://github.com/HKUDS/Vibe-Trading/pull/293), thanks @Hinotoi-agent).\n- **2026-06-22** 🔧 **Live-authorize OAuth fix + Alpha Zoo headline fix**: `connector authorize` now holds the OAuth handshake open through a multi-minute broker sign-in (tunable via `VIBE_LIVE_AUTHORIZE_TIMEOUT_SECONDS`) and no longer spawns a competing callback server on retry, so the token actually persists ([#281](https://github.com/HKUDS/Vibe-Trading/pull/281), closes [#259](https://github.com/HKUDS/Vibe-Trading/issues/259), thanks @Robin1987China). The Alpha Zoo page no longer prints its alpha count twice ([#287](https://github.com/HKUDS/Vibe-Trading/pull/287), closes [#286](https://github.com/HKUDS/Vibe-Trading/issues/286), thanks @digger-yu). Scheduled research also picked up end-to-end usage docs ([#288](https://github.com/HKUDS/Vibe-Trading/pull/288)).\n- **2026-06-21** ⏰ **Scheduled-research executor + Reports library + post-backtest attribution**: scheduled research now runs **end to end** — a default-off background executor (`VIBE_TRADING_ENABLE_SCHEDULER`) fires due interval/cron jobs through the session runtime ([#278](https://github.com/HKUDS/Vibe-Trading/pull/278), thanks @mvanhorn, closing [#254](https://github.com/HKUDS/Vibe-Trading/issues/254)). A new **`/reports` Run Library** page lists, searches, and filters report-worthy runs with links into Run Detail + Compare ([#224](https://github.com/HKUDS/Vibe-Trading/pull/224), thanks @LemonCANDY42). And after every backtest the agent now runs **layered attribution** — trade-level winners/losers, beta regression, market-regime analysis, and a Monte Carlo permutation test, gated by data availability and routing ([#280](https://github.com/HKUDS/Vibe-Trading/pull/280), thanks @shadowinlife).\n- **2026-06-20** 🔬 **Research Autopilot loop closes (Phase 3) + loader OHLC integrity guard + 4 academic alphas**: **Research Autopilot** now runs **hypothesis → signal-engine → backtest** end to end — `scaffold_signal_engine` writes a contract-correct engine and `link_autopilot_backtest` feeds run metrics back to the hypothesis (**68 tools**) ([#267](https://github.com/HKUDS/Vibe-Trading/pull/267)). A structural **OHLC sanity check** drops dirty bars (`high < low`, non-positive prices, bad bracketing) centrally at the loader boundary, guarding every data source ([#274](https://github.com/HKUDS/Vibe-Trading/pull/274), thanks @Shizoqua). And the **academic alpha family grows 6 → 10** — Jegadeesh reversal, George-Hwang 52-week-high, Amihud illiquidity, Harvey-Siddique skew (**456 factors**) ([#277](https://github.com/HKUDS/Vibe-Trading/pull/277), thanks @Robin1987China).\n- **2026-06-19** 🚀 **v0.1.10 — Global data layer**: market-data sources grow 10 → 18 (free **Eastmoney / Sina / Stooq / Yahoo** + key-gated **Finnhub / Alpha Vantage / Tiingo / FMP**, ban-risk fallback) plus **18 read-only data tools** (fund flow, dragon-tiger, northbound, margin, block trades, SEC EDGAR + XBRL, financials, options chains, full-market screening…) across A-share / US / HK, all over MCP. Also bundles everything since 0.1.9 — 10 broker connectors, `alpha compare`, the provider-reliability overhaul, and the opt-in data cache. `pip install -U vibe-trading-ai`\n- **2026-06-18** 🔬 **Research Autopilot Phase 1 + a local Data Bridge loader, + a Discord security notice**: new `run_research_autopilot` + `generate_backtest_config` wire **Hypothesis → Research Goal → backtest** end to end (now **50 tools**), and a **`local`** loader reads OHLCV straight from your own **CSV / Parquet / DuckDB** files ([#260](https://github.com/HKUDS/Vibe-Trading/pull/260), [#252](https://github.com/HKUDS/Vibe-Trading/pull/252), thanks @Robin1987China), alongside DeepSeek `DSML` tool-call parsing and an identifier-containment hardening wave. ⚠️ **Security:** the old community Discord invite now points to a server we don't control running a fake Collab.Land wallet-\"verification\" phishing scam — removed everywhere; the **only** official Discord is the HKUDS server ([discord.gg/6TdQnT5xcF](https://discord.gg/6TdQnT5xcF)), and we'll never ask you to connect a wallet.\n- **2026-06-17** 🧩 **Install compatibility + Opus/Kimi provider fixes**: Baseline `pip install vibe-trading-ai` no longer pulls the optional `pyharmonics` / `ta` dependency chain; harmonic detection now lives behind `vibe-trading-ai[harmonic]` while the bundled detector remains available ([#250](https://github.com/HKUDS/Vibe-Trading/pull/250), closes [#249](https://github.com/HKUDS/Vibe-Trading/issues/249)). The agent loop also avoids assistant-prefill handoff messages rejected by Opus 4.8+, and Kimi/Moonshot can override the client `User-Agent` with `MOONSHOT_USER_AGENT` ([#248](https://github.com/HKUDS/Vibe-Trading/pull/248), closes [#246](https://github.com/HKUDS/Vibe-Trading/issues/246) and [#204](https://github.com/HKUDS/Vibe-Trading/issues/204)); follow-up tests now directly cover background-result and auto-compact handoff paths ([#251](https://github.com/HKUDS/Vibe-Trading/pull/251)).\n- **2026-06-16** 🛡️ **Security/API hardening + GLM/Zhipu alias**: Settings writes require auth when configured ([#245](https://github.com/HKUDS/Vibe-Trading/pull/245)); API shell-capable tools require explicit `VIBE_TRADING_ENABLE_SHELL_TOOLS=1` opt-in ([#243](https://github.com/HKUDS/Vibe-Trading/pull/243)); local shutdown requires auth when an API key is configured ([#241](https://github.com/HKUDS/Vibe-Trading/pull/241)); and untrusted loopback-looking hosts are rejected instead of treated as local ([#242](https://github.com/HKUDS/Vibe-Trading/pull/242)). Runtime edges also got cleaned up: Web chat syncs completed attempts ([#236](https://github.com/HKUDS/Vibe-Trading/pull/236)), r",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"vibe-trading-ai\"\nversion = \"0.1.10\"\ndescription = \"Natural-language finance research AI agent with backtesting\"\nrequires-python = \">=3.11\"\nlicense = \"MIT\"\nreadme = \"README.md\"\nauthors = [\n    {name = \"HKUDS\", email = \"hkuds@connect.hku.hk\"},\n]\nkeywords = [\"finance\", \"trading\", \"backtesting\", \"agent\", \"swarm\", \"quantitative\"]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Financial and Insurance Industry\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Topic :: Office/Business :: Financial :: Investment\",\n]\ndependencies = [\n    \"rich>=13.0.0\",\n    \"pyyaml>=6.0.0\",\n    \"langchain>=1.0.0,<2\",\n    \"langchain-core>=1.0.0,<2\",\n    \"langchain-openai>=1.0.0,<2\",\n    \"langgraph>=1.0.10,<1.1\",\n    \"langgraph-checkpoint>=2.1.0,<5\",\n    \"python-dotenv>=1.0.0\",\n    \"httpx>=0.28.0\",\n    \"defusedxml>=0.7.1\",\n    \"oauth-cli-kit>=0.1.3\",\n    \"pandas>=2.0.0\",\n    \"openpyxl>=3.1.0\",\n    \"python-docx>=1.1.0\",\n    \"python-pptx>=0.6.23\",\n    \"pypdfium2>=4.0.0\",\n    \"Pillow>=10.0.0\",\n    \"numpy>=1.24.0\",\n    \"scipy>=1.10.0\",\n    \"duckdb>=1.2.0\",\n    \"scikit-learn>=1.3.0\",\n    \"joblib>=1.3.0\",\n    \"smartmoneyconcepts>=0.0.1\",\n    \"tushare>=1.2.89\",\n    \"requests>=2.31.0\",\n    \"yfinance>=0.2.30\",\n    \"akshare>=1.12.0\",\n    \"ccxt>=4.0.0\",\n    \"fastapi>=0.104.0\",\n    \"uvicorn[standard]>=0.24.0\",\n    \"pydantic>=2.0.0\",\n    \"python-multipart>=0.0.18\",\n    \"sse-starlette>=1.6.0\",\n    \"fastmcp>=2.14.0\",\n    \"ddgs>=6.0.0\",\n    \"jinja2>=3.1.0\",\n    \"matplotlib>=3.7.0\",\n    \"weasyprint>=60.0\",\n    \"prompt_toolkit>=3.0.0\",\n]\n\n[project.urls]\nHomepage = \"https://vibetrading.wiki/\"\nDocumentation = \"https://vibetrading.wiki/docs/\"\nRepository = \"https://github.com/HKUDS/Vibe-Trading\"\nIssues = \"https://github.com/HKUDS/Vibe-Trading/issues\"\n\n[project.scripts]\nvibe-trading = \"cli:main\"\nvibe-trading-mcp = \"mcp_server:main\"\n\n[tool.setuptools]\npackage-dir = {\"\" = \"agent\"}\npy-modules = [\"api_server\", \"mcp_server\"]\n\n[tool.setuptools.packages.find]\nwhere = [\"agent\"]\ninclude = [\"src*\", \"backtest*\", \"cli*\"]\n\n[tool.setuptools.package-data]\n\"src\" = [\n    \"skills/**/*.md\",\n    \"skills/**/*.yaml\",\n    \"skills/**/*.json\",\n    \"skills/**/*.py\",\n    \"providers/*.json\",\n    \"swarm/presets/*.yaml\",\n    \"shadow_account/templates/*.j2\",\n    \"shadow_account/templates/*.html\",\n    \"shadow_account/templates/*.css\",\n]\n\"backtest\" = [\"*.py\"]\n\"src.factors\" = [\"zoo/**/*.yaml\", \"zoo/**/*.md\", \"zoo/**/NOTICE\"]\n\n[project.optional-dependencies]\nibkr = [\n    \"ib_async>=2.0\",\n]\ndeepseek = [\n    \"langchain-deepseek>=1.0.0,<2\",\n]\nashare = [\n    # Free, no-auth A-share source over BaoStock's TCP protocol; bypasses the\n    # HTTP CDN IP blocks that affect eastmoney-backed sources. The Tencent\n    # A-share loader needs no extra dependency (stdlib HTTP only).\n    \"baostock>=0.8.8\",\n]\nharmonic = [\n    \"pyharmonics>=1.5.0\",\n]\ndev = [\n    \"pytest>=7.0\",\n    \"pytest-cov>=4.0\",\n    \"pytest-socket>=0.7.0\",\n]\n\n[tool.pytest.ini_options]\ntestpaths = [\"agent/tests\"]\npythonpath = [\"agent\"]\nmarkers = [\n    \"unit: Unit tests (fast, no network)\",\n    \"integration: Integration tests (may need network)\",\n]\n\n[tool.ruff]\ntarget-version = \"py311\"\nline-length = 120\nsrc = [\"agent\"]\n\n[tool.coverage.run]\nsource = [\"agent\"]\nomit = [\n    \"agent/tests/*\",\n    \"agent/tests/**/*\",\n    \"agent/**/__init__.py\",\n]\n\n[tool.coverage.report]\nshow_missing = true\nskip_empty = true\nfail_under = 0\nexclude_also = [\n    \"if __name__ == .__main__.\",\n    \"raise NotImplementedError\",\n    \"\\\\.\\\\.\\\\.\",\n]\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"W\"]\nignore = [\"E501\"]\n\n[tool.ruff.lint.per-file-ignores]\n# Alpha zoo files import the full src.factors.base surface verbatim\n# to match research-paper formulas. F401 (unused-import) is noise here;\n# F841 (unused-local-variable) stays active to catch real formula bugs.\n\"agent/src/factors/zoo/**/*.py\" = [\"F401\"]\n",
    "strategic_keywords": [
      "agent",
      "mcp",
      "llm",
      "codegen"
    ],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "QuantumNous",
    "name": "new-api",
    "full_name": "QuantumNous/new-api",
    "url": "https://github.com/QuantumNous/new-api",
    "description": "A unified AI model hub for aggregation & distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible formats. A centralized gateway for personal and enterprise model management. 🍥",
    "language": "Go",
    "total_stars": 40312,
    "forks": 9247,
    "stars_this_period": 80,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "ai-gateway",
        "claude",
        "deepseek",
        "gemini",
        "newapi",
        "openai",
        "rerank"
      ],
      "license": "AGPL-3.0",
      "open_issues": 878,
      "created_at": "2023-11-10T19:33:36Z",
      "pushed_at": "2026-06-27T15:12:39Z",
      "homepage": "https://www.newapi.ai",
      "default_branch": "main",
      "forks": 9247,
      "watchers": 124,
      "archived": false,
      "size_kb": 48268
    },
    "readme_content": "<div align=\"center\">\n\n![new-api](/web/default/public/logo.png)\n\n# New API\n\n🍥 **Next-Generation LLM Gateway and AI Asset Management System**\n\n<p align=\"center\">\n  <a href=\"./README.zh_CN.md\">简体中文</a> |\n  <a href=\"./README.zh_TW.md\">繁體中文</a> |\n  <strong>English</strong> |\n  <a href=\"./README.fr.md\">Français</a> |\n  <a href=\"./README.ja.md\">日本語</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://raw.githubusercontent.com/Calcium-Ion/new-api/main/LICENSE\">\n    <img src=\"https://img.shields.io/github/license/Calcium-Ion/new-api?color=brightgreen\" alt=\"license\">\n  </a><!--\n  --><a href=\"https://github.com/Calcium-Ion/new-api/releases/latest\">\n    <img src=\"https://img.shields.io/github/v/release/Calcium-Ion/new-api?color=brightgreen&include_prereleases\" alt=\"release\">\n  </a><!--\n  --><a href=\"https://hub.docker.com/r/CalciumIon/new-api\">\n    <img src=\"https://img.shields.io/badge/docker-dockerHub-blue\" alt=\"docker\">\n  </a><!--\n  --><a href=\"https://goreportcard.com/report/github.com/Calcium-Ion/new-api\">\n    <img src=\"https://goreportcard.com/badge/github.com/Calcium-Ion/new-api\" alt=\"GoReportCard\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/20180\" target=\"_blank\">\n    <img src=\"https://trendshift.io/api/badge/repositories/20180\" alt=\"QuantumNous%2Fnew-api | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n  </a>\n  <br>\n  <a href=\"https://hellogithub.com/repository/QuantumNous/new-api\" target=\"_blank\">\n    <img src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=539ac4217e69431684ad4a0bab768811&claim_uid=tbFPfKIDHpc4TzR\" alt=\"Featured｜HelloGitHub\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" />\n  </a><!--\n  --><a href=\"https://www.producthunt.com/products/new-api/launches/new-api?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-new-api\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1047693&theme=light&t=1769577875005\" alt=\"New API - All-in-one AI asset management gateway. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#-quick-start\">Quick Start</a> •\n  <a href=\"#-key-features\">Key Features</a> •\n  <a href=\"#-deployment\">Deployment</a> •\n  <a href=\"#-documentation\">Documentation</a> •\n  <a href=\"#-help-support\">Help</a>\n</p>\n\n</div>\n\n## 📝 Project Description\n\n> [!IMPORTANT]\n> - This project is intended solely for lawful and authorized AI API gateway, organization-level authentication, multi-model management, usage analytics, cost accounting, and private deployment scenarios.\n> - Users must lawfully obtain upstream API keys, accounts, model services, and interface permissions, and must comply with upstream terms of service and applicable laws and regulations.\n> - Users should ensure their use complies with upstream terms of service and applicable laws and regulations.\n> - When providing generative AI services to the public, users should comply with applicable regulatory requirements and fulfill all filing, licensing, content safety, real-name verification, log retention, tax, and upstream authorization obligations required by their jurisdiction.\n\n---\n\n## 🤝 Trusted Partners\n\n<p align=\"center\">\n  <em>No particular order</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.cherry-ai.com/\" target=\"_blank\">\n    <img src=\"./docs/images/cherry-studio.png\" alt=\"Cherry Studio\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://github.com/iOfficeAI/AionUi/\" target=\"_blank\">\n    <img src=\"./docs/images/aionui.png\" alt=\"Aion UI\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://bda.pku.edu.cn/\" target=\"_blank\">\n    <img src=\"./docs/images/pku.png\" alt=\"Peking University\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://www.compshare.cn/?ytag=GPU_yy_gh_newapi\" target=\"_blank\">\n    <img src=\"./docs/images/ucloud.png\" alt=\"UCloud\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://www.aliyun.com/\" target=\"_blank\">\n    <img src=\"./docs/images/aliyun.png\" alt=\"Alibaba Cloud\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://io.net/\" target=\"_blank\">\n    <img src=\"./docs/images/io-net.png\" alt=\"IO.NET\" height=\"80\" />\n  </a>\n</p>\n\n---\n\n## 🙏 Special Thanks\n\n<p align=\"center\">\n  <a href=\"https://www.jetbrains.com/?from=new-api\" target=\"_blank\">\n    <img src=\"https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png\" alt=\"JetBrains Logo\" width=\"120\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <strong>Thanks to <a href=\"https://www.jetbrains.com/?from=new-api\">JetBrains</a> for providing free open-source development license for this project</strong>\n</p>\n\n---\n\n## 🚀 Quick Start\n\n### Using Docker Compose (Recommended)\n\n```bash\n# Clone the project\ngit clone https://github.com/QuantumNous/new-api.git\ncd new-api\n\n# Edit docker-compose.yml configuration\nnano docker-compose.yml\n\n# Start the service\ndocker-compose up -d\n```\n\n<details>\n<summary><strong>Using Docker Commands</strong></summary>\n\n```bash\n# Pull the latest image\ndocker pull calciumion/new-api:latest\n\n# Using SQLite (default)\ndocker run --name new-api -d --restart always \\\n  -p 3000:3000 \\\n  -e TZ=Asia/Shanghai \\\n  -v ./data:/data \\\n  calciumion/new-api:latest\n\n# Using MySQL\ndocker run --name new-api -d --restart always \\\n  -p 3000:3000 \\\n  -e SQL_DSN=\"root:123456@tcp(localhost:3306)/oneapi\" \\\n  -e TZ=Asia/Shanghai \\\n  -v ./data:/data \\\n  calciumion/new-api:latest\n```\n\n> **💡 Tip:** `-v ./data:/data` will save data in the `data` folder of the current directory, you can also change it to an absolute path like `-v /your/custom/path:/data`\n\n</details>\n\n---\n\n🎉 After deployment is complete, visit `http://localhost:3000` to start using!\n\n> [!WARNING]\n> When operating this project as a public generative AI service or API resale service, users should first complete all required filing, licensing, content safety, real-name verification, log retention, tax, payment, and upstream authorization obligations.\n\n📖 For more deployment methods, please refer to [Deployment Guide](https://docs.newapi.pro/en/docs/installation)\n\n---\n\n## 📚 Documentation\n\n<div align=\"center\">\n\n### 📖 [Official Documentation](https://docs.newapi.pro/en/docs) | [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/QuantumNous/new-api)\n\n</div>\n\n**Quick Navigation:**\n\n| Category | Link |\n|------|------|\n| 🚀 Deployment Guide | [Installation Documentation](https://docs.newapi.pro/en/docs/installation) |\n| ⚙️ Environment Configuration | [Environment Variables](https://docs.newapi.pro/en/docs/installation/config-maintenance/environment-variables) |\n| 📡 API Documentation | [API Documentation](https://docs.newapi.pro/en/docs/api) |\n| ❓ FAQ | [FAQ](https://docs.newapi.pro/en/docs/support/faq) |\n| 💬 Community Interaction | [Communication Channels](https://docs.newapi.pro/en/docs/support/community-interaction) |\n\n---\n\n## ✨ Key Features\n\n> For detailed features, please refer to [Features Introduction](https://docs.newapi.pro/en/docs/guide/wiki/basic-concepts/features-introduction)\n\n### 🎨 Core Functions\n\n| Feature | Description |\n|------|------|\n| 🎨 New UI | Modern user interface design |\n| 🌍 Multi-language | Supports Simplified Chinese, Traditional Chinese, English, French, Japanese |\n| 🔄 Data Compatibility | Fully compatible with the original One API database |\n| 📈 Data Dashboard | Visual console and statistical analysis |\n| 🔒 Permission Management | Token grouping, model restrictions, user management |\n\n### 💰 Authorized Usage Accounting and Billing\n\n- ✅ Internal top-up and quota allocation for lawful authorized scenarios (EPay, Stripe)\n- ✅ Organization-level per-request, usage-based, and cache-hit cost accounting\n- ✅ Cache billing statistics for OpenAI, Azure, DeepSeek, Claude, Qwen, and supported models\n- ✅ Flexible billing policies for internal management or authorized enterprise customers\n\n### 🔐 Authorization and Security\n\n- 😈 Discord authorization login\n- 🤖 LinuxDO authorization login\n- 📱 Telegram authorization login\n- 🔑 OIDC unified authentication\n- 🔍 Key quota query usage (with [new-api-key-tool](https://github.com/Calcium-Ion/new-api-key-tool))\n\n### 🚀 Advanced Features\n\n**API Format Support:**\n- ⚡ [OpenAI Responses](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/create-response)\n- ⚡ [OpenAI Realtime API](https://docs.newapi.pro/en/docs/api/ai-model/realtime/create-realtime-session) (including Azure)\n- ⚡ [Claude Messages](https://docs.newapi.pro/en/docs/api/ai-model/chat/create-message)\n- ⚡ [Google Gemini](https://doc.newapi.pro/en/api/google-gemini-chat)\n- 🔄 [Rerank Models](https://docs.newapi.pro/en/docs/api/ai-model/rerank/create-rerank) (Cohere, Jina)\n\n**Intelligent Routing:**\n- ⚖️ Channel weighted random\n- 🔄 Automatic retry on failure\n- 🚦 User-level model rate limiting\n\n**Format Conversion:**\n- 🔄 **OpenAI Compatible ⇄ Claude Messages**\n- 🔄 **OpenAI Compatible → Google Gemini**\n- 🔄 **Google Gemini → OpenAI Compatible** - Text only, function calling not supported yet\n- 🚧 **OpenAI Compatible ⇄ OpenAI Responses** - In development\n- 🔄 **Thinking-to-content functionality**\n\n**Reasoning Effort Support:**\n\n<details>\n<summary>View detailed configuration</summary>\n\n**OpenAI series models:**\n- `o3-mini-high` - High reasoning effort\n- `o3-mini-medium` - Medium reasoning effort\n- `o3-mini-low` - Low reasoning effort\n- `gpt-5-high` - High reasoning effort\n- `gpt-5-medium` - Medium reasoning effort\n- `gpt-5-low` - Low reasoning effort\n\n**Claude thinking models:**\n- `claude-3-7-sonnet-20250219-thinking` - Enable thinking mode\n\n**Google Gemini series models:**\n- `gemini-2.5-flash-thinking` - Enable thinking mode\n- `gemini-2.5-flash-nothinking` - Disable thinking mode\n- `gemini-2.5-pro-thinking` - Enable thinking mode\n- `gemini-2.5-pro-thinking-128` - Enable thinking mode with thinking budget of 128 tokens\n- You can also append `-low`, `-medium`, or `-high` to any Gemini model name to request the corresponding reasoning effort (no extra thinking-budget suffix needed).\n\n</details>\n\n---\n\n## 🤖 Model Support\n\n> For details, please refer to [API Documentation - Gateway Interface](https://docs.newapi.pro/en/docs/api)\n\n| Model Type | Description | Documentation |\n|---------|------|------|\n| 🤖 OpenAI-Compatible | OpenAI compatible models | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion) |\n| 🤖 OpenAI Responses | OpenAI Responses format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse) |\n| 🎨 Midjourney-Proxy | [Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy) | [Documentation](https://doc.newapi.pro/api/midjourney-proxy-image) |\n| 🎵 Suno-API | [Suno API](https://github.com/Suno-API/Suno-API) | [Documentation](https://doc.newapi.pro/api/suno-music) |\n| 🔄 Rerank | Cohere, Jina | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/rerank/creatererank) |\n| 💬 Claude | Messages format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/createmessage) |\n| 🌐 Gemini | Google Gemini format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/gemini/geminirelayv1beta) |\n| 🔧 Dify | ChatFlow mode | - |\n| 🎯 Custom upstream | Supports configuring legally authorized upstream endpoints | - |\n\n### 📡 Supported Interfaces\n\n<details>\n<summary>View complete interface list</summary>\n\n- [Chat Interface (Chat Completions)](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion)\n- [Response Interface (Responses)](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse)\n- [Image Interface (Image)](https://docs.newapi.pro/en/docs/api/ai-model/images/openai/post-v1-images-generations)\n- [Audio Interface (Audio)](https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/create-transcription)\n- [Video Interface (Video)](https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/createspeech)\n- [Embedding Interface (Embeddings)](https://docs.newapi.pro/en/docs/api/ai-model/emb",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/QuantumNous/new-api\n\n// +heroku goVersion go1.18\ngo 1.25.1\n\nrequire (\n\tgithub.com/Calcium-Ion/go-epay v0.0.4\n\tgithub.com/abema/go-mp4 v1.4.1\n\tgithub.com/andybalholm/brotli v1.1.1\n\tgithub.com/anknown/ahocorasick v0.0.0-20190904063843-d75dbd5169c0\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.5\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.10\n\tgithub.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.50.4\n\tgithub.com/aws/smithy-go v1.24.2\n\tgithub.com/bytedance/gopkg v0.1.3\n\tgithub.com/casbin/casbin/v2 v2.135.0\n\tgithub.com/gin-contrib/cors v1.7.2\n\tgithub.com/gin-contrib/gzip v0.0.6\n\tgithub.com/gin-contrib/sessions v0.0.5\n\tgithub.com/gin-contrib/static v0.0.1\n\tgithub.com/gin-gonic/gin v1.9.1\n\tgithub.com/glebarez/sqlite v1.9.0\n\tgithub.com/go-audio/aiff v1.1.0\n\tgithub.com/go-audio/wav v1.1.0\n\tgithub.com/go-playground/validator/v10 v10.20.0\n\tgithub.com/go-redis/redis/v8 v8.11.5\n\tgithub.com/go-webauthn/webauthn v0.14.0\n\tgithub.com/golang-jwt/jwt/v5 v5.3.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.0\n\tgithub.com/grafana/pyroscope-go v1.2.7\n\tgithub.com/jfreymuth/oggvorbis v1.0.5\n\tgithub.com/jinzhu/copier v0.4.0\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/mewkiz/flac v1.0.13\n\tgithub.com/nicksnyder/go-i18n/v2 v2.6.1\n\tgithub.com/pkg/errors v0.9.1\n\tgithub.com/pquerna/otp v1.5.0\n\tgithub.com/samber/hot v0.11.0\n\tgithub.com/samber/lo v1.52.0\n\tgithub.com/shirou/gopsutil v3.21.11+incompatible\n\tgithub.com/shopspring/decimal v1.4.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/stripe/stripe-go/v81 v81.4.0\n\tgithub.com/tcolgate/mp3 v0.0.0-20170426193717-e79c5a46d300\n\tgithub.com/thanhpk/randstr v1.0.6\n\tgithub.com/tidwall/gjson v1.18.0\n\tgithub.com/tidwall/sjson v1.2.5\n\tgithub.com/tiktoken-go/tokenizer v0.6.2\n\tgithub.com/waffo-com/waffo-go v1.3.2\n\tgithub.com/yapingcat/gomedia v0.0.0-20240906162731-17feea57090c\n\tgolang.org/x/crypto v0.48.0\n\tgolang.org/x/image v0.38.0\n\tgolang.org/x/net v0.50.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/sys v0.41.0\n\tgolang.org/x/text v0.35.0\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/mysql v1.4.3\n\tgorm.io/driver/postgres v1.5.2\n\tgorm.io/gorm v1.25.2\n)\n\nrequire (\n\tgithub.com/waffo-com/waffo-pancake-sdk-go v0.3.1\n\tgorm.io/driver/clickhouse v0.6.0\n)\n\nrequire (\n\tgithub.com/ClickHouse/ch-go v0.65.0 // indirect\n\tgithub.com/ClickHouse/clickhouse-go/v2 v2.32.0 // indirect\n\tgithub.com/bmatcuk/doublestar/v4 v4.6.1 // indirect\n\tgithub.com/casbin/govaluate v1.10.0 // indirect\n\tgithub.com/go-faster/city v1.0.1 // indirect\n\tgithub.com/go-faster/errors v0.7.1 // indirect\n\tgithub.com/hashicorp/go-version v1.7.0 // indirect\n\tgithub.com/paulmach/orb v0.11.1 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.22 // indirect\n\tgithub.com/rogpeppe/go-internal v1.13.1 // indirect\n\tgithub.com/segmentio/asm v1.2.0 // indirect\n\tgo.opentelemetry.io/otel v1.34.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.34.0 // indirect\n)\n\nrequire github.com/Azure/go-ntlmssp v0.1.1\n\nrequire (\n\tgithub.com/DmitriyVTitov/size v1.5.0 // indirect\n\tgithub.com/anknown/darts v0.0.0-20151216065714-83ff685239e6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/boombuler/barcode v1.1.0 // indirect\n\tgithub.com/bytedance/sonic v1.14.1 // indirect\n\tgithub.com/bytedance/sonic/loader v0.3.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect\n\tgithub.com/dlclark/regexp2 v1.11.5 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/expr-lang/expr v1.17.8\n\tgithub.com/fxamacker/cbor/v2 v2.9.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 v1.21.2 // indirect\n\tgithub.com/go-audio/audio v1.0.0 // indirect\n\tgithub.com/go-audio/riff v1.0.0 // indirect\n\tgithub.com/go-ole/go-ole v1.2.6 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/go-sql-driver/mysql v1.7.0 // indirect\n\tgithub.com/go-webauthn/x v0.1.25 // indirect\n\tgithub.com/goccy/go-json v0.10.2 // indirect\n\tgithub.com/google/go-tpm v0.9.5 // indirect\n\tgithub.com/gorilla/context v1.1.1 // indirect\n\tgithub.com/gorilla/securecookie v1.1.1 // indirect\n\tgithub.com/gorilla/sessions v1.2.1 // indirect\n\tgithub.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect\n\tgithub.com/icza/bitio v1.1.0 // indirect\n\tgithub.com/jackc/pgpassfile v1.0.0 // indirect\n\tgithub.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect\n\tgithub.com/jackc/pgx/v5 v5.9.2 // indirect\n\tgithub.com/jackc/puddle/v2 v2.2.2 // indirect\n\tgithub.com/jfreymuth/vo",
    "strategic_keywords": [
      "runtime",
      "llm"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "jackwener",
    "name": "OpenCLI",
    "full_name": "jackwener/OpenCLI",
    "url": "https://github.com/jackwener/OpenCLI",
    "description": "Make Any Website into CLI & Use your logged-in browser by AI agent.",
    "language": "JavaScript",
    "total_stars": 25463,
    "forks": 2527,
    "stars_this_period": 76,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai-agent",
        "ai-agents",
        "ai-tools",
        "browser-automation",
        "browser-use",
        "cli",
        "playwright"
      ],
      "license": "Apache-2.0",
      "open_issues": 189,
      "created_at": "2026-03-14T22:10:23Z",
      "pushed_at": "2026-06-27T18:14:09Z",
      "homepage": "https://opencli.info/",
      "default_branch": "main",
      "forks": 2527,
      "watchers": 55,
      "archived": false,
      "size_kb": 13947
    },
    "readme_content": "# OpenCLI\n\n> **Convert any website into a CLI & run Browser Use on your logged-in Chrome.**\n> Turn websites, browser sessions, Electron apps, and local tools into deterministic interfaces for humans and AI agents.\n> Or run Browser Use against any page — navigate, fill forms, click, extract, automate.\n\n[![中文文档](https://img.shields.io/badge/docs-%E4%B8%AD%E6%96%87-0F766E?style=flat-square)](./README.zh-CN.md)\n[![npm](https://img.shields.io/npm/v/@jackwener/opencli?style=flat-square)](https://www.npmjs.com/package/@jackwener/opencli)\n[![Node.js Version](https://img.shields.io/node/v/@jackwener/opencli?style=flat-square)](https://nodejs.org)\n[![License](https://img.shields.io/npm/l/@jackwener/opencli?style=flat-square)](./LICENSE)\n\nOpenCLI gives you one surface for three different kinds of automation:\n\n- **Use built-in adapters** for sites like Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, Twitter/X, and [many more](#built-in-commands).\n- **Let AI Agents operate any website** — install the `opencli-browser` skill in your AI agent (Claude Code, Cursor, etc.), and it can navigate, click, type/fill, extract, and inspect any page through your logged-in browser via `opencli browser` primitives.\n- **Write new adapters** end-to-end with `opencli browser` + the `opencli-adapter-author` skill, which guides from first recon through field decoding, code, and `opencli browser verify`.\n\nIt also works as a **CLI hub** for local tools such as `gh`, `docker`, `longbridge`, `tg`, `discord`, `wx`, `ntn` (Notion), and other binaries you register yourself, plus **desktop app adapters** for Electron apps like Cursor, Trae CN, Codex, Antigravity, ChatGPT, and Trae SOLO.\n\n## Quick Start\n\n### 1. Install OpenCLI\n\nFor desktop use, start with **OpenCLIApp**. It bundles the OpenCLI runtime,\nkeeps the managed `opencli` command installed, and gives you a system tray UI\nfor setup, diagnostics, updates, browser-login keepalive, and Web → Markdown.\n\n**Option A — OpenCLIApp (recommended for macOS / Windows):**\nDownload the latest app from <https://opencli.info/download>, install it, then\nopen the app once and use the System page to install or repair the `opencli`\ncommand.\n\n**Option B — npm global install (CLI-only / CI / servers):**\nOpenCLI requires **Node.js >= 20** when installed through npm.\n\n```bash\nnode --version\nnpm install -g @jackwener/opencli\n```\n\n### 2. Install the Browser Bridge Extension\n\nOpenCLI connects to Chrome/Chromium through a lightweight Browser Bridge extension plus a small local daemon. The daemon auto-starts when needed.\n\n**Option A — Chrome Web Store (recommended):**\nInstall **OpenCLI** from the [Chrome Web Store](https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk).\n\n**Option B — Manual install:**\n1. Download the latest `opencli-extension-v{version}.zip` from the GitHub [Releases page](https://github.com/jackwener/opencli/releases).\n2. Unzip it, open `chrome://extensions`, and enable **Developer mode**.\n3. Click **Load unpacked** and select the unzipped folder.\n\n### 3. Verify the setup\n\n```bash\nopencli doctor\n```\n\n### 4. Optional: name your Chrome profile\n\nEach Chrome profile runs its own OpenCLI extension instance. If you use multiple Chrome profiles, list the connected profiles and assign local aliases:\n\n```bash\nopencli profile list\nopencli profile rename <contextId> work\nopencli profile use work\nopencli --profile work browser state\n```\n\nWith only one connected profile, OpenCLI uses it automatically. With multiple connected profiles and no default, OpenCLI asks you to choose instead of guessing.\n\n### 5. Run your first commands\n\n```bash\nopencli list\nopencli hackernews top --limit 5\nopencli bilibili hot --limit 5\n```\n\n## For Humans\n\nUse OpenCLI directly when you want a reliable command instead of a live browser session:\n\n- `opencli list` shows every registered command.\n- `opencli <site> <command>` runs a built-in or generated adapter.\n- `opencli external register mycli` exposes a local CLI through the same discovery surface.\n- `opencli doctor` helps diagnose browser connectivity.\n\n## Extending OpenCLI\n\nIf you want to add your own commands, start with the [Extending OpenCLI guide](./docs/guide/extending-opencli.md). README keeps this short; the guide covers the directory layout, source-control model, and install commands.\n\n| Need | Recommended path |\n|------|------------------|\n| Keep personal website commands in your own Git repo | `opencli plugin create` + `opencli plugin install file://...` |\n| Quickly draft a private local adapter | `opencli browser init <site>/<command>` in `~/.opencli/clis/` |\n| Modify an official adapter locally | `opencli adapter eject <site>` + `opencli adapter reset <site>` |\n| Publish or install third-party commands | `opencli plugin install github:user/repo` |\n| Wrap an existing local binary | `opencli external register <name>` |\n\n## For AI Agents\n\nOpenCLI's browser commands are designed to be used by AI Agents — not run manually. Install skills into your AI agent (Claude Code, Cursor, etc.), and the agent operates websites on your behalf using your logged-in Chrome session.\n\n### Install skills (also refreshes existing installs)\n\n```bash\nnpx skills add jackwener/opencli\n```\n\nOr install only what you need:\n\n```bash\nnpx skills add jackwener/opencli --skill opencli-adapter-author\nnpx skills add jackwener/opencli --skill opencli-autofix\nnpx skills add jackwener/opencli --skill opencli-browser\nnpx skills add jackwener/opencli --skill opencli-browser-sitemap\nnpx skills add jackwener/opencli --skill opencli-sitemap-author\nnpx skills add jackwener/opencli --skill opencli-usage\n```\n\n### Which skill to use\n\n| Skill | When to use | Example prompt to your AI agent |\n|-------|------------|-------------------------------|\n| **opencli-adapter-author** | Write a reusable adapter for a new site or add a command to an existing site | \"Write an adapter for douyin trending\" / \"Make a command that grabs the top posts from this page\" |\n| **opencli-autofix** | Repair a broken adapter when a built-in command fails | \"`opencli zhihu hot` is returning empty — fix it\" |\n| **opencli-browser** | Drive a real Chrome page ad-hoc — navigate, fill forms, click, extract | \"Help me check my Xiaohongshu notifications\" / \"Help me fill out this form\" / \"Use browser commands to scrape this page\" |\n| **opencli-browser-sitemap** | Consume site sitemap context while driving a browser task | \"Use the sitemap to navigate this website without blind clicking\" |\n| **opencli-sitemap-author** | Create or update site sitemap knowledge for browser agents | \"Record the stable workflow you just discovered for this site\" |\n| **opencli-usage** | Quick reference for all OpenCLI commands and sites | \"What commands does OpenCLI have for Twitter?\" |\n\n### How it works\n\nOnce `opencli-browser` is installed, your AI agent can:\n\n1. **Navigate** to any URL using your logged-in browser\n2. **Read** page content via structured DOM snapshots (not screenshots)\n3. **Interact** — click buttons, fill forms, select options, press keys\n4. **Extract** data from the page or intercept network API responses\n5. **Wait** for elements, text, or page transitions\n\nThe agent handles all the `opencli browser` commands internally — you just describe what you want done in natural language.\n\n**Skill references:**\n- [`skills/opencli-browser/SKILL.md`](./skills/opencli-browser/SKILL.md) — drive Chrome ad-hoc (navigate, fill forms, click, extract)\n- [`skills/opencli-browser-sitemap/SKILL.md`](./skills/opencli-browser-sitemap/SKILL.md) — use sitemap context while driving a browser task\n- [`skills/opencli-sitemap-author/SKILL.md`](./skills/opencli-sitemap-author/SKILL.md) — create or update site sitemap knowledge\n- [`skills/opencli-adapter-author/SKILL.md`](./skills/opencli-adapter-author/SKILL.md) — write a new adapter end-to-end\n- [`skills/opencli-autofix/SKILL.md`](./skills/opencli-autofix/SKILL.md) — repair broken adapters\n- [`skills/opencli-usage/SKILL.md`](./skills/opencli-usage/SKILL.md) — command and site reference\n\nAvailable browser commands include `open`, `state`, `click`, `type`, `fill`, `select`, `keys`, `wait`, `get`, `find`, `extract`, `frames`, `screenshot`, `scroll`, `back`, `eval`, `network`, `tab list`, `tab new`, `tab select`, `tab close`, `init`, `verify`, and `close`.\n\n`opencli browser` commands require a `<session>` positional immediately after `browser`. `opencli browser work open <url>` and `opencli browser work tab new [url]` both return a target ID. Use `opencli browser work tab list` to inspect target IDs, then pass `--tab <targetId>` to route a command to a specific tab. `tab new` creates a new tab without changing the default browser target; only `tab select <targetId>` promotes that tab to the default target for later untargeted commands in the same session.\n\n## Writing a new adapter\n\nWhen the site you need is not yet covered, use the `opencli-adapter-author` skill end-to-end:\n\n1. **Recon** the site and pick a pattern (SPA / SSR / JSONP / Token / Streaming).\n2. **Discover** the right endpoint — network inspection, initial state, bundle search, token trace, or interceptor fallback.\n3. **Pick auth** — `PUBLIC` / `COOKIE` / `INTERCEPT` / `UI` / `LOCAL`.\n4. **Decode** response fields and design output columns.\n5. `opencli browser recon analyze <url>` → `opencli browser recon init <site>/<name>` → write adapter → `opencli browser recon verify <site>/<name>`.\n6. Site knowledge persists to `~/.opencli/sites/<site>/` so the next adapter for the same site starts from context.\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `OPENCLI_PROFILE` | — | Browser Bridge profile alias/contextId to use when multiple Chrome profiles are connected |\n| `OPENCLI_WINDOW` | command default | Set to `foreground` or `background` to override Browser Bridge window placement. Browser-backed commands also accept `--window <foreground\\|background>`. |\n| `OPENCLI_BROWSER_CONNECT_TIMEOUT` | `45` | Seconds to wait for browser connection |\n| `OPENCLI_BROWSER_COMMAND_TIMEOUT` | `60` | Seconds to wait for a single browser command |\n| `OPENCLI_CDP_ENDPOINT` | — | Chrome DevTools Protocol endpoint for remote browser or Electron apps |\n| `OPENCLI_CDP_TARGET` | — | Filter CDP targets by URL substring (e.g. `detail.1688.com`) |\n| `OPENCLI_VERBOSE` | `false` | Enable verbose logging (`-v` flag also works) |\n| `DEBUG_SNAPSHOT` | — | Set to `1` for DOM snapshot debug output |\n\n`opencli browser *` requires an explicit `<session>` positional, uses a foreground browser window by default, and keeps that session's tab lease until `opencli browser <session> close` or idle cleanup. Browser-backed adapters use a background adapter window and release one-shot tab leases by default. Interactive adapters can declare `siteSession: 'persistent'` to keep a stable site tab for continuity; pass `--site-session ephemeral` for a one-shot tab.\n\n## Built-in Commands\n\n| Site | Commands |\n|------|----------|\n| **xiaohongshu** | `search` `ask` `note` `comments` `feed` `user` `download` `publish` `follow` `unfollow` `notifications` `creator-notes` `creator-notes-summary` `creator-note-detail` `creator-profile` `creator-stats` |\n| **bilibili** | `hot` `search` `history` `feed` `ranking` `download` `comments` `dynamic` `favorite` `following` `follow` `unfollow` `me` `subtitle` `summary` `video` `user-videos` |\n| **zhihu** | `hot` `search` `question` `download` `follow` `like` `favorite` `comment` `answer` |\n| **hackernews** | `top` `new` `best` `ask` `show` `jobs` `search` `user` |\n| **geogebra** | `eval` `add-point` `add-line` `add-circle` `add-polygon` `triangle` `hexagon` `list` `info` |\n| **linkedin** | `connect` `inbox` `job-detail` `jobs-preferences` `post-analytics` `posts` `profile-experience` `profile-projects` `profile-read` `profile-analytics` `safe-send` `search` `services-read` `sent-invitations` `thread-snapshot` `timeline` `salesnav-search` `salesnav-inbox` `salesnav-message` `salesnav-thread` ",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@jackwener/opencli\",\n  \"version\": \"1.8.5\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"description\": \"Make any website or Electron App your CLI. AI-powered.\",\n  \"engines\": {\n    \"node\": \">=20.0.0\"\n  },\n  \"type\": \"module\",\n  \"main\": \"dist/src/main.js\",\n  \"bin\": {\n    \"opencli\": \"dist/src/main.js\"\n  },\n  \"exports\": {\n    \".\": \"./dist/src/main.js\",\n    \"./registry\": \"./dist/src/registry-api.js\",\n    \"./errors\": \"./dist/src/errors.js\",\n    \"./types\": \"./dist/src/types.js\",\n    \"./utils\": \"./dist/src/utils.js\",\n    \"./logger\": \"./dist/src/logger.js\",\n    \"./launcher\": \"./dist/src/launcher.js\",\n    \"./browser/cdp\": \"./dist/src/browser/cdp.js\",\n    \"./browser/page\": \"./dist/src/browser/page.js\",\n    \"./browser/utils\": \"./dist/src/browser/utils.js\",\n    \"./download\": \"./dist/src/download/index.js\",\n    \"./download/article-download\": \"./dist/src/download/article-download.js\",\n    \"./download/media-download\": \"./dist/src/download/media-download.js\",\n    \"./download/progress\": \"./dist/src/download/progress.js\",\n    \"./pipeline\": \"./dist/src/pipeline/index.js\"\n  },\n  \"files\": [\n    \"dist/src/\",\n    \"clis/\",\n    \"skills/opencli-*/**\",\n    \"cli-manifest.json\",\n    \"scripts/\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"scripts\": {\n    \"dev\": \"tsx src/main.ts\",\n    \"dev:bun\": \"bun src/main.ts\",\n    \"build\": \"npm run clean-dist && npm run copy-yaml && npm run build-manifest\",\n    \"prebuild-manifest\": \"tsc --build && node -e \\\"require('fs').chmodSync('dist/src/main.js', 0o755)\\\"\",\n    \"build-manifest\": \"tsx src/build-manifest.ts\",\n    \"clean-dist\": \"node scripts/clean-dist.cjs\",\n    \"copy-yaml\": \"node scripts/copy-yaml.cjs\",\n    \"start\": \"node dist/src/main.js\",\n    \"start:bun\": \"bun dist/src/main.js\",\n    \"preuninstall\": \"node -e \\\"fetch('http://127.0.0.1:19825/shutdown',{method:'POST',headers:{'X-OpenCLI':'1'},signal:AbortSignal.timeout(3000)}).catch(()=>{})\\\" || true\",\n    \"postinstall\": \"node scripts/postinstall.js || true; node scripts/fetch-adapters.js || true\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"prepare\": \"[ -d src ] && npm run build || true\",\n    \"prepublishOnly\": \"npm run build\",\n    \"test\": \"vitest run --project unit --project extension --project adapter\",\n    \"test:bun\": \"bun vitest run --project unit --project extension --project adapter\",\n    \"test:adapter\": \"vitest run --project adapter\",\n    \"test:all\": \"vitest run\",\n    \"test:e2e\": \"vitest run --project e2e-fixed-port --project e2e\",\n    \"advise:listing-id-pairing\": \"node scripts/check-listing-id-pairing.mjs\",\n    \"check:silent-column-drop\": \"node scripts/check-silent-column-drop.mjs\",\n    \"check:typed-error-lint\": \"node scripts/check-typed-error-lint.mjs\",\n    \"docs:dev\": \"vitepress dev docs\",\n    \"docs:build\": \"vitepress build docs\",\n    \"docs:preview\": \"vitepress preview docs\"\n  },\n  \"keywords\": [\n    \"cli\",\n    \"browser\",\n    \"web\",\n    \"ai\"\n  ],\n  \"author\": \"jackwener\",\n  \"license\": \"Apache-2.0\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/jackwener/opencli.git\"\n  },\n  \"dependencies\": {\n    \"@mozilla/readability\": \"^0.6.0\",\n    \"cli-table3\": \"^0.6.5\",\n    \"commander\": \"^14.0.3\",\n    \"js-yaml\": \"^4.1.0\",\n    \"turndown\": \"^7.2.2\",\n    \"turndown-plugin-gfm\": \"^1.0.2\",\n    \"undici\": \"^6.27.0\",\n    \"ws\": \"^8.18.0\"\n  },\n  \"devDependencies\": {\n    \"@types/jsdom\": \"^27.0.0\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/node\": \"^25.5.2\",\n    \"@types/turndown\": \"^5.0.6\",\n    \"@types/ws\": \"^8.5.13\",\n    \"jsdom\": \"^29.0.2\",\n    \"tsx\": \"^4.19.3\",\n    \"typescript\": \"^6.0.2\",\n    \"vitepress\": \"^1.6.4\",\n    \"vitest\": \"^4.1.0\"\n  },\n  \"overrides\": {\n    \"postcss\": \"^8.5.10\",\n    \"vitepress\": {\n      \"vite\": \"6.4.2\"\n    }\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill",
      "automation"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "rust-lang",
    "name": "rust",
    "full_name": "rust-lang/rust",
    "url": "https://github.com/rust-lang/rust",
    "description": "Empowering everyone to build reliable and efficient software.",
    "language": "Rust",
    "total_stars": 114239,
    "forks": 15032,
    "stars_this_period": 72,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "compiler",
        "language",
        "rust"
      ],
      "license": "Apache-2.0",
      "open_issues": 12524,
      "created_at": "2010-06-16T20:39:03Z",
      "pushed_at": "2026-06-27T21:00:01Z",
      "homepage": "https://www.rust-lang.org",
      "default_branch": "main",
      "forks": 15032,
      "watchers": 1584,
      "archived": false,
      "size_kb": 928310
    },
    "readme_content": "<div align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/rust-lang/www.rust-lang.org/master/static/images/rust-social-wide-dark.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/rust-lang/www.rust-lang.org/master/static/images/rust-social-wide-light.svg\">\n    <img alt=\"The Rust Programming Language: A language empowering everyone to build reliable and efficient software\"\n         src=\"https://raw.githubusercontent.com/rust-lang/www.rust-lang.org/master/static/images/rust-social-wide-light.svg\"\n         width=\"50%\">\n  </picture>\n\n[Website][Rust] | [Getting started] | [Learn] | [Documentation] | [Contributing]\n</div>\n\nThis is the main source code repository for [Rust]. It contains the compiler,\nstandard library, and documentation.\n\n[Rust]: https://www.rust-lang.org/\n[Getting Started]: https://www.rust-lang.org/learn/get-started\n[Learn]: https://www.rust-lang.org/learn\n[Documentation]: https://www.rust-lang.org/learn#learn-use\n[Contributing]: CONTRIBUTING.md\n\n## Why Rust?\n\n- **Performance:** Fast and memory-efficient, suitable for critical services, embedded devices, and easily integrated with other languages.\n\n- **Reliability:** Our rich type system and ownership model ensure memory and thread safety, reducing bugs at compile-time.\n\n- **Productivity:** Comprehensive documentation, a compiler committed to providing great diagnostics, and advanced tooling including package manager and build tool ([Cargo]), auto-formatter ([rustfmt]), linter ([Clippy]) and editor support ([rust-analyzer]).\n\n[Cargo]: https://github.com/rust-lang/cargo\n[rustfmt]: https://github.com/rust-lang/rustfmt\n[Clippy]: https://github.com/rust-lang/rust-clippy\n[rust-analyzer]: https://github.com/rust-lang/rust-analyzer\n\n## Quick Start\n\nRead [\"Installation\"] from [The Book].\n\n[\"Installation\"]: https://doc.rust-lang.org/book/ch01-01-installation.html\n[The Book]: https://doc.rust-lang.org/book/index.html\n\n## Installing from Source\n\nIf you really want to install from source (though this is not recommended), see\n[INSTALL.md](INSTALL.md).\n\n## Getting Help\n\nSee https://www.rust-lang.org/community for a list of chat platforms and forums.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\nFor a detailed explanation of the compiler's architecture and how to begin contributing, see the [rustc-dev-guide](https://rustc-dev-guide.rust-lang.org/).\n\n## License\n\nRust is primarily distributed under the terms of both the MIT license and the\nApache License (Version 2.0), with portions covered by various BSD-like\nlicenses.\n\nSee [LICENSE-APACHE](LICENSE-APACHE), [LICENSE-MIT](LICENSE-MIT), and\n[COPYRIGHT](COPYRIGHT) for details.\n\n## Trademark\n\n[The Rust Foundation][rust-foundation] owns and protects the Rust and Cargo\ntrademarks and logos (the \"Rust Trademarks\").\n\nIf you want to use these names or brands, please read the\n[Rust language trademark policy][trademark-policy].\n\nThird-party logos may be subject to third-party copyrights and trademarks. See\n[Licenses][policies-licenses] for details.\n\n[rust-foundation]: https://rustfoundation.org/\n[trademark-policy]: https://rustfoundation.org/policy/rust-trademark-policy/\n[policies-licenses]: https://www.rust-lang.org/policies/licenses\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n# tidy-alphabetical-start\n  \"compiler/rustc\",\n  \"src/build_helper\",\n  \"src/rustc-std-workspace/rustc-std-workspace-alloc\",\n  \"src/rustc-std-workspace/rustc-std-workspace-core\",\n  \"src/rustc-std-workspace/rustc-std-workspace-std\",\n  \"src/rustdoc-json-types\",\n  \"src/tools/build-manifest\",\n  \"src/tools/bump-stage0\",\n  \"src/tools/cargotest\",\n  \"src/tools/clippy\",\n  \"src/tools/clippy/clippy_dev\",\n  \"src/tools/collect-license-metadata\",\n  \"src/tools/compiletest\",\n  \"src/tools/coverage-dump\",\n  \"src/tools/features-status-dump\",\n  \"src/tools/generate-copyright\",\n  \"src/tools/generate-windows-sys\",\n  \"src/tools/html-checker\",\n  \"src/tools/jsondocck\",\n  \"src/tools/jsondoclint\",\n  \"src/tools/linkchecker\",\n  \"src/tools/lint-docs\",\n  \"src/tools/lld-wrapper\",\n  \"src/tools/llvm-bitcode-linker\",\n  \"src/tools/miri\",\n  \"src/tools/miri/cargo-miri\",\n  \"src/tools/miropt-test-tools\",\n  \"src/tools/opt-dist\",\n  \"src/tools/remote-test-client\",\n  \"src/tools/remote-test-server\",\n  \"src/tools/replace-version-placeholder\",\n  \"src/tools/run-make-support\",\n  \"src/tools/rust-installer\",\n  \"src/tools/rustdoc\",\n  \"src/tools/rustdoc-gui-test\",\n  \"src/tools/rustdoc-themes\",\n  \"src/tools/rustfmt\",\n  \"src/tools/test-float-parse\",\n  \"src/tools/tidy\",\n  \"src/tools/tier-check\",\n  \"src/tools/unicode-table-generator\",\n  \"src/tools/unstable-book-gen\",\n  \"src/tools/wasm-component-ld\",\n  \"src/tools/x\",\n# tidy-alphabetical-end\n]\n\nexclude = [\n  \"build\",\n  \"compiler/rustc_codegen_cranelift\",\n  \"compiler/rustc_codegen_gcc\",\n  \"src/bootstrap\",\n  \"tests/rustdoc-gui\",\n  # HACK(eddyb) This hardcodes the fact that our CI uses `/checkout/obj`.\n  \"obj\",\n]\n\n[profile.release.package.rustc_thread_pool]\n# The rustc fork of Rayon has deadlock detection code which intermittently\n# causes overflows in the CI (see https://github.com/rust-lang/rust/issues/90227)\n# so we turn overflow checks off for now.\n# FIXME: This workaround should be removed once #90227 is fixed.\noverflow-checks = false\n\n# These are very thin wrappers around executing lld with the right binary name.\n# Basically nothing within them can go wrong without having been explicitly logged anyway.\n# We ship these in every rustc tarball and even after compression they add up\n# to around 0.6MB of data every user needs to download (and 15MB on disk).\n[profile.release.package.lld-wrapper]\ndebug = 0\nstrip = true\n[profile.release.package.wasm-component-ld-wrapper]\ndebug = 0\nstrip = true\n\n# Bigint libraries are slow without optimization, speed up testing\n[profile.dev.package.test-float-parse]\nopt-level = 3\n\n# Speed up the binary as much as possible\n[profile.release.package.test-float-parse]\nopt-level = 3\ncodegen-units = 1\n# FIXME: LTO cannot be enabled for binaries in a workspace\n# <https://github.com/rust-lang/cargo/issues/9330>\n# lto = true\n\n# If you want to use a crate with local modifications, you can set a path or git dependency here.\n# For git dependencies, also add your source to ALLOWED_SOURCES in src/tools/tidy/src/extdeps.rs.\n#[patch.crates-io]\n\n",
    "strategic_keywords": [
      "memory",
      "rag",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "microsoft",
    "name": "PowerToys",
    "full_name": "microsoft/PowerToys",
    "url": "https://github.com/microsoft/PowerToys",
    "description": "Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows",
    "language": "C",
    "total_stars": 135683,
    "forks": 8168,
    "stars_this_period": 67,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "advanced-paste",
        "color-picker",
        "command-palette",
        "desktop",
        "fancyzones",
        "keyboard-manager",
        "microsoft-powertoys",
        "powerrename",
        "powertoys",
        "windows",
        "windows-10",
        "windows-11"
      ],
      "license": "MIT",
      "open_issues": 7299,
      "created_at": "2019-05-01T17:44:02Z",
      "pushed_at": "2026-06-27T21:53:24Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 8168,
      "watchers": 1217,
      "archived": false,
      "size_kb": 509068
    },
    "readme_content": "<p align=\"center\">\n    <picture>\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"./doc/images/readme/pt-hero.light.png\" />\n      <img src=\"./doc/images/readme/pt-hero.dark.png\" />\n  </picture>\n</p>\n<h1 align=\"center\">\n  <span>Microsoft PowerToys</span>\n</h1>\n<p align=\"center\">\n  <span align=\"center\">Microsoft PowerToys is a collection of utilities that help you customize Windows and streamline everyday tasks.</span>\n</p>\n<h3 align=\"center\">\n  <a href=\"#-installation\">Installation</a>\n  <span> · </span>\n  <a href=\"https://aka.ms/powertoys-docs\">Documentation</a>\n  <span> · </span>\n  <a href=\"https://aka.ms/powertoys-releaseblog\">Blog</a>\n  <span> · </span>\n  <a href=\"#-whats-new\">Release notes</a>\n</h3>\n\n## 🔨 Utilities\n\nPowerToys includes over 30 utilities to help you customize and optimize your Windows experience:\n\n|   |   |   |\n| --- | --- | --- |\n| [<img src=\"doc/images/icons/AdvancedPaste.png\" alt=\"Advanced Paste icon\" height=\"16\"> Advanced Paste](https://aka.ms/PowerToysOverview_AdvancedPaste) | [<img src=\"doc/images/icons/Always%20On%20Top.png\" alt=\"Always on Top icon\" height=\"16\"> Always on Top](https://aka.ms/PowerToysOverview_AoT) | [<img src=\"doc/images/icons/Awake.png\" alt=\"Awake icon\" height=\"16\"> Awake](https://aka.ms/PowerToysOverview_Awake) |\n| [<img src=\"doc/images/icons/Color%20Picker.png\" alt=\"Color Picker icon\" height=\"16\"> Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) | [<img src=\"doc/images/icons/Command%20Not%20Found.png\" alt=\"Command Not Found icon\" height=\"16\"> Command Not Found](https://aka.ms/PowerToysOverview_CmdNotFound) | [<img src=\"doc/images/icons/Command Palette.png\" alt=\"Command Palette icon\" height=\"16\"> Command Palette](https://aka.ms/PowerToysOverview_CmdPal) |\n| [<img src=\"doc/images/icons/Crop%20And%20Lock.png\" alt=\"Crop and Lock icon\" height=\"16\"> Crop And Lock](https://aka.ms/PowerToysOverview_CropAndLock) | [<img src=\"doc/images/icons/Environment%20Manager.png\" alt=\"Environment Variables icon\" height=\"16\"> Environment Variables](https://aka.ms/PowerToysOverview_EnvironmentVariables) | [<img src=\"doc/images/icons/FancyZones.png\" alt=\"FancyZones icon\" height=\"16\"> FancyZones](https://aka.ms/PowerToysOverview_FancyZones) |\n| [<img src=\"doc/images/icons/File%20Explorer%20Preview.png\" alt=\"File Explorer Add-ons icon\" height=\"16\"> File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [<img src=\"doc/images/icons/File%20Locksmith.png\" alt=\"File Locksmith icon\" height=\"16\"> File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) | [<img src=\"doc/images/icons/GrabAndMove.png\" alt=\"Grab And Move icon\" height=\"16\"> Grab And Move](https://aka.ms/PowerToysOverview_GrabAndMove) |\n| [<img src=\"doc/images/icons/Host%20File%20Editor.png\" alt=\"Hosts File Editor icon\" height=\"16\"> Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | [<img src=\"doc/images/icons/Image%20Resizer.png\" alt=\"Image Resizer icon\" height=\"16\"> Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [<img src=\"doc/images/icons/Keyboard%20Manager.png\" alt=\"Keyboard Manager icon\" height=\"16\"> Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) |\n| [<img src=\"doc/images/icons/Light Switch.png\" alt=\"Light Switch icon\" height=\"16\"> Light Switch](https://aka.ms/PowerToysOverview_LightSwitch) | [<img src=\"doc/images/icons/Find My Mouse.png\" alt=\"Mouse Utilities icon\" height=\"16\"> Mouse Utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [<img src=\"doc/images/icons/MouseWithoutBorders.png\" alt=\"Mouse Without Borders icon\" height=\"16\"> Mouse Without Borders](https://aka.ms/PowerToysOverview_MouseWithoutBorders) |\n| [<img src=\"doc/images/icons/NewPlus.png\" alt=\"New+ icon\" height=\"16\"> New+](https://aka.ms/PowerToysOverview_NewPlus) | [<img src=\"doc/images/icons/Peek.png\" alt=\"Peek icon\" height=\"16\"> Peek](https://aka.ms/PowerToysOverview_Peek) | [<img src=\"doc/images/icons/PowerDisplay.png\" alt=\"PowerDisplay icon\" height=\"16\"> PowerDisplay](https://aka.ms/PowerToysOverview_PowerDisplay) |\n| [<img src=\"doc/images/icons/PowerRename.png\" alt=\"PowerRename icon\" height=\"16\"> PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [<img src=\"doc/images/icons/PowerToys%20Run.png\" alt=\"PowerToys Run icon\" height=\"16\"> PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) | [<img src=\"doc/images/icons/PowerAccent.png\" alt=\"Quick Accent icon\" height=\"16\"> Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) |\n| [<img src=\"doc/images/icons/Registry%20Preview.png\" alt=\"Registry Preview icon\" height=\"16\"> Registry Preview](https://aka.ms/PowerToysOverview_RegistryPreview) | [<img src=\"doc/images/icons/MeasureTool.png\" alt=\"Screen Ruler icon\" height=\"16\"> Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [<img src=\"doc/images/icons/Shortcut%20Guide.png\" alt=\"Shortcut Guide icon\" height=\"16\"> Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) |\n| [<img src=\"doc/images/icons/PowerOCR.png\" alt=\"Text Extractor icon\" height=\"16\"> Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [<img src=\"doc/images/icons/Workspaces.png\" alt=\"Workspaces icon\" height=\"16\"> Workspaces](https://aka.ms/PowerToysOverview_Workspaces) | [<img src=\"doc/images/icons/ZoomIt.png\" alt=\"ZoomIt icon\" height=\"16\"> ZoomIt](https://aka.ms/PowerToysOverview_ZoomIt) |\n\n## 📦 Installation\n\nFor detailed installation instructions and system requirements, visit the [installation docs](https://learn.microsoft.com/windows/powertoys/install).\n\nBut to get started quickly, choose one of the installation methods below:\n<br/><br/>\n<details open>\n<summary><strong>Download the .exe file from GitHub</strong></summary>\n<br/>\n\nGo to the [PowerToys GitHub releases](https://aka.ms/installPowerToys), scroll down and select **Assets** to reveal the installation files, and choose the one that matches your architecture and install scope. For most devices, that would be _x64 per-user_.\n\n</details>\n\n<details>\n<summary><strong>Microsoft Store</strong></summary>\n<br/>\nYou can easily install PowerToys from the Microsoft Store:\n<p>\n  <a style=\"text-decoration:none\" href=\"https://aka.ms/getPowertoys\">\n    <picture>\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"doc/images/readme/StoreBadge-dark.png\" width=\"148\" />\n      <img src=\"doc/images/readme/StoreBadge-light.png\" width=\"148\" />\n  </picture></a>\n</p>\n</details>\n\n<details>\n<summary><strong>WinGet</strong></summary>\n<br/>\nDownload PowerToys from [WinGet](https://github.com/microsoft/winget-cli#installing-the-client). Updating PowerToys via winget will respect the current PowerToys installation scope. To install PowerToys, run the following command from the command line / PowerShell:\n\n- User scope installer (default)\n\n```powershell\nwinget install Microsoft.PowerToys -s winget\n```\n\n- Machine-wide scope installer\n\n```powershell\nwinget install --scope machine Microsoft.PowerToys -s winget\n```\n</details>\n\n<details>\n<summary><strong>Other methods</strong></summary>\n<br/>\nThere are [community driven install methods](https://learn.microsoft.com/windows/powertoys/install#community-driven-install-tools) such as Chocolatey and Scoop. If these are your preferred install solutions, you can find the install instructions there.\n</details>\n\n## ✨ What's new?\n\n[![What's new image](doc/images/readme/Release-Banner.png)](https://github.com/microsoft/PowerToys/releases)\n\nTo see what's new, check out the [release notes](https://github.com/microsoft/PowerToys/releases/).\n\n## 🛣️ Roadmap\n\nWe are planning some nice new features and improvements for the next releases – a brand-new Shortcut Guide experience, ensuring it's easier to find and install Command Palette extensions and so much more! Stay tuned for [v0.100][github-next-release-work]!\n\n## ❤️ PowerToys Community\n\nThe PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn't be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Your contributions and feedback improve PowerToys month after month!\n\n## Contributing\n\nThis project welcomes contributions of all types. Besides coding features / bug fixes, other ways to assist include spec writing, design, documentation, and finding bugs. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows. We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We would be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort. Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you grant us the rights to use your contribution and that you have permission to do so. For guidance on developing for PowerToys, please read the [developer docs](./doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.\n\n## Code of conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].\n\n## Privacy statement\n\nThe application logs basic diagnostic data (telemetry). For more privacy information and what we collect, see our [PowerToys Data and Privacy documentation](https://aka.ms/powertoys-data-and-privacy-documentation).\n\n[oss-CLA]: https://cla.opensource.microsoft.com\n[oss-conduct-code]: CODE_OF_CONDUCT.md\n[community-link]: COMMUNITY.md\n[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aissue+milestone%3A%22PowerToys+0.100%22\n",
    "strategic_keywords": [],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 0,
      "novelty": 8,
      "productize": 4,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 6,
      "total": 46
    },
    "strategic_score": 46
  },
  {
    "owner": "comet-ml",
    "name": "opik",
    "full_name": "comet-ml/opik",
    "url": "https://github.com/comet-ml/opik",
    "description": "Debug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.",
    "language": "Python",
    "total_stars": 19951,
    "forks": 1562,
    "stars_this_period": 59,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "evaluation",
        "hacktoberfest",
        "hacktoberfest2025",
        "langchain",
        "llama-index",
        "llm",
        "llm-evaluation",
        "llm-observability",
        "llmops",
        "open-source",
        "openai",
        "playground",
        "prompt-engineering"
      ],
      "license": "Apache-2.0",
      "open_issues": 121,
      "created_at": "2023-05-10T12:57:13Z",
      "pushed_at": "2026-06-26T20:43:56Z",
      "homepage": "https://www.comet.com/docs/opik/",
      "default_branch": "main",
      "forks": 1562,
      "watchers": 124,
      "archived": false,
      "size_kb": 673510
    },
    "readme_content": "<div align=\"center\"><b><a href=\"README.md\">English</a> | <a href=\"readme_CN.md\">简体中文</a> | <a href=\"readme_JP.md\">日本語</a> | <a href=\"readme_PT_BR.md\">Português (Brasil)</a> | <a href=\"readme_KO.md\">한국어</a><br><a href=\"readme_ES.md\">Español</a> | <a href=\"readme_FR.md\">Français</a> | <a href=\"readme_DE.md\">Deutsch</a> | <a href=\"readme_RU.md\">Русский</a> | <a href=\"readme_AR.md\">العربية</a> | <a href=\"readme_HI.md\">हिन्दी</a> | <a href=\"readme_TR.md\">Türkçe</a></b></div>\n\n\n<h1 align=\"center\" style=\"border-bottom: none\">\n    <div>\n        <a href=\"https://www.comet.com/site/products/opik/?from=llm&utm_source=opik&utm_medium=github&utm_content=header_img&utm_campaign=opik\"><picture>\n            <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/logo-dark-mode.svg\">\n            <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/opik-logo.svg\">\n            <img alt=\"Comet Opik logo\" src=\"https://raw.githubusercontent.com/comet-ml/opik/refs/heads/main/apps/opik-documentation/documentation/static/img/opik-logo.svg\" width=\"200\" />\n        </picture></a>\n        <br>\n        Opik\n    </div>\n</h1>\n<h2 align=\"center\" style=\"border-bottom: none\">Open-source AI Observability, Evaluation, and Optimization</h2>\n<p align=\"center\">\nOpik helps you build, test, and optimize generative AI applications that run better, from prototype to production.  From RAG chatbots to code assistants to complex agentic systems, Opik provides comprehensive tracing, evaluation, and automatic prompt and tool optimization to take the guesswork out of AI development.\n</p>\n\n<div align=\"center\">\n\n[![Python SDK](https://img.shields.io/pypi/v/opik)](https://pypi.org/project/opik/)\n[![License](https://img.shields.io/github/license/comet-ml/opik)](https://github.com/comet-ml/opik/blob/main/LICENSE)\n[![Build](https://github.com/comet-ml/opik/actions/workflows/build_apps.yml/badge.svg)](https://github.com/comet-ml/opik/actions/workflows/build_apps.yml)\n<!-- [![Quick Start](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/comet-ml/opik/blob/main/apps/opik-documentation/documentation/docs/cookbook/opik_quickstart.ipynb) -->\n\n</div>\n\n<p align=\"center\">\n    <a href=\"https://www.comet.com/site/products/opik/?from=llm&utm_source=opik&utm_medium=github&utm_content=website_button&utm_campaign=opik\"><b>Website</b></a> •\n    <a href=\"https://chat.comet.com\"><b>Slack Community</b></a> •\n    <a href=\"https://x.com/Cometml\"><b>Twitter</b></a> •\n    <a href=\"https://www.comet.com/docs/opik/changelog\"><b>Changelog</b></a> •\n    <a href=\"https://www.comet.com/docs/opik/?from=llm&utm_source=opik&utm_medium=github&utm_content=docs_button&utm_campaign=opik\"><b>Documentation</b></a>\n</p>\n\n<div align=\"center\" style=\"margin-top: 1em; margin-bottom: 1em;\">\n<a href=\"#-what-is-opik\">🚀 What is Opik?</a> • <a href=\"#%EF%B8%8F-opik-server-installation\">🛠️ Opik Server Installation</a> • <a href=\"#-opik-client-sdk\">💻 Opik Client SDK</a> • <a href=\"#-logging-traces-with-integrations\">📝 Logging Traces</a><br>\n<a href=\"#-llm-as-a-judge-metrics\">🧑‍⚖️ LLM as a Judge</a> • <a href=\"#-evaluating-your-llm-application\">🔍 Evaluating your Application</a> • <a href=\"#-star-us-on-github\">⭐ Star Us</a> • <a href=\"#-contributing\">🤝 Contributing</a>\n</div>\n\n<br>\n\n[![Opik platform screenshot (thumbnail)](readme-thumbnail-new.png)](https://www.comet.com/signup?from=llm&utm_source=opik&utm_medium=github&utm_content=readme_banner&utm_campaign=opik)\n\n<a id=\"-what-is-opik\"></a>\n## 🚀 What is Opik?\n\nOpik (built by [Comet](https://www.comet.com?from=llm&utm_source=opik&utm_medium=github&utm_content=what_is_opik_link&utm_campaign=opik)) is an open-source platform designed to streamline the entire lifecycle of LLM applications. It empowers developers to evaluate, test, monitor, and optimize their models and agentic systems. Key offerings include:\n\n- **Comprehensive Observability**: Deep tracing of LLM calls, conversation logging, and agent activity.\n- **Advanced Evaluation**: Robust prompt evaluation, LLM-as-a-judge, and experiment management.\n- **Production-Ready**: Scalable monitoring dashboards and online evaluation rules for production.\n- **Opik Agent Optimizer**: Dedicated SDK and set of optimizers to enhance prompts and agents.\n- **Opik Guardrails**: Features to help you implement safe and responsible AI practices.\n\n<br>\n\nKey capabilities include:\n\n- **Development & Tracing:**\n  - Track all LLM calls and traces with detailed context during development and in production ([Quickstart](https://www.comet.com/docs/opik/quickstart/?from=llm&utm_source=opik&utm_medium=github&utm_content=quickstart_link&utm_campaign=opik)).\n  - Extensive 3rd-party integrations for easy observability: Seamlessly integrate with a growing list of frameworks, supporting many of the largest and most popular ones natively (including recent additions like **Google ADK**, **Autogen**, and **Flowise AI**). ([Integrations](https://www.comet.com/docs/opik/integrations/overview/?from=llm&utm_source=opik&utm_medium=github&utm_content=integrations_link&utm_campaign=opik))\n  - Annotate traces and spans with feedback scores via the [Python SDK](https://www.comet.com/docs/opik/v1/tracing/annotate_traces/#annotating-traces-and-spans-using-the-sdk?from=llm&utm_source=opik&utm_medium=github&utm_content=sdk_link&utm_campaign=opik) or the [UI](https://www.comet.com/docs/opik/tracing/annotate_traces/#annotating-traces-through-the-ui?from=llm&utm_source=opik&utm_medium=github&utm_content=ui_link&utm_campaign=opik).\n  - Experiment with prompts and models in the [Prompt Playground](https://www.comet.com/docs/opik/prompt_engineering/playground).\n\n- **Evaluation & Testing**:\n  - Automate your LLM application evaluation with [Datasets](https://www.comet.com/docs/opik/v1/evaluation/manage_datasets/?from=llm&utm_source=opik&utm_medium=github&utm_content=datasets_link&utm_campaign=opik) and [Experiments](https://www.comet.com/docs/opik/v1/evaluation/evaluate_your_llm/?from=llm&utm_source=opik&utm_medium=github&utm_content=eval_link&utm_campaign=opik).\n  - Leverage powerful LLM-as-a-judge metrics for complex tasks like [hallucination detection](https://www.comet.com/docs/opik/evaluation/metrics/hallucination/?from=llm&utm_source=opik&utm_medium=github&utm_content=hallucination_link&utm_campaign=opik), [moderation](https://www.comet.com/docs/opik/evaluation/metrics/moderation/?from=llm&utm_source=opik&utm_medium=github&utm_content=moderation_link&utm_campaign=opik), and RAG assessment ([Answer Relevance](https://www.comet.com/docs/opik/evaluation/metrics/answer_relevance/?from=llm&utm_source=opik&utm_medium=github&utm_content=alex_link&utm_campaign=opik), [Context Precision](https://www.comet.com/docs/opik/evaluation/metrics/context_precision/?from=llm&utm_source=opik&utm_medium=github&utm_content=context_link&utm_campaign=opik)).\n  - Integrate evaluations into your CI/CD pipeline with our [PyTest integration](https://www.comet.com/docs/opik/v1/testing/pytest_integration/?from=llm&utm_source=opik&utm_medium=github&utm_content=pytest_link&utm_campaign=opik).\n\n- **Production Monitoring & Optimization**:\n  - Log high volumes of production traces: Opik is designed for scale (40M+ traces/day).\n  - Monitor feedback scores, trace counts, and token usage over time in the [Opik Dashboard](https://www.comet.com/docs/opik/v1/production/production_monitoring/?from=llm&utm_source=opik&utm_medium=github&utm_content=dashboard_link&utm_campaign=opik).\n  - Utilize [Online Evaluation Rules](https://www.comet.com/docs/opik/v1/production/rules/?from=llm&utm_source=opik&utm_medium=github&utm_content=dashboard_link&utm_campaign=opik) with LLM-as-a-Judge metrics to identify production issues.\n  - Leverage **Opik Agent Optimizer** and **Opik Guardrails** to continuously improve and secure your LLM applications in production.\n\n> [!TIP]\n> If you are looking for features that Opik doesn't have today, please raise a new [Feature request](https://github.com/comet-ml/opik/issues/new/choose) 🚀\n\n<br>\n\n<a id=\"%EF%B8%8F-opik-server-installation\"></a>\n## 🛠️ Opik Server Installation\n\nGet your Opik server running in minutes. Choose the option that best suits your needs:\n\n### Option 1: Comet.com Cloud (Easiest & Recommended)\n\nAccess Opik instantly without any setup. Ideal for quick starts and hassle-free maintenance.\n\n👉 [Create your free Comet account](https://www.comet.com/signup?from=llm&utm_source=opik&utm_medium=github&utm_content=install_create_link&utm_campaign=opik)\n\n### Option 2: Self-Host Opik for Full Control\n\nDeploy Opik in your own environment. Choose between Docker for local setups or Kubernetes for scalability.\n\n#### Self-Hosting with Docker Compose (for Local Development & Testing)\n\nThis is the simplest way to get a local Opik instance running. Note the new `./opik.sh` installation script:\n\nOn Linux or Mac Environment:\n\n```bash\n# Clone the Opik repository\ngit clone https://github.com/comet-ml/opik.git\n\n# Navigate to the repository\ncd opik\n\n# Start the Opik platform\n./opik.sh\n```\n\nOn Windows Environment:\n\n```powershell\n# Clone the Opik repository\ngit clone https://github.com/comet-ml/opik.git\n\n# Navigate to the repository\ncd opik\n\n# Start the Opik platform\npowershell -ExecutionPolicy ByPass -c \".\\\\opik.ps1\"\n```\n\n**Service Profiles for Development**\n\nThe Opik installation scripts now support service profiles for different development scenarios:\n\n```bash\n# Start full Opik suite (default behavior)\n./opik.sh\n\n# Start only infrastructure services (databases, caches etc.)\n./opik.sh --infra\n\n# Start infrastructure + backend services\n./opik.sh --backend\n\n# Enable guardrails with any profile\n./opik.sh --guardrails # Guardrails with full Opik suite\n./opik.sh --backend --guardrails # Guardrails with infrastructure + backend\n```\n\nUse the `--help` or `--info` options to troubleshoot issues. Dockerfiles now ensure containers run as non-root users for enhanced security. Once all is up and running, you can now visit [localhost:5173](http://localhost:5173) on your browser! For detailed instructions, see the [Local Deployment Guide](https://www.comet.com/docs/opik/self-host/local_deployment?from=llm&utm_source=opik&utm_medium=github&utm_content=self_host_link&utm_campaign=opik).\n\n#### Self-Hosting with Kubernetes & Helm (for Scalable Deployments)\n\nFor production or larger-scale self-hosted deployments, Opik can be installed on a Kubernetes cluster using our Helm chart. Click the badge for the full [Kubernetes Installation Guide using Helm](https://www.comet.com/docs/opik/self-host/kubernetes/#kubernetes-installation?from=llm&utm_source=opik&utm_medium=github&utm_content=kubernetes_link&utm_campaign=opik).\n\n[![Kubernetes](https://img.shields.io/badge/Kubernetes-%23326ce5.svg?&logo=kubernetes&logoColor=white)](https://www.comet.com/docs/opik/self-host/kubernetes/#kubernetes-installation?from=llm&utm_source=opik&utm_medium=github&utm_content=kubernetes_link&utm_campaign=opik)\n\n> [!IMPORTANT]\n> **Version 1.7.0 Changes**: Please check the [changelog](https://github.com/comet-ml/opik/blob/main/CHANGELOG.md) for important updates and breaking changes.\n\n<a id=\"-opik-client-sdk\"></a>\n## 💻 Opik Client SDK\n\nOpik provides a suite of client libraries and a REST API to interact with the Opik server. This includes SDKs for Python, TypeScript, and Ruby (via OpenTelemetry), allowing for seamless integration into your workflows. For detailed API and SDK references, see the [Opik Client Reference Documentation](https://www.comet.com/docs/opik/reference/overview?from=llm&utm_source=opik&utm_medium=github&utm_content=reference_link&utm_campaign=opik).\n\n### Python SDK Quick Start\n\nTo get started with the Python SDK:\n\nInstall the package:\n\n```bash\n# install using pip\npip install opik\n\n# or install with uv\nuv pip ",
    "strategic_keywords": [
      "agent",
      "rag",
      "llm",
      "eval",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "louis-e",
    "name": "arnis",
    "full_name": "louis-e/arnis",
    "url": "https://github.com/louis-e/arnis",
    "description": "Generate any location from the real world in Minecraft with a high level of detail.",
    "language": "Rust",
    "total_stars": 16466,
    "forks": 1367,
    "stars_this_period": 58,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "maps",
        "minecraft",
        "openstreetmap",
        "osm",
        "overpass-api",
        "rust",
        "tauri"
      ],
      "license": "Apache-2.0",
      "open_issues": 122,
      "created_at": "2022-09-10T13:42:29Z",
      "pushed_at": "2026-06-27T12:12:31Z",
      "homepage": "https://arnismc.com/",
      "default_branch": "main",
      "forks": 1367,
      "watchers": 52,
      "archived": false,
      "size_kb": 100973
    },
    "readme_content": "<img src=\"assets/git/banner.png\" width=\"100%\" alt=\"Banner\">\n\n# Arnis [![CI Build Status](https://github.com/louis-e/arnis/actions/workflows/ci-build.yml/badge.svg)](https://github.com/louis-e/arnis/actions) [<img alt=\"GitHub Release\" src=\"https://img.shields.io/github/v/release/louis-e/arnis\" />](https://github.com/louis-e/arnis/releases) [<img alt=\"GitHub Downloads (all assets, all releases\" src=\"https://img.shields.io/github/downloads/louis-e/arnis/total\" />](https://github.com/louis-e/arnis/releases) [![Download here](https://img.shields.io/badge/Download-here-green)](https://github.com/louis-e/arnis/releases) [![Discord](https://img.shields.io/discord/1326192999738249267?label=Discord&color=%237289da)](https://discord.gg/mA2g69Fhxq)\n\nArnis creates complex and accurate Minecraft Java Edition (1.17+) and Bedrock Edition worlds that reflect real-world geography, topography, and architecture.\n\nThis free and open source project is designed to handle large-scale geographic data from the real world and generate detailed Minecraft worlds. The algorithm processes geospatial data from OpenStreetMap as well as elevation data to create an accurate Minecraft representation of terrain and architecture.\nGenerate your hometown, big cities, and natural landscapes with ease!\n\n_**Want mobile generation or larger map sizes?** [MapSmith](https://arnismc.com/mapsmith/) generates worlds in your browser, no install required._\n\n![Minecraft Preview](assets/git/preview.jpg)\n<i>This GitHub page and [arnismc.com](https://arnismc.com) are the only official project websites. Do not download Arnis from any other website.</i>\n\n## :keyboard: Usage\n<img width=\"60%\" src=\"assets/git/gui.png\"><br>\nDownload the [latest release](https://github.com/louis-e/arnis/releases/) or [compile](#trophy-open-source) the project on your own.\n\nChoose your area on the map using the rectangle tool and select your Minecraft world - then simply click on <i>Start Generation</i>!\nAdditionally, you can customize various generation settings, such as world scale, spawn point, or building interior generation.\n\n## 📚 Documentation\n\n<img src=\"assets/git/documentation.png\" width=\"100%\" alt=\"Banner\">\n\nFull documentation is available in the [GitHub Wiki](https://github.com/louis-e/arnis/wiki/), covering topics such as technical explanations, FAQs, contribution guidelines and roadmaps.\n\n[backgroundvid.webm](https://github.com/user-attachments/assets/420acc19-a850-418e-8397-1a45b05582ab)\n\n## :trophy: Open Source\n#### Key objectives of this project\n- **Modularity**: Ensure that all components (e.g., data fetching, processing, and world generation) are cleanly separated into distinct modules for better maintainability and scalability.\n- **Performance Optimization**: We aim to maintain strong performance and fast world generation.\n- **Comprehensive Documentation**: Detailed in-code documentation for a clear structure and logic.\n- **User-Friendly Experience**: Focus on making the project easy to use for end users.\n- **Cross-Platform Support**: We want this project to run smoothly on Windows, macOS, and Linux.\n\n#### How to contribute\nThis project is open source and welcomes contributions from everyone! Whether you're interested in fixing bugs, improving performance, adding new features, or enhancing documentation, your input is valuable. Simply fork the repository, make your changes, and submit a pull request. Please respect the above-mentioned key objectives. Contributions of all levels are appreciated, and your efforts help improve this tool for everyone.\n\nCommand line Build: ```cargo run --no-default-features -- --terrain --path=\"C:/YOUR_PATH/.minecraft/saves/worldname\" --bbox=\"min_lat,min_lng,max_lat,max_lng\"```<br>\nGUI Build: ```cargo run```<br>\n\nAfter your pull request is merged, I will take care of regularly creating update releases which will include your changes.\n\nIf you are using Nix, you can run the program directly with `nix run github:louis-e/arnis -- --terrain --path=YOUR_PATH/.minecraft/saves/worldname --bbox=\"min_lat,min_lng,max_lat,max_lng\"`\n\n## :star: Star History\n\n<a href=\"https://star-history.com/#louis-e/arnis&Date\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=louis-e/arnis&Date&theme=dark\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=louis-e/arnis&Date&type=Date\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=louis-e/arnis&Date&type=Date\" />\n </picture>\n</a>\n\n## :newspaper: Academic & Press Recognition\n\n<img src=\"assets/git/recognition.png\" width=\"100%\" alt=\"Banner\">\n\nArnis has been recognized in various academic and press publications after gaining more attention in December 2024.\n\n[Building realistic Minecraft worlds with Open Data on AWS: How Arnis uses elevation datasets at scale](https://aws.amazon.com/de/blogs/publicsector/building-realistic-minecraft-worlds-with-open-data-on-aws-how-arnis-uses-elevation-datasets-at-scale/)\n\n[Floodcraft: Game-based Interactive Learning Environment using Minecraft for Flood Mitigation and Preparedness for K-12 Education](https://www.researchgate.net/publication/384644535_Floodcraft_Game-based_Interactive_Learning_Environment_using_Minecraft_for_Flood_Mitigation_and_Preparedness_for_K-12_Education)\n\n[Hackaday: Bringing OpenStreetMap Data into Minecraft](https://hackaday.com/2024/12/30/bringing-openstreetmap-data-into-minecraft/)\n\n[TomsHardware: Minecraft Tool Lets You Create Scale Replicas of Real-World Locations](https://www.tomshardware.com/video-games/pc-gaming/minecraft-tool-lets-you-create-scale-replicas-of-real-world-locations-arnis-uses-geospatial-data-from-openstreetmap-to-generate-minecraft-maps)\n\n[XDA Developers: Hometown Minecraft Map: Arnis](https://www.xda-developers.com/hometown-minecraft-map-arnis/)\n\nFree to use press assets, including screenshots and logos, can be found [here](https://drive.google.com/file/d/1T1IsZSyT8oa6qAO_40hVF5KR8eEVCJjo/view?usp=sharing).\n\n## :copyright: License Information\nCopyright (c) 2022-2026 Louis Erbkamm (louis-e)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.[^3]\n\nThe Luanti block-name mapping in `src/luanti_block_map.rs` is derived from [MC2MT](https://github.com/rollerozxa/MC2MT) by rollerozxa and is licensed under the GNU Lesser General Public License v2.1 or later. The full attribution and license header are preserved in that file.\n\nDownload Arnis only from the official source https://arnismc.com or https://github.com/louis-e/arnis/. Every other website providing a download and claiming to be affiliated with the project is unofficial and may be malicious.\n\nThe logo was made by @nxfx21.\n\nNOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.\n\n\n[^1]: https://en.wikipedia.org/wiki/OpenStreetMap\n\n[^2]: https://en.wikipedia.org/wiki/Arnis,_Germany\n\n[^3]: https://github.com/louis-e/arnis/blob/main/LICENSE\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"arnis\"\nversion = \"2.9.0\"\nedition = \"2021\"\ndescription = \"Arnis - Generate real life cities in Minecraft\"\nhomepage = \"https://github.com/louis-e/arnis\"\nrepository = \"https://github.com/louis-e/arnis\"\nlicense = \"Apache-2.0\"\nreadme = \"README.md\"\n\n[profile.release]\nlto = \"thin\"\noverflow-checks = true\n\n[features]\ndefault = [\"gui\"]\ngui = [\"tauri\", \"tauri-plugin-log\", \"tauri-plugin-shell\", \"tokio\", \"rfd\", \"tauri-build\"]\n\n[build-dependencies]\ntauri-build = {version = \"2\", optional = true}\n\n[dependencies]\nbase64 = \"0.22.1\"\nbytes = \"1\"\nbyteorder = \"1.5\"\nclap = { version = \"4.6.0\", features = [\"derive\", \"env\"] }\ncolored = \"3.0.0\"\ndda-voxelize = { git = \"https://github.com/MIERUNE/dda-voxelize-rs\", rev = \"1e0844a873262f13b19a709e188a3df22a6fbf97\" }\ndirs = \"6.0.0\"\nfastanvil = \"0.32.0\"\nfastnbt = \"2.6.0\"\nflate2 = \"1.1\"\nfnv = \"1.0.7\"\nfs2 = \"0.4\"\ngeo = \"0.33.1\"\ngltf = { version = \"1\", default-features = false, features = [\"import\", \"names\", \"utils\", \"KHR_materials_unlit\"] }\nimage = \"0.25\"\nindicatif = \"0.18.4\"\nitertools = \"0.14.0\"\njsonwebtoken = \"10.3.0\"\nlog = \"0.4.27\"\nmimalloc = \"0.1\"\nonce_cell = \"1.21.3\"\nrand = { version = \"0.9.3\", features = [\"std\", \"std_rng\"] }\nrand_chacha = \"0.9\"\nrayon = \"1.10.0\"\nreqwest = { version = \"0.13.1\", features = [\"blocking\", \"json\", \"query\"] }\nrfd = { version = \"0.17.2\", optional = true }\nsemver = \"1.0.27\"\nparquet = { version = \"58\", default-features = false, features = [\"snap\", \"zstd\"] }\nserde = { version = \"1.0\", features = [\"derive\"] }\nserde_json = \"1.0\"\nsysinfo = { version = \"0.33\", default-features = false, features = [\"system\"] }\ntauri = { version = \"2\", optional = true }\ntauri-plugin-log = { version = \"2.6.0\", optional = true }\ntauri-plugin-shell = { version = \"2\", optional = true }\ntiff = \"0.11\"\ntokio = { version = \"1.48.0\", features = [\"full\"], optional = true }\nbedrockrs_level = { git = \"https://github.com/bedrock-crustaceans/bedrock-rs\", rev = \"7ef268b\", package = \"bedrockrs_level\" }\nbedrockrs_shared = { git = \"https://github.com/bedrock-crustaceans/bedrock-rs\", rev = \"7ef268b\", package = \"bedrockrs_shared\" }\nnbtx = { git = \"https://github.com/bedrock-crustaceans/nbtx\" }\nvek = \"0.17\"\nzip = { version = \"0.6\", default-features = false, features = [\"deflate\"] }\nrusty-leveldb = \"3\"\nrusqlite = { version = \"0.40\", features = [\"bundled\"] }\nzstd = \"0.13\"\n\n[target.'cfg(windows)'.dependencies]\nwindows = { version = \"0.62.0\", features = [\"Win32_System_Console\"] }\n\n[dev-dependencies]\ntempfile = \"3.26.0\"\n\n[[example]]\nname = \"refresh_wikidata_index\"\npath = \"assets/refresh_wikidata_index.rs\"\n\n# Freeze nbtx at the last pre-`NbtError`-rename commit; the pinned\n# bedrockrs_proto_core leaves it unpinned so cargo update would break it.\n[patch.\"https://github.com/bedrock-crustaceans/nbtx\"]\nnbtx = { git = \"https://github.com/louis-e/nbtx\", rev = \"551c38ac74f2e68a07d3dbdd354faac0c0ac966e\" }",
    "strategic_keywords": [
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 68
    },
    "strategic_score": 68
  },
  {
    "owner": "TencentCloud",
    "name": "TencentDB-Agent-Memory",
    "full_name": "TencentCloud/TencentDB-Agent-Memory",
    "url": "https://github.com/TencentCloud/TencentDB-Agent-Memory",
    "description": "TencentDB Agent Memory delivers fully local long-term memory for AI Agents via a 4-tier progressive pipeline, with zero external API dependencies.",
    "language": "TypeScript",
    "total_stars": 6276,
    "forks": 552,
    "stars_this_period": 54,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai-agent",
        "embedding",
        "llm",
        "local-first",
        "long-term-memory",
        "memory",
        "openclaw-plugin",
        "vector-search"
      ],
      "license": "NOASSERTION",
      "open_issues": 130,
      "created_at": "2026-04-07T06:34:26Z",
      "pushed_at": "2026-06-26T03:31:09Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 552,
      "watchers": 24,
      "archived": false,
      "size_kb": 3533
    },
    "readme_content": "<div align=\"center\">\n\n<img src=\"./assets/images/logo.png\" alt=\"TencentDB Agent Memory\" width=\"880\" />\n\n### Agents remember,Humans innovate.\n\n[![npm](https://img.shields.io/npm/v/@tencentdb-agent-memory/memory-tencentdb?color=blue)](https://www.npmjs.com/package/@tencentdb-agent-memory/memory-tencentdb)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)\n[![Node](https://img.shields.io/badge/node-%3E=22.16-brightgreen)](https://nodejs.org/)\n[![OpenClaw](https://img.shields.io/badge/OpenClaw-%3E=2026.3.13-orange)](https://github.com/openclaw/openclaw)\n[![Hermes](https://img.shields.io/badge/Hermes-Gateway-7B61FF)](https://hermes-agent.nousresearch.com/docs/)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/kDtHb5RW2)\n\n[Highlights](#-highlights) · [Overview](#overview) · [Core Technology](#core-technology-reject-flat-storage-embrace-layering-and-symbolization) · [Features](#-features) · [Quick Start](#quick-start)\n\n<div align=\"center\">\n\n[**English**](./README.md) · [简体中文](./README_CN.md)\n\n</div>\n\n\n</div>\n\n---\n\n## ✨ Highlights\n\n> **TencentDB Agent Memory = symbolic short-term memory + layered long-term memory.**\n>\n> - **Symbolic short-term memory** offloads heavy tool logs and condenses them into compact Mermaid symbols, cutting token usage and improving task success.\n> - **Layered long-term memory** distills fragmented conversations into structured personas and scenes, instead of flat vector piles.\n\nWhen integrated with OpenClaw, it cuts token usage by up to **61.38%**, improves pass rate by **51.52%** (relative), and raises PersonaMem accuracy from **48%** to **76%**.\n\n| Memory Capability | Benchmark | OpenClaw Success | With Plugin | Relative Δ | OpenClaw Tokens | With Plugin Tokens | Relative Δ |\n| :--- | :--- | :---: | :---: | :---: | :---: | :---: | :---: |\n| **Short-term** | WideSearch | 33% | **50%** | **+51.52%** | 221.31M | **85.64M** | **−61.38%** |\n| **Short-term** | SWE-bench | 58.4% | **64.2%** | **+9.93%** | 3474.1M | **2375.4M** | **−33.09%** |\n| **Short-term** | AA-LCR | 44.0% | **47.5%** | **+7.95%** | 112.0M | **77.3M** | **−30.98%** |\n| **Long-term** | PersonaMem | 48% | **76%** | **+59%** | — | — | — |\n\n> These results are measured over continuous long-horizon sessions, not isolated turns. For example, SWE-bench runs 50 consecutive tasks per session to simulate the context-accumulation pressure of real-world long-horizon agents.\n\n---\n\n## Overview\n\n**Memory is not about hoarding everything in the AI — it is about sparing humans from having to repeat themselves.**\n\nIn practice, we constantly re-explain the same SOPs, project background, tool conventions, and output formats to the Agent. Such information should not require repetition, nor should it be indiscriminately dumped into the context.\n\nTencentDB Agent Memory helps the Agent learn your workflows, retain task context, and reuse past experience. We reject both brute-force history accumulation and irreversible lossy summarization. Instead, we design memory as a layered system: **symbolic memory** for in-task information overload, and **memory layering** for cross-session experience.\n\n> **Let the Agent remember what should be remembered, so people can focus on judgment, creation, and work that truly matters.**\n\n---\n\n## Core Technology: Reject Flat Storage, Embrace Layering and Symbolization\n\nOur architecture rests on two pillars: **memory layering** and **symbolic memory**. Together they ensure Agents do not merely \"remember more\", but \"reason better\".\n\n### 1. Memory Layering: Progressive Disclosure with Heterogeneous Storage\n\nTraditional memory systems shred data into fragments and dump them into a flat vector store. Recall degenerates into a blind search across disconnected fragments, with no macro-level guidance.\n\nWhether it is long-term knowledge, short-term tasks, or future skill capabilities, memory should never be flat — both its formation and its recall must be hierarchical. TencentDB Agent Memory adopts **layering** as its unified architectural paradigm:\n\n*   **Short-term context layering.** The bottom layer archives raw tool outputs (`refs/*.md`); the middle layer extracts step-level summaries (`jsonl`); the top layer condenses state into a lightweight Mermaid canvas. The Agent only needs to attend to the top-layer structure in context, and drills down to the lower layers via `node_id` when an error occurs.\n*   **Long-term personalization layering.** In place of flat logs, we build a semantic pyramid: **L0 Conversation** (raw dialogue) → **L1 Atom** (atomic facts) → **L2 Scenario** (scene blocks) → **L3 Persona** (user profile). The Persona layer carries day-to-day preferences; the system drills down to Atoms only when details matter.\n*   **Skill generation layering.** Layering also applies to actions. The middle layer derives common solution patterns (**Scenario**) from bottom-layer execution traces (**Conversation**), and the top layer distills reusable Skills or standard SOPs (**Persona**).\n\n<p align=\"center\">\n  <img src=\"./assets/images/memory-pyramid-en.jpg\" alt=\"TencentDB Agent Memory L0 to L3 semantic pyramid\" width=\"860\" />\n</p>\n\n**Heterogeneous storage and progressive disclosure.** A dual-layer storage strategy underpins this architecture. The bottom layer (facts, logs, traces) is persisted in databases for robust full-text retrieval; the top layer (personas, scenes, canvases) is stored as human-readable Markdown files for high information density and white-box inspection. **Lower layers preserve evidence; upper layers preserve structure.**\n\n**Full traceability and lossless recovery.** Compression often sacrifices traceability. TencentDB Agent Memory avoids irreversible compression by maintaining a deterministic path from high-level abstractions back to ground-truth evidence. Whether it is an offloaded error log or a distilled user preference, the system guarantees a complete drill-down path: \"top-layer symbol (Persona / canvas) → mid-layer index (Scenario / jsonl) → bottom-layer raw text (L0 Conversation / refs)\".\n\n<div align=\"center\">\n  <img src=\"assets/images/flowchart1.png\" alt=\"Retrievable and Recoverable Drill-Down Chain\" />\n</div>\n\n### 2. Symbolic Memory: Maximum Semantics in Minimum Symbols (Mermaid Canvas)\n\nIn long tasks, the largest token consumers are verbose intermediate logs (search results, code, error traces). To address this, we combine **context offloading** with **symbolic memory**:\n\n*   **Mermaid symbol graph.** Instead of verbose prose or flat JSON, we encode task state transitions in high-density Mermaid syntax — precise enough for LLMs to parse, concise enough for humans to read.\n*   **History offloading.** Full tool logs are offloaded to external files; only a lightweight Mermaid task map remains in context.\n*   **`node_id` tracing.** The Agent reasons over the symbol graph; to verify a detail, it greps for the `node_id` and instantly retrieves the full raw text — cutting token cost while preserving full traceability.\n\n```mermaid\ngraph LR\n    Log[\"Verbose Logs<br/>(hundreds of thousands of tokens)\"] -->|\"1. Offload full text\"| FS[(\"External FS<br/>(refs/*.md)\")]\n    Log -->|\"2. Extract relations\"| MMD[\"Mermaid Canvas<br/>(with node_id)\"]\n    \n    MMD -->|\"3. Light injection\"| Agent((\"Agent Context<br/>(a few hundred tokens)\"))\n    Agent -. \"4. Recall via node_id\" .-> FS\n    \n    style Log fill:#f1f5f9,stroke:#94a3b8,stroke-dasharray: 5 5,color:#475569\n    style FS fill:#f8fafc,stroke:#cbd5e1,stroke-width:2px,color:#334155\n    style MMD fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a\n    style Agent fill:#fffbeb,stroke:#f59e0b,stroke-width:2px,color:#92400e\n```\n\n---\n\n## Quick Start\n## 🎬 Demos\n\n<table align=\"center\">\n  <tr align=\"center\" valign=\"middle\">\n    <td width=\"50%\" valign=\"middle\">\n      <video src=\"https://github.com/user-attachments/assets/09c64a2c-9997-42c0-90a3-a15e250cfa43\" controls=\"controls\" muted=\"muted\" style=\"max-width: 100%;\"></video>\n    </td>\n    <td width=\"50%\" valign=\"middle\">\n      <video src=\"https://github.com/user-attachments/assets/69045512-e75f-4c84-99dd-52ffa6e9e317\" controls=\"controls\" muted=\"muted\" style=\"max-width: 100%;\"></video>\n    </td>\n  </tr>\n  <tr align=\"center\" valign=\"top\">\n    <td>\n      <em>OpenClaw × Agent Memory</em>\n    </td>\n    <td>\n      <em>Hermes × Agent Memory</em>\n    </td>\n  </tr>\n</table>\n\n---\n\n\n### 1. OpenClaw\n### 1.1 Install the plugin\n\n```bash\nopenclaw plugins install @tencentdb-agent-memory/memory-tencentdb\nopenclaw gateway restart\n```\n\n> Please use the native OpenClaw command to upgrade the plugin. This approach prevents the plugin from being disabled caused by semantic version ranges.\n> ```bash\n> openclaw plugins update @tencentdb-agent-memory/memory-tencentdb\n> ```\n\n### 1.2 Zero-config to enable\n\nDefaults to a local `SQLite + sqlite-vec` backend.\n\n```jsonc\n// ~/.openclaw/openclaw.json\n{\n  \"memory-tencentdb\": {\n    \"enabled\": true\n  }\n}\n```\n\nOnce enabled, TencentDB Agent Memory automatically handles conversation capture, memory extraction, scene aggregation, persona generation, and recall before the next turn.\n\n### 1.3 Enable short-term compression (optional, requires version ≥ 0.3.4)\n\n```jsonc\n{\n  \"memory-tencentdb\": {\n    \"config\": {\n      \"offload\": {\n        \"enabled\": true\n      }\n    }\n  }\n}\n```\n\n#### Step 1 — Register the slot in your plugin config\n\nAdd the `slots` field so OpenClaw routes context-offload requests to this plugin:\n\n```jsonc\n{\n  \"plugins\": {\n    \"slots\": {\n      \"contextEngine\": \"memory-tencentdb\"\n    }\n  }\n}\n```\n\n#### Step 2 — Apply the runtime patch\n\nFor the best results, run the patch script below. It hooks `after-tool-call` messages so they can be offloaded and recovered correctly:\n\n```bash\nbash scripts/openclaw-after-tool-call-messages.patch.sh\n```\n\n> 💡 The patch only needs to be applied once per OpenClaw installation. After upgrading OpenClaw, re-run the script to re-apply.\n\n\n### 2. Hermes\n\nIn addition to OpenClaw, this plugin also supports [Hermes](https://github.com/NousResearch/hermes-agent) Agent. Choose the installation path based on your deployment scenario:\n\n| You want to … | Use |\n|---|---|\n| Spin up a memory-enabled Hermes from scratch in one command | 2.A Docker (below) |\n| Add memory to an existing Hermes install | 2.B Plug into an existing Hermes (next section) |\n\n#### 2.A Docker (greenfield, requires version ≥ 0.3.4)\n\nThe Docker image bundles `hermes-agent` and the `memory_tencentdb` provider together. The Gateway listens on `:8420`:\n\n```bash\n# ============ Configuration Parameters ============\n# MODEL_API_KEY    LLM API key (required) — replace with your own credential\n# MODEL_BASE_URL   LLM endpoint, defaults to Tencent Cloud LKE (Large Model Knowledge Engine)\n# MODEL_NAME       Model name, defaults to DeepSeek-V3.2\n# MODEL_PROVIDER   Provider type: \"custom\" works for any OpenAI-compatible endpoint\n\nMODEL_API_KEY=\"your-api-key\"\nMODEL_BASE_URL=\"https://api.lkeap.cloud.tencent.com/v1\"\nMODEL_NAME=\"deepseek-v3.2\"\nMODEL_PROVIDER=\"custom\"\n\n# ============ docker run Flags ============\n# -d                          Run container in detached (background) mode\n# --name hermes-memory        Container name, for later docker exec / logs / stop\n# --restart unless-stopped    Auto-restart on crash or host reboot\n# -p 8420:8420                Host port ↔ container port (Hermes Gateway)\n# -e MODEL_*                  Inject the config parameters above as env vars\n# -v hermes_data:/opt/data    Persist memory data to a named volume (survives restart)\n\n# Enter the Docker build directory (already cloned the repo and at the repo root)\ncd docker/opensource\n\n# Build\ndocker build -f Dockerfile.hermes -t hermes-memory .\n\n# Run\ndocker run -d \\\n  --name hermes-memory \\\n  --restart unless-stopped \\\n  -p 8420:8420 \\\n  -e MODEL_API_KEY=\"your-api-key\" \\\n  -e MODEL_BASE_URL=\"https://api.lkeap.cloud.tencent.com/v1\" \\\n  -e MODEL_NAME=\"deepseek-v3.2\" \\\n  -e MODEL_PROVIDER=\"custom\" \\\n  -v hermes_da",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@tencentdb-agent-memory/memory-tencentdb\",\n  \"version\": \"0.3.6\",\n  \"description\": \"Four-layer local memory system plugin for OpenClaw — auto-captures, structures, and profiles conversational knowledge using local LLM + SQLite vector search (L0→L1→L2→L3 pipeline)\",\n  \"type\": \"module\",\n  \"main\": \"./dist/index.mjs\",\n  \"bin\": {\n    \"migrate-sqlite-to-tcvdb\": \"./bin/migrate-sqlite-to-tcvdb.mjs\",\n    \"export-tencent-vdb\": \"./bin/export-tencent-vdb.mjs\",\n    \"read-local-memory\": \"./bin/read-local-memory.mjs\"\n  },\n  \"exports\": {\n    \".\": {\n      \"import\": \"./dist/index.mjs\",\n      \"default\": \"./dist/index.mjs\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"npm run build:plugin && npm run build:scripts\",\n    \"build:plugin\": \"tsdown\",\n    \"build:scripts\": \"npm run build:migrate-sqlite-to-vdb && npm run build:export-tencent-vdb && npm run build:read-local-memory\",\n    \"prepack\": \"npm run build\",\n    \"build:migrate-sqlite-to-vdb\": \"tsc -p scripts/migrate-sqlite-to-tcvdb/tsconfig.json --noEmitOnError false\",\n    \"migrate-sqlite-to-tcvdb\": \"node ./bin/migrate-sqlite-to-tcvdb.mjs\",\n    \"build:export-tencent-vdb\": \"tsc --project scripts/export-tencent-vdb/tsconfig.json\",\n    \"export-tencent-vdb\": \"node ./bin/export-tencent-vdb.mjs\",\n    \"build:read-local-memory\": \"tsc --project scripts/read-local-memory/tsconfig.json\",\n    \"read-local-memory\": \"node ./bin/read-local-memory.mjs\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:coverage\": \"vitest run --coverage\",\n    \"postinstall\": \"bash scripts/openclaw-after-tool-call-messages.patch.sh 2>/dev/null || true\"\n  },\n  \"files\": [\n    \"dist/\",\n    \"bin/\",\n    \"index.ts\",\n    \"scripts/migrate-sqlite-to-tcvdb/dist/\",\n    \"scripts/export-tencent-vdb/dist/\",\n    \"scripts/read-local-memory/dist/\",\n    \"scripts/memory-tencentdb-ctl.sh\",\n    \"scripts/install_hermes_memory_tencentdb.sh\",\n    \"scripts/README.memory-tencentdb-ctl.md\",\n    \"src\",\n    \"scripts/openclaw-after-tool-call-messages.patch.sh\",\n    \"scripts/setup-offload.sh\",\n    \"hermes-plugin/\",\n    \"openclaw.plugin.json\",\n    \"README.md\",\n    \"CHANGELOG.md\",\n    \"LICENSE\",\n    \"!src/**/*.test.ts\",\n    \"!src/**/*.spec.ts\",\n    \"!src/**/__tests__/\"\n  ],\n  \"keywords\": [\n    \"openclaw\",\n    \"openclaw-plugin\",\n    \"memory\",\n    \"ai-memory\",\n    \"long-term-memory\",\n    \"vector-search\",\n    \"sqlite-vec\",\n    \"llm\",\n    \"conversation\",\n    \"persona\",\n    \"scene-extraction\",\n    \"embedding\"\n  ],\n  \"author\": \"TencentDB Agent Memory Team\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=22.16.0\"\n  },\n  \"dependencies\": {\n    \"@ai-sdk/openai\": \"^3.0.53\",\n    \"@node-rs/jieba\": \"^2.0.1\",\n    \"@tencentdb-agent-memory/tcvdb-text\": \"^0.1.1\",\n    \"ai\": \"^6.0.164\",\n    \"js-tiktoken\": \"^1.0.18\",\n    \"json5\": \"^2.2.3\",\n    \"sqlite-vec\": \"0.1.7-alpha.2\",\n    \"tsx\": \"^4.21.0\",\n    \"undici\": \"^8.1.0\",\n    \"yaml\": \"^2.8.3\",\n    \"zod\": \"^4.4.3\"\n  },\n  \"optionalDependencies\": {\n    \"opik\": \"^1.0.0\"\n  },\n  \"peerDependencies\": {\n    \"node-llama-cpp\": \"^3.16.2\",\n    \"openclaw\": \">=2026.3.7\"\n  },\n  \"peerDependenciesMeta\": {\n    \"openclaw\": {\n      \"optional\": true\n    },\n    \"node-llama-cpp\": {\n      \"optional\": true\n    }\n  },\n  \"openclaw\": {\n    \"extensions\": [\n      \"./index.ts\"\n    ],\n    \"compat\": {\n      \"pluginApi\": \">=2026.3.13\",\n      \"minGatewayVersion\": \">=2026.3.13\"\n    },\n    \"build\": {\n      \"openclawVersion\": \"2026.3.13\",\n      \"pluginSdkVersion\": \"2026.3.13\"\n    },\n    \"bundle\": {\n      \"stageRuntimeDependencies\": true\n    }\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^25.5.2\",\n    \"@vitest/coverage-v8\": \"^4.1.2\",\n    \"tsdown\": \"^0.21.10\",\n    \"typescript\": \"^6.0.2\",\n    \"vitest\": \"^4.1.2\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "rag",
      "skill",
      "llm",
      "workflow",
      "vector",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "zed-industries",
    "name": "zed",
    "full_name": "zed-industries/zed",
    "url": "https://github.com/zed-industries/zed",
    "description": "Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.",
    "language": "Rust",
    "total_stars": 86068,
    "forks": 9284,
    "stars_this_period": 52,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "gpui",
        "rust-lang",
        "text-editor",
        "zed"
      ],
      "license": "NOASSERTION",
      "open_issues": 3424,
      "created_at": "2021-02-20T03:01:06Z",
      "pushed_at": "2026-06-27T21:22:53Z",
      "homepage": "https://zed.dev",
      "default_branch": "main",
      "forks": 9284,
      "watchers": 300,
      "archived": false,
      "size_kb": 475345
    },
    "readme_content": "# Zed\n\n[![Zed](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/zed-industries/zed/main/assets/badge/v0.json)](https://zed.dev)\n[![CI](https://github.com/zed-industries/zed/actions/workflows/run_tests.yml/badge.svg)](https://github.com/zed-industries/zed/actions/workflows/run_tests.yml)\n\nWelcome to Zed, a high-performance, multiplayer code editor from the creators of [Atom](https://github.com/atom/atom) and [Tree-sitter](https://github.com/tree-sitter/tree-sitter).\n\n---\n\n### Installation\n\nOn macOS, Linux, and Windows you can [download Zed directly](https://zed.dev/download) or install Zed via your local package manager ([macOS](https://zed.dev/docs/installation#macos)/[Linux](https://zed.dev/docs/linux#installing-via-a-package-manager)/[Windows](https://zed.dev/docs/windows#package-managers)).\n\nOther platforms are not yet available:\n\n- Web ([tracking discussion](https://github.com/zed-industries/zed/discussions/26195))\n\n### Developing Zed\n\n- [Building Zed for macOS](./docs/src/development/macos.md)\n- [Building Zed for Linux](./docs/src/development/linux.md)\n- [Building Zed for Windows](./docs/src/development/windows.md)\n\n### Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for ways you can contribute to Zed.\n\nAlso... we're hiring! Check out our [jobs](https://zed.dev/jobs) page for open roles.\n\n### Licensing\n\nZed source code is licensed primarily under GPL-3.0-or-later, with Apache-2.0 components where marked.\n\nLicense information for third party dependencies must be correctly provided for CI to pass.\n\nWe use [`cargo-about`](https://github.com/EmbarkStudios/cargo-about) to automatically comply with open source licenses. If CI is failing, check the following:\n\n- Is it showing a `no license specified` error for a crate you've created? If so, add `publish = false` under `[package]` in your crate's Cargo.toml.\n- Is the error `failed to satisfy license requirements` for a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to the `accepted` array in `script/licenses/zed-licenses.toml`.\n- Is `cargo-about` unable to find the license for a dependency? If so, add a clarification field at the end of `script/licenses/zed-licenses.toml`, as specified in the [cargo-about book](https://embarkstudios.github.io/cargo-about/cli/generate/config.html#crate-configuration).\n\n## Sponsorship\n\nZed is developed by **Zed Industries, Inc.**, a for-profit company.\n\nIf you’d like to financially support the project, you can do so via GitHub Sponsors.\nSponsorships go directly to Zed Industries and are used as general company revenue.\nThere are no perks or entitlements associated with sponsorship.\n\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n    \"crates/acp_thread\",\n    \"crates/acp_tools\",\n    \"crates/action_log\",\n    \"crates/activity_indicator\",\n    \"crates/agent\",\n    \"crates/agent_servers\",\n    \"crates/agent_settings\",\n    \"crates/agent_skills\",\n    \"crates/agent_ui\",\n    \"crates/ai_onboarding\",\n    \"crates/anthropic\",\n    \"crates/askpass\",\n    \"crates/assets\",\n    \"crates/audio\",\n    \"crates/auto_update\",\n    \"crates/auto_update_helper\",\n    \"crates/auto_update_ui\",\n    \"crates/aws_http_client\",\n    \"crates/bedrock\",\n    \"crates/benchmarks\",\n    \"crates/breadcrumbs\",\n    \"crates/buffer_diff\",\n    \"crates/call\",\n    \"crates/channel\",\n    \"crates/cli\",\n    \"crates/client\",\n    \"crates/clock\",\n    \"crates/cloud_api_client\",\n    \"crates/cloud_api_types\",\n    \"crates/cloud_llm_client\",\n    \"crates/codestral\",\n    \"crates/collab\",\n    \"crates/collab_ui\",\n    \"crates/collections\",\n    \"crates/command_palette\",\n    \"crates/command_palette_hooks\",\n    \"crates/component\",\n    \"crates/component_preview\",\n    \"crates/context_server\",\n    \"crates/copilot\",\n    \"crates/copilot_chat\",\n    \"crates/crashes\",\n    \"crates/credentials_provider\",\n    \"crates/csv_preview\",\n    \"crates/dap\",\n    \"crates/dap_adapters\",\n    \"crates/db\",\n    \"crates/debug_adapter_extension\",\n    \"crates/debugger_tools\",\n    \"crates/debugger_ui\",\n    \"crates/deepseek\",\n    \"crates/dev_container\",\n    \"crates/diagnostics\",\n    \"crates/docs_preprocessor\",\n    \"crates/edit_prediction\",\n    \"crates/edit_prediction_cli\",\n    \"crates/edit_prediction_context\",\n    \"crates/edit_prediction_metrics\",\n    \"crates/edit_prediction_types\",\n    \"crates/edit_prediction_ui\",\n    \"crates/editor\",\n    \"crates/editor_benchmarks\",\n    \"crates/encoding_selector\",\n    \"crates/env_var\",\n    \"crates/etw_tracing\",\n    \"crates/eval_cli\",\n    \"crates/eval_utils\",\n    \"crates/explorer_command_injector\",\n    \"crates/extension\",\n    \"crates/extension_api\",\n    \"crates/extension_cli\",\n    \"crates/extension_host\",\n    \"crates/extensions_ui\",\n    \"crates/feature_flags\",\n    \"crates/feature_flags_macros\",\n    \"crates/feedback\",\n    \"crates/file_finder\",\n    \"crates/file_icons\",\n    \"crates/fs\",\n    \"crates/fs_benchmarks\",\n    \"crates/fuzzy\",\n    \"crates/fuzzy_nucleo\",\n    \"crates/git\",\n    \"crates/git_hosting_providers\",\n    \"crates/git_ui\",\n    \"crates/go_to_line\",\n    \"crates/google_ai\",\n    \"crates/grammars\",\n    \"crates/gpui\",\n    \"crates/gpui_shared_string\",\n    \"crates/gpui_linux\",\n    \"crates/gpui_macos\",\n    \"crates/gpui_macros\",\n    \"crates/gpui_platform\",\n    \"crates/gpui_tokio\",\n    \"crates/gpui_util\",\n    \"crates/gpui_web\",\n    \"crates/gpui_wgpu\",\n    \"crates/gpui_windows\",\n    \"crates/html_to_markdown\",\n    \"crates/http_client\",\n    \"crates/http_client_tls\",\n    \"crates/http_proxy\",\n    \"crates/icons\",\n    \"crates/image_viewer\",\n    \"crates/input_latency_ui\",\n    \"crates/inspector_ui\",\n    \"crates/install_cli\",\n    \"crates/journal\",\n    \"crates/json_schema_store\",\n    \"crates/keymap_editor\",\n    \"crates/language\",\n    \"crates/language_core\",\n    \"crates/language_extension\",\n    \"crates/language_model\",\n    \"crates/language_model_core\",\n    \"crates/language_models\",\n    \"crates/language_models_cloud\",\n    \"crates/language_onboarding\",\n    \"crates/language_selector\",\n    \"crates/language_tools\",\n    \"crates/languages\",\n    \"crates/line_ending_selector\",\n    \"crates/livekit_api\",\n    \"crates/livekit_client\",\n    \"crates/lmstudio\",\n    \"crates/lsp\",\n    \"crates/markdown\",\n    \"crates/markdown_preview\",\n    \"crates/mermaid_render\",\n    \"crates/media\",\n    \"crates/menu\",\n    \"crates/migrator\",\n    \"crates/miniprofiler_ui\",\n    \"crates/mistral\",\n    \"crates/multi_buffer\",\n    \"crates/net\",\n    \"crates/node_runtime\",\n    \"crates/notifications\",\n    \"crates/oauth_callback_server\",\n    \"crates/ollama\",\n    \"crates/onboarding\",\n    \"crates/opencode\",\n    \"crates/open_ai\",\n    \"crates/open_path_prompt\",\n    \"crates/open_router\",\n    \"crates/outline\",\n    \"crates/outline_panel\",\n    \"crates/panel\",\n    \"crates/paths\",\n    \"crates/picker\",\n    \"crates/platform_title_bar\",\n    \"crates/prettier\",\n    \"crates/project\",\n    \"crates/project_benchmarks\",\n    \"crates/project_panel\",\n    \"crates/project_symbols\",\n    \"crates/prompt_store\",\n    \"crates/proto\",\n    \"crates/recent_projects\",\n    \"crates/refineable\",\n    \"crates/refineable/derive_refineable\",\n    \"crates/release_channel\",\n    \"crates/remote\",\n    \"crates/remote_connection\",\n    \"crates/remote_server\",\n    \"crates/repl\",\n    \"crates/reqwest_client\",\n    \"crates/rope\",\n    \"crates/rpc\",\n    \"crates/sandbox\",\n    \"crates/scheduler\",\n    \"crates/schema_generator\",\n    \"crates/search\",\n    \"crates/session\",\n    \"crates/settings\",\n    \"crates/settings_content\",\n    \"crates/settings_json\",\n    \"crates/settings_macros\",\n    \"crates/settings_profile_selector\",\n    \"crates/settings_ui\",\n    \"crates/shell_command_parser\",\n    \"crates/sidebar\",\n    \"crates/snippet\",\n    \"crates/snippet_provider\",\n    \"crates/snippets_ui\",\n    \"crates/sql",
    "strategic_keywords": [
      "agent",
      "skill",
      "workspace",
      "llm",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "CodebuffAI",
    "name": "codebuff",
    "full_name": "CodebuffAI/codebuff",
    "url": "https://github.com/CodebuffAI/codebuff",
    "description": "Generate code from the terminal!",
    "language": "TypeScript",
    "total_stars": 6775,
    "forks": 827,
    "stars_this_period": 52,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 117,
      "created_at": "2024-07-09T21:21:56Z",
      "pushed_at": "2026-06-27T21:10:30Z",
      "homepage": "https://codebuff.com",
      "default_branch": "main",
      "forks": 827,
      "watchers": 36,
      "archived": false,
      "size_kb": 148157
    },
    "readme_content": "# Codebuff & Freebuff\n\nEnglish | [简体中文](./README.zh-CN.md)\n\n**[Codebuff](https://codebuff.com)** is an open-source AI coding assistant that edits your codebase through natural language instructions. **[Freebuff](https://www.npmjs.com/package/freebuff)** is the free, ad-supported version — no subscription, no credits, no configuration.\n\nInstead of using one model for everything, Codebuff coordinates specialized agents that work together to understand your project and make precise changes.\n\n<div align=\"center\">\n  <img src=\"./assets/codebuff-vs-claude-code.png\" alt=\"Codebuff vs Claude Code\" width=\"400\">\n</div>\n\nCodebuff beats Claude Code at 61% vs 53% on [our evals](evals/README.md) across 175+ coding tasks over multiple open-source repos that simulate real-world tasks.\n\n## Freebuff: the free coding agent\n\n**[Freebuff](https://www.npmjs.com/package/freebuff)** is the free, ad-supported version of Codebuff. No subscription. No credits. No configuration. Just install and start coding in your terminal.\n\n### Install\n\n```bash\nnpm install -g freebuff\n```\n\n### Usage\n\n```bash\ncd ~/my-project\nfreebuff\n```\n\nThen tell Freebuff what you want — it finds the right files, makes the changes, and runs your tests.\n\n### Why Freebuff?\n\n- **Best open-source models** — Powered by the strongest open-source models available, like DeepSeek, Kimi, and MiniMax — no proprietary lock-in.\n- **Fast** — 5–10× speed up. Faster models plus context gathering in seconds rather than minutes.\n- **Loaded** — Built-in web research, browser use, and more.\n\n### Features\n\n- **File mentions** — Use `@filename` to reference specific files\n- **Agent mentions** — Use `@AgentName` to invoke specialized agents\n- **Bash mode** — Run terminal commands with `!command` or `/bash`\n- **Chat history** — Resume past conversations with `/history`\n- **Knowledge files** — Add `knowledge.md` to your project for context\n- **Themes** — Toggle light/dark mode with `/theme:toggle`\n\n### Commands\n\n| Command         | Description                      |\n| --------------- | -------------------------------- |\n| `/help`         | Show keyboard shortcuts and tips |\n| `/new`          | Start a new conversation         |\n| `/history`      | Browse past conversations        |\n| `/bash`         | Enter bash mode                  |\n| `/init`         | Create a starter knowledge.md    |\n| `/feedback`     | Share feedback                   |\n| `/theme:toggle` | Toggle light/dark mode           |\n| `/logout`       | Sign out                         |\n| `/exit`         | Quit                             |\n\n### FAQ\n\n**How can it be free?** Freebuff is supported by text ads.\n\n**What models do you use?** The best open-source models available. In full mode you can choose from DeepSeek V4 Pro, MiMo 2.5 Pro, Kimi K2.6, DeepSeek V4 Flash, MiMo 2.5, and MiniMax M3. Limited mode uses DeepSeek V4 Flash and MiMo 2.5. Gemini 3.1 Flash Lite handles file finding and research.\n\n**Which countries is Freebuff available in?** All countries. Freebuff runs in \"full\" mode in the US, Canada, UK, EU, and other select countries, and in \"limited\" mode everywhere else (or while using a VPN). See [freebuff.com](https://freebuff.com) for the full list.\n\n**What is limited mode?** Limited mode lets you use Freebuff outside the full-access countries, or while using a VPN. It includes DeepSeek V4 Flash and MiMo 2.5, with 5 one-hour sessions per day.\n\n**Are you training on my data?** No. We don't share your data with third parties that would train on it or use it for another purpose, unless you choose a model clearly labeled as \"Collects data for training.\"\n\n**What data do you store?** We don't store your codebase. We only collect minimal logs for debugging purposes.\n\n---\n\nThe rest of this README covers **Codebuff**, the full platform Freebuff is built on — its multi-agent architecture, custom agents, and SDK.\n\n## How it works\n\nWhen you ask Codebuff to \"add authentication to my API,\" it might invoke:\n\n1. A **File Picker Agent** to scan your codebase to understand the architecture and find relevant files\n2. A **Planner Agent** to plan which files need changes and in what order\n3. An **Editor Agent** to make precise edits\n4. A **Reviewer Agent** to validate changes\n\n<div align=\"center\">\n  <img src=\"./assets/multi-agents.png\" alt=\"Codebuff Multi-Agents\" width=\"250\">\n</div>\n\nThis multi-agent approach gives you better context understanding, more accurate edits, and fewer errors compared to single-model tools.\n\n## CLI: Install and start coding\n\nInstall:\n\n```bash\nnpm install -g codebuff\n```\n\nRun:\n\n```bash\ncd your-project\ncodebuff\n```\n\nThen just tell Codebuff what you want and it handles the rest:\n\n- \"Fix the SQL injection vulnerability in user registration\"\n- \"Add rate limiting to all API endpoints\"\n- \"Refactor the database connection code for better performance\"\n\nCodebuff will find the right files, makes changes across your codebase, and runs tests to make sure nothing breaks.\n\n## Create custom agents\n\nTo get started building your own agents, start Codebuff and run the `/init` command:\n\n```bash\ncodebuff\n```\n\nThen inside the CLI:\n\n```\n/init\n```\n\nThis creates:\n```\nknowledge.md               # Project context for Codebuff\n.agents/\n└── types/                 # TypeScript type definitions\n    ├── agent-definition.ts\n    ├── tools.ts\n    └── util-types.ts\n```\n\nYou can write agent definition files that give you maximum control over agent behavior.\n\nImplement your workflows by specifying tools, which agents can be spawned, and prompts. We even have TypeScript generators for more programmatic control.\n\nFor example, here's a `git-committer` agent that creates git commits based on the current git state. Notice that it runs `git diff` and `git log` to analyze changes, but then hands control over to the LLM to craft a meaningful commit message and perform the actual commit.\n\n```typescript\nexport default {\n  id: 'git-committer',\n  displayName: 'Git Committer',\n  model: 'openai/gpt-5-nano',\n  toolNames: ['read_files', 'run_terminal_command', 'end_turn'],\n\n  instructionsPrompt:\n    'You create meaningful git commits by analyzing changes, reading relevant files for context, and crafting clear commit messages that explain the \"why\" behind changes.',\n\n  async *handleSteps() {\n    // Analyze what changed\n    yield { tool: 'run_terminal_command', command: 'git diff' }\n    yield { tool: 'run_terminal_command', command: 'git log --oneline -5' }\n\n    // Stage files and create commit with good message\n    yield 'STEP_ALL'\n  },\n}\n```\n\n## SDK: Run agents in production\n\nInstall the [SDK package](https://www.npmjs.com/package/@codebuff/sdk) -- note this is different than the CLI codebuff package.\n\n```bash\nnpm install @codebuff/sdk\n```\n\nImport the client and run agents!\n\n```typescript\nimport { CodebuffClient } from '@codebuff/sdk'\n\n// 1. Initialize the client\nconst client = new CodebuffClient({\n  apiKey: 'your-api-key',\n  cwd: '/path/to/your/project',\n  onError: (error) => console.error('Codebuff error:', error.message),\n})\n\n// 2. Do a coding task...\nconst result = await client.run({\n  agent: 'base', // Codebuff's base coding agent\n  prompt: 'Add error handling to all API endpoints',\n  handleEvent: (event) => {\n    console.log('Progress', event)\n  },\n})\n\n// 3. Or, run a custom agent!\nconst myCustomAgent: AgentDefinition = {\n  id: 'greeter',\n  displayName: 'Greeter',\n  model: 'openai/gpt-5.1',\n  instructionsPrompt: 'Say hello!',\n}\nawait client.run({\n  agent: 'greeter',\n  agentDefinitions: [myCustomAgent],\n  prompt: 'My name is Bob.',\n  customToolDefinitions: [], // Add custom tools too!\n  handleEvent: (event) => {\n    console.log('Progress', event)\n  },\n})\n```\n\nLearn more about the SDK [here](https://www.npmjs.com/package/@codebuff/sdk).\n\n## Why choose Codebuff\n\n**Custom workflows**: TypeScript generators let you mix AI generation with programmatic control. Agents can spawn subagents, branch on conditions, and run multi-step processes.\n\n**Any model on OpenRouter**: Unlike Claude Code which locks you into Anthropic's models, Codebuff supports any model available on [OpenRouter](https://openrouter.ai/models) - from Claude and GPT to specialized models like Qwen, DeepSeek, and others. Switch models for different tasks or use the latest releases without waiting for platform updates.\n\n**Reuse any published agent**: Compose existing [published agents](https://www.codebuff.com/store) to get a leg up. Codebuff agents are the new MCP!\n\n**SDK**: Build Codebuff into your applications. Create custom tools, integrate with CI/CD, or embed coding assistance into your products.\n\n## Advanced Usage\n\n### Custom Agent Workflows\n\nCreate your own agents with specialized workflows using the `/init` command:\n\n```bash\ncodebuff\n/init\n```\n\nThis creates a custom agent structure in `.agents/` that you can customize.\n\n## Contributing to Codebuff\n\nWe ❤️ contributions from the community - whether you're fixing bugs, tweaking our agents, or improving documentation.\n\n**Want to contribute?** Check out our [Contributing Guide](./CONTRIBUTING.md) to get started.\n\n### Running Tests\n\nTo run the test suite:\n\n```bash\ncd cli\nbun test\n```\n\n**For interactive E2E testing**, install tmux:\n\n```bash\n# macOS\nbrew install tmux\n\n# Ubuntu/Debian\nsudo apt-get install tmux\n\n# Windows (via WSL)\nwsl --install\nsudo apt-get install tmux\n```\n\nSee [cli/src/__tests__/README.md](cli/src/__tests__/README.md) for comprehensive testing documentation.\n\nSome ways you can help:\n\n- 🐛 **Fix bugs** or add features\n- 🤖 **Create specialized agents** and publish them to the Agent Store\n- 📚 **Improve documentation** or write tutorials\n- 💡 **Share ideas** in our [GitHub Issues](https://github.com/CodebuffAI/codebuff/issues)\n\n## Get started\n\n### Install\n\n**CLI**: `npm install -g codebuff`\n\n**SDK**: `npm install @codebuff/sdk`\n\n**Freebuff (free)**: `npm install -g freebuff`\n\n### Resources\n\n**Documentation**: [codebuff.com/docs](https://codebuff.com/docs)\n\n**Community**: [Discord](https://codebuff.com/discord)\n\n**Issues & Ideas**: [GitHub Issues](https://github.com/CodebuffAI/codebuff/issues)\n\n**Contributing**: [CONTRIBUTING.md](./CONTRIBUTING.md) - Start here to contribute!\n\n**Support**: [support@codebuff.com](mailto:support@codebuff.com)\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=CodebuffAI/codebuff&type=Date)](https://www.star-history.com/#CodebuffAI/codebuff&Date)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"codebuff-project\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"license\": \"Apache-2.0\",\n  \"type\": \"module\",\n  \"workspaces\": [\n    \"agents\",\n    \"cli\",\n    \"common\",\n    \"evals\",\n    \"freebuff\",\n    \"packages/agent-runtime\",\n    \"packages/code-map\",\n    \"packages/llm-providers\",\n    \"scripts/tmux\",\n    \"sdk\"\n  ],\n  \"scripts\": {\n    \"start-cli\": \"bun --cwd cli dev\",\n    \"dev\": \"bun start-cli\",\n    \"dev:freebuff\": \"FREEBUFF_MODE=true bun --cwd cli dev\",\n    \"release:cli\": \"bun run --cwd=cli release\",\n    \"release:sdk\": \"bun run --cwd=sdk release\",\n    \"release:freebuff\": \"bun run --cwd=freebuff release\",\n    \"build:sdk\": \"cd sdk && bun run build\",\n    \"build:freebuff\": \"bun freebuff/cli/build.ts 0.0.0-dev\",\n    \"buffbench\": \"bun --cwd evals run-buffbench\",\n    \"ci\": \"bun run build:sdk && bun run build:freebuff\"\n  },\n  \"dependencies\": {\n    \"canvas\": \"^3.2.0\",\n    \"gif-encoder-2\": \"^1.0.5\",\n    \"zod\": \"^4.2.1\"\n  },\n  \"overrides\": {\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\",\n    \"@types/react\": \"19.2.14\",\n    \"@types/react-dom\": \"19.2.3\",\n    \"ai\": \"5.0.122\",\n    \"@ai-sdk/gateway\": \"2.0.28\",\n    \"@ai-sdk/provider\": \"2.0.1\",\n    \"@ai-sdk/provider-utils\": \"3.0.20\",\n    \"baseline-browser-mapping\": \"^2.9.14\",\n    \"caniuse-lite\": \"^1.0.30001792\",\n    \"zod\": \"^4.2.1\",\n    \"signal-exit\": \"3.0.7\"\n  },\n  \"devDependencies\": {\n    \"@tanstack/react-query\": \"^5.90.12\",\n    \"@types/bun\": \"1.3.11\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/lodash\": \"^4.17.21\",\n    \"@types/node\": \"^22.9.0\",\n    \"@types/node-fetch\": \"^2.6.12\",\n    \"@types/parse-path\": \"^7.1.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.17\",\n    \"bun-types\": \"1.3.11\",\n    \"eslint-config-prettier\": \"^9.1.0\",\n    \"eslint-plugin-import\": \"^2.29.1\",\n    \"eslint-plugin-unused-imports\": \"^4.1.4\",\n    \"ignore\": \"^6.0.2\",\n    \"lodash\": \"4.17.23\",\n    \"prettier\": \"^3.7.4\",\n    \"ts-node\": \"^10.9.2\",\n    \"ts-pattern\": \"^5.9.0\",\n    \"tsc-alias\": \"^1.8.16\",\n    \"tsconfig-paths\": \"4.2.0\",\n    \"typescript\": \"5.5.4\",\n    \"typescript-eslint\": \"^7.17.0\"\n  },\n  \"engines\": {\n    \"bun\": \"1.3.14\"\n  },\n  \"packageManager\": \"bun@1.3.14\"\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "workspace",
      "llm",
      "eval"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "rivet-dev",
    "name": "agentos",
    "full_name": "rivet-dev/agentos",
    "url": "https://github.com/rivet-dev/agentos",
    "description": "A faster, lighter, cheaper alternative to sandboxes. Run any coding agent inside an isolated Linux VM, with agent orchestration built in.",
    "language": "Rust",
    "total_stars": 3287,
    "forks": 159,
    "stars_this_period": 52,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "javascript",
        "llm",
        "sandbox",
        "v8",
        "wasm",
        "webassembly"
      ],
      "license": "Apache-2.0",
      "open_issues": 41,
      "created_at": "2024-02-07T01:06:25Z",
      "pushed_at": "2026-06-27T21:44:45Z",
      "homepage": "https://agentos-sdk.dev",
      "default_branch": "main",
      "forks": 159,
      "watchers": 10,
      "archived": false,
      "size_kb": 67590
    },
    "readme_content": "<p align=\"center\">\n  <img src=\".github/media/banner.png\" alt=\"agentOS\" />\n</p>\n\n<p align=\"center\">\n  A portable open-source operating system for AI agents.<br/>Near-zero cold starts (~6 ms), up to 32x cheaper than sandboxes.<br/>Built-in ACP agents: Pi, Claude Code, and OpenCode\n</p>\n\n<p align=\"center\">\n  <a href=\"https://agentos-sdk.dev/docs\">Documentation</a> | <a href=\"https://agentos-sdk.dev/docs/quickstart\">Quickstart</a>\n</p>\n\n\n## Why agentOS\n\n- **Runs inside your process**: No VMs to boot, no containers to pull. Agents start in milliseconds with minimal memory overhead.\n- **Embeds in your backend**: Agents call your functions directly via [bindings](https://agentos-sdk.dev/docs/bindings). No network hops, no complex auth between services.\n- **Granular security**: Deny-by-default permissions for filesystem, network, and process access. The same isolation technology trusted by browsers worldwide.\n- **Deploy anywhere**: Just an npm package. Works on your laptop, Rivet Cloud, Railway, Vercel, Kubernetes, or any container platform.\n- **Open source**: Apache 2.0 licensed. Self-host or use [Rivet Cloud](https://agentos-sdk.dev/docs/deployment) for managed infrastructure.\n\n### agentOS vs Sandbox\n\nagentOS is a lightweight VM that runs inside your process. Sandboxes are full Linux environments. agentOS integrates agents into your backend with [bindings](https://agentos-sdk.dev/docs/bindings) and granular permissions. Sandboxes give you a full OS for browsers, native binaries, and dev servers.\n\nYou don't have to choose: agentOS works with sandboxes through the [sandbox extension](https://agentos-sdk.dev/docs/sandbox), spinning up a full sandbox on demand and mounting the sandbox's file system when the workload needs it.\n\n## Quick start\n\n```bash\nnpm install @rivet-dev/agentos-core @agentos-software/common @agentos-software/pi\n```\n\n```ts\nimport { AgentOs } from \"@rivet-dev/agentos-core\";\nimport common from \"@agentos-software/common\";\nimport pi from \"@agentos-software/pi\";\n\nconst vm = await AgentOs.create({ software: [common, pi] });\n\n// Create a session and send a prompt\nconst { sessionId } = await vm.createSession(\"pi\", {\n  env: { ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY! },\n});\n\nvm.onSessionEvent(sessionId, (event) => {\n  console.log(event);\n});\n\nawait vm.prompt(sessionId, \"Write a hello world script to /home/agentos/hello.js\");\n\n// Read the file the agent created\nconst content = await vm.readFile(\"/home/agentos/hello.js\");\nconsole.log(new TextDecoder().decode(content));\n\nvm.closeSession(sessionId);\nawait vm.dispose();\n```\n\nagentOS can run Node.js and shell scripts inside the VM:\n\n```ts\n// Node.js\nawait vm.writeFile(\"/hello.mjs\", 'import fs from \"fs\"; fs.writeFileSync(\"/out.txt\", \"hi\"); console.log(fs.readFileSync(\"/out.txt\", \"utf8\"));');\nawait vm.exec(\"node /hello.mjs\");\n\n// Bash\nawait vm.exec(\"echo 'hi' > /out.txt && cat /out.txt\");\n```\n\nSee the [Quickstart guide](https://agentos-sdk.dev/docs/quickstart) for the full walkthrough.\n\n## Benchmarks\n\nAll benchmarks compare agentOS against the fastest/cheapest mainstream sandbox providers as of March 2026.\n\n### Cold start\n\n| Percentile | agentOS | Fastest Sandbox (E2B) | Speedup |\n|---|---|---|---|\n| p50 | 4.8 ms | 440 ms | **92x faster** |\n| p95 | 5.6 ms | 950 ms | **170x faster** |\n| p99 | 6.1 ms | 3,150 ms | **516x faster** |\n\n<sub>agentOS: median of 10,000 runs on Intel i7-12700KF. Sandbox: E2B.</sub>\n\n### Memory per instance\n\n| Workload | agentOS | Cheapest Sandbox (Daytona) | Reduction |\n|---|---|---|---|\n| Full coding agent (Pi + MCP + filesystem) | ~131 MB | ~1,024 MB | **8x smaller** |\n| Simple shell command | ~22 MB | ~1,024 MB | **47x smaller** |\n\n<sub>Sandbox baseline: Daytona minimum (1 vCPU + 1 GiB RAM).</sub>\n\n### Cost per execution (self-hosted)\n\n| Hardware | Cost/sec (agent workload) | vs Sandbox | \n|---|---|---|\n| AWS ARM | ~$0.0000032/s | **6x cheaper** |\n| AWS x86 | ~$0.0000053/s | **3x cheaper** |\n| Hetzner ARM | ~$0.0000011/s | **17x cheaper** |\n| Hetzner x86 | ~$0.0000013/s | **14x cheaper** |\n\n<sub>Sandbox baseline: Daytona at $0.0504/vCPU-h + $0.0162/GiB-h. Self-hosted assumes 70% utilization.</sub>\n\n## Features\n\n### Agents\n- **Multi-agent support**: Run built-in Pi, Claude Code, and OpenCode agents with a unified API, plus install registry command packages such as Codex as VM software\n- **[Sessions via ACP](https://agentos-sdk.dev/docs/sessions)**: Create, manage, and resume agent sessions over the [Agent Communication Protocol](https://agentclientprotocol.com)\n- **Universal transcript format**: One transcript format across all agents for debugging, auditing, and comparison\n- **[Automatic persistence](https://agentos-sdk.dev/docs/persistence)**: Every conversation is saved and replayable without extra code\n\n### Infrastructure\n- **[Mount external storage as a filesystem](https://agentos-sdk.dev/docs/filesystem)**: S3-compatible storage, Google Drive, host directories, overlay filesystems, or custom backends\n- **[Bindings](https://agentos-sdk.dev/docs/bindings)**: Define JavaScript functions that agents call as CLI commands inside the VM\n- **[Cron](https://agentos-sdk.dev/docs/cron), [webhooks](https://agentos-sdk.dev/docs/webhooks), and queues**: Schedule tasks, receive external events, and serialize work with built-in primitives\n- **[Sandbox extension](https://agentos-sdk.dev/docs/sandbox)**: Pair with full sandboxes (E2B, Daytona, etc.) for heavy workloads like browsers or native compilation\n\n### Orchestration\n- **[Multiplayer](https://agentos-sdk.dev/docs/multiplayer)**: Multiple clients observe and collaborate with the same agent in real time\n- **[Agent-to-agent](https://agentos-sdk.dev/docs/agent-to-agent)**: Agents delegate work to other agents through host-defined bindings\n- **[Workflows](https://agentos-sdk.dev/docs/workflows)**: Chain agent tasks into durable workflows with retries, branching, and resumable execution\n- **[Authentication](https://agentos-sdk.dev/docs/authentication)**: Integrate with your existing auth model (API keys, OAuth, JWTs)\n\n### Security\n- **[Deny-by-default permissions](https://agentos-sdk.dev/docs/permissions)**: Granular control over filesystem, network, process, and environment access\n- **[Programmatic network control](https://agentos-sdk.dev/docs/networking)**: Allow, deny, or proxy any outbound connection\n- **[Resource limits](https://agentos-sdk.dev/docs/resource-limits)**: Set precise CPU and memory limits per agent\n- **[VM isolation](https://agentos-sdk.dev/docs/architecture)**: Each agent runs in its own VM with no shared state\n\n## Architecture\n\nagentOS is built on an in-process operating system kernel. The kernel manages a virtual filesystem, process table, pipes, PTYs, and a virtual network stack. Everything runs inside the kernel -- nothing executes on the host.\n\nSee the [Architecture docs](https://agentos-sdk.dev/docs/architecture) for details.\n\n## Registry\n\nBrowse pre-built agents, tools, filesystems, and software packages at the [agentOS Registry](https://agentos-sdk.dev/registry).\n\n<!-- BEGIN PACKAGE TABLE -->\n### WASM Command Packages\n\n| Package | apt Equivalent | Description | Source | Combined Size | Gzipped |\n|---------|---------------|-------------|--------|---------------|---------|\n| `@agentos-software/codex-cli` | codex | OpenAI Codex command package (codex, codex-exec) | rust | - | - |\n| `@agentos-software/coreutils` | coreutils | GNU coreutils: sh, cat, ls, cp, sort, and 80+ commands | rust | - | - |\n| `@agentos-software/curl` | curl | curl HTTP client | c | - | - |\n| `@agentos-software/diffutils` | diffutils | GNU diffutils (diff) | rust | - | - |\n| `@agentos-software/duckdb` | duckdb | DuckDB command-line interface | c | - | - |\n| `@agentos-software/fd` | fd-find | fd fast file finder | rust | - | - |\n| `@agentos-software/file` | file | file type detection | rust | - | - |\n| `@agentos-software/findutils` | findutils | GNU findutils (find, xargs) | rust | - | - |\n| `@agentos-software/gawk` | gawk | GNU awk text processing | rust | - | - |\n| `@agentos-software/git` | git | git version control | rust | - | - |\n| `@agentos-software/grep` | grep | GNU grep pattern matching (grep, egrep, fgrep) | rust | - | - |\n| `@agentos-software/gzip` | gzip | GNU gzip compression (gzip, gunzip, zcat) | rust | - | - |\n| `@agentos-software/http-get` | http-get | Minimal HTTP GET fetch helper | c | - | - |\n| `@agentos-software/jq` | jq | jq JSON processor | rust | - | - |\n| `@agentos-software/make` | make | GNU make build tool (planned) *(planned)* | rust | - | - |\n| `@agentos-software/ripgrep` | ripgrep | ripgrep fast recursive search | rust | - | - |\n| `@agentos-software/sed` | sed | GNU sed stream editor | rust | - | - |\n| `@agentos-software/sqlite3` | sqlite3 | SQLite3 command-line interface | c | - | - |\n| `@agentos-software/tar` | tar | GNU tar archiver | rust | - | - |\n| `@agentos-software/tree` | tree | tree directory listing | rust | - | - |\n| `@agentos-software/unzip` | unzip | unzip archive extraction | c | - | - |\n| `@agentos-software/wget` | wget | GNU wget HTTP client | c | - | - |\n| `@agentos-software/yq` | yq | yq YAML/JSON processor | rust | - | - |\n| `@agentos-software/zip` | zip | zip archive creation | c | - | - |\n\n### Meta-Packages\n\n| Package | Description | Includes |\n|---------|-------------|----------|\n| `@agentos-software/build-essential` | Build-essential WASM command set (standard + make + git + curl) | standard, make, git, curl |\n| `@agentos-software/common` | Common WASM command set (coreutils + sed + grep + gawk + findutils + diffutils + tar + gzip) | coreutils, sed, grep, gawk, findutils, diffutils, tar, gzip |\n| `@agentos-software/everything` | All available WASM command packages in a single bundle | coreutils, sed, grep, gawk, findutils, diffutils, tar, gzip, curl, zip, unzip, jq, ripgrep, fd, tree, file, yq, codex-cli |\n<!-- END PACKAGE TABLE -->\n\n## License\n\nApache-2.0\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n    \"crates/agentos-protocol\",\n    \"crates/agentos-sidecar\",\n    # NOTE: crates/agentos-sidecar-browser is intentionally excluded from the\n    # default workspace members. It path/version-depends on\n    # `secure-exec-sidecar-browser`, which secure-exec does not publish to\n    # crates.io. It is unrelated to the actor-plugin cdylib + sidecar binary the\n    # preview ships. Re-add it once secure-exec publishes the browser crate.\n    \"crates/client\",\n    \"crates/agentos-actor-plugin\",\n]\n\n[workspace.package]\nversion = \"0.2.0-rc.3\"\nedition = \"2021\"\nlicense = \"Apache-2.0\"\nrepository = \"https://github.com/rivet-dev/agent-os\"\n\n# AgentOS crates are published as a lock-step chain. Secure Exec is consumed as\n# normal crates.io dependencies so CI/publish builds do not need a sibling\n# checkout.\n[workspace.dependencies]\nagentos-bridge = { package = \"secure-exec-bridge\", version = \"0.3.2\" }\nagentos-protocol = { path = \"crates/agentos-protocol\", version = \"0.2.0-rc.3\" }\nagentos-sidecar = { path = \"crates/agentos-sidecar\", version = \"0.2.0-rc.3\" }\nagentos-sidecar-browser = { path = \"crates/agentos-sidecar-browser\", version = \"0.2.0-rc.3\" }\nagentos-kernel = { package = \"secure-exec-kernel\", version = \"0.3.2\" }\nagentos-execution = { package = \"secure-exec-execution\", version = \"0.3.2\" }\nagentos-v8-runtime = { package = \"secure-exec-v8-runtime\", version = \"0.3.2\" }\nsecure-exec-client = { version = \"0.3.2\" }\nsecure-exec-bridge = { version = \"0.3.2\" }\nsecure-exec-sidecar = { version = \"0.3.2\" }\nsecure-exec-vm-config = { version = \"0.3.2\" }\nvbare = \"0.0.4\"\nvbare-compiler = { package = \"rivet-vbare-compiler\", version = \"0.0.5\" }\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "workspace",
      "llm",
      "protocol"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 11,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "CherryHQ",
    "name": "cherry-studio",
    "full_name": "CherryHQ/cherry-studio",
    "url": "https://github.com/CherryHQ/cherry-studio",
    "description": "AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs",
    "language": "TypeScript",
    "total_stars": 47889,
    "forks": 4545,
    "stars_this_period": 47,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent-skills",
        "ai-agent",
        "awesome-skills",
        "claude-code",
        "codex",
        "deepseek",
        "hermes-agent",
        "openclaw",
        "skills",
        "vibe-coding"
      ],
      "license": "AGPL-3.0",
      "open_issues": 1262,
      "created_at": "2024-05-24T01:56:26Z",
      "pushed_at": "2026-06-27T17:58:27Z",
      "homepage": "https://cherryai.com",
      "default_branch": "main",
      "forks": 4545,
      "watchers": 211,
      "archived": false,
      "size_kb": 294064
    },
    "readme_content": "<div align=\"right\" >\n  <details>\n    <summary >🌐 Language</summary>\n    <div>\n      <div align=\"right\">\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=en\">English</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=zh-CN\">简体中文</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=zh-TW\">繁體中文</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ja\">日本語</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ko\">한국어</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=hi\">हिन्दी</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=th\">ไทย</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=fr\">Français</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=de\">Deutsch</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=es\">Español</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=it\">Italiano</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ru\">Русский</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=pt\">Português</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=nl\">Nederlands</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=pl\">Polski</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=ar\">العربية</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=fa\">فارسی</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=tr\">Türkçe</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=vi\">Tiếng Việt</a></p>\n        <p><a href=\"https://openaitx.github.io/view.html?user=CherryHQ&project=cherry-studio&lang=id\">Bahasa Indonesia</a></p>\n      </div>\n    </div>\n  </details>\n</div>\n\n<h1 align=\"center\">\n  <a href=\"https://github.com/CherryHQ/cherry-studio/releases\">\n    <img src=\"https://github.com/CherryHQ/cherry-studio/blob/main/build/icon.png?raw=true\" width=\"150\" height=\"150\" alt=\"banner\" /><br>\n  </a>\n</h1>\n\n<p align=\"center\">English | <a href=\"https://cherry-ai.com\">Official Site</a> | <a href=\"https://docs.cherry-ai.com/docs/en-us\">Documents</a> | <a href=\"./docs/guides/development.md\">Development</a> | <a href=\"https://github.com/CherryHQ/cherry-studio/issues\">Feedback</a><br></p>\n\n<div align=\"center\">\n\n[![][deepwiki-shield]][deepwiki-link]\n[![][twitter-shield]][twitter-link]\n[![][discord-shield]][discord-link]\n[![][telegram-shield]][telegram-link]\n\n</div>\n<div align=\"center\">\n\n[![][github-release-shield]][github-release-link]\n[![][github-nightly-shield]][github-nightly-link]\n[![][github-contributors-shield]][github-contributors-link]\n[![][license-shield]][license-link]\n[![][commercial-shield]][commercial-link]\n[![][sponsor-shield]][sponsor-link]\n\n</div>\n\n<div align=\"center\">\n <a href=\"https://hellogithub.com/repository/1605492e1e2a4df3be07abfa4578dd37\" target=\"_blank\" style=\"text-decoration: none\"><img src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=1605492e1e2a4df3be07abfa4578dd37\" alt=\"Featured｜HelloGitHub\"  width=\"220\" height=\"55\" /></a>\n <a href=\"https://trendshift.io/repositories/14318\" target=\"_blank\" style=\"text-decoration: none\"><img src=\"https://trendshift.io/api/badge/repositories/14318\" alt=\"CherryHQ%2Fcherry-studio | Trendshift\" width=\"220\" height=\"55\" /></a>\n <a href=\"https://www.producthunt.com/posts/cherry-studio?embed=true&utm_source=badge-featured&utm_medium=badge&utm_souce=badge-cherry&#0045;studio\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=496640&theme=light\" alt=\"Cherry&#0032;Studio - AI&#0032;Chatbots&#0044;&#0032;AI&#0032;Desktop&#0032;Client | Product Hunt\" width=\"220\" height=\"55\" /></a>\n</div>\n\n# 🍒 Cherry Studio\n\nCherry Studio is a desktop client that supports multiple LLM providers, available on Windows, Mac and Linux.\n\n👏 Join [Telegram Group](https://t.me/CherryStudioAI)｜[Discord](https://discord.gg/wez8HtpxqQ) | [QQ Group(575014769)](https://qm.qq.com/q/lo0D4qVZKi)\n\n❤️ Like Cherry Studio? Give it a star 🌟 or [Sponsor](docs/sponsor.md) to support the development!\n\n# 🌠 Screenshot\n\n![](https://github.com/user-attachments/assets/36dddb2c-e0fb-4a5f-9411-91447bab6e18)\n\n![](https://github.com/user-attachments/assets/f549e8a0-2385-40b4-b52b-2039e39f2930)\n\n![](https://github.com/user-attachments/assets/58e0237c-4d36-40de-b428-53051d982026)\n\n# 🌟 Key Features\n\n1. **Diverse LLM Provider Support**:\n\n- ☁️ Major LLM Cloud Services: OpenAI, Gemini, Anthropic, and more\n- 🔗 AI Web Service Integration: Claude, Perplexity, [Poe](https://poe.com/), and others\n- 💻 Local Model Support with Ollama, LM Studio\n\n2. **AI Assistants & Conversations**:\n\n- 📚 300+ Pre-configured AI Assistants\n- 🤖 Custom Assistant Creation\n- 💬 Multi-model Simultaneous Conversations\n\n3. **Document & Data Processing**:\n\n- 📄 Supports Text, Images, Office, PDF, and more\n- ☁️ WebDAV File Management and Backup\n- 📊 Mermaid Chart Visualization\n- 💻 Code Syntax Highlighting\n\n4. **Practical Tools Integration**:\n\n- 🔍 Global Search Functionality\n- 📝 Topic Management System\n- 🔤 AI-powered Translation\n- 🎯 Drag-and-drop Sorting\n- 🔌 Mini Program Support\n- ⚙️ MCP(Model Context Protocol) Server\n\n5. **Enhanced User Experience**:\n\n- 🖥️ Cross-platform Support for Windows, Mac, and Linux\n- 📦 Ready to Use - No Environment Setup Required\n- 🎨 Light/Dark Themes and Transparent Window\n- 📝 Complete Markdown Rendering\n- 🤲 Easy Content Sharing\n\n# 📝 Roadmap\n\nWe're actively working on the following features and improvements:\n\n1. 🎯 **Core Features**\n\n- Selection Assistant with smart content selection enhancement\n- Deep Research with advanced research capabilities\n- Document Preprocessing with improved document handling\n- MCP Marketplace for Model Context Protocol ecosystem\n\n2. 🗂 **Knowledge Management**\n\n- Notes and Collections\n- Dynamic Canvas visualization\n- OCR capabilities\n- TTS (Text-to-Speech) support\n\n3. 📱 **Platform Support**\n\n- HarmonyOS Edition (PC)\n- Android App (Phase 1)\n- iOS App (Phase 1)\n- Multi-Window support\n- Window Pinning functionality\n- Intel AI PC (Core Ultra) Support\n\n4. 🔌 **Advanced Features**\n\n- Plugin System\n- ASR (Automatic Speech Recognition)\n- Assistant and Topic Interaction Refactoring\n\nTrack our progress and contribute on our [project board](https://github.com/orgs/CherryHQ/projects/7).\n\nWant to influence our roadmap? Join our [GitHub Discussions](https://github.com/CherryHQ/cherry-studio/discussions) to share your ideas and feedback!\n\n# 🌈 Theme\n\n- Theme Gallery: <https://cherrycss.com>\n- Aero Theme: <https://github.com/hakadao/CherryStudio-Aero>\n- PaperMaterial Theme: <https://github.com/rainoffallingstar/CherryStudio-PaperMaterial>\n- Claude dynamic-style: <https://github.com/bjl101501/CherryStudio-Claudestyle-dynamic>\n- Maple Neon Theme: <https://github.com/BoningtonChen/CherryStudio_themes>\n\nWelcome PR for more themes\n\n# 🤝 Contributing\n\nWe welcome contributions to Cherry Studio! Here are some ways you can contribute:\n\n1. **Contribute Code**: Develop new features or optimize existing code.\n2. **Fix Bugs**: Submit fixes for any bugs you find.\n3. **Maintain Issues**: Help manage GitHub issues.\n4. **Product Design**: Participate in design discussions.\n5. **Write Documentation**: Improve user manuals and guides.\n6. **Community Engagement**: Join discussions and help users.\n7. **Promote Usage**: Spread the word about Cherry Studio.\n\nRefer to the [Branching Strategy](docs/guides/branching-strategy.md) for contribution guidelines\n\n## Getting Started\n\n1. **Fork the Repository**: Fork and clone it to your local machine.\n2. **Create a Branch**: For your changes.\n3. **Submit Changes**: Commit and push your changes.\n4. **Open a Pull Request**: Describe your changes and reasons.\n\nFor more detailed guidelines, please refer to our [Contributing Guide](CONTRIBUTING.md).\n\nThank you for your support and contributions!\n\n# 🔧 Developer Co-creation Program\n\nWe are launching the Cherry Studio Developer Co-creation Program to foster a healthy and positive-feedback loop within the open-source ecosystem. We believe that great software is built collaboratively, and every merged pull request breathes new life into the project.\n\nWe sincerely invite you to join our ranks of contributors and shape the future of Cherry Studio with us.\n\n## Contributor Rewards Program\n\nTo give back to our core contributors and create a virtuous cycle, we have established the following long-term incentive plan.\n\n**The inaugural tracking period for this program will be Q3 2025 (July, August, September). Rewards for this cycle will be distributed on October 1st.**\n\nWithin any tracking period (e.g., July 1st to September 30th for the first cycle), any developer who contributes more than **30 meaningful commits** to any of Cherry Studio's open-source projects on GitHub will be eligible for the following benefits:\n\n- **Cursor Subscription Sponsorship**: Receive a **$70 USD** credit or reimbursement for your [Cursor](https://cursor.sh/) subscription, making AI your most efficient coding partner.\n- **Unlimited Model Access**: Get **unlimited** API calls for the **DeepSeek** and **Qwen** models.\n- **Cutting-Edge Tech Access**: Enjoy occasional perks, including API access to models like **Claude**, **Gemini**, and **OpenAI**, keeping you at the forefront of technology.\n\n## Growing Together & Future Plans\n\nA vibrant community is the driving force behind any sustainable open-source project. As Cherry Studio grows, so will our rewards program. We are committed to continuously aligning our benefits with the best-in-class tools and resources in the industry. This ensures our core contributors receive meaningful support, creating a positive cycle where developers, the community, and the project grow together.\n\n**Moving forward, the project will also embrace an increasingly open stance to give back to the entire open-source community.**\n\n## How to Get Started?\n\nWe look forward to your first Pull Request!\n\nYou can start by exploring our repositories, picking up a `good first issue`, or proposing your own enhancements. Every commit is a testament to the spirit of open source.\n\nThank you for your interest and contributions.\n\nLet's build together.\n\n# 🏢 Enterprise Edition\n\nBuilding on the Community Edition, we are proud to introduce **Cherry Studio Enterprise Edition**—a privately-deployable AI productivity and management platform designed for modern teams and enterprises.\n\nThe Enterprise Edition addresses core challenges in team collaboration by centralizing the management of AI resources, knowledge, and data. It empowers organizations to enhance efficiency, foster innovation, and ensure compliance, all while maintaining 100% control over their data in a secure environment.\n\n## Core Advantages\n\n- **Unified Model Management**: Centrally integrate and manage various cloud-based LLMs (e.g., OpenAI, Anthropic, Google Gemini) and locally deployed private models. Employees can use them out-of-the-box without individual configuration.\n- **Enterprise-Grade Knowledge Base**: Build, manage, and share team-wide knowledge bases. Ensures knowledge retention and consistency, enabling team members to interact with AI based on unified and accurate information.\n- **Fine-Grained Access Control**: Easily manage employee ac",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"CherryStudio\",\n  \"version\": \"2.0.0-dev\",\n  \"private\": true,\n  \"description\": \"A powerful AI assistant for producer.\",\n  \"desktopName\": \"CherryStudio.desktop\",\n  \"main\": \"./out/main/index.js\",\n  \"author\": \"support@cherry-ai.com\",\n  \"homepage\": \"https://github.com/CherryHQ/cherry-studio\",\n  \"engines\": {\n    \"node\": \">=24.11.1 <24.16.0\"\n  },\n  \"scripts\": {\n    \"start\": \"electron-vite preview\",\n    \"download:binaries\": \"node scripts/download-binaries.js\",\n    \"dev\": \"pnpm download:binaries && dotenv electron-vite dev\",\n    \"dev:watch\": \"dotenv electron-vite dev -- -w\",\n    \"debug\": \"dotenv -- electron-vite -- --inspect --sourcemap --remote-debugging-port=9222\",\n    \"build\": \"npm run typecheck && electron-vite build\",\n    \"build:check\": \"pnpm lint && pnpm docs:check-links && pnpm test\",\n    \"build:unpack\": \"dotenv npm run build && electron-builder --dir\",\n    \"build:win\": \"dotenv npm run build && electron-builder --win --x64 --arm64\",\n    \"build:win:x64\": \"dotenv npm run build && electron-builder --win --x64\",\n    \"build:win:arm64\": \"dotenv npm run build && electron-builder --win --arm64\",\n    \"build:mac\": \"dotenv npm run build && electron-builder --mac --arm64 --x64\",\n    \"build:mac:arm64\": \"dotenv npm run build && electron-builder --mac --arm64\",\n    \"build:mac:x64\": \"dotenv npm run build && electron-builder --mac --x64\",\n    \"build:linux\": \"dotenv npm run build && electron-builder --linux --x64 --arm64\",\n    \"build:linux:arm64\": \"dotenv npm run build && electron-builder --linux --arm64\",\n    \"build:linux:x64\": \"dotenv npm run build && electron-builder --linux --x64\",\n    \"release\": \"node scripts/version.js\",\n    \"publish\": \"pnpm build:check && pnpm release patch push\",\n    \"publish:artifacts\": \"cd packages/artifacts && npm publish && cd -\",\n    \"analyze:renderer\": \"VISUALIZER_RENDERER=true pnpm build\",\n    \"analyze:main\": \"VISUALIZER_MAIN=true pnpm build\",\n    \"typecheck\": \"pnpm --filter @cherrystudio/ai-sdk-provider build && concurrently -n \\\"node,web,aicore\\\" -c \\\"cyan,magenta,yellow\\\" \\\"npm run typecheck:node\\\" \\\"npm run typecheck:web\\\" \\\"pnpm --filter @cherrystudio/ai-core typecheck\\\"\",\n    \"typecheck:node\": \"tsgo --noEmit -p tsconfig.node.json --composite false\",\n    \"typecheck:web\": \"tsgo --noEmit -p tsconfig.web.json --composite false\",\n    \"i18n:check\": \"dotenv -e .env -- tsx scripts/check-i18n.ts\",\n    \"i18n:extract\": \"i18next-cli extract\",\n    \"i18n:lint\": \"i18next-cli lint\",\n    \"i18n:hardcoded\": \"tsx scripts/check-hardcoded-strings.ts\",\n    \"i18n:hardcoded:strict\": \"I18N_STRICT=true tsx scripts/check-hardcoded-strings.ts\",\n    \"i18n:unused\": \"tsx scripts/check-unused-i18n.ts\",\n    \"i18n:remove-unused\": \"tsx scripts/check-unused-i18n.ts --clean\",\n    \"styles:legacy-vars\": \"tsx scripts/check-legacy-css-vars.ts\",\n    \"styles:legacy-vars:strict\": \"LEGACY_CSS_VARS_STRICT=true tsx scripts/check-legacy-css-vars.ts\",\n    \"styles:reminders:pr\": \"tsx scripts/check-pr-style-reminders.ts\",\n    \"styles:canonical\": \"tsx scripts/fix-tailwind-canonical-classes.ts\",\n    \"i18n:sync\": \"dotenv -e .env -- tsx scripts/sync-i18n.ts\",\n    \"i18n:translate\": \"dotenv -e .env -- tsx scripts/auto-translate-i18n.ts\",\n    \"i18n:all\": \"pnpm i18n:sync && pnpm i18n:translate\",\n    \"skills:sync\": \"tsx scripts/skills-sync.ts\",\n    \"skills:check\": \"tsx scripts/skills-check.ts\",\n    \"update:languages\": \"tsx scripts/update-languages.ts\",\n    \"update:upgrade-config\": \"tsx scripts/update-app-upgrade-config.ts\",\n    \"test\": \"vitest run --silent\",\n    \"test:main\": \"vitest run --project main\",\n    \"test:renderer\": \"vitest run --project renderer\",\n    \"test:aicore\": \"vitest run --project aiCore\",\n    \"test:pkg:ui\": \"vitest run --project ui\",\n    \"test:shared\": \"vitest run --project shared\",\n    \"test:provider-registry\": \"vitest run --project provider-registry\",\n    \"test:update\": \"pnpm test:renderer --update\",\n    \"test:coverage\": \"vitest run --coverage --silent\",\n    \"test:ui\": \"vitest --ui\",\n    \"test:watch\": \"vitest\",\n    \"test:e2e\": \"pnpm playwright test\",\n    \"test:lint\": \"oxlint --deny-warnings && NO_LEGACY_CSS_WARN=true eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --cache\",\n    \"test:scripts\": \"vitest scripts\",\n    \"lint\": \"oxlint --fix && NO_LEGACY_CSS_WARN=true eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --cache && pnpm typecheck && pnpm i18n:check && pnpm format\",\n    \"format\": \"biome format --write && biome lint --write\",\n    \"format:check\": \"biome format && biome lint\",\n    \"bench\": \"vitest bench --run\",\n    \"bench:main\": \"vitest bench --run --project main\",\n    \"bench:renderer\": \"vitest bench --run --project renderer\",\n    \"bench:aicore\": \"vitest bench --run --project aiCore\",\n    \"bench:shared\": \"vitest bench --run --project shared\",\n    \"docs:check-links\": \"tsx scripts/check-doc-links.ts\",\n    \"prepare\": \"git config blame.ignoreRevsFile .git-blame-ignore-revs && prek install\",\n    \"claude\": \"dotenv -e .env -- claude\",\n    \"db:migrations:generate\": \"drizzle-kit generate --config ./migrations/",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "llm"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 10,
      "total": 81
    },
    "strategic_score": 81
  },
  {
    "owner": "dbt-labs",
    "name": "dbt-core",
    "full_name": "dbt-labs/dbt-core",
    "url": "https://github.com/dbt-labs/dbt-core",
    "description": "dbt enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.",
    "language": "Rust",
    "total_stars": 13195,
    "forks": 2437,
    "stars_this_period": 45,
    "source_slice": "all",
    "source_slices": [
      "all",
      "rust"
    ],
    "metadata": {
      "topics": [
        "analytics",
        "business-intelligence",
        "data-modeling",
        "dbt-viewpoint",
        "elt",
        "pypa",
        "slack"
      ],
      "license": "Apache-2.0",
      "open_issues": 1489,
      "created_at": "2016-03-10T02:38:00Z",
      "pushed_at": "2026-06-27T21:29:45Z",
      "homepage": "https://getdbt.com",
      "default_branch": "main",
      "forks": 2437,
      "watchers": 160,
      "archived": false,
      "size_kb": 85543
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/dbt-labs/dbt-core/fa1ea14ddfb1d5ae319d5141844910dd53ab2834/etc/dbt-core.svg\" alt=\"dbt logo\" width=\"750\"/>\n</p>\n\n> [!WARNING]\n> **dbt Core v1 development has moved to the [`1.latest`](https://github.com/dbt-labs/dbt-core/tree/1.latest) branch.**\n> The `main` branch now hosts dbt Core v2.0 (alpha) — a ground-up rewrite in Rust that is the foundation of the Fusion engine. If you're looking for the Python implementation of dbt Core, switch to [`1.latest`](https://github.com/dbt-labs/dbt-core/tree/1.latest).\n\n**[dbt](https://www.getdbt.com/)** enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.\n\n![architecture](https://raw.githubusercontent.com/dbt-labs/dbt-core/202cb7e51e218c7b29eb3b11ad058bd56b7739de/etc/dbt-transform.png)\n\n## About dbt Core v2.0\n\n> 🚧 dbt Core v2.0 is in alpha. Behavior, APIs, and on-disk formats may change before the stable release.\n\ndbt Core v2.0 is engineered for performance at scale — parsing, compiling, and running projects in a fraction of the time compared to v1. It's released under the Apache 2.0 license and is the foundation of the [Fusion engine](https://docs.getdbt.com/docs/fusion/about-fusion).\n\nThe big shifts from v1:\n\n- **Faster** — parse and compile times are dramatically improved, especially on the largest dbt projects.\n- **Stricter** — a tightly-defined language specification enforces correctness at parse time.\n- **More scalable artifacts** — v2.0 produces Parquet artifacts that can be easily queried, joined, and analyzed to understand your dbt project. The artifacts encompass everything in the JSON artifacts (e.g. `manifest.json`), which continue to be produced for backwards compatibility.\n- **Easier to install** — distributed as a single self-contained binary, with no Python runtime or dependency management required.\n- **A completely revamped local documentation experience** — dbt docs is now powered by those new artifacts and capable of scaling to large projects.\n\n### Supported operating systems and architectures\n\ndbt Core v2.0 and its drivers are compiled per operating system and architecture.\n\nLegend:\n* 🟢 — Supported today\n* 🟡 — Not yet supported\n\n| Operating system | x86-64 | ARM |\n|---|---|---|\n| macOS | 🟢 | 🟢 |\n| Linux | 🟢 | 🟢 |\n| Windows | 🟢 | 🟡 |\n\n## Understanding dbt\n\nAnalysts using dbt can transform their data by simply writing select statements, while dbt handles turning these statements into tables and views in a data warehouse.\n\nThese select statements, or \"models\", form a dbt project. Models frequently build on top of one another – dbt makes it easy to [manage relationships](https://docs.getdbt.com/docs/ref) between models, and [visualize these relationships](https://docs.getdbt.com/docs/documentation), as well as assure the quality of your transformations through [testing](https://docs.getdbt.com/docs/testing).\n\n![dbt dag](https://raw.githubusercontent.com/dbt-labs/dbt-core/6c6649f9129d5d108aa3b0526f634cd8f3a9d1ed/etc/dbt-dag.png)\n\n## Getting started\n\nStart by choosing a distribution. dbt Core is the baseline distribution of dbt. Fusion extends dbt Core with additional SQL comprehension abilities. Both distributions are free to install and can run locally.\n\n- **If you need an Apache 2.0 licensed tool** and the ability to review every line of code inside of it, [install dbt Core](https://docs.getdbt.com/docs/local/install-dbt#dbt-core).\n- **If you need a free CLI you can use locally**, [install Fusion](https://docs.getdbt.com/docs/local/install-dbt#dbt-fusion-engine-recommended). It can do more than dbt Core out of the box and you can seamlessly enable other advanced features over time if you choose to. \n\nRegardless of the distribution you choose, each is part of a single framework with a single language specification, meaning your business logic is portable in both directions.\n\nExplore the [dbt platform](https://docs.getdbt.com/docs/cloud/about-cloud/dbt-cloud-features) for an enhanced collaboration experience.\nRead the [introduction](https://docs.getdbt.com/docs/introduction/) and [viewpoint](https://docs.getdbt.com/docs/about/viewpoint/)\n\n## Join the dbt Community\n\n- Be part of the conversation in the [dbt Community Slack](http://community.getdbt.com/)\n- Read more on the [dbt Community Discourse](https://discourse.getdbt.com)\n\n## Reporting bugs and contributing code\n\n- Want to report a bug or request a feature? Let us know and open [an issue](https://github.com/dbt-labs/dbt-core/issues/new/choose)\n- Want to help us build dbt? Check out the [Contributing Guide](https://github.com/dbt-labs/dbt-core/blob/HEAD/CONTRIBUTING.md)\n\n## Code of Conduct\n\nEveryone interacting in the dbt project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [dbt Code of Conduct](https://docs.getdbt.com/community/resources/code-of-conduct).\n\n## License\n\ndbt Core is licensed under the [Apache License 2.0](LICENSE).\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "\n[workspace]\nmembers = [\n\n  # Source Available\n  \"crates/dbt-test-primitives\",\n  \"crates/dbt-agate\",\n  \"crates/dbt-auth\",\n  \"crates/dbt-base\",\n  \"crates/dbt-clap-core\",\n  \"crates/dbt-docs-core\",\n  \"crates/dbt-docs-server\",\n  \"crates/dbt-adapter-core\",\n  \"crates/dbt-common\",\n  \"crates/dbt-compilation\",\n  \"crates/dbt-csv\",\n  \"crates/dbt-pretty-table\",\n  \"crates/dbt-cloud-api\",\n  \"crates/dbt-cloud-config\",\n  \"crates/dbt-df-providers\",\n  \"crates/dbt-classification-types\",\n  \"crates/dbt-features\",\n  \"crates/dbt-tasks-core\",\n  \"crates/dbt-tasks-sa\",\n  \"crates/dbt-init\",\n  \"crates/dbt-index-core\",\n  \"crates/dbt-lineage-core\",\n  \"crates/dbt-error\",\n  \"crates/dbt-frontend-common\",\n  \"crates/dbt-jinja/minijinja\",\n  \"crates/minijinja-typecheck-builtins\",\n  \"crates/dbt-jinja/minijinja-contrib\",\n  \"crates/dbt-dag\",\n  \"crates/dbt-defer\",\n  \"crates/dbt-loader\",\n  \"crates/dbt-test-containers\",\n  \"crates/dbt-parser\",\n  \"crates/dbt-handles\",\n  \"crates/dbt-jinja-ctx\",\n  \"crates/dbt-jinja-filters\",\n  \"crates/dbt-jinja-vars\",\n  \"crates/dbt-metadata\",\n  \"crates/dbt-metadata-parquet\",\n  \"crates/dbt-profile\",\n  \"crates/dbt-state\",\n  \"crates/dbt-schemas\",\n  \"crates/dbt-schema-store\",\n  \"crates/dbt-telemetry\",\n  \"crates/dbt-tracing\",\n  \"crates/dbt-selector-parser\",\n  \"crates/dbt-scheduler\",\n  \"crates/dbt-proc-macros\",\n\n  \"crates/dbt-adapter\",\n  \"crates/dbt-adapter-sql\",\n  \"crates/dbt-ident\",\n  \"crates/dbt-jinja-utils\",\n  \"crates/dbt-main\",\n  \"crates/dbt-sa-cli\",\n  \"crates/dbt-adbc\",\n  \"crates/adbc-record-replay\",\n  \"crates/dbt-deps\",\n  \"crates/vortex-client\",\n  \"crates/vortex-events\",\n  \"crates/proto-rust\",\n  \"crates/proto-rust-macros\",\n  \"crates/dbt-env\",\n  \"crates/dbt-test-utils\",\n  \"crates/dbt-tui-progress\",\n  \"crates/dbt-metricflow\",\n  \"crates/dbt-sql-keywords\",\n\n  \"crates/dbt-sql/dbt-lexer-bigquery\",\n  \"crates/dbt-sql/dbt-lexer-databricks\",\n  \"crates/dbt-sql/dbt-lexer-duckdb\",\n  \"crates/dbt-sql/dbt-lexer-redshift\",\n  \"crates/dbt-sql/dbt-lexer-snowflake\",\n  \"crates/dbt-sql/dbt-lexer-trino\",\n  \"crates/dbt-sql/dbt-sql-utils\",\n\n  \"crates/dbt-ci\",\n  \"crates/dbt-login\",\n  \"crates/dbt-platform-auth\",\n]\nexclude = [\n  \"wizard/wizard-app/src-tauri\",\n  \"wizard/dbt-codex\",\n  \"wizard/wizard-ui\",\n]\n\nresolver = \"2\"\n\n[workspace.package]\nauthors = [\"dbt Labs <info@getdbt.com>\"]\ndescription = \"Fusion: A fast dbt engine, SQL compiler, local development framework, and in-memory analytical database\"\nedition = \"2024\"\nhomepage = \"https://getdbt.com\"\nkeywords = [\"sql\", \"parquet\", \"json\", \"csv\", \"dbt\"]\nlicense = \"Apache-2.0\"\nrepository = \"https://github.com/dbt-labs/dbt-core\"\nversion = \"2.0.0-alpha.2\"\n\n[patch.crates-io]\n\n# ============================= ring build.rs workaround ===========================\n#\n# ring 0.17.14 contains a rogue `build.rs` that forces a full rebuild of our\n# entire workspace on every `cargo xtask` invocation, which completely ruins\n# developer experience. As a workaround, we fork ring 0.17.14 and backport the\n# `build.rs` fix.\n#\n# This is a *temporary* workaround until upstream pushes a new release\n# containing the fix.\n#\n# For more context, see: https://github.com/briansmith/ring/issues/2454\nring = { git = \"https://github.com/sdf-labs/ring.git\", rev = \"3c35ce0b7e1bd9fe83180b19eda21d302e0b5006\" }\n# ==================================================================================\n\n# We currently need a fork of apache/arrow-datafusion with a few patches.\n# However, note that we declare dependencies in our crates with the same version\n# numbers as crates.io / the upstream repository.\n# See https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section\ndatafusion-common = { git = \"https://github.com/sdf-labs/datafusion\", rev = \"c0627e28fdd64ad1e33e3e8f3d6515c7ecb886ed\" } # @ sdf/50\ndatafusion-expr = { git = \"https://github.com/sdf-labs/datafusion\", rev = \"c0627e28fdd64ad1e33e3e8f3d6515c7ecb886ed\" } # @ sdf/50\ndatafusion = { git = \"https://github.com/sdf-labs/datafusion\", rev = \"c0627e28fdd64ad1e33e3e8f3d6515c7ecb886ed\" } # @ sdf/50\ndatafusion-catalog = { git = \"https://github.com/sdf-labs/datafusion\", rev = \"c0627e28fdd64ad1e33e3e8f3d6515c7ecb886ed\" } # @ sdf/50\n\n\n# sqlparser\nsqlparser = { git = \"https://github.com/sdf-labs/datafusion-sqlparser-rs\", rev = \"36843ce564b129a0e0a15b58997d8c132b7ce6d4\" } # @ sdf/0.58.0\n# OR, when working locally\n# sqlparser = { path = \"../datafusion-sqlparser-rs\" }\n\n# All arrow dependencies (run `cargo tree --prefix none | grep ^arrow | cut -d ' ' -f1 | sort -u` to get this list)\narrow = { git = \"https://github.com/sdf-labs/arrow-rs\", rev = \"e4924d7d6d07bb12ba6628e595f9f58c2c02c9a1\" } # @ sdf/56.0.0\narrow-arith = { git = \"https://github.com/sdf-labs/arrow-rs\", rev = \"e4924d7d6d07bb12ba6628e595f9f58c2c02c9a1\" } # @ sdf/56.0.0\narrow-array = { git = \"https://github.com/sdf-labs/arrow-rs\", rev = \"e4924d7d6d07bb12ba6628e595f9f58c2c02c9a1\" } # @ sdf/56.0.0\narrow-buffer = { git = \"https://github.com/sdf-labs/arrow-rs\", rev = \"e4924d7d6d07bb12ba6628e595f9f58c2c02c9a1\" } # @ sdf/56.0.",
    "strategic_keywords": [
      "runtime",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 84
    },
    "strategic_score": 84
  },
  {
    "owner": "directus",
    "name": "directus",
    "full_name": "directus/directus",
    "url": "https://github.com/directus/directus",
    "description": "The flexible backend for all your projects 🐰 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.",
    "language": "TypeScript",
    "total_stars": 36321,
    "forks": 4806,
    "stars_this_period": 44,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "api",
        "app",
        "cms",
        "composable",
        "data-visualization",
        "database",
        "directus",
        "graphql",
        "headless-cms",
        "javascript",
        "mariadb",
        "mssql",
        "mysql",
        "no-code",
        "node",
        "postgresql",
        "sql",
        "sqlite",
        "typescript",
        "vue"
      ],
      "license": "NOASSERTION",
      "open_issues": 385,
      "created_at": "2012-12-12T01:35:36Z",
      "pushed_at": "2026-06-27T16:15:27Z",
      "homepage": "https://directus.com",
      "default_branch": "main",
      "forks": 4806,
      "watchers": 329,
      "archived": false,
      "size_kb": 444137
    },
    "readme_content": "directus/readme.md",
    "manifest_file": "package.json",
    "manifest_content": "{\n\t\"name\": \"directus-monorepo\",\n\t\"private\": true,\n\t\"homepage\": \"https://directus.com\",\n\t\"type\": \"module\",\n\t\"scripts\": {\n\t\t\"build\": \"pnpm --recursive run build\",\n\t\t\"format\": \"prettier --cache --check .\",\n\t\t\"lint\": \"eslint --cache .\",\n\t\t\"lint:style\": \"stylelint '**/*.{css,scss,vue}' --ignore-path .gitignore --cache\",\n\t\t\"test\": \"pnpm --recursive --filter '!tests-blackbox' test\",\n\t\t\"test:blackbox\": \"rimraf ./dist && pnpm --filter directus deploy --legacy --prod dist && pnpm --filter tests-blackbox test\",\n\t\t\"test:coverage\": \"pnpm --recursive --filter '!tests-blackbox' test:coverage\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@changesets/cli\": \"catalog:\",\n\t\t\"@directus/release-notes-generator\": \"workspace:*\",\n\t\t\"@eslint/js\": \"catalog:\",\n\t\t\"eslint\": \"catalog:\",\n\t\t\"eslint-config-prettier\": \"catalog:\",\n\t\t\"eslint-plugin-import\": \"catalog:\",\n\t\t\"eslint-plugin-vue\": \"catalog:\",\n\t\t\"globals\": \"catalog:\",\n\t\t\"postcss-html\": \"catalog:\",\n\t\t\"prettier\": \"catalog:\",\n\t\t\"rimraf\": \"catalog:\",\n\t\t\"stylelint\": \"catalog:\",\n\t\t\"stylelint-config-standard\": \"catalog:\",\n\t\t\"stylelint-config-standard-scss\": \"catalog:\",\n\t\t\"stylelint-config-standard-vue\": \"catalog:\",\n\t\t\"stylelint-use-logical\": \"catalog:\",\n\t\t\"typescript\": \"catalog:\",\n\t\t\"typescript-eslint\": \"catalog:\"\n\t},\n\t\"pnpm\": {\n\t\t\"overrides\": {\n\t\t\t\"fast-xml-parser\": \"5.8.0\",\n\t\t\t\"@yarnpkg/shell>cross-spawn\": \"7.0.6\",\n\t\t\t\"tar\": \"7.5.15\",\n\t\t\t\"qs\": \"6.15.2\",\n\t\t\t\"minimatch@10\": \"10.2.5\",\n\t\t\t\"minimatch@9\": \"9.0.9\",\n\t\t\t\"basic-ftp\": \"5.3.1\",\n\t\t\t\"underscore\": \"1.13.8\",\n\t\t\t\"flatted\": \"3.4.2\",\n\t\t\t\"express@4>path-to-regexp\": \"0.1.13\",\n\t\t\t\"micromatch>picomatch\": \"2.3.2\",\n\t\t\t\"anymatch>picomatch\": \"2.3.2\",\n\t\t\t\"picomatch\": \"4.0.4\",\n\t\t\t\"defu\": \"6.1.7\",\n\t\t\t\"unplugin-vue>vite\": \"8.0.14\",\n\t\t\t\"vitest@3>vite\": \"7.3.2\",\n\t\t\t\"protobufjs\": \"7.5.6\",\n\t\t\t\"js-beautify>js-cookie\": \"3.0.7\",\n\t\t\t\"pm2-sysmonit>systeminformation\": \"5.31.6\",\n\t\t\t\"ajv>fast-uri\": \"3.1.2\",\n\t\t\t\"braintrust>simple-git\": \"3.36.0\",\n\t\t\t\"launch-editor>shell-quote\": \"1.8.4\"\n\t\t}\n\t},\n\t\"packageManager\": \"pnpm@10.27.0\",\n\t\"engines\": {\n\t\t\"node\": \"22\",\n\t\t\"pnpm\": \">=10 <11\"\n\t}\n}\n",
    "strategic_keywords": [
      "rag",
      "workspace"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 71
    },
    "strategic_score": 71
  },
  {
    "owner": "mullvad",
    "name": "mullvadvpn-app",
    "full_name": "mullvad/mullvadvpn-app",
    "url": "https://github.com/mullvad/mullvadvpn-app",
    "description": "The Mullvad VPN client app for desktop and mobile",
    "language": "Rust",
    "total_stars": 7281,
    "forks": 499,
    "stars_this_period": 44,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "electron",
        "nodejs",
        "openvpn",
        "rust",
        "vpn",
        "wireguard"
      ],
      "license": "GPL-3.0",
      "open_issues": 137,
      "created_at": "2017-12-19T08:59:42Z",
      "pushed_at": "2026-06-27T21:21:58Z",
      "homepage": "https://mullvad.net/",
      "default_branch": "main",
      "forks": 499,
      "watchers": 84,
      "archived": false,
      "size_kb": 288366
    },
    "readme_content": "# Mullvad VPN desktop and mobile app\n\nWelcome to the Mullvad VPN client app source code repository.\nThis is the VPN client software for the Mullvad VPN service.\nFor more information about the service, please visit our website,\n[mullvad.net](https://mullvad.net) (Also accessible via Tor on our\n[onion service](http://o54hon2e2vj6c7m3aqqu6uyece65by3vgoxxhlqlsvkmacw6a7m7kiad.onion/)).\n\nThis repository contains all the source code for the\ndesktop and mobile versions of the app. For desktop this includes the system service/daemon\n([`mullvad-daemon`](mullvad-daemon/)), a graphical user interface ([GUI](desktop/)) and a command\nline interface ([CLI](mullvad-cli/)). The Android app uses the same backing system service for the\ntunnel and security but has a dedicated frontend in [android/](android/). iOS consists of a\ncompletely standalone implementation that resides in [ios/](ios/).\n\n## Releases\n\nThere are built and signed releases for macOS, Windows, Linux and Android available on\n[our website](https://mullvad.net/download/) and on\n[GitHub](https://github.com/mullvad/mullvadvpn-app/releases/). The Android app is also available\non [Google Play] and [F-Droid] and the iOS version on [App Store].\n\n[Google Play]: https://play.google.com/store/apps/details?id=net.mullvad.mullvadvpn\n[F-Droid]: https://f-droid.org/packages/net.mullvad.mullvadvpn/\n[App Store]: https://apps.apple.com/us/app/mullvad-vpn/id1488466513\n\nYou can find our code signing keys as well as instructions for how to cryptographically verify\nyour download on [Mullvad's Open Source page].\n\n### Platform/OS support\n\nSee [Supported Platforms](docs/supported-platforms.md) for details on which operating\nsystems, versions and architectures are supported, and which ones are covered by our\nautomated test suite.\n\n## Features\n\nHere is a table containing the features of the app across platforms. This is intended to reflect\nthe current state of the latest code in git, not necessarily any existing release.\n\n|                                         | Windows | Linux | macOS | Android | iOS |\n|-----------------------------------------|:-------:|:-----:|:-----:|:-------:|:---:|\n| WireGuard                               |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| Quantum-resistant tunnels               |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| [DAITA]                                 |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| WireGuard multihop                      |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| WireGuard over TCP                      |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| WireGuard over Shadowsocks              |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| WireGuard over QUIC                     |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| Lightweight WireGuard Obfuscation (LWO) |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| Split tunneling                         |    ✓    |   ✓   |   ✓   |    ✓    |     |\n| Custom DNS server                       |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| Content blockers (Ads etc)              |    ✓    |   ✓   |   ✓   |    ✓    |  ✓  |\n| Optional local network access           |    ✓    |   ✓   |   ✓   |    ✓    |  ✓\\* |\n| [Externally audited](./audits)          |    ✓    |   ✓   |   ✓   |    ✓    |  ✓ |\n\n\\* The local network is always accessible on iOS with the current implementation\n\n[DAITA]: https://mullvad.net/en/blog/introducing-defense-against-ai-guided-traffic-analysis-daita\n\n## User security, privacy and anonymity\n\nThis app is a privacy preserving VPN client. As such it goes to great lengths to stop traffic\nleaks. And basically all settings default to the more secure/private option. The user has to\nexplicitly allow more loose rules if desired. See the [dedicated security document] for details\non what the app blocks and allows, as well as how it does it.\n\n[dedicated security document]: docs/security.md\n\n## Secure development\n\nSince the security of the users of the app is a top priority, by extension the security\nof the development and release process also becomes a top priority. This is something we work\nactively on.\n\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9411/badge)](https://www.bestpractices.dev/projects/9411)\n\n### Git signatures\n\nAll merge commits to the main branch must be PGP (gpg) signed in git. This signs off the entire\nfeature branch. The individual commits in the feature branch do not need to be signed,\nunless they change one or more of the files deemed extra important.\n\nThe list of files requiring signatures to every commit that change them is defined in the\n[`verify-locked-down-signatures`](.github/workflows/verify-locked-down-signatures.yml)\nworkflow.\n\n### Audits, pentests and external security reviews\n\nThis app is audited by external security experts and penetration testers every second year.\nWe also carry out feature specific audits for certain security critical features and changes.\n\nThe results of these audits are always made public in their unredacted original form, for\nfull transparency towards the users. See the [audits readme](./audits/README.md) for this.\n\nMoreover, we welcome any individual to review the security of this app and submit any found\nissue to us. See [SECURITY.md](SECURITY.md) for more.\n\n## Checking out the code\n\nThis repository contains submodules needed for building the app. However, some of those submodules\nalso have further submodules that are quite large and not needed to build the app. So unless\nyou want the source code for all submodules you should avoid a recursive clone of the repository.\nInstead clone the repository normally and then get one level of submodules:\n```bash\ngit clone https://github.com/mullvad/mullvadvpn-app.git\ncd mullvadvpn-app\ngit submodule update --init\n```\n\nWe sign every merge commit to the `main` branch as well as our release tags.\nIf you would like to verify your checkout, you can find our developer keys on\n[Mullvad's Open Source page].\n\n### Binaries submodule\n\nThis repository has a git submodule at `dist-assets/binaries`. This submodule contains binaries and\nbuild scripts for third party code we need to bundle with the app, such as Wintun.\n\nThis submodule conforms to the same integrity/security standards as this repository. Every merge\ncommit should be signed. And this main repository should only ever point to a signed merge commit\nof the binaries submodule.\n\nSee the [binaries submodule's](https://github.com/mullvad/mullvadvpn-app-binaries) README for more\ndetails about that repository.\n\n## Building the app\n\nSee the [build instructions](BuildInstructions.md) for help building the app on desktop platforms.\n\nFor building the Android app, see the [instructions](./android/docs/BuildInstructions.md) for Android.\n\nFor building the iOS app, see the [instructions](./ios/BuildInstructions.md) for iOS.\n\n## Releasing the app\n\nSee [this](Release.md) for instructions on how to make a new release.\n\n## Environment variables used by the service\n\n* `TALPID_FIREWALL_DEBUG` - Helps debugging the firewall. Does different things depending on\n  platform:\n  * Linux: Set to `\"1\"` to add packet counters to all firewall rules.\n  * macOS: Makes rules log the packets they match to the `pflog0` interface.\n    * Set to `\"all\"` to add logging to all rules.\n    * Set to `\"pass\"` to add logging to rules allowing packets.\n    * Set to `\"drop\"` to add logging to rules blocking packets.\n\n* `TALPID_FIREWALL_DONT_SET_SRC_VALID_MARK` - Set this variable to `1` to stop the daemon from\n    setting the `net.ipv4.conf.all.src_valid_mark` kernel parameter to `1` on Linux when a tunnel\n    is established.\n    The kernel config parameter is set by default, because otherwise strict reverse path filtering\n    may prevent relay traffic from reaching the daemon. If `rp_filter` is set to `1` on the interface\n    that will be receiving relay traffic, and `src_valid_mark` is not set to `1`, the daemon will\n    not be able to receive relay traffic.\n\n* `TALPID_FIREWALL_DONT_SET_ARP_IGNORE` - Set this variable to `1` to stop the daemon from\n    setting the `net.ipv4.conf.all.arp_ignore` kernel parameter to `2` on Linux when a tunnel\n    is established.\n    The kernel config parameter is set by default, because otherwise an attacker who can send ARP\n    requests to the device running Mullvad can figure out the in-tunnel IP.\n\n* `TALPID_DNS_MODULE` - Allows changing the method that will be used for DNS configuration.\n  By default this is automatically detected, but you can set it to one of the options below to\n  choose a specific method.\n\n  * Linux\n    * `\"static-file\"`: change the `/etc/resolv.conf` file directly\n    * `\"resolvconf\"`: use the `resolvconf` program\n    * `\"systemd\"`: use systemd's `resolved` service through DBus\n    * `\"network-manager\"`: use `NetworkManager` service through DBus\n\n  * Windows\n    * `iphlpapi`: use the IP helper API\n    * `netsh`: use the `netsh` program\n    * `tcpip`: set TCP/IP parameters in the registry\n\n* `TALPID_DISABLE_LOCAL_DNS_RESOLVER` - Set this variable to `1` to disable the local DNS resolver\n  (macOS only).\n\n* `TALPID_NEVER_FILTER_AAAA_QUERIES` - Set this variable to `1` to never ignore DNS AAAA queries\n  (macOS only).\n\n* `TALPID_FORCE_USERSPACE_WIREGUARD` - Forces the daemon to use the userspace implementation of\n   WireGuard.\n\n* `TALPID_DISABLE_OFFLINE_MONITOR` - Forces the daemon to always assume the host is online.\n\n* `TALPID_CGROUP2_FS` - On Linux, forces the daemon to look for the cgroup2 filesystem at the\n  specified path, instead of `/sys/fs/cgroup`. The cgroup2 used for split tunneling will be created\n  in this directory.\n\n* `TALPID_NET_CLS_MOUNT_DIR` - On Linux, forces the daemon to mount the `net_cls` controller in the\n  specified directory if it isn't mounted already. This will only have an effect on older systems\n  where cgroup v1 is used for split tunneling.\n\n* `MULLVAD_MANAGEMENT_SOCKET_GROUP` - On Linux and macOS, this restricts access to the management\n  interface UDS socket to users in the specified group. This means that only users in that group can\n  use the CLI and GUI. By default, everyone has access to the socket.\n\n* `MULLVAD_BACKTRACE_ON_FAULT` - When enabled, if the daemon encounters a fault (e.g. `SIGSEGV`),\n  it will log a backtrace to stdout, and to `daemon.log`. By default, this is disabled in\n  release-builds and enabled in debug-builds. Set variable to `1` or `0` to explicitly enable or\n  disable this feature. Logging the backtrace causes heap allocation. Allocation is not signal safe,\n  but here it runs in the signal handler. This is technically undefined behavior and therefore\n  disabled by default. This usually works, but enable at your own risk.\n\n### Development builds only\n\n* `MULLVAD_API_HOST` - Set the hostname to use in API requests. E.g. `api.mullvad.net`.\n\n* `MULLVAD_API_ADDR` - Set the IP address and port to use in API requests. E.g. `10.10.1.2:443`.\n\n* `MULLVAD_API_DISABLE_TLS` - Use plain HTTP for API requests.\n\n* `MULLVAD_CONNCHECK_HOST` - Set the hostname to use in connection check requests. E.g. `am.i.mullvad.net`.\n\n* `MULLVAD_ENABLE_DEV_UPDATES` - Enable version checks in development builds.\n\n### Setting environment variables\n\n#### Windows\n\nUse `setx` from an elevated shell:\n\n```bat\nsetx TALPID_DISABLE_OFFLINE 1 /m\n```\n\nFor the change to take effect, restart the daemon:\n\n```bat\nsc.exe stop mullvadvpn\nsc.exe start mullvadvpn\n```\n\n#### Linux\n\nEdit the systemd unit file via `systemctl edit mullvad-daemon.service`:\n\n```ini\n[Service]\nEnvironment=\"TALPID_DISABLE_OFFLINE_MONITOR=1\"\n```\n\nFor the change to take effect, restart the daemon:\n\n```bash\nsudo systemctl restart mullvad-daemon\n```\n\n#### macOS\n\nUse `plutil`:\n\n```bash\nsudo plutil -replace EnvironmentVariables -json '{\"TALPID_DISABLE_OFFLINE_MONITOR\": \"1\"}' /Library/LaunchDaemons/net.mullvad.daemon.plist\n```\n\nFor the change to take effect, restart the daemon:\n\n```bash\nlaunchctl unload -w /Library/LaunchDaemons/net.mullvad.daemon.plist\nlaunchctl load -w /Library/LaunchDaemons/net.mullvad.da",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"android/translations-converter\",\n  \"desktop/packages/nseventforwarder\",\n  \"desktop/packages/windows-utils\",\n  \"installer-downloader\",\n  \"mullvad-api\",\n  \"mullvad-cli\",\n  \"mullvad-daemon\",\n  \"mullvad-encrypted-dns-proxy\",\n  \"mullvad-exclude\",\n  \"mullvad-fs\",\n  \"mullvad-ios\",\n  \"mullvad-jni\",\n  \"mullvad-leak-checker\",\n  \"mullvad-logging\",\n  \"mullvad-management-interface\",\n  \"mullvad-masque-proxy\",\n  \"mullvad-nsis\",\n  \"mullvad-paths\",\n  \"mullvad-problem-report\",\n  \"mullvad-relay-selector\",\n  \"mullvad-release-android\",\n  \"mullvad-setup\",\n  \"mullvad-types\",\n  \"mullvad-types/intersection-derive\",\n  \"mullvad-update\",\n  \"mullvad-update/mullvad-release\",\n  \"mullvad-version\",\n  \"talpid-core\",\n  \"talpid-dbus\",\n  \"talpid-dns\",\n  \"talpid-future\",\n  \"talpid-macos\",\n  \"talpid-net\",\n  \"talpid-platform-metadata\",\n  \"talpid-routing\",\n  \"talpid-time\",\n  \"talpid-tunnel\",\n  \"talpid-tunnel-config-client\",\n  \"talpid-windows\",\n  \"talpid-wireguard\",\n  \"tunnel-obfuscation\",\n  \"windows-installer\"\n]\nexclude = [\"ci/ios/test-router/raas\"]\n# Default members dictate what is built when running `cargo build` in the root directory.\n# This is set to a minimal set of packages to speed up the build process and avoid building\n# crates which might not compile without additional input, such as the `windows-installer` crate.\n# To build or test everything, add `--workspace` to your cargo commands.\ndefault-members = [\n  \"mullvad-cli\",\n  \"mullvad-daemon\",\n  \"mullvad-problem-report\",\n  \"mullvad-version\"\n]\n\n[workspace.package]\nedition = \"2024\"\n# Must be less than or equal to `channel` in `rust-toolchain.toml`\nrust-version = \"1.95.0\"\nrepository = \"https://github.com/mullvad/mullvadvpn-app/\"\nlicense = \"GPL-3.0-or-later\"\n\n[workspace.dependencies]\nanyhow = \"1.0\"\nasync-trait = \"0.1\"\nbytes = \"1.11.1\"\nchrono = { version = \"0.4.26\", default-features = false }\nclap = { version = \"4.4.18\", features = [\"cargo\", \"derive\"] }\nctrlc = \"3.5\"\ndirs = \"6.0.0\"\neither = \"1.15.0\"\nfutures = \"0.3.15\"\ngotatun = { version = \"0.7.1\", default-features = false, features = [\"ring\"] }\nhickory-proto = \"0.26.1\"\nhickory-resolver = { version = \"0.26.1\", default-features = false, features = [\n  \"tokio\"\n] }\nhickory-server = { version = \"0.26.1\", features = [\"resolver\"] }\nhyper-util = { version = \"0.1.8\", features = [\n  \"client\",\n  \"client-legacy\",\n  \"http1\",\n  \"http2\",\n] }\ninsta = { version = \"1.42\", features = [\"yaml\"] }\nipnetwork = \"0.21.1\"\nitertools = \"0.14\"\nlog = \"0.4\"\nmockito = \"1.7.2\"\nnetlink-packet-core = \"0.8.1\"\nnetlink-packet-route = \"0.30.0\"\nnetlink-proto = \"0.12.0\"\nnetlink-sys = \"0.8.8\"\nnix = \"0.31.2\"\n# TODO: if tauri publishes `nsis-plugin-api` to crates.io, remove vendored dependency.\nnsis-plugin-api = { path = \"./mullvad-nsis/vendor/nsis-plugin-api\" }\nonce_cell = \"1.16\"\npnet_packet = \"0.35.0\"\nproptest = \"1.9\"\nprost = \"0.14.3\"\nprost-types = \"0.14.3\"\nrand = \"0.9.3\"\nreqwest = { version = \"0.12.23\", default-features = false, features = [\n  \"rustls-tls\"\n] }\nrtnetlink = \"0.21.0\"\nrustls = { version = \"0.23\", default-features = false }\nrustls-pki-types = \"1.13.1\"\nsafelog = \"0.8.2\"\nserde = \"1.0.204\"\nserde_json = \"1.0.122\"\nsha2 = \"0.10\"\nshadowsocks = { version = \"1.23.2\", default-features = false, features = [\n  \"aead-cipher\",\n  \"stream-cipher\"\n] }\nshadowsocks-crypto = { version = \"0.6.2\", features = [\"v1-stream\"] }\nsocket2 = \"0.5.7\"\nstrum = { version = \"0.27\" }\nsurge-ping = \"0.8.4\"\nsystem-configuration = \"0.7.0\"\ntalpid-dbus = { path = \"./talpid-dbus\" }\ntempfile = \"3.27.0\"\nthiserror = \"2.0\"\ntipsy = \"0.7.0\"\ntokio = { version = \"1.44\" }\ntokio-util = \"0.7\"\ntonic = \"0.14.6\"\ntonic-prost = \"0.14.6\"\ntonic-prost-build = { version = \"0.14.6\", default-features = false }\ntower = { version = \"0.5.1\", features = [\"util\"] }\ntracing-appender = \"0.2.4\"\ntracing-subscriber = { version = \"0.3.22\", features = [\"env-filter\"] }\ntun = { version = \"0.8.11\", default-features = false, features = [\"async\"] }\ntun05 = { package = \"tun\", version = \"0.5.5\", features = [\"async\"] }\nvec1 = \"1.12\"\nwebpki-roots = \"1.0.4\"\nwidestring = \"1.2\"\nwindows = \"0.62.2\"\nwindows-registry = \"0.6.1\"\nwindows-result = \"0.4.1\"\nwindows-sys = \"0.61.2\"\nwmi = \"0.18.1\"\n# We cannot use zerocopy \"0.8.32\" or above due to https://github.com/google/zerocopy/issues/2880\n# TODO: Update the version when the issue is resolved\nzerocopy = \"=0.8.31\"\nzeroize = \"1.8.2\"\n\n[workspace.lints.clippy]\nallow_attributes = \"warn\"\nas_ptr_cast_mut = \"warn\"\nas_underscore = \"warn\"\nborrow_as_ptr = \"warn\"\nimplicit_clone = \"warn\"\nundocumented_unsafe_blocks = \"warn\"\nunicode_not_nfc = \"warn\"\nunused_async = \"deny\"\nwildcard_dependencies = \"deny\"\n\n# Keep all lints in sync with `test/Cargo.toml`\n[workspace.lints.rust]\nabsolute_paths_not_starting_with_crate = \"deny\"\n# Easy to read style and opinionated best practices\nexplicit_outlives_requirements = \"warn\"\nmacro_use_extern_crate = \"deny\"\nmissing_abi = \"deny\"\n# Security\nnon_ascii_idents = \"forbid\"\n# Deny old style Rust\nrust_2018_idioms = { level = \"deny\", priority = -1 }\nsingle_use_lifetime",
    "strategic_keywords": [
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 68
    },
    "strategic_score": 68
  },
  {
    "owner": "jnMetaCode",
    "name": "superpowers-zh",
    "full_name": "jnMetaCode/superpowers-zh",
    "url": "https://github.com/jnMetaCode/superpowers-zh",
    "description": "🦸 AI 编程超能力 · 中文增强版 — superpowers（116k+ ⭐）完整汉化 + 6 个中国原创 skills，让 Claude Code / Copilot CLI / Hermes Agent / Cursor / Windsurf / Kiro / Gemini CLI 等 16 款 AI 编程工具真正会干活",
    "language": "JavaScript",
    "total_stars": 6028,
    "forks": 581,
    "stars_this_period": 44,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "agent-skills",
        "agentic-coding",
        "ai-coding",
        "chinese",
        "claude-code",
        "code-review",
        "cursor",
        "gemini-cli",
        "kiro",
        "mcp",
        "npm-package",
        "prompt-engineering",
        "skills",
        "superpowers",
        "tdd",
        "trae"
      ],
      "license": "MIT",
      "open_issues": 15,
      "created_at": "2026-03-20T00:12:39Z",
      "pushed_at": "2026-06-23T15:29:43Z",
      "homepage": "https://sp.aiolaola.com",
      "default_branch": "main",
      "forks": 581,
      "watchers": 23,
      "archived": false,
      "size_kb": 2729
    },
    "readme_content": "# superpowers-zh（AI 编程超能力 · 中文增强版）\n\n🌐 **简体中文** | [English (upstream)](https://github.com/obra/superpowers)\n\n> 🦸 **superpowers（233k+ ⭐）完整汉化 + 4 个中国原创 skills** — 让 Claude Code / Copilot CLI / Hermes Agent / Cursor / Windsurf / Kiro / Gemini CLI / Qoder 等 **18 款 AI 编程工具**真正会干活。从头脑风暴到代码审查，从 TDD 到调试，每个 skill 都是经过实战验证的工作方法论。\n\nChinese community edition of [superpowers](https://github.com/obra/superpowers) — 20 skills across 18 AI coding tools, including full translations and China-specific development skills.\n\n[![官网 sp.aiolaola.com](https://img.shields.io/badge/🌐_官网-sp.aiolaola.com-F59E0B)](https://sp.aiolaola.com)\n[![GitHub stars](https://img.shields.io/github/stars/jnMetaCode/superpowers-zh?style=social)](https://github.com/jnMetaCode/superpowers-zh)\n[![npm version](https://img.shields.io/npm/v/superpowers-zh)](https://www.npmjs.com/package/superpowers-zh)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://makeapullrequest.com)\n\n> 📖 **免费配套学习** → [从零学会 AI 编程](https://aiolaola.com/?utm_source=github&utm_campaign=superpowers)：180 节免费实操课 + 《AI 编程实战三卷书》在线阅读 + 实战社区 · superpowers 装好后配上方法论效率翻倍 · 永久免费\n\n### 📊 项目规模\n\n| 📦 翻译 Skills | 🇨🇳 中国特色 Skills | 🤖 支持工具 |\n|:---:|:---:|:---:|\n| **14** | **6** | **Claude Code / Copilot CLI / Hermes Agent / Cursor / Windsurf / Kiro / Gemini CLI / Codex / Aider / Trae / VS Code (Copilot) / DeerFlow / OpenCode / OpenClaw / Qwen Code / Antigravity / Claw Code / Qoder** |\n\n---\n\n## ❤️ 赞助商 &nbsp;<sub>🙏 想出现在这里？联系 **jnMetaCode@qq.com** 赞助</sub>\n\n<table>\n<tr>\n<td width=\"200\" align=\"center\">\n<a href=\"https://www.5cookie.cc/sign-up?aff=Pj7u\"><img src=\"assets/sponsors/5cookie-code.png\" width=\"180\" alt=\"5Cookie Code\"></a>\n</td>\n<td>\n<a href=\"https://www.5cookie.cc/sign-up?aff=Pj7u\"><b>5Cookie Code</b></a> 是一家稳定高速的 API 中继服务提供商，为 Claude Code、Codex 等平台或模型提供 API 中继服务。面向个人、团队和企业用户提供 AI 编码服务和 AI 生图服务。\n</td>\n</tr>\n</table>\n\n---\n\n## 这是什么？\n\n[superpowers](https://github.com/obra/superpowers) 是目前最火的 AI 编程 skills 框架（233k+ stars），为 AI 编程工具提供**系统化的工作方法论**。\n\n**superpowers-zh** 在完整翻译的基础上，新增了面向中国开发者的特色 skills。\n\n<!-- 效果对比 -->\n<table>\n<tr><td>\n\n**没装 superpowers-zh：**\n```\n你：给用户模块加个批量导出功能\nAI：好的，我来实现...（直接开始写代码）\n    export async function exportUsers() { ... }\n你：等等，格式不对，没分页，大数据量会 OOM...\n```\n\n</td><td>\n\n**装了 superpowers-zh：**\n```\n你：给用户模块加个批量导出功能\nAI：在开始实现之前，我需要了解几个关键问题：\n    1. 导出格式是 CSV 还是 Excel？\n    2. 预计数据量多大？需要异步处理吗？\n    3. 有权限要求吗？\n    → 给出 2-3 个方案，确认后再动手\n```\n\n</td></tr>\n</table>\n\n### 🆚 与英文上游的区别（老被问，一次说清）\n\n| 维度 | superpowers（英文上游） | superpowers-zh（中文增强版） |\n|------|----------------------|---------------------------|\n| ⭐ Star 数 | 233k+ | — |\n| 📦 Skills 总数 | 14 | **20**（14 翻译 + 4 国产原创 + 2 上游历史保留） |\n| 🌐 语言 | 英文 | 中文（技术术语保留英文） |\n| 🤖 **支持工具** | **6 款**：Claude Code / Cursor / Codex / OpenCode / Copilot CLI / Gemini CLI | **18 款**：上述 6 款 + Hermes Agent / Trae / Kiro / Qwen Code（通义灵码）/ OpenClaw / Claw Code / Antigravity / DeerFlow / VS Code / Windsurf / Aider / Qoder |\n| ⚡ **安装方式** | 按工具分别装（每款一条不同的 plugin marketplace 命令） | **`npx superpowers-zh` 一条命令自动识别项目里的工具并安装**；识别不出可 `--tool <name>` 显式指定 |\n| 🇨🇳 Git 平台 | GitHub 为主 | GitHub + Gitee + Coding + 极狐 GitLab + **CNB（腾讯云原生构建）** |\n| 🇨🇳 CI/CD 示例 | GitHub Actions | GitHub Actions + Gitee Go + Coding CI + 极狐 CI + `.cnb.yml` |\n| 🇨🇳 代码审查风格 | 西方直接风格 | 适配国内团队沟通文化 |\n| 🇨🇳 Git 提交规范 | 无 | Conventional Commits 中文适配 |\n| 🇨🇳 中文文档规范 | 无 | 中文排版 + 中英混排规则 + 告别机翻味 |\n| ➕ MCP 服务器构建 | 无 | 独立 `mcp-builder` skill |\n| ➕ 工作流执行器 | 无 | 独立 `workflow-runner` skill（多角色 YAML 编排） |\n| 🔄 版本跟进 | 独立迭代 | **同步上游 + 国产增量叠加** |\n| 🤝 接受新 skill PR | 一般不接受（原文：*\"we don't generally accept contributions of new skills\"*） | 欢迎 PR（中国开发者痛点优先） |\n| 💬 社区 | Discord | 微信公众号「AI不止语」+ 微信群 + QQ 群 |\n| 📜 License | MIT | MIT |\n\n**一句话总结：** 英文上游 = 方法论内核；中文增强版 = 方法论内核 **+** 18 款工具一键适配 **+** 国内 Git/CI 生态 **+** 中文化表达习惯。\n\n### 🤖 支持 18 款主流 AI 编程工具\n\n| 工具 | 类型 | 一键安装 | 手动安装 |\n|------|------|:---:|:---:|\n| [Claude Code](https://claude.ai/code) | CLI | `npx superpowers-zh` | `.claude/skills/` |\n| [Copilot CLI](https://githubnext.com/projects/copilot-cli) | CLI | `npx superpowers-zh --tool copilot` | `.claude/skills/` |\n| [Hermes Agent](https://github.com/NousResearch/hermes-agent) | CLI | `npx superpowers-zh --tool hermes` | `.hermes/skills/` |\n| [Cursor](https://cursor.sh) | IDE | `npx superpowers-zh` | `.cursor/skills/` |\n| [Windsurf](https://codeium.com/windsurf) | IDE | `npx superpowers-zh` | `.windsurf/skills/` |\n| [Kiro](https://kiro.dev) | IDE | `npx superpowers-zh` | `.kiro/steering/` |\n| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | CLI | `npx superpowers-zh` | `.gemini/skills/` |\n| [Codex CLI](https://github.com/openai/codex) | CLI | `npx superpowers-zh` | `.codex/skills/` |\n| [Aider](https://aider.chat) | CLI | `npx superpowers-zh` | `.aider/skills/` |\n| [Trae](https://trae.ai) | IDE | `npx superpowers-zh` | `.trae/skills/` + `.trae/rules/` |\n| [VS Code](https://code.visualstudio.com) (Copilot) | IDE 插件 | `npx superpowers-zh` | `.github/superpowers/` |\n| [DeerFlow 2.0](https://github.com/bytedance/deer-flow) | Agent 框架 | `npx superpowers-zh` | `skills/custom/` |\n| [OpenCode](https://opencode.ai) | CLI | `npx superpowers-zh` | `.opencode/skills/` |\n| [OpenClaw](https://github.com/anthropics/openclaw) | CLI | `npx superpowers-zh` | `skills/` |\n| [Qwen Code](https://tongyi.aliyun.com/lingma) (通义灵码) | IDE 插件 | `npx superpowers-zh` | `.qwen/skills/` |\n| [Antigravity](https://github.com/anthropics/antigravity) | CLI | `npx superpowers-zh` | `.agents/skills/` |\n| [Claw Code](https://github.com/ultraworkers/claw-code) | CLI (Rust) | `npx superpowers-zh` | `.claw/skills/` |\n| [Qoder](https://qoder.com) (阿里 AI IDE) | IDE | `npx superpowers-zh` | `.qoder/skills/` + `.qoder/rules/` |\n\n> 运行 `npx superpowers-zh` 会自动检测你项目中使用的工具，将 20 个 skills 安装到正确位置。\n\n### 翻译的 Skills（14 个）\n\n| Skill | 用途 |\n|-------|------|\n| **头脑风暴** (brainstorming) | 需求分析 → 设计规格，不写代码先想清楚 |\n| **编写计划** (writing-plans) | 把规格拆成可执行的实施步骤 |\n| **执行计划** (executing-plans) | 按计划逐步实施，每步验证 |\n| **测试驱动开发** (test-driven-development) | 严格 TDD：先写测试，再写代码 |\n| **系统化调试** (systematic-debugging) | 四阶段调试法：定位→分析→假设→修复 |\n| **请求代码审查** (requesting-code-review) | 派遣审查 agent 检查代码质量 |\n| **接收代码审查** (receiving-code-review) | 技术严谨地处理审查反馈，拒绝敷衍 |\n| **完成前验证** (verification-before-completion) | 证据先行——声称完成前必须跑验证 |\n| **派遣并行 Agent** (dispatching-parallel-agents) | 多任务并发执行 |\n| **子 Agent 驱动开发** (subagent-driven-development) | 每个任务一个 agent，两轮审查 |\n| **Git Worktree 使用** (using-git-worktrees) | 隔离式特性开发 |\n| **完成开发分支** (finishing-a-development-branch) | 合并/PR/保留/丢弃四选一 |\n| **编写 Skills** (writing-skills) | 创建新 skill 的方法论 |\n| **使用 Superpowers** (using-superpowers) | 元技能：如何调用和优先使用 skills |\n\n### 🇨🇳 中国特色 Skills（6 个）\n\n> ⚠️ **下表前 4 个 chinese-\\* 为「手动调用」skill**——不会自动触发，需在对话中显式输入 `/chinese-xxx` 才会加载。\n> 设计为参考资料而非工作流，避免污染上游 skill 的自动调度（如 `requesting-code-review`、`brainstorming` 等）。\n\n| Skill | 用途 | 调用方式 | 上游有吗？ |\n|-------|------|---------|:---:|\n| **中文代码审查** (chinese-code-review) | 符合国内团队文化的代码审查规范 | `/chinese-code-review`（手动） | 无 |\n| **中文 Git 工作流** (chinese-git-workflow) | 适配 Gitee/Coding/极狐 GitLab/CNB | `/chinese-git-workflow`（手动） | 无 |\n| **中文技术文档** (chinese-documentation) | 中文排版规范、中英混排、告别机翻味 | `/chinese-documentation`（手动） | 无 |\n| **中文提交规范** (chinese-commit-conventions) | 适配国内团队的 commit message 规范 | `/chinese-commit-conventions`（手动） | 无 |\n| **MCP 服务器构建** (mcp-builder) | 构建生产级 MCP 工具，扩展 AI 能力边界 | 自动 | 无 |\n| **工作流执行器** (workflow-runner) | 在 AI 工具内运行多角色 YAML 工作流 | 自动 | 无 |\n\n---\n\n## 快速开始\n\n### 方式一：npm 安装（推荐）\n\n```bash\ncd /your/project\nnpx superpowers-zh\n```\n\n> ⚠️ **不要在主目录（`~`）下跑**。v1.2.1 起会拒绝并提示，老版本会把 skills 和 `CLAUDE.md` 等 bootstrap 文件写到你的 home 目录，污染所有项目。如已误装见下文「卸载 / 误装清理」。\n\n### 方式二：手动安装（low-fidelity，仅作备选）\n\n> ⚠️ **手动 `cp -r skills` 是低保版安装，不等同于完整 plugin。**\n>\n> superpowers-zh 是一个完整 plugin，包含：`skills/`（20 个能力）+ `hooks/`（SessionStart 钩子，让 skill 在合适时机自动触发）+ `CLAUDE.md` / `GEMINI.md` 等 bootstrap 引导文件 + 4 套 plugin manifest（Claude Code / Cursor / Codex / Marketplace）。\n>\n> **下面的 `cp -r skills` 命令只复制 skills 目录**，不会自动配置 hooks、不会生成 bootstrap 引导。结果：skills 物理上存在，但 AI 不会在合适时机自动调用，需要你每次手动喊 \"use brainstorming skill\" 之类。\n>\n> **强烈推荐用方式一 `npx superpowers-zh`** —— 它会一键处理 skills 复制 + bootstrap 生成 + hooks 配置 + 工具特定适配。仅在 npx 不可用（极端无网络环境）时才退到手动。\n\n```bash\n# 克隆仓库\ngit clone https://github.com/jnMetaCode/superpowers-zh.git\n\n# 复制 skills 到你的项目（选择你使用的工具）\ncp -r superpowers-zh/skills /your/project/.claude/skills      # Claude Code / Copilot CLI\ncp -r superpowers-zh/skills /your/project/.hermes/skills      # Hermes Agent\ncp -r superpowers-zh/skills /your/project/.cursor/skills      # Cursor\ncp -r superpowers-zh/skills /your/project/.codex/skills       # Codex CLI\ncp -r superpowers-zh/skills /your/project/.kiro/steering      # Kiro\ncp -r superpowers-zh/skills /your/project/skills/custom       # DeerFlow 2.0\ncp -r superpowers-zh/skills /your/project/.trae/rules         # Trae\ncp -r superpowers-zh/skills /your/project/.agents        # Antigravity\ncp -r superpowers-zh/skills /your/project/.github/superpowers # VS Code (Copilot)\ncp -r superpowers-zh/skills /your/project/skills              # OpenClaw\ncp -r superpowers-zh/skills /your/project/.windsurf/skills   # Windsurf\ncp -r superpowers-zh/skills /your/project/.gemini/skills     # Gemini CLI\ncp -r superpowers-zh/skills /your/project/.aider/skills      # Aider\ncp -r superpowers-zh/skills /your/project/.opencode/skills   # OpenCode\ncp -r superpowers-zh/skills /your/project/.qwen/skills       # Qwen Code\ncp -r superpowers-zh/skills /your/project/.claw/skills       # Claw Code（Rust 版）\ncp -r superpowers-zh/skills /your/project/.qoder/skills      # Qoder（阿里 AI IDE）\n```\n\n### 方式三：在配置文件中引用\n\n根据你使用的工具，在对应配置文件中引用 skills：\n\n| 工具 | 配置文件 | 说明 |\n|------|---------|------|\n| Claude Code | `CLAUDE.md` | 项目根目录 |\n| Copilot CLI | `CLAUDE.md` | 与 Claude Code 共用插件格式 |\n| Hermes Agent | `HERMES.md` 或 `.hermes.md` | 项目根目录，安装时自动生成 |\n| Kiro | `.kiro/steering/*.md` | 支持 always/globs/手动三种模式 |\n| DeerFlow 2.0 | `skills/custom/*/SKILL.md` | 字节跳动开源 SuperAgent，自动发现自定义 skills |\n| Trae | `.trae/rules/project_rules.md` | 项目级规则 |\n| Antigravity | `GEMINI.md` 或 `AGENTS.md` | 项目根目录 |\n| VS Code | `.github/copilot-instructions.md` | Copilot 自定义指令 |\n| Cursor | `.cursor/rules/*.md` | 项目级规则目录 |\n| OpenClaw | `skills/*/SKILL.md` | 工作区级 skills 目录，自动发现 |\n| Windsurf | `.windsurf/skills/*/SKILL.md` | 项目级 skills 目录 |\n| Gemini CLI | `.gemini/skills/*/SKILL.md` | 项目级 skills 目录 |\n| Aider | `.aider/skills/*/SKILL.md` | 项目级 skills 目录 |\n| OpenCode | `.opencode/skills/*/SKILL.md` | 项目级 skills 目录 |\n| Hermes Agent | `.hermes/skills/*/SKILL.md` | 项目级 skills 目录 |\n| Qwen Code | `.qwen/skills/*/SKILL.md` | 项目级 skills 目录 |\n| Claw Code | `.claw/skills/*/SKILL.md` | Rust 版 CLI agent，兼容 Claude Code 的 SKILL.md 格式 |\n| Qoder | `.qoder/skills/*/SKILL.md` + `.qoder/rules/superpowers-zh.md` | 阿里 AI IDE，自动生成 `trigger: always_on` 的 bootstrap rule |\n\n> **详细安装指南**：[Kiro](docs/README.kiro.md) · [DeerFlow](docs/README.deerflow.md) · [Trae](docs/README.trae.md) · [Antigravity](docs/README.antigravity.md) · [VS Code](docs/README.vscode.md) · [Codex](docs/README.codex.md) · [OpenCode](docs/README.opencode.md) · [OpenClaw](docs/README.openclaw.md) · [Windsurf](docs/README.windsurf.md) · [Gemini CLI](docs/README.gemini-cli.md) · [Aider](docs/README.aider.md) · [Qwen Code](docs/README.qwen.md) · [Hermes Agent](docs/README.hermes.md) · [Qoder](docs/README.qoder.md) · [Kimi Code](docs/README.kimi.md) · [Pi](docs/README.pi.md)\n\n### 卸载 / 误装清理（v1.2.1+）\n\n```bash\ncd /your/project          # 或 cd ~ 如果误装到了主目录\nnpx superpowers-zh@latest --uninstall\n```\n\n会做这些：\n\n- 删除所有装过的 skill 目录（`.claude/skills/`、`.trae/skills/` 等）\n- 删除独立 bootstrap 文件（`.trae/rules/superpowers-zh.md`、`.qoder/rules/superpowers-zh.md`、`.agents/rules.md`）\n- 清理追加到 `CLAUDE.md` / `HERMES.md` / `GEMINI.md` / `CONVENTIONS.md` 里的 superpowers-zh 段，**保留你自己写的内容**\n\n数据安全说明：v1.2.1 起，安装会把追加内容包在 `<!-- superpowers-zh:begin/end -->` 哨兵注释之间，卸载按哨兵精确切除。识别不可靠时跳过 + 警告，**绝不会误删用户内容**。\n\n其他参数：\n\n| 参数 | 用途 |\n|---|---|\n| `--tool <name",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"superpowers-zh\",\n  \"version\": \"1.6.0\",\n  \"engines\": {\n    \"node\": \">=20.0.0\"\n  },\n  \"description\": \"AI 编程超能力中文增强版 — superpowers（159k+ ⭐）完整汉化 + 4 个中国原创 skills，支持 Claude Code / Copilot CLI / Hermes Agent / Cursor / Claw Code / Windsurf / Kiro / Gemini CLI / Qoder 等 18 款工具\",\n  \"type\": \"module\",\n  \"main\": \".opencode/plugins/superpowers.js\",\n  \"bin\": {\n    \"superpowers-zh\": \"bin/superpowers-zh.js\"\n  },\n  \"scripts\": {\n    \"site\": \"node site/build.mjs\",\n    \"site:deploy\": \"node site/build.mjs && wrangler pages deploy site/dist --project-name=superpowers-zh-site\",\n    \"version\": \"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json .cursor-plugin/plugin.json .codex-plugin/plugin.json gemini-extension.json\"\n  },\n  \"files\": [\n    \"bin/\",\n    \"skills/\",\n    \"hooks/\",\n    \"assets/\",\n    \".claude-plugin/\",\n    \".cursor-plugin/\",\n    \".codex/INSTALL.md\",\n    \".codex-plugin/\",\n    \".opencode/INSTALL.md\",\n    \".opencode/plugins/\",\n    \".pi/extensions/\",\n    \"CLAUDE.md\",\n    \"GEMINI.md\",\n    \"RELEASE-NOTES.md\",\n    \"RELEASE-NOTES.zh.md\",\n    \"gemini-extension.json\",\n    \"docs/\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"keywords\": [\n    \"superpowers\",\n    \"claude-code\",\n    \"cursor\",\n    \"codex\",\n    \"gemini\",\n    \"kiro\",\n    \"deerflow\",\n    \"trae\",\n    \"antigravity\",\n    \"openclaw\",\n    \"windsurf\",\n    \"aider\",\n    \"opencode\",\n    \"qwen\",\n    \"vscode\",\n    \"copilot\",\n    \"hermes\",\n    \"hermes-agent\",\n    \"claw-code\",\n    \"qoder\",\n    \"ai-coding\",\n    \"skills\",\n    \"chinese\",\n    \"中文\",\n    \"tdd\",\n    \"debugging\",\n    \"code-review\",\n    \"pi-package\"\n  ],\n  \"pi\": {\n    \"skills\": [\n      \"./skills\"\n    ],\n    \"extensions\": [\n      \"./.pi/extensions/superpowers.ts\"\n    ]\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/jnMetaCode/superpowers-zh.git\"\n  },\n  \"homepage\": \"https://github.com/jnMetaCode/superpowers-zh\",\n  \"author\": \"jnMetaCode\",\n  \"license\": \"MIT\"\n}\n",
    "strategic_keywords": [
      "agent",
      "mcp",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "strapi",
    "name": "strapi",
    "full_name": "strapi/strapi",
    "url": "https://github.com/strapi/strapi",
    "description": "🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.",
    "language": "TypeScript",
    "total_stars": 72550,
    "forks": 9772,
    "stars_this_period": 37,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "api",
        "cms",
        "cms-framework",
        "content-management",
        "content-management-system",
        "customizable",
        "dashboard",
        "graphql",
        "hacktoberfest",
        "headless-cms",
        "jamstack",
        "javascript",
        "mysql",
        "no-code",
        "nodejs",
        "posgresql",
        "rest",
        "strapi",
        "typescript"
      ],
      "license": "NOASSERTION",
      "open_issues": 552,
      "created_at": "2015-09-30T15:34:48Z",
      "pushed_at": "2026-06-27T15:00:04Z",
      "homepage": "https://strapi.io",
      "default_branch": "develop",
      "forks": 9772,
      "watchers": 645,
      "archived": false,
      "size_kb": 650827
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://strapi.io/#gh-light-mode-only\">\n    <img src=\"https://strapi.io/assets/strapi-logo-dark.svg\" width=\"318px\" alt=\"Strapi logo\" />\n  </a>\n  <a href=\"https://strapi.io/#gh-dark-mode-only\">\n    <img src=\"https://strapi.io/assets/strapi-logo-light.svg\" width=\"318px\" alt=\"Strapi logo\" />\n  </a>\n</p>\n\n<h3 align=\"center\">Open-source headless CMS, self-hosted or Cloud you're in control.</h3>\n<p align=\"center\">The leading open-source headless CMS, 100% JavaScript/TypeScript, flexible and fully customizable.</p>\n<p align=\"center\"><a href=\"https://docs.strapi.io\">Docs</a> · <a href=\"https://strapi.io/cloud\">Strapi Cloud</a> · <a href=\"https://feedback.strapi.io\">Roadmap</a> · <a href=\"https://discord.strapi.io\">Discord</a> · <a href=\"https://github.com/strapi/strapi/discussions\">Discussions</a></p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.org/package/@strapi/strapi\">\n    <img src=\"https://img.shields.io/npm/v/@strapi/strapi/latest.svg\" alt=\"NPM Version\" />\n  </a>\n  <a href=\"https://github.com/strapi/strapi/actions/workflows/tests.yml\">\n    <img src=\"https://github.com/strapi/strapi/actions/workflows/tests.yml/badge.svg?branch=main\" alt=\"Tests\" />\n  </a>\n  <a href=\"https://discord.strapi.io\">\n    <img src=\"https://img.shields.io/discord/811989166782021633?label=Discord\" alt=\"Strapi on Discord\" />\n  </a>\n  <a href=\"https://github.com/strapi/strapi/actions/workflows/nightly.yml\">\n    <img src=\"https://github.com/strapi/strapi/actions/workflows/nightly.yml/badge.svg\" alt=\"Strapi Nightly Release Build Status\" />\n  </a>\n</p>\n\n<br>\n\nStrapi is an open-source, self-hosted headless CMS that lets developers build content APIs fast while giving content creators a friendly editing interface. Define your content models and Strapi generates a full API, ready to consume from any frontend, mobile app, or IoT device.\n\n- Design content structures visually with the [**Content-Type Builder**](https://docs.strapi.io/cms/features/content-type-builder), no code required\n- Auto-generated [**REST**](https://docs.strapi.io/cms/api/rest) & [**GraphQL**](https://docs.strapi.io/cms/plugins/graphql) APIs for every content type\n- Granular [**Roles & Permissions**](https://docs.strapi.io/cms/features/users-permissions) out of the box\n- Built-in [**Media Library**](https://docs.strapi.io/cms/features/media-library), [**Internationalization (i18n)**](https://docs.strapi.io/cms/features/internationalization), and [**Draft & Publish**](https://docs.strapi.io/cms/features/draft-and-publish)\n- First-class **TypeScript** support with flexible database options (SQLite, PostgreSQL, MySQL, MariaDB)\n- Extensible [**plugin system**](https://docs.strapi.io/cms/plugins-development/developing-plugins) and customizable admin dashboard\n\n> Explore all features at **[strapi.io/features](https://strapi.io/features)**\n\n> **Strapi AI** — Automate content modeling, media alt text, and translations with Strapi's built-in AI layer. [Learn more](https://strapi.io/ai)\n\n### How Strapi handles requests\n\nEvery incoming request flows through a layered backend architecture: **Routes → Middlewares → Controllers → Services**.\n\n<p align=\"center\">\n  <img src=\"https://docs.strapi.io/img/assets/backend-customization/diagram-routes.png\" alt=\"Strapi backend request flow: Routes, Middlewares, Controllers, and Services\" />\n</p>\n\n> Learn more about backend customization in the [official docs](https://docs.strapi.io/cms/backend-customization).\n\n## Getting Started\n\n<a href=\"https://docs.strapi.io/developer-docs/latest/getting-started/quick-start.html\" target=\"_blank\">Read the Getting Started tutorial</a> or follow the steps below:\n\n### ⏳ Installation\n\nUse the **Quickstart** command below to create a new Strapi project instantly:\n\n```bash\nnpx create-strapi@latest my-project\n```\n\nThis command generates a brand new project with the default features (authentication, permissions, content management, content type builder & file upload).\n\n> Full installation options (including TypeScript, `--quickstart`, etc.) in the **[CLI installation docs](https://docs.strapi.io/cms/installation/cli#creating-a-strapi-project)**\n\n### Requirements\n\n> Hardware & software requirements (OS, Node.js, databases) at **[Requirements docs](https://docs.strapi.io/cms/deployment#hardware-and-software-requirements)**\n\n## Docker\n\nStrapi doesn't ship official Docker images, so you build your own from your project. The fastest way to get started is with the community CLI tool:\n\n```bash\nnpx @strapi-community/dockerize@latest\n```\n\nThis generates a `Dockerfile` and `docker-compose.yml` tailored to your project. See the [strapi-tool-dockerize](https://github.com/strapi-community/strapi-tool-dockerize) repo for more details.\n\n> Dockerfiles, Docker Compose examples, production builds at **[Docker installation docs](https://docs.strapi.io/cms/installation/docker)**\n\n## Deploy to Strapi Cloud\n\nThe fastest way to go from local to production. Strapi Cloud is the official managed hosting platform with zero DevOps, a built-in database, media library, and CDN.\n\n> [**Deploy now**](https://cloud.strapi.io)\n\n## LaunchPad\n\nThe official demo template combining Strapi with Next.js to get you started quickly.\n\n> [**LaunchPad template**](https://github.com/strapi/LaunchPad)\n\n### Try live demo\n\nSee for yourself what's under the hood by getting access to a [hosted Strapi project](https://strapi.io/demo) with sample data — [try it live](https://strapi.io/demo) or [pull locally](https://github.com/strapi/LaunchPad).\n\n## Repositories\n\n| Repository                                                          | Description                                   |\n| ------------------------------------------------------------------- | --------------------------------------------- |\n| [**strapi/strapi**](https://github.com/strapi/strapi)               | Core monorepo, the CMS itself                 |\n| [**strapi/design-system**](https://github.com/strapi/design-system) | Strapi Design System, React component library |\n| [**strapi/LaunchPad**](https://github.com/strapi/LaunchPad)         | Demo app: Strapi + Next.js                    |\n\n## Contributing & Community\n\nStrapi is community-built and open source. For help, feedback, or to get involved:\n\n- **[Discord](https://discord.strapi.io)**: Live discussion with the community and Strapi team\n- **[GitHub Discussions](https://github.com/strapi/strapi/discussions)**: Ask questions, share projects, get feedback\n- **[GitHub](https://github.com/strapi/strapi)**: Bug reports and contributions\n- **[Contributing Guide](https://contributor.strapi.io/)**: How to contribute code, docs, and translations\n- **[Community Content](https://github.com/strapi/community-content)**: Showcase, tutorials, starters, and templates\n- **[Feedback](https://feedback.strapi.io)**: Roadmap and feature requests\n- **[Twitter](https://twitter.com/strapijs)**: Get the news fast\n- **[YouTube Channel](https://www.youtube.com/strapi)**: Learn from video tutorials\n\nFor general help, refer to the [official Strapi documentation](https://docs.strapi.io). New to open source? Check out [How to Contribute to Open Source](https://opensource.guide/).\n\n## Migration\n\nFollow our [migration guides](https://docs.strapi.io/developer-docs/latest/update-migration-guides/migration-guides.html) on the documentation to keep your projects up-to-date.\n\n## Roadmap\n\nCheck out our [roadmap](https://feedback.strapi.io) to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.\n\n## Documentation\n\nSee our dedicated [repository](https://github.com/strapi/documentation) for the Strapi documentation, or view our documentation live:\n\n- [CMS docs](https://docs.strapi.io/cms/intro)\n- [Cloud docs](https://docs.strapi.io/cloud/intro)\n\n## Security\n\nIf you discover a security issue, please report it responsibly. See our [Security Policy](https://github.com/strapi/strapi/blob/main/SECURITY.md) for our disclosure process and contact info.\n\n## About Strapi\n\n- **[Company Handbook](https://handbook.strapi.io)**: Our values, how we work, and more\n- **[About Us](https://strapi.io/about-us)**: The story of Strapi\n\n[Contact us](https://strapi.io/contact)\n\n## Support Strapi\n\nIf Strapi is useful to you, give us a star. It helps more than you think!\n\n## Thanks to All Contributors\n\nThank you to everyone who has contributed code, reported issues, and helped shape Strapi.\n\n[![Strapi contributors](https://contrib.rocks/image?repo=strapi/strapi&max=400&columns=20)](https://github.com/strapi/strapi/graphs/contributors)\n\n## License\n\nSee the [LICENSE](./LICENSE) file for licensing information.\n\n---\n\n[Website](https://strapi.io) · [Docs](https://docs.strapi.io) · [Blog](https://strapi.io/blog) · [Twitter](https://twitter.com/strapijs) · [LinkedIn](https://www.linkedin.com/company/strapi/)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"strapi\",\n  \"private\": true,\n  \"bugs\": {\n    \"url\": \"https://github.com/strapi/strapi/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/strapi/strapi.git\"\n  },\n  \"license\": \"SEE LICENSE IN LICENSE\",\n  \"author\": {\n    \"name\": \"Strapi Solutions SAS\",\n    \"email\": \"hi@strapi.io\",\n    \"url\": \"https://strapi.io\"\n  },\n  \"maintainers\": [\n    {\n      \"name\": \"Strapi Solutions SAS\",\n      \"email\": \"hi@strapi.io\",\n      \"url\": \"https://strapi.io\"\n    }\n  ],\n  \"workspaces\": [\n    \"packages/*\",\n    \"packages/*/*\",\n    \"examples/*\",\n    \"examples/plugins/*\",\n    \"examples/*/src/plugins/*\",\n    \".github/actions/*\",\n    \"scripts/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"nx run-many --targets build:code,build:types --nx-ignore-cycles\",\n    \"build:code\": \"nx run-many --target=build:code --nx-ignore-cycles\",\n    \"build:types\": \"nx run-many --target=build:types --nx-ignore-cycles\",\n    \"watch\": \"nx watch --all -- 'nx run-many --targets build:code,build:types --projects $NX_PROJECT_NAME'\",\n    \"build:size\": \"cd examples/getstarted && yarn build\",\n    \"build:ts\": \"nx run-many --target=build:ts --nx-ignore-cycles\",\n    \"build:watch\": \"nx watch --all --nx-ignore-cycles -- nx run \\\\$NX_PROJECT_NAME:build --nx-ignore-cycles\",\n    \"clean\": \"nx run-many --target=clean --nx-ignore-cycles\",\n    \"commit\": \"commit\",\n    \"doc:api\": \"node scripts/open-api/serve.js\",\n    \"format\": \"yarn format:code && yarn format:other\",\n    \"format:code\": \"yarn prettier:code --write\",\n    \"format:other\": \"yarn prettier:other --write\",\n    \"lint\": \"nx run-many --target=lint --nx-ignore-cycles && yarn lint:other\",\n    \"lint:fix\": \"nx run-many --target=lint --nx-ignore-cycles -- --fix\",\n    \"lint:other\": \"npm run prettier:other -- --check\",\n    \"version:check\": \"node scripts/check-package-versions.mjs && syncpack lint\",\n    \"version:fix\": \"node scripts/check-package-versions.mjs --fix --prompt && syncpack prompt && syncpack fix-mismatches\",\n    \"ai:sync\": \"tsx scripts/ai-tooling/index.ts sync\",\n    \"ai:unlink\": \"tsx scripts/ai-tooling/index.ts unlink\",\n    \"ai:status\": \"tsx scripts/ai-tooling/index.ts status\",\n    \"ai:test\": \"tsx --test scripts/ai-tooling/__tests__/*.test.ts\",\n    \"postinstall\": \"husky\",\n    \"prepack\": \"pinst --disable\",\n    \"postpack\": \"pinst --enable\",\n    \"prettier:check\": \"yarn prettier:code --check && yarn prettier:other --check\",\n    \"prettier:code\": \"prettier --cache --cache-strategy content \\\"**/*.{js,ts,jsx,tsx,json}\\\"\",\n    \"prettier:other\": \"prettier --cache --cache-strategy content \\\"**/*.{md,mdx,css,scss,yaml,yml}\\\"\",\n    \"prettier:write\": \"prettier --write \\\"**/*.{js,ts,jsx,tsx,json,md,mdx,css,scss,yaml,yml}\\\"\",\n    \"release\": \"node scripts/release.js\",\n    \"setup\": \"yarn && yarn clean && yarn build --skip-nx-cache && tsx scripts/ai-tooling/post-setup.ts\",\n    \"test:api\": \"node tests/scripts/run-api-tests.js\",\n    \"test:api:clean\": \"rimraf ./coverage\",\n    \"test:clean\": \"run-s -c test:api:clean test:e2e:clean test:cli:clean\",\n    \"test:cli\": \"node tests/scripts/run-cli-tests.js\",\n    \"test:cli:clean\": \"node tests/scripts/run-cli-tests.js clean\",\n    \"test:cli:debug\": \"node tests/scripts/run-cli-tests.js --debug\",\n    \"test:cli:update\": \"node tests/scripts/run-cli-tests.js -u\",\n    \"test:e2e\": \"node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:ce\": \"cross-env STRAPI_E2E_EDITION=ce node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:ee\": \"cross-env STRAPI_E2E_EDITION=ee node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:clean\": \"node tests/scripts/run-e2e-tests.js clean\",\n    \"test:front\": \"cross-env IS_EE=true jest --config jest.config.front.js --runInBand\",\n    \"test:front:all\": \"cross-env IS_EE=true nx run-many --target=test:front --nx-ignore-cycles\",\n    \"test:front:all:ce\": \"cross-env IS_EE=false nx run-many --target=test:front:ce --nx-ignore-cycles\",\n    \"test:front:ce\": \"cross-env IS_EE=false run test:front\",\n    \"test:front:update\": \"run test:front -u\",\n    \"test:front:update:ce\": \"yarn test:front:ce -u\",\n    \"test:front:watch\": \"cross-env IS_EE=true run test:front --watch\",\n    \"test:front:watch:ce\": \"cross-env IS_EE=false run test:front --watch\",\n    \"test:generate-app\": \"yarn build:ts && node tests/scripts/generate-test-app.js\",\n    \"test:generate-app:no-build\": \"node tests/scripts/generate-test-app.js\",\n    \"test:ts\": \"yarn test:ts:packages && yarn test:ts:front && yarn test:ts:back\",\n    \"test:ts:back\": \"nx run-many --target=test:ts:back --nx-ignore-cycles\",\n    \"test:ts:front\": \"nx run-many --target=test:ts:front --nx-ignore-cycles\",\n    \"test:ts:packages\": \"nx run-many --target=test:ts --nx-ignore-cycles\",\n    \"test:unit\": \"jest --config jest.config.js\",\n    \"test:unit:update\": \"jest --config jest.config.js -u\",\n    \"test:unit:all\": \"nx run-many --target=test:unit --nx-ignore-cycles\",\n    \"test:unit:watch\": \"run test:unit --watch\",\n    \"test:unit:coverage\": \"jest --config jest.config.js --coverage\",\n    \"test:front:coverage\": \"cross-env IS_EE=true jest --config jest.config.fr",
    "strategic_keywords": [
      "workspace",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 74
    },
    "strategic_score": 74
  },
  {
    "owner": "nodejs",
    "name": "node",
    "full_name": "nodejs/node",
    "url": "https://github.com/nodejs/node",
    "description": "Node.js JavaScript runtime ✨🐢🚀✨",
    "language": "JavaScript",
    "total_stars": 118009,
    "forks": 35800,
    "stars_this_period": 35,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "javascript",
        "js",
        "linux",
        "macos",
        "mit",
        "node",
        "nodejs",
        "runtime",
        "windows"
      ],
      "license": "NOASSERTION",
      "open_issues": 2421,
      "created_at": "2014-11-26T19:57:11Z",
      "pushed_at": "2026-06-27T18:39:45Z",
      "homepage": "https://nodejs.org",
      "default_branch": "main",
      "forks": 35800,
      "watchers": 3058,
      "archived": false,
      "size_kb": 1503259
    },
    "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": 12,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 6,
      "total": 79
    },
    "strategic_score": 79
  }
]