sharing-streams Documentation

Official TypeScript developer resources and documentation for langchain-ai/sharing-streams. Verified technical context for AI.

0 stars TypeScript TypeScript 1 file · ~60,427 tokens
RAW Doc

1. Project Overview & Quickstart (langchain-ai/sharing-streams)

Technical Documentation: langchain-ai/sharing-streams

ℹ️ Provenance: Multi-Tier Ingestion · CodeWiki Reference

sharing-streams

Agent Skills & Rules

  • Discovered 21 agent rule(s) and prompt configurations.

--- METRICS ---

2. Official Technical Reference & Guides (langchain-ai/docs)

File: README.md

LangChain Docs

🦜 Welcome! This repository contains the documentation build pipeline for LangChain projects.

  • 🏠 docs.langchain.com is our docs home, centralizing documentation for LangChain, LangGraph, LangSmith, and LangChain Labs (Deep Agents, Open SWE, Open Agent Platform). This site is hosted on Mintlify.
  • 🛠️ reference.langchain.com hosts generated API reference for LangChain, LangGraph, LangSmith, and integration packages. That site is not built from this repository (no reference build scripts or output live here).
  • 💬 chat.langchain.com is an AI-powered assistant that can answer questions about LangChain documentation.

Table of contents:


Contribute

To run a local preview of the documentation:

bash
git clone https://github.com/langchain-ai/docs.git
bash
cd docs
bash
make install
bash
make dev

For more information on how to contribute to LangChain documentation, follow the steps outlined in the contributing guide. The contributing guide also explains our documentation types and their writing and quality standards.

For detailed information about setting up your development environment and contributing to documentation, see the documentation contributing guide.

To report issues with reference.langchain.com (missing pages, broken links, or generated API content), open a reference documentation issue on this repo so maintainers can route it.

Reference

Repository structure

text
# --- docs.langchain.com ----------------------------------------------
build/                    # Built docs (DO NOT EDIT)
packages.yml              # Package metadata (indexes, tables, downloads; not the API reference build)
pipeline/                 # Build pipeline source code
scripts/                  # Helper scripts
src/                      # Source documentation files (< EDIT CONTENT HERE)
    langsmith/            # LangSmith docs
    oss/                  # LangChain, LangGraph, Deep Agents, and integrations docs
    docs.json             # Mintlify site configuration and navigation
tests/                    # Test files for the pipeline
Makefile                  # Build targets
pyproject.toml            # Dependencies

`docs.langchain.com`

The Mintlify docs pipeline is structured with .mdx source files in /src and build artifacts in /build. Mintlify deploys from the /build folder, which is generated by preprocessing logic.

[!IMPORTANT]
Never edit /build directly.

The /src/docs.json file is used to configure the Mintlify site navigation and settings. Refer to the Mintlify documentation for detailed syntax and component usage.

Documentation changes follow a PR workflow where all tests must pass before merging. See the contributing guidelines for more details.

`reference.langchain.com`

API reference is generated and deployed outside this repo. Browse Python and JavaScript/TypeScript reference there. If something is wrong with that site, use the reference docs issue template.

File formats

  • Markdown files (.md, .mdx) - Standard documentation content
  • Snippets (src/snippets/) - Reusable MDX content that can be imported into multiple pages. Important: Snippets undergo special link preprocessing. When writing links in snippets, be careful about path segments.
  • Jupyter notebooks (.ipynb) - Converted to markdown during build, though these are not recommended for new content! Your PR will likely be rejected if you attempt to add a Jupyter notebook unless asked to by a maintainer.
  • Assets - Images and other files are copied to the build directory

Available commands

Make commands:

  • make dev - Start development mode with file watching and live rebuild
  • make build - Build documentation to ./build directory
  • make broken-links-with-anchors - Check for broken links, including anchors (the check CI runs)
  • make broken-links - Check for broken links, without anchors
  • make install - Install all dependencies and link authoring skills
  • make clean - Remove build artifacts
  • make test - Run the test suite
  • make lint - Check code style and formatting
  • make format - Auto-format code
  • make lint_md - Lint markdown files
  • make lint_md_fix - Lint and fix markdown files
  • make skills - Link .agents/skills into .claude/skills for Claude Code. Runs as part of make install; re-run it after new skills are added
  • make help - Show all available commands

docs CLI tool:

The docs command (installed as uv run docs) provides additional functionality:

  • docs migrate - Convert MkDocs markdown/notebook files to Mintlify format

    • --dry-run - Preview changes without writing files
    • --output - Specify output location (default: in-place)
    • Supports .md, .markdown, .ipynb files
  • docs migrate-docusaurus - Convert Docusaurus markdown/notebook files to Mintlify format

    • --dry-run - Preview changes without writing files
    • --output - Specify output location (default: in-place)
    • Supports .md, .markdown, .mdx, .ipynb files
    • Converts Docusaurus-specific syntax (admonitions, tabs, imports, etc.)
  • docs mv <old_path> <new_path> - Move files and update cross-references

    • --dry-run - Preview changes without moving files

These can be used directly using the Makefile or via the docs CLI tool:

  • docs dev - Start development mode with file watching and hot reload

    • Automatically rebuilds changed files from src/ to build/
    • Launches Mintlify dev server at http://localhost:3000
    • Provides automatic browser refresh when files change
    • --skip-build - Skip initial build and use existing build directory
  • docs build - Build documentation files

    • --watch - Watch for file changes after building

Linting

After running make install, you can use make lint_prose to ensure your writing meets our style guide rules.

make lint_prose installs the Vale version pinned in .mise.toml to .bin/vale, which is the same version the
lint-prose CI workflow uses. Bump the pin in .mise.toml only; the Makefile, scripts/install-vale.sh, and
the workflow all read it from there. If you already have a different vale on your PATH (from Homebrew, say),
the pinned copy in .bin/ takes precedence, so local results match CI.

Codespell

make lint runs uv run codespell src to check source documentation for common spelling errors.

Codespell is configured in pyproject.toml under [tool.codespell]:

  • Add custom accepted words to src/.codespellignore. This file is referenced by ignore-words = "src/.codespellignore".
  • Exclude generated files, vendor content, or other paths that should not be spell checked by adding glob patterns to the skip setting.
  • Keep skip patterns scoped. Prefer adding accepted words to src/.codespellignore when the word is valid documentation content, and use skip when the file or directory should not be checked at all.

You can also follow these steps to enable vale with VS Code or Cursor:

  1. Install the Vale extension (Vale by Chris Chinchilla)
  2. Install Vale CLI: brew install vale (macOS) or see Vale installation for other platforms
  3. Navigate to the Vale extension settings:
    • Set Vale CLI: Config to the absolute path to .vale.ini (in the root of this repo)
    • Set Vale CLI: Min Alert Level to suggestion (many rules are coded as suggestions)

If you cannot use the VS Code UI to configure Vale, add these settings to your settings.json:

json
"vale.valeCLI.config": "/path/to/docs/.vale.ini",
    "vale.valeCLI.minAlertLevel": "suggestion"

Note: The extension requires Vale on your PATH. If annotations don't appear (e.g., when Cursor is launched from the Dock), launch Cursor from a terminal so it inherits your PATH, or ensure Homebrew is in your shell profile.

Troubleshooting

General Mintlify errors

In some cases, we use new features that are only available in the latest Mintlify CLI. If you encounter errors, ensure you have the latest version installed:

bash
mint update

# or

npm install -g mint

`docs dev` not working / running

Re-do the steps to set up your dev environment, ensuring you have activated the virtual environment and installed all dependencies.

[!IMPORTANT]
Most of the time, mint update solves any docs dev / make dev issues!

Mintlify `.venv` parsing error

Problem: Running mint broken-links or other Mintlify commands from the project root causes parsing errors like:

txt
Unable to parse .venv/lib/python3.13/site-packages/soupsieve-2.7.dist-info/licenses/LICENSE.md
- 3:48: Unexpected character '@' (U+0040) in name

Root Cause: Mintlify tries to parse all files in the directory, including Python virtual environment files that contain invalid MDX syntax.

Solutions (in order of preference):

  1. Use the safe Make commands (recommended):

    bash
    make broken-links-with-anchors      # Builds docs first, then checks internal links
  2. Run Mintlify commands from the build directory:

    bash
    cd build               # Change to build directory where final docs are
    mint broken-links      # Now safe to run

Why this works: The solution ensures Mintlify commands run from the build/ directory where the final documentation is generated, which is the correct place to check for broken links. This avoids scanning the Python virtual environment in the project root.

Prevention: Always use the provided Make commands instead of running raw mint commands from the project root.

Offline export and `htmltest`

Use make export to run mint export from build/ after make build so Python and JavaScript OSS routes match the files on disk. The default zip path is build/export.zip (Mintlify’s default filename when exporting from build/).

Prerequisites for mint export:

  • A recent Mintlify CLI that includes export (npm install mint@latest; older CLIs report Unknown command: export)
  • Node.js LTS 20 or 22 (Mintlify does not support Node 25+)
  • An Enterprise Mintlify plan

If you use nvm: nvm use 22 && npm install mint@latest, then run make export from that shell.

Then run make htmltest to unpack that zip under build/mint-export-htmltest-unpacked/ and run htmltest on the static HTML. Install htmltest first (for example brew install htmltest, or the install script). By default it checks external URLs only (htmltest-mint-export.yml), because mint export does not emit a complete page set for reliable internal link checks. Pass extra flags via HTMLTEST_ARGS if needed. If you exported to a different file, set EXPORT_ZIP (for example make htmltest EXPORT_ZIP=build/my-export.zip).

make export-htmltest runs make export and then make htmltest in one go.

Warning: page doesn't exist

If adding a new group, ensure the root index.mdx is included in the pages array like:

json
{
  "group": "New group",
  "pages": ["new-group/index", "new-group/other-page"]
}

If the trailing /index (no extension included) is omitted, the Mintlify parser will raise a warning even though the site will still build.


File: AGENTS.md

Four files derive from this one, for agents that do not read AGENTS.md. When you change a section listed below, update its copies in the same PR:

  • Style guide (through Product and feature name capitalization) is mirrored verbatim in .cursor/rules/docs-style.mdc and .github/instructions/docs-style.instructions.md. Both are path-scoped to src/**/*.mdx, so they load only when a page is edited.
  • Critical rules, Repository structure, Quick reference, Frontmatter, and Syntax are summarized in .cursorrules and .github/copilot-instructions.md.

LangChain Documentation Guidelines

Documentation for LangChain products hosted on Mintlify. These guidelines apply to manually authored content under src/, not Mintlify build/ output.

Critical rules

  1. Always ask for clarification rather than making assumptions
  2. Never fabricate examples, JSON snippets, policy details, or use case descriptions: use only content from the user or existing source files
  3. Never use markdown in frontmatter description: breaks SEO
  4. Never edit build/: Mintlify build output (regenerate with make build or make dev)
  5. Always update src/docs.json when adding new pages
  6. Use Tabler icons only, not FontAwesome
  7. Test code examples before including them

Quick reference

What Where/How
LangSmith docs src/langsmith/
Open source docs src/oss/ (LangChain, LangGraph, Deep Agents)
Python integrations src/oss/python/integrations/
JS integrations src/oss/javascript/integrations/
Reusable snippets src/snippets/
Images src/images/
Provider icons src/images/providers/
Navigation config src/docs.json
Build system pipeline/
Icon library Tabler: https://tabler.io/icons
Mintlify components https://mintlify.com/docs/components
API reference site reference.langchain.com. Built outside this repo. Report reference docs issues
Mintlify MCP server npx add-mcp https://www.mintlify.com/docs/mcp
Authoring skills .agents/skills/ (run make skills for Claude Code)

Skills

Task-specific procedures live in .agents/skills/, one directory per skill.
Cursor, Codex, GitHub Copilot, Gemini CLI, OpenCode, and Deep Agents read that
path directly. Claude Code reads .claude/skills/ only, so run make skills
once to link the tree, and again in each new git worktree.

Skill Use it for
add-docs-page Adding, moving, renaming, or deleting a page: directory choice, frontmatter, src/docs.json navigation, redirects, verification.
docs-edit Editing a page that already has an open PR: checking out that PR's own branch, forked PRs, reading the real diff, checking the edit against related pages.
docs-restructure Splitting a page that grew too long, moving sections between pages, retiring a page, or a topic documented in two places: the duplication map, choosing one owner, cutting rather than relocating.
docs-team-voice Drafting or revising prose in the house voice: sentence length, cross-link density, stating defaults, the revision pass.
docs-review Reviewing changed prose against Vale and the style guide, reporting the rule each finding breaks. add-docs-page invokes it before committing.
open-docs-pr Opening a PR for finished changes: branching from the latest origin/main, the lint and link gates, the commit, the short PR description with its AI disclosure line, pushing, and watching checks.
docs-tooling-notion Recording new or changed tooling on the internal Notion pages: which page owns the topic, and how to edit safely. Required whenever a PR adds or changes a script, workflow, or check.
docs-code-samples Moving inline MDX code blocks into external, testable sample files.
verify-against-source Checking that a code sample, signature, default, or behavior claim is true: which repository owns each product, how to reach the private ones, and naming what stayed unverified.
submit-integration Turning a structured integration issue submission into a listing. Invoked by CI.
update-integrations-prs Processing open integration PRs against the featuring policy.

Invoke a skill when the task matches it. Adding or changing tooling (a script,
a workflow, a Makefile target, a PR check, a scheduled job, or a skill) also
carries a documentation step: invoke docs-tooling-notion before handing off
the pull request, whether or not anyone asked for it. This file holds the rules
that apply to every task; a skill holds the procedure that only some tasks need,
so skills link back here rather than restating these rules. See
.agents/skills/README.md for how to add one.

Project structure

This project uses Mintlify for documentation. Key files: src/docs.json (navigation + site config), MDX files with YAML frontmatter for page metadata. When making multi-file docs changes, always update src/docs.json navigation and any redirect mappings. Custom CSS lives in src/style.css.

txt
docs/
├── src/                        # All manually authored content
│   ├── docs.json               # Mintlify config + navigation
│   ├── index.mdx               # Home page
│   ├── style.css               # Custom CSS
│   ├── langsmith/              # LangSmith product docs
│   │   └── fleet/              #   Fleet (nav label: "No-code agents")
│   ├── oss/                    # Open source docs
│   │   ├── langchain/          #   LangChain framework
│   │   ├── langgraph/          #   LangGraph framework
│   │   ├── deepagents/         #   Deep Agents
│   │   │   └── code/           #     Deep Agents Code (unversioned, no language split)
│   │   ├── openwiki/           #   OpenWiki (unversioned, no language split)
│   │   ├── python/             #   Python-specific (integrations, migrations, releases)
│   │   ├── javascript/         #   TypeScript-specific (integrations, migrations, releases)
│   │   ├── integrations/       #   Shared integration content
│   │   ├── concepts/           #   Conceptual overviews
│   │   ├── contributing/       #   Contribution guides
│   │   └── reference/          #   Reference tab entry pages (link to reference.langchain.com)
│   ├── snippets/               # Reusable MDX snippets
│   │   ├── langsmith/          #   LangSmith snippets
│   │   ├── oss/                #   OSS snippets
│   │   └── code-samples/       #   Embedded code samples
│   ├── images/                 # Documentation images
│   │   ├── brand/              #   Logos, favicons
│   │   └── providers/          #   Provider icons (dark/ and light/ variants)
│   ├── code-samples/           # Testable standalone code samples (see make test-code-samples)
│   └── fonts/                  # TWK Lausanne font files
├── pipeline/                   # Python build system & preprocessors
├── build/                      # Build output, do not edit
├── scripts/                    # Helper utilities and automation scripts
└── tests/                      # Pipeline tests

Navigation is defined in src/docs.json. The site has 2 products, each a menu of items rather than a flat tab list. When adding pages, find the correct product → menu item → tab → group below, then update the matching section in docs.json.

Product and menu names in docs.json do not match source directory names. Lifecycle stages mix LangSmith and OSS content: the Build menu draws from both src/oss/ and src/langsmith/, and Test, Deploy, and Monitor all draw from src/langsmith/. Locate pages by directory, not by product name.

AGENT DEVELOPMENT LIFECYCLE

Five menu items: Home, Build, Test, Deploy, Monitor.

Home

Single page (src/index.mdx).

Build

Two language dropdowns (Python, TypeScript) with the same 10 tabs each. Most content is language-versioned from src/oss/; two tabs are exceptions.

Tab Source Groups
Overview src/build-overview.mdx Single page
Managed Deep Agents src/langsmith/managed-deep-agents*.mdx Get started, Agent definition (Channels), Build and deploy
Deep Agents src/oss/deepagents/ Get started, Deployment (Going to production), Execution environment, Context management, Delegation, Steering, Frontend (Patterns), Protocols
LangChain src/oss/langchain/ Get started, Core components, Middleware, Frontend (Patterns → Generative UI, Integrations), Advanced usage (Multi-agent), Agent development (Test), Production
LangGraph src/oss/langgraph/ Get started, Capabilities, Production, Frontend, LangGraph APIs (Graph API, Functional API)
OpenWiki src/oss/openwiki/ Modes, Integrations, Search and link, Visualize, CLI reference, Customize, Providers, Automate updates, Changelog
Integrations src/oss/python/integrations/ or src/oss/javascript/integrations/ Python: Popular Providers, Integrations by component. TypeScript: Popular Providers (OpenAI, Anthropic, Google, AWS, Microsoft), General integrations, RAG integrations
Learn src/oss/ (various) Tutorials (Managed Deep Agents, Deep Agents, LangChain, Multi-agent, LangGraph), Conceptual overviews, Additional resources. TypeScript adds LangChain Academy
Reference src/oss/reference/ Reference, Releases (Releases, Migration guides), Policies; short entry pages linking to reference.langchain.com
Contribute src/oss/contributing/ Contribute (Integrations)

Two Build tabs are not language-versioned in the usual way:

  • Managed Deep Agents lives in src/langsmith/, not src/oss/. Files named managed-deep-agents*.mdx emit only language-prefixed routes (/langsmith/python/... and /langsmith/javascript/...). The unversioned /langsmith/managed-deep-agents* URLs redirect to the Python routes via docs.json.
  • OpenWiki ships one set of pages at /oss/openwiki/... with no language split. Conditional fences resolve against the Python branch.

Test

Six tabs, all files flat in src/langsmith/:

Tab Groups
Get started No groups
Datasets & Experiments Datasets (Create a dataset), Run an evaluation, Evaluation techniques (Define evaluation target, Scoring methods, Experiment configuration, Multimodal evaluations), Analyze experiment results, Tutorials, Common data types
Evaluators Evaluator types (UI, SDK), Frameworks & integrations, Improve evaluators
Annotation Queues Feedback
Test from Playground No groups
Test from Studio No groups

Deploy

Six tabs, all files flat in src/langsmith/:

Tab Groups
Get started Deployment components, Develop & test, Frameworks and platforms (Full-stack web apps), Reference (Agent Server API, Control Plane API, Related)
Agent Server Develop your application (Set up dependencies, Persistence), Capabilities (Assistants, Runs, Double-texting), How to build, Auth & access control (Custom auth tutorial), Server customization (Replace built-in backends, Extend the HTTP server, Headers and logging)
Deploy to Cloud Deployment guide, Reference
Deploy to Self-hosted Configure, Reference
Prompt & Context Hub Prompts (Create and manage prompts, Connect to models), Context Hub, Tutorials
Sandboxes No groups

The Get started tab's Reference group holds two OpenAPI-generated sections. See Reference docs below.

Monitor

Five tabs, all files flat in src/langsmith/:

Tab Groups
Overview Single page
Trace Tracing setup (Integrations → LLM providers, Agent frameworks, Voice AI frameworks, Developer tools, Productivity; Manual instrumentation), Configuration & troubleshooting (Project & environment settings, Advanced tracing techniques, Data & privacy, Troubleshooting guides)
Debug Viewing & managing traces, Bulk export trace data, Trajectory view, Data type reference
Observe Monitoring & alerting, Online evaluators, Automations
Reference SmithDB SDK migration, LangSmith REST API

The Reference tab's LangSmith REST API group is OpenAPI-generated. See Reference docs below.

PRODUCTS AND SETUP

Five menu items. Only LangSmith setup has tabs; the rest are flat group lists.

LangSmith setup

Six tabs, all files flat in src/langsmith/:

Tab Groups
Overview Hosting, Agent-based workspaces
Account Billing & usage
Cloud Reference
BYOC No groups
Self-hosted Get started by cloud provider, Deploy with Terraform (AWS, GCP, Azure), Install an instance (Additional features → Enable Sandboxes), Configure an instance, Connect external services, Platform auth & access control, SmithDB, Manage an instance, Self-hosted observability, Hybrid, Scripts, Reference
Govern Organization (Workspace setup), Users & access control, Tools, Auditing, Data & compliance, Additional resources (FAQ)

Other menu items

Menu item Source Groups
LLM Gateway src/langsmith/llm-gateway*.mdx Core capabilities, Administration and governance, Advanced
No-code agents src/langsmith/fleet/ Get started, Configure, Tools and automation, Advanced, Additional resources
Engine src/langsmith/engine*.mdx No groups
Deep Agents Code src/oss/deepagents/code/ Configuration

"No-code agents" is the nav label for Fleet. The source directory and URLs still use fleet.

"Deep Agents Code" ships one set of pages at /oss/deepagents/code/... with no language split, even though it sits under src/oss/deepagents/. Conditional fences resolve against the Python branch.

Source directory summary

Because nav names and directories diverge, use this to go from a file to its place in the nav:

Source Appears under
src/index.mdx Lifecycle → Home
src/oss/deepagents/ (except code/) Build → Deep Agents
src/oss/deepagents/code/ Products and setup → Deep Agents Code
src/oss/langchain/ Build → LangChain
src/oss/langgraph/ Build → LangGraph
src/oss/openwiki/ Build → OpenWiki
src/oss/{python,javascript}/integrations/ Build → Integrations
src/oss/reference/ Build → Reference
src/oss/contributing/ Build → Contribute
src/langsmith/managed-deep-agents*.mdx Build → Managed Deep Agents
src/langsmith/fleet/ Products and setup → No-code agents
src/langsmith/agents.mdx, agent-environments.mdx, navigate-agents.mdx, create-an-agent.mdx, build-an-agent.mdx, deploy-to-agent-environment.mdx Products and setup → LangSmith setup → Overview → Agent-based workspaces
src/langsmith/*.mdx (everything else) Test, Deploy, Monitor, or LangSmith setup, depending on subject

Reference docs

Three OpenAPI-generated sections. Mintlify generates the endpoint pages at deploy time, so they do not exist in the local build/ output. make broken-links-with-anchors filters them as false positives.

Section Nav location Spec source Generated under
Agent Server API Deploy → Get started → Reference src/langsmith/agent-server-openapi.json (committed) /langsmith/agent-server-api/
Control Plane API Deploy → Get started → Reference https://api.host.langchain.com/openapi.json (fetched at deploy time, no local file) /api-reference/
LangSmith REST API Monitor → Reference src/langsmith/langsmith-platform-openapi.json (committed) /langsmith/smith-api/

src/langsmith/langsmith-platform-openapi.json is refreshed daily by .github/workflows/refresh-langsmith-openapi.yml, which runs scripts/process_langsmith_openapi.py and opens or appends to a standing chore/refresh-langsmith-openapi PR. Do not edit it by hand.

src/langsmith/agent-server-openapi.json is updated by PRs from the langgraph-api repository, titled Update Agent ServerOpenAPI spec for API version X.Y.Z. Validate either spec with make check-openapi.

Local development

See Contributing to documentation for setup instructions.

Command-line tools

Two distinct binaries drive local work. Do not assume mint is the only command just because the Makefile targets shell out to it: docs is a first-class, preferred entry point installed separately via Python:

  • docs: The primary CLI, a Python console script (docs = "pipeline.cli:main" in pyproject.toml) installed into the virtualenv by uv sync (the first step of make install). Provides docs dev, docs build, docs migrate, and docs mv. The make targets wrap this CLI. If docs is not found after make install, relaunch your shell (or activate the venv) so .venv/bin/docs lands on PATH.
  • mint: Mintlify's CLI, a separate global npm binary (npm install mint@latest). The build targets shell out to it for mint dev, mint broken-links, and mint export.

Frontmatter

Every MDX file requires:

yaml
---
title: Clear, concise page title
description: SEO summary, no markdown allowed (no links, backticks, formatting)
---

Integration page descriptions: "Integrate with the ClassName type using LangChain Python."

  • Example: "Integrate with the ChatOpenAI chat model using LangChain Python."

Syntax

Language-specific content

Use :::python or :::js fences for language-specific content. Every shared page under src/oss/ builds a Python and a JavaScript version, and the fences decide what each version keeps.

A shared page listed in only one language's navigation in src/docs.json builds only that language. To make a page Python-only, list it only in the Python nav, and add a docs.json redirect for the JavaScript URL if that URL was ever published. Pages listed in both navs, or in neither, build both versions.

txt
:::python
Python-only content here
:::

Code highlighting

python
highlighted = True  # [!code highlight]
added = True        # [!code ++]
removed = True      # [!code --]

Use @[ClassName] to auto-link to API docs. Defined in pipeline/preprocessors/link_map.py.

Use for: First mention of SDK classes/methods (@[ChatOpenAI], @[StateGraph], @[create_agent])

Don't use for: Repeated mentions, general concepts, or when a descriptive link is clearer

Assets

Images: Store in src/images/. Use descriptive filenames and alt text.

SVG text: Keep labels as native <text> when sharpness at reading size matters. Mintlify CLI 4.2.671 strips <text> and `` from plain MDX; use a named-export JSX snippet for native SVG rendering, as in src/snippets/sandbox-diagram.jsx. Reference only trusted local assets, and compare the result at the actual docs column width rather than only in an enlarged viewer.

Icons: Use Tabler names only (icon="home", icon="brand-github"). For missing icons, use SVG path: icon="/images/providers/name.svg"

Common Tabler names: home (not house), tool (not wrench), player-play (not play), bulb (not lightbulb), alert-triangle (not exclamation-triangle)

Components

Component Use for
<Tabs> / <Tab> Python/JS examples
<Steps> / <Step> Numbered instructions
<Accordion> Collapsible content
<CodeGroup> Tabbed code blocks
<Card> / <CardGroup> Navigation/overview links only (not for highlighting points)
<Note>, <Tip>, <Warning>, `` Callouts
`` Copyable AI-assistant prompt. Required at the top of every migration guide

Migration guide convention

Every migration guide (any page under src/oss/python/migrate/ or src/oss/javascript/migrate/) must include a `` component as the very first element after the frontmatter and any import statements. The prompt should be a complete, paste-ready instruction that an AI coding assistant can use to perform the migration automatically.

Minimal template:

mdx
<Prompt
    description="Short one-line description of the migration."
    icon="arrow-right"
    actions={["copy"]}
>
Migrate this codebase from `old-package` to `new-package` (requires `new-package>=x.y.z`).

Key changes:

1. ...
2. ...

Search the codebase for all usages of `OldClass`, `old_function`, and imports from `old_module`, and apply the necessary changes. Flag anything that cannot be migrated automatically.
</Prompt>

The prompt must cover every API rename, import path change, behavioral difference, and removed feature that the page documents. End with an explicit instruction to search and flag.

Version-added admonitions

When documenting new features, APIs, or behavior that requires a minimum package or CLI version, add a version-added admonition near the first mention of the feature. Use a <Note> callout with a concise requirement, for example: Feature name requires \package>=x.y.z`.` For a CLI, runtime, or chart version, use the prose form instead ("Feature name requires Codex CLI v0.153.4 or later."). See Version requirements.

For language-specific requirements, wrap the note in the relevant :::python or :::js fence. Include separate notes when Python and TypeScript packages have different minimum versions.

Mermaid diagram styling

Use these classDef colors (from LangChain brand palette) for all mermaid diagrams. See .github/brand-guidelines.md for the full brand color reference.

Role classDef value
process (blue) fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710
trigger (green) fill:#F6FFDB,stroke:#6E8900,stroke-width:2px,color:#2E3900
decision (purple) fill:#FDF3FF,stroke:#7E65AE,stroke-width:2px,color:#504B5F
output (plum) fill:#EBD0F0,stroke:#885270,stroke-width:2px,color:#441E33
alert (peach) fill:#F8E8E6,stroke:#B27D75,stroke-width:2px,color:#634643
neutral (muted blue) fill:#F2FAFF,stroke:#40668D,stroke-width:2px,color:#2F4B68

When using %%{init}%% theme variables, use: lineColor:'#40668D', primaryColor:'#E5F4FF', primaryTextColor:'#030710', primaryBorderColor:'#006DDD'.

Do not use Tailwind default colors, Material Design colors, or other off-brand palettes in mermaid diagrams.

Style guide

Follow Google Developer Documentation Style Guide.

Do:

  • Match existing conventions in the file you are editing: do not restructure, combine, or split pages unless explicitly asked
  • Reference existing pages for style patterns when creating new content
  • Be concise: cut filler words and wordy phrases ("to" not "in order to", "because" not "due to the fact that", "can" not "has the ability to")
  • Second-person imperative present tense ("Run the following code…")
  • Active voice ("The function returns a list" not "A list is returned by the function")
  • Sentence-case headings starting with active verb, not gerund ("Add a tool" not "Adding a tool")
  • American English spelling
  • Oxford commas in lists ("traces, datasets, and experiments")
  • Descriptive link text ("View the tracing docs" not "click this link")
  • Add cross-links where applicable
  • Use @[ClassName] link map for API references
  • Use :::python/:::js fencing on OSS docs
  • Language tags on all code blocks (use actual language, not output)
  • Sort imports in all code snippets (stdlib, third-party, local)
  • Use .content_blocks instead of .content when accessing message content in LangChain code snippets
  • Test code examples and links before publishing

Don't:

  • Skip frontmatter
  • Use absolute URLs for internal links
  • Use markdown in description fields
  • Use /python/ or /javascript/ in links (resolved by build pipeline)
  • Use model aliases: use full identifiers (e.g., claude-sonnet-4-6)
  • Use >= in prose for version minimums: write "v0.153.4 or later"; reserve >= for package specifiers in code (langsmith>=0.3.13)
  • Use "→" to separate UI navigation steps: write "Go to Settings > API Keys"
  • Use FontAwesome icon names
  • Use nested double quotes in component attributes: use default="['a', 'b']" not default='["a", "b"]'
  • Use contractions ("do not" not "don't", "cannot" not "can't", "it is" not "it's")
  • Use first person ("we", "I", "our", "let's"): write in second person or use the product name as subject
  • Use future tense ("The function returns X" not "The function will return X")
  • Use weasel words or filler (avoid "simply", "easily", "just", "very", "basically", "obviously")
  • Use H5 or H6 headings
  • Start headings with articles ("Add a tool" not "The tool setup guide")
  • Use em dashes: prefer commas, colons, or separate sentences instead. Only use an em dash when no alternative reads naturally
  • Add spaces around em dashes: write word—word not word — word (make lint_prose enforces this)
  • Use excessive bold/italics in body text
  • Start bulleted list items with a lowercase letter: always capitalize the first word
  • Include "key features" lists
  • Use horizontal lines (---) to separate sections: use headings instead
  • Apply bold to UI element names unless existing docs already do so
  • Misspell product names: use "prebuilt" (not "pre-built"), "Deep Agents" (not "DeepAgents"), "PyPI" (not "PyPi"), "URL" (not "url")
  • Skip make lint_prose: always run it on changed files before committing and fix all violations

Structure conventions

Match these patterns, drawn from established pages, when authoring new content:

  • Open with definition, then benefit, then task: start a section (and the page) with a one-sentence statement of what the feature is or does, follow with a sentence on what it enables for the reader, then give the procedure or detail. When a page has a sibling variant (for example, a paid or self-hosted version), link it in the opening lines.
  • Introduce procedures with a colon lead-in: precede steps with a phrase such as "To add a channel:", then a numbered list (or the <Steps> component) of imperative steps. State a step's result as a follow-on line when it matters ("The Add User modal displays."). Flag optional steps inline with "(Optional)". For long, multi-stage tasks, use ### Step N. <verb> headings.
  • Use bold-led definition lists for options: for parameters, permissions, secrets, or enumerated types, write - **Term**: Explanation. and end each explanation with a period.
  • Link on first mention, and point forward at section ends: link a feature, class, or term on first mention only, not on repeats. Two pointer forms are established, and neither is canonical, so do not mass-convert one into the other. Use the long form ("For more information, see Page") at section ends and for standalone pointers. Use the short form ("See Page") where the pointer trails an already-complete thought, such as an FAQ answer or a table cell, and especially in a run where nearly every item ends in a pointer. Close substantial pages with a ## See also list of related links.
  • State requirements and constraints up front: put permission, plan tier, or preview requirements before the steps they govern ("Adding MCP servers requires admin permissions."). Write hard constraints as plain facts ("Once an agent identity is set, it cannot be changed.").

Model references

Always use the latest generally available (GA) models when referencing LLMs in docstrings and illustrative code snippets. Avoid preview or beta identifiers unless the model has no GA equivalent. Outdated model names signal stale code and confuse users.

Before writing or updating model references, verify current model IDs against the provider's official docs. Do not rely on memorized or cached model names. They go stale quickly.

Version requirements

Write version minimums as " or later" in prose. Reserve >= for package specifiers, where it is literal install syntax and belongs in backticks.

  • Tools, CLIs, runtimes, servers, and Helm charts: "Codex CLI v0.153.4 or later", "Node.js 22.x or later", "Helm chart version 0.12.33 or later".
  • Package specifiers: langsmith>=0.3.13, langchain>=1.0.0. Readers paste these into an install command, so keep the operator.

Keep a v prefix when the page or the upstream project already uses one. Do not add one to a package specifier. When another requirement follows the version, set it off with a comma so it does not read as part of the constraint ("v0.153.4 or later, with plugin hooks enabled").

This rule covers version numbers only. Leave >= as is in numeric parameter constraints ("Must be >= 0") and in comparison-operator reference tables.

Separate UI navigation steps with a greater-than sign surrounded by spaces, not an arrow: "Go to Settings > API Keys". Bold the UI labels, either individually (**Settings** > **API Keys**) or as a single span (**Settings > API Keys**), and match whichever form the page already uses. Vale enforces this as LangChain.NavPathArrows.

The arrow character stays where it does not mark navigation: mermaid diagrams, data flow (browser or client → data plane), API renames in migration guides (create_react_agent → create_agent), state progressions, and UI labels that literally contain an arrow ("Manage app access →").

Release stage names

LangSmith ships features through three release stages: alpha, beta, and generally available (GA). See Release stages for what each stage means.

These are common nouns, not proper nouns. Write them lowercase in prose, including parenthetical and inline status markers:

  • Lowercase mid-sentence and in markers: "available in beta", "is in beta", "(beta)", "the feature is in alpha".
  • Capitalize only where normal sentence case requires it: the first word of a sentence or heading ("Beta is optional.", "## Beta").
  • Keep the literal product UI label capitalized when quoting it as a tag: the Beta tag, frontmatter tag: "Beta". The same applies to a stage name standing alone as a table cell's only label.
  • Spell out "generally available" on first use, then use "GA". GA is always uppercase.
  • Do not change code identifiers, package version identifiers (1.0.0b1), or literal CLI output that contains "Beta".

Product and feature name capitalization

Capitalize a word when it refers to a product or brand name. Use lowercase when it refers to a common noun: a thing you build, an instance, or a type.

Capitalize product and brand names:

  • LangChain, LangGraph, LangSmith, Deep Agents, Fleet, Engine

Lowercase common nouns (things you create, instances, or types):

  • "Create a dashboard" (dashboard = a thing you build, not a product name)
  • "a deep agent created using Deep Agents" (the first "deep agent" is a common noun; "Deep Agents" is the product name)
  • "Run an experiment", "View your traces", "Manage your projects"
  • "Build agents across the agent development lifecycle" (the lifecycle is a process, not a product; marketing materials capitalize it, docs do not)
  • "LangChain provides the open agent engineering platform" (the phrase describes what LangChain provides; it is not a product name)

When in doubt, ask: is this word the product's proper name, or is it describing a thing the user creates or works with? If the latter, use lowercase.

Spell out "agent development lifecycle" in prose. Do not use the "ADLC" acronym, which appears in marketing materials but not in the documentation.

Reserve "the platform" for LangSmith. LangChain is the open agent engineering ecosystem, not a platform. Marketing's short blurb ("an open agent engineering platform") compresses the whole company into a single noun to fit the character limits of a search result. Docs have the room to be precise, so do not carry that phrasing onto pages.

Adding pages

  1. Create MDX file with required frontmatter in the correct directory (see navigation map above)
  2. Update src/docs.json to add the page to the correct product → tab → group
  3. For new groups, include an index page: "pages": ["group/index", "group/page"]

Common workflows

Add a new LangSmith doc:

  1. Create src/langsmith/<name>.mdx with frontmatter
  2. Decide which lifecycle stage the page belongs to, then find the matching menu item in src/docs.json: navigation.products[0].menu holds Home, Build, Test, Deploy, and Monitor; navigation.products[1].menu holds LangSmith setup, LLM Gateway, No-code agents, Engine, and Deep Agents Code
  3. Add the page path (e.g., "langsmith/<name>") to the correct group's pages array

Add a new integration page (Python):

  1. Create src/oss/python/integrations/<component>/.mdx
  2. Add the page to the component's index page (src/oss/python/integrations/<component>/index.mdx); only edit src/docs.json when creating a brand-new component group
  3. Use description format: "Integrate with the ClassName type using LangChain Python."
  4. If the provider has an overview page at src/oss/python/integrations/providers/.mdx, add or update a section there linking to the new page (/oss/integrations/<component>/)

Add a new integration page (TypeScript):

  1. Create src/oss/javascript/integrations/<component>/.mdx
  2. Add the page to the component's index page (src/oss/javascript/integrations/<component>/index.mdx); only edit src/docs.json when creating a brand-new component group
  3. If the provider has an overview page at src/oss/javascript/integrations/providers/.mdx, add or update a section there linking to the new page (/oss/integrations/<component>/)

Availability callouts on agent-based workspace pages: every page in the
Agent-based workspaces group opens with the shared
/snippets/langsmith/agent-availability-note.mdx callout, placed after the
page's opening definition and before the first ## heading. Do not hand-write
a per-page variant. Agent-based workspaces are available on LangSmith Cloud
and not on self-hosted, so do not label them beta or add a Beta tag to the
group or its pages.

Add a reusable snippet:

  1. Create src/snippets//<name>.mdx
  2. Import it below the frontmatter of the consuming page: import PascalCaseName from '/snippets//<name>.mdx';
  3. Render it where the content belongs: ``

Use the import form, not Mintlify's <Snippet file="..." />. The build pipeline rewrites snippet imports to language-specific copies under /snippets/{python,javascript}/ (_rewrite_snippet_imports_for_language in pipeline/core/builder.py), and that rewrite only matches from '/snippets/...' imports. Every snippet reference in src/ uses the import form.

Debugging

When investigating a bug or unexpected behavior, always start by reading the relevant code and logs before forming a hypothesis. Do not assume something is working or ask the user to confirm. Verify it yourself first.

make broken-links-with-anchors runs mint broken-links --check-anchors --check-redirects, the same check CI runs, then filters known false positives (OpenAPI-generated pages: /langsmith/agent-server-api/, /api-reference/, ../langchain/agents). Output format:

txt
found N broken links in M files

some-file.mdx                    ← file header (always printed)
 ⎿  /path/to/broken-target       ← indented = actual broken link

another-file.mdx                 ← no indented lines = all its links were filtered out (false positive)

Shortcut: Skip straight to ⎿ lines: those are the only real failures. File headers without ⎿ lines beneath them are OpenAPI pages that exist at deploy time but not locally.

Common cause: Page renamed/deleted but link and/or src/docs.json nav entry still references old name. Fix both the link in the MDX file AND the corresponding entry in docs.json.

To run locally: make broken-links-with-anchors. Do not use plain make broken-links: it skips anchors, so it can pass locally on a link CI rejects.

Helper scripts

Refresh Deep Agents eval matrix

The model-by-eval-category table on /oss/python/deepagents/models is generated by scripts/refresh_deepagents_category_matrix.py. The script pulls category_scores from the latest successful Evals - GHA runs in langchain-ai/deepagents and writes the table to src/snippets/deepagents-eval-category-matrix.mdx (imported by src/oss/deepagents/models.mdx). Run it whenever new eval results land and the published table is out of date.

Setup and run:

bash
export GITHUB_TOKEN="$(gh auth token)"  # needs Actions: Read on langchain-ai/deepagents; SSO-authorize for langchain-ai
uv run python scripts/refresh_deepagents_category_matrix.py --write

Notes:

  • For the latest (model, category) value per cell, the script walks runs newest-first and keeps the first hit. Models with fewer than four of the six fixed categories filled are dropped (MIN_FILLED_CATEGORIES).
  • Only models explicitly listed in INCLUDED_MODELS (in the script) appear in the table. To surface a new model, add its provider:model key there.
  • The fixed columns are defined by FIXED_CATEGORY_COLUMNS in the script (unit_test is intentionally excluded).
  • Without --write, the script prints the table to stdout for inspection.
  • After regenerating, commit only src/snippets/deepagents-eval-category-matrix.mdx. Do not edit that snippet by hand.

Refresh the MDA OAuth catalog

The OAuth service table on /langsmith/managed-deep-agents-connections is generated by
scripts/refresh_mda_oauth_catalog.py. The catalog is compiled into the mda binary, so the
script reads it from the installed CLI and writes
src/snippets/langsmith/mda-oauth-catalog.mdx (imported by
src/langsmith/managed-deep-agents-connections.mdx).

bash
uv tool upgrade --pre managed-deepagents   # output reflects the locally installed version
uv run python scripts/refresh_mda_oauth_catalog.py --write

Notes:

  • mda connections catalog --json reads a compiled-in catalog, so no LangSmith API key or
    workspace ID is needed.
  • Without --write, the script prints the table to stdout for inspection.
  • After regenerating, commit only src/snippets/langsmith/mda-oauth-catalog.mdx. Do not edit
    that snippet by hand.

scripts/check_integration_repos.py scans every third-party repo: in packages.yml
against GitHub. When a repo is 404, it looks for a live alternate on PyPI, npm, and
existing docs_url values in scripts/data/integration_external_docs.yaml:

  • Rename: different live third-party GitHub owner/repo found → update
    packages.yml (and listing hrefs that used the old URL). Never auto-retarget
    into langchain-ai/*.
  • Docs URL redirect: an external docs_url that permanently redirects (HTTP
    301 or 308) → update that docs_url and matching listing hrefs (for example
    hashlock.markets/docs → docs.hashlock.markets). Temporary redirects
    (302/307) are left alone.
  • Delist: no live GitHub, GitLab, or partner-docs home → remove the package
    from packages.yml, matching external YAML rows, downloads-table rows, and the
    all_providers card when no other package shares the provider key
    (name_short).
  • Attention only: a live GitLab project or partner docs/homepage remains (for
    example Writer's dev.writer.com when GitHub is gone), or the only alternate
    is first-party → do not change listings; report in the evidence table.
  • Skipped: first-party langchain-ai/* packages.
bash
export GITHUB_TOKEN="$(gh auth token)"
uv run python scripts/check_integration_repos.py
uv run python scripts/check_integration_repos.py --write --evidence /tmp/evidence.md

The weekly workflow .github/workflows/check-integration-repos.yml runs this with
--write and opens or updates a standing draft PR on chore/dead-integration-repos.

Pre-commit linting

Always run make lint_prose (Vale) before handing off or committing doc changes. CI blocks on it. Common offenders: em-dashes with surrounding spaces (— → —, enforced by LangChain.DashesSpaces), terminology, style.

Scope to changed files for speed: make lint_prose FILES="src/path/to/file.mdx" (or pass space-separated paths). Run with no FILES arg to lint all of src/.

The Vale version is pinned once, in .mise.toml. The Makefile, scripts/install-vale.sh, and the lint-prose workflow all read it from there, so local runs use the same engine as CI. Bump it only in .mise.toml. Do not hardcode a version in any of the three call sites.

Also run make broken-links-with-anchors when adding or renaming links, pages, or nav entries.

Changelog / Release notes

When extracting data from PRs or changelogs, use the "Release Note:" section in PR bodies, not PR titles. Always verify the data source format before processing.

Pull requests

  • Explain the "why" of changes
  • Highlight areas needing careful review
  • Disclose AI agent involvement as one plain sentence in the description, for example "Prepared with Claude Code."
  • Do not add a 🤖 Generated with [Claude Code] badge or similar to PR descriptions or commit messages, and do not add a Co-Authored-By trailer for an AI agent to commits. This aligns with the langster-safety skill. The check-pr-ai-attribution workflow fails a PR whose description contains either one, and a ruleset on main blocks the Claude trailer.

OpenWiki

This repository has a generated openwiki/ evidence index. It is optional just-in-time context, not required startup reading.

  • Treat source code and tests as authoritative. A brief's unknowns and review items are verification gaps, not automatic requirements.
  • Prefer the narrowest quiet validation that proves the changed behavior. Preserve complete failure output.

The scheduled OpenWiki GitHub Actions workflow refreshes the repository wiki. Do not hand-edit generated OpenWiki pages unless explicitly asked; prefer updating source code/docs and letting OpenWiki regenerate.


File: htmltest-mint-export.yml

htmltest config for mint export: external URLs only.

See https://github.com/wjdp/htmltest

CheckExternal: true
CheckInternal: false
CheckInternalHash: false

rel="canonical" URLs like https://docs.langchain.com/src/_props/langsmith/...

CheckAnchors: true
CheckLinks: false
CheckImages: true
CheckScripts: true
CheckMeta: true
CheckGeneric: true
CheckMetaRefresh: true

Not external URL checks

CheckDoctype: false
CheckMailto: false
CheckTel: false
CheckFavicon: false
IgnoreAltMissing: true

IgnoreCanonicalBrokenLinks: true

Avoid hammering remote hosts / rate limits

HTTPConcurrencyLimit: 4
DocumentConcurrencyLimit: 8
ExternalTimeout: 30

IgnoreURLs:

  • "mintcdn.com"
  • "mintlify-assets"
  • "https://academy.langchain.com/"
  • "https://fonts.googleapis.com"
  • "https://fonts.gstatic.com"

Local / example destinations in tutorials (not reachable from CI)

  • "localhost"
  • "127\.0\.0\.1"
  • "example\.com"

Bot / WAF / auth-wall noise (OK in a browser; checkers get 403/405/406/202/redirect loops)

  • "npmjs\.com"
  • "npmjs\.org"
  • "cisco\.com"
  • "cityofhope\.org"
  • "morningstar\.com"
  • "replit\.com"
  • "uber\.com"
  • "langchain\.slack\.com"
  • "slack\.com/archives"
  • "microsoft\.com"
  • "claude\.ai"
  • "platform\.deepseek\.com"
  • "console\.mistral\.ai"
  • "auth\.mistral\.ai"
  • "admin\.google\.com"
  • "console\.cloud\.google\.com"
  • "x\.com"
  • "twitter\.com"
  • "developer\.x\.com"
  • "openai\.com"
  • "realpython\.com"
  • "klarna\.com"
  • "reddit\.com"
  • "patreon\.com"
  • "bitbucket\.org/account"
  • "gitlab\.com/-/user_settings"
  • "gitlab\.com"
  • "console\.x\.ai"
  • "dash\.cloudflare\.com"
  • "aws\.smith\.langchain\.com"
  • "guide\.ncloud-docs\.com"
  • "docs\.sidclaw\.com"
  • "scx\.ai"
  • "docs\.openbox\.ai"
  • "docs\.tealtiger\.ai"
  • "gatecoreai\.com"

Package repo liveness is covered by scripts/check_integration_repos.py instead.

  • "github\.com"

Mintlify export bug: canonicals point at /src/_props/... which 404 on the live site

  • "docs\.langchain\.com/src/_props/"
  • "docs\.langchain\.com/langsmith/agent-server-api/"
  • "https://auth.langchain.com"
  • "https://eu.auth.langchain.com"

API host roots often 404 without a path; they are endpoints, not docs pages

  • "api\.host\.langchain\.com"
  • "api\.smith\.langchain\.com"
  • "eu\.api\.smith\.langchain\.com"
  • "docs\.vllm\.ai"
  • "app\.slack\.com"
  • "aws\.amazon\.com/marketplace"
  • "mckinsey\.com"

File: IDE_SETUP.md

IDE Setup for Documentation Writers

This repository includes configuration files to ensure consistent formatting across different editors and IDEs used by documentation writers.

Ensure the following steps are taken and configurations are in place before making substantial docs changes.

Automatic Configuration

VSCode

If you're using Visual Studio Code, the settings in .vscode/settings.json should be automatically applied when you open this project. No additional setup required.

Other IDEs

Most modern IDEs support EditorConfig. The .editorconfig file in the root directory will automatically configure:

  • IntelliJ IDEA / PyCharm / WebStorm
  • Sublime Text
  • Atom
  • Vim
  • Emacs
  • And many others

Formatting Standards

Indentation

  • 1 tab = 4 spaces for all files except:
    • JSON files: 2 spaces
    • YAML files: 2 spaces
    • CSS/HTML files: 2 spaces

Line Length

  • No hard line breaks for markdown files
  • Word wrap is enabled but doesn't insert hard breaks
  • Long lines are visually wrapped but remain as single lines in the file

Line Endings

  • Unix-style line endings (\n) for all files
  • Trailing whitespace is automatically trimmed
  • Final newline is automatically inserted

Markdown-Specific Settings

  • Preserve trailing spaces in markdown (needed for line breaks)
  • No automatic formatting on save
  • Word wrap enabled for readability
  • No ruler/column guides

Manual IDE Setup (if needed)

If your IDE doesn't automatically pick up these settings, configure manually:

General Settings

text
Tab Size: 4 spaces
Insert Spaces: Yes (not tabs)
Word Wrap: On
Auto Format on Save: Off
Trim Trailing Whitespace: Yes
Insert Final Newline: Yes

Markdown Settings

text
Word Wrap: On
Hard Line Breaks: Off
Preserve Trailing Spaces: Yes
Max Line Length: Unlimited

Code Examples

text
Python: 4 spaces
JavaScript/TypeScript: 4 spaces
JSON: 2 spaces
YAML: 2 spaces

For the best writing experience in VSCode, consider installing:

  • EditorConfig for VS Code - Automatically applies .editorconfig settings
  • markdownlint - Markdown editing enhancements
  • Markdown All in One - Markdown editing enhancements
  • MDX - Syntax highlighting for .mdx files
  • Prettier - Code formatter (disabled for markdown in our settings)

Why These Settings?

No Hard Line Breaks

  • Allows flexibility in how content is displayed across different devices
  • Prevents awkward line breaks when content is edited
  • Better for collaborative editing and version control
  • Responsive to different screen sizes

4 Spaces for Indentation

  • Consistent with Python conventions (used in code examples)
  • Good readability for nested content
  • Standard across most programming languages

No Auto-Formatting

  • Prevents unwanted changes to carefully crafted markdown
  • Avoids breaking custom formatting like tables or code blocks
  • Gives writers full control over content structure

Troubleshooting

VSCode Not Applying Settings

  1. Restart VSCode after opening the project
  2. Check that you're in the docs folder (not a parent directory)
  3. Verify .vscode/settings.json exists in the project root

Other IDEs Not Applying Settings

  1. Ensure your IDE supports EditorConfig
  2. Install the EditorConfig plugin if needed
  3. Check that .editorconfig is in the project root
  4. Restart your IDE

Settings Not Working

If automatic configuration isn't working, manually configure your IDE using the settings listed above.


File: package.json

{
"name": "docs",
"version": "1.0.0",
"description": "Docs for the project",
"private": true,
"dependencies": {
"@langchain/docs-sandbox": "^0.0.24"
}
}


File: packages.yml

Source of truth for all LangChain packages and repos.

Organized by langchain (python) repo structure.

Used to generate the package index, partner package table, and more.

Fields:

- name:

- Used in the IGNORE_PKG list to exclude from partner package table

- Used to generate a short name ('name_short'), which is used if

name_title is not provided.

- Used for linking to provider page

- name_title: Optional display name (otherwise generated from 'name')

- integration: Optional, if false, not shown in integrations list.

- highlight: Optional boolean, if true, package bypasses download filters

and appears first in the partner package table (sorted by downloads

within highlighted group). Use to feature strategic/new integrations.

Should only be set by LangChain maintainers.

- repo: GitHub repo containing the pkg in the form "owner/repo".

- path: Path to the package within the specified repo. If not present,

the package is assumed to be at the repo's root.

- provider_page: Optional, used if the page is not at its default

location (e.g., /oss/integrations/providers/{p['name_short']}/).

- `'name_short'` is derived from the `name` field by removing the

`langchain-` prefix or `-langchain_` suffix.

- js: Optional, the name of the corresponding JS package. Should be the

trailing portion of a NPM url, e.g., `@langchain/tavily` for the

full `https://www.npmjs.com/package/@langchain/tavily` URL.

Set to "n/a" if the integration is Python-specific and JS support

is not applicable (will display as "N/A" in partner package table).

- downloads: Automatically calculated via scripts/packages_yml_get_downloads.py

- Fetches monthly download counts from pepy.tech

- To run manually: uv run scripts/packages_yml_get_downloads.py

- Runs automatically weekly on Sundays at 11:59 PM UTC via GitHub Actions

workflow: .github/workflows/update-package-downloads.yml

- has_reference_docs: Optional boolean. Set to true for third-party packages

(type != monorepo/langchain-org) that have reference docs hosted on

reference.langchain.com. Without this, the package URL falls back to PyPI.

- downloads_updated_at: Automatically calculated (ISO 8601 timestamp)

weekly (workflow: .github/workflows/check-integration-repos.yml). It auto-fixes

third-party GitHub renames confirmed by PyPI/npm/docs_url and drafts a PR to

fully delist packages with no live GitHub, GitLab, or partner-docs home.

First-party langchain-ai/* repos are skipped.

packages:

monorepo (alphabetical by path)

  • name: langchain-aidress
    repo: Aidress-ai/Aidress
    downloads: 440
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-core
    integration: false
    repo: langchain-ai/langchain
    path: libs/core
    downloads: 139000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-classic
    integration: false
    repo: langchain-ai/langchain
    path: libs/langchain
    downloads: 16000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain
    integration: false
    repo: langchain-ai/langchain
    path: libs/langchain_v1
    downloads: 151000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-hashlock
    repo: Hashlock-Tech/langchain-hashlock
    downloads: 266
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-1claw
    repo: 1clawAI/langchain-1claw
    js: n/a
    downloads: 415
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-model-profiles
    integration: false
    repo: langchain-ai/langchain
    path: libs/model-profiles
    downloads: 32000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-replay
    repo: sixty-north/langchain-replay
    js: "n/a"
    downloads: 361
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-tests
    integration: false
    repo: langchain-ai/langchain
    path: libs/standard-tests
    downloads: 1000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-text-splitters
    integration: false
    repo: langchain-ai/langchain
    path: libs/text-splitters
    downloads: 37000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

    monorepo partners (alphabetical by path)

  • name: langchain-anthropic
    name_title: Anthropic (Claude)
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/anthropic
    js: "@langchain/anthropic"
    downloads: 21000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-chroma
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/chroma
    js: "@langchain/community"
    downloads: 820000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-deepseek
    name_title: DeepSeek
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/deepseek
    js: "@langchain/deepseek"
    downloads: 759000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-engram
    repo: engram-ai/langchain-engram
    downloads: 238
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-exa
    repo: langchain-ai/langchain
    path: libs/partners/exa
    provider_page: exa_search
    js: "@langchain/exa"
    downloads: 133000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-fireworks
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/fireworks
    js: "@langchain/community"
    downloads: 592000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-groq
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/groq
    js: "@langchain/groq"
    downloads: 1000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-huggingface
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/huggingface
    js: "@langchain/community"
    downloads: 976000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-mistralai
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/mistralai
    js: "@langchain/mistralai"
    downloads: 1000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nomic
    repo: langchain-ai/langchain
    path: libs/partners/nomic
    js: "@langchain/nomic"
    downloads: 6000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-ollama
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/ollama
    js: "@langchain/ollama"
    downloads: 2000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-openrouter
    name_title: OpenRouter
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/openrouter
    downloads: 774000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openai
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/openai
    js: "@langchain/openai"
    downloads: 41000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-perplexity
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/perplexity
    js: "@langchain/community"
    downloads: 291000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-prompty
    repo: langchain-ai/langchain
    path: libs/partners/prompty
    provider_page: microsoft
    downloads: 5000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-qdrant
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/qdrant
    js: "@langchain/qdrant"
    downloads: 669000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-xai
    name_title: xAI (Grok)
    highlight: true
    repo: langchain-ai/langchain
    path: libs/partners/xai
    js: "@langchain/xai"
    downloads: 764000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

    internal langchain-ai org repos (alphabetical by path)

  • name: langchain-community
    integration: false
    repo: langchain-ai/langchain-community
    path: libs/community
    downloads: 27000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-experimental
    integration: false
    repo: langchain-ai/langchain-experimental
    path: libs/experimental
    downloads: 2000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-mcp-adapters
    integration: false
    repo: langchain-ai/langchain-mcp-adapters
    downloads: 7000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

    external langchain-ai org repos (alphabetical by path)

  • name: langchain-ai21
    repo: langchain-ai/langchain-ai21
    path: libs/ai21
    downloads: 892
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-alephantai
    name_title: Alephant AI
    repo: AlephantAI/alephant-python-sdk
    path: packages/langchain-alephantai
    js: "n/a"
    downloads: 291
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-alphai
    name_title: AlphaAI
    repo: makeev/langchain-alphai
    js: "n/a"
    downloads: 382
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-aws
    name_title: AWS
    highlight: true
    repo: langchain-ai/langchain-aws
    path: libs/aws
    js: "@langchain/aws"
    downloads: 9000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-azure-ai
    highlight: true
    repo: langchain-ai/langchain-azure
    path: libs/azure-ai
    provider_page: azure_ai
    js: "@langchain/openai"
    downloads: 555000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-azure-dynamic-sessions
    repo: langchain-ai/langchain-azure
    path: libs/azure-dynamic-sessions
    provider_page: microsoft
    js: "@langchain/azure-dynamic-sessions"
    downloads: 49000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-sqlserver
    repo: langchain-ai/langchain-azure
    path: libs/sqlserver
    provider_page: microsoft
    downloads: 801
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cerebras
    repo: langchain-ai/langchain-cerebras
    path: libs/cerebras
    js: "@langchain/cerebras"
    downloads: 140000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cohere
    highlight: true
    repo: langchain-ai/langchain-cohere
    path: libs/cohere
    js: "@langchain/cohere"
    downloads: 592000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-astradb
    name_title: DataStax Astra DB
    highlight: true
    repo: langchain-ai/langchain-datastax
    path: libs/astradb
    js: "@langchain/community"
    downloads: 167000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-elasticsearch
    highlight: true
    repo: langchain-ai/langchain-elastic
    path: libs/elasticsearch
    js: "@langchain/community"
    downloads: 138000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-google-community
    name_title: Google (Community)
    repo: langchain-ai/langchain-google
    path: libs/community
    provider_page: google
    downloads: 11000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-google-genai
    name_title: Google (GenAI)
    highlight: true
    repo: langchain-ai/langchain-google
    path: libs/genai
    provider_page: google
    js: "@langchain/google-genai"
    downloads: 16000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-google-vertexai
    name_title: Google (Gemini Enterprise Agent Platform)
    highlight: true
    repo: langchain-ai/langchain-google
    path: libs/vertexai
    provider_page: google
    js: "@langchain/google-vertexai"
    downloads: 29000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-ibm
    name_title: IBM
    highlight: true
    repo: langchain-ai/langchain-ibm
    path: libs/ibm
    js: "@langchain/ibm"
    downloads: 337000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-db2
    repo: langchain-ai/langchain-ibm
    path: libs/langchain-db2
    provider_page: ibm
    downloads: 2000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-milvus
    highlight: true
    repo: langchain-ai/langchain-milvus
    path: libs/milvus
    js: "@langchain/community"
    downloads: 254000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-mongodb
    highlight: true
    repo: langchain-ai/langchain-mongodb
    path: libs/langchain-mongodb
    provider_page: mongodb_atlas
    js: "@langchain/mongodb"
    downloads: 830000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-neo4j
    repo: langchain-ai/langchain-neo4j
    path: libs/neo4j
    js: "@langchain/community"
    downloads: 149000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nvidia-ai-endpoints
    highlight: true
    repo: langchain-ai/langchain-nvidia
    path: libs/ai-endpoints
    provider_page: nvidia
    downloads: 573000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-parallel
    repo: parallel-web/langchain-parallel
    provider_page: parallel
    downloads: 57000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-pinecone
    highlight: true
    repo: langchain-ai/langchain-pinecone
    path: libs/pinecone
    js: "@langchain/pinecone"
    downloads: 442000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-redis
    highlight: true
    repo: langchain-ai/langchain-redis
    path: libs/redis
    js: "@langchain/redis"
    downloads: 121000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-sema4
    repo: langchain-ai/langchain-sema4
    path: libs/sema4
    provider_page: robocorp
    downloads: 266
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-snowflake
    repo: langchain-ai/langchain-snowflake
    path: libs/snowflake
    downloads: 9000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-together
    highlight: true
    repo: langchain-ai/langchain-together
    path: libs/together
    js: "@langchain/community"
    downloads: 77000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-unstructured
    repo: langchain-ai/langchain-unstructured
    path: libs/unstructured
    js: "@langchain/community"
    downloads: 188000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-upstage
    repo: langchain-ai/langchain-upstage
    path: libs/upstage
    downloads: 29000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-weaviate
    repo: langchain-ai/langchain-weaviate
    path: libs/weaviate
    js: "@langchain/weaviate"
    downloads: 224000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

    external repos (not organized)

  • name: langchain-adeu
    repo: dealfluence/adeu
    path: langchain
    js: "n/a"
    downloads: 3000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-aimlapi
    repo: D1m7asis/langchain-aimlapi
    path: libs/aimlapi
    downloads: 519
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: dompruner
    name_title: DomPruner
    repo: dong7812/dompruner-py
    js: "n/a"
    downloads: 501
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: databricks-langchain
    name_title: Databricks
    highlight: true
    repo: databricks/databricks-ai-bridge
    path: integrations/langchain
    js: "@langchain/community"
    downloads: 522000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: respan-instrumentation-langchain
    name_title: Respan
    repo: respanai/respan
    path: python-sdks/instrumentations/respan-instrumentation-langchain
    js: "@respan/instrumentation-langchain"
    downloads: 358
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-duel
    repo: 2aronS/Duel-Agents
    path: python/langchain-duel
    downloads: 231
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-couchbase
    repo: Couchbase-Ecosystem/langchain-couchbase
    downloads: 981
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-box
    repo: box-community/langchain-box
    path: libs/box
    downloads: 455
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-linkup
    repo: LinkupPlatform/langchain-linkup
    downloads: 3000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-oceanbase
    repo: oceanbase/langchain-oceanbase
    downloads: 3000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-predictionguard
    repo: predictionguard/langchain-predictionguard
    downloads: 569
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cratedb
    repo: crate/langchain-cratedb
    downloads: 423
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-modelscope
    repo: modelscope/langchain-modelscope
    downloads: 396
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-falkordb
    repo: kingtroga/langchain-falkordb
    downloads: 786
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-flipcoin
    name_title: FlipCoin
    repo: flipcoin-fun/flipcoin-langchain
    js: "n/a"
    downloads: 246
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-dappier
    repo: DappierAI/langchain-dappier
    downloads: 422
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-kuzu
    repo: kuzudb/langchain-kuzu
    downloads: 640
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-docling
    repo: DS4SD/docling-langchain
    downloads: 68000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-lindorm-integration
    name_title: Lindorm
    repo: AlwaysBluer/langchain-lindorm-integration
    provider_page: lindorm
    downloads: 247
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-hyperbrowser
    repo: hyperbrowserai/langchain-hyperbrowser
    downloads: 841
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-fmp-data
    repo: MehdiZare/langchain-fmp-data
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: tilores-langchain
    name_title: Tilores
    repo: tilotech/tilores-langchain
    downloads: 259
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-pipeshift
    repo: pipeshift-org/langchain-pipeshift
    downloads: 291
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-sambanova
    repo: sambanova/langchain-sambanova
    downloads: 26000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-jenkins
    repo: Amitgb14/langchain_jenkins
    downloads: 330
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nimble
    repo: Nimbleway/langchain-nimble
    provider_page: nimble
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-keenable
    repo: keenableai/langchain-keenable
    js: "n/a"
    downloads: 370
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-apify
    repo: apify/langchain-apify
    downloads: 31000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langfair
    name_title: LangFair
    repo: cvs-health/langfair
    downloads: 2000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-abso
    repo: lunary-ai/langchain-abso
    downloads: 389
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-graph-retriever
    name_title: Graph RAG
    repo: datastax/graph-rag
    path: packages/langchain-graph-retriever
    provider_page: graph_rag
    downloads: 145000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-salesforce
    repo: colesmcintosh/langchain-salesforce
    downloads: 895
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-discord-shikenso
    name_title: Discord (Shikenso)
    repo: Shikenso-Analytics/langchain-discord
    downloads: 262
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-vdms
    name_title: VDMS
    repo: IntelLabs/langchain-vdms
    downloads: 831
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-deeplake
    repo: activeloopai/langchain-deeplake
    downloads: 271
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cognee
    repo: topoteretes/langchain-cognee
    downloads: 289
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-goodmem
    name_title: GoodMem
    repo: PAIR-Systems-Inc/goodmem-langchain
    js: "n/a"
    downloads: 660
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-prolog
    repo: apisani1/langchain-prolog
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-permit
    repo: permitio/langchain-permit
    downloads: 339
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-pymupdf4llm
    repo: lakinduboteju/langchain-pymupdf4llm
    downloads: 41000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-writer
    repo: writer/langchain-writer
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-taiga
    name_title: Taiga
    repo: Shikenso-Analytics/langchain-taiga
    downloads: 3000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-tableau
    name_title: Tableau
    repo: Tab-SE/tableau_langchain
    downloads: 399
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: ads4gpts-langchain
    name_title: ADS4GPTs
    repo: ADS4GPTs/ads4gpts
    path: libs/python-sdk/ads4gpts-langchain
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: hlido-trust
    name_title: Hlido
    repo: ankitkapur1992-hlido/hlido-public
    path: integrations/hlido-trust
    downloads: 146
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-contextual
    name_title: Contextual AI
    repo: ContextualAI/langchain-contextual
    path: langchain-contextual
    downloads: 480
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-valthera
    name_title: Valthera
    repo: valthera/langchain-valthera
    downloads: 372
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-opengradient
    repo: OpenGradient/og-langchain
    downloads: 307
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: goat-sdk-adapter-langchain
    name_title: GOAT SDK
    repo: goat-sdk/goat
    path: python/src/adapters/langchain
    provider_page: goat
    downloads: 394
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-netmind
    repo: protagolabs/langchain-netmind
    downloads: 234
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-agentql
    repo: tinyfish-io/agentql-integrations
    path: langchain
    downloads: 337
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-tavily
    highlight: true
    repo: tavily-ai/langchain-tavily
    js: "@langchain/tavily"
    has_reference_docs: true
    downloads: 741000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-youdotcom
    name_title: "You.com"
    repo: youdotcom-oss/langchain-youdotcom
    js: "@youdotcom-oss/langchain"
    downloads: 897
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-zotero-retriever
    name_title: Zotero
    repo: TimBMK/langchain-zotero-retriever
    provider_page: zotero
    downloads: 259
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-naver
    name_title: Naver
    repo: NaverCloudPlatform/langchain-naver
    downloads: 15000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-naver-community
    name_title: Naver (Community)
    repo: e7217/langchain-naver-community
    provider_page: naver
    downloads: 353
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nia
    name_title: Nia
    repo: nozomio-labs/nia-langchain
    path: libs/langchain-nia
    js: "@nozomioai/langchain-nia"
    has_reference_docs: false
    downloads: 258
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-memgraph
    repo: memgraph/langchain-memgraph
    downloads: 8000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-memstate
    name_title: Memstate AI
    repo: memstate-ai/langchain-memstate
    js: "n/a"
    has_reference_docs: false
    downloads: 394
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-vectara
    repo: vectara/langchain-vectara
    path: libs/vectara
    downloads: 339
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-oxylabs
    repo: oxylabs/langchain-oxylabs
    downloads: 477
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-runpod
    name_title: Runpod
    repo: runpod/langchain-runpod
    downloads: 331
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-mariadb
    repo: mariadb-corporation/langchain-mariadb
    downloads: 734
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-qwq
    repo: yigit353/langchain-qwq
    provider_page: alibaba_cloud
    downloads: 41000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-litellm
    name_title: LiteLLM
    highlight: true
    repo: langchain-ai/langchain-litellm
    js: "n/a"
    downloads: 1000000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cloudflare
    repo: cloudflare/langchain-cloudflare
    path: libs/langchain-cloudflare
    js: "@langchain/cloudflare"
    downloads: 21000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-ydb
    repo: ydb-platform/langchain-ydb
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-singlestore
    name_title: SingleStore
    repo: singlestore-labs/langchain-singlestore
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-shannonbase
    name_title: ShannonBase
    repo: apoorva-01/langchain-shannonbase
    js: "n/a"
    downloads: 548
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-galaxia-retriever
    repo: rrozanski-smabbler/galaxia-langchain
    provider_page: galaxia
    downloads: 324
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-valyu
    repo: valyuAI/langchain-valyu
    downloads: 542
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-hana
    name_title: SAP HANA Cloud
    highlight: true
    repo: SAP/langchain-integration-for-sap-hana-cloud
    provider_page: sap
    js: "@sap/hana-langchain"
    downloads: 25000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-gel
    repo: geldata/langchain-gel
    downloads: 349
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-brightdata
    repo: luminati-io/langchain-brightdata
    downloads: 2000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-proxyhat
    repo: ProxyHatCom/langchain-proxyhat
    js: "n/a"
    downloads: 315
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-proxmint
    name_title: ProxmintLoader
    repo: proxmint/langchain-proxmint
    js: "n/a"
    downloads: 468
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-featherless-ai
    repo: featherlessai/langchain-featherless-ai
    downloads: 347
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nebius
    repo: nebius/langchain-nebius
    path: libs/nebius
    downloads: 5000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-surrealdb
    repo: surrealdb/langchain-surrealdb
    downloads: 627
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-greennode
    repo: greennode-ai/langchain-greennode
    path: libs/greennode
    downloads: 253
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-tensorlake
    repo: tensorlakeai/langchain-tensorlake
    downloads: 477
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-gradient
    name_title: DigitalOcean Gradient AI Platform
    repo: digitalocean/langchain-gradient
    provider_page: gradientai
    downloads: 2000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-anchorbrowser
    name_title: Anchor Browser
    repo: anchorbrowser/langchain-anchorbrowser
    provider_page: anchor_browser
    downloads: 467
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: toolbox-langchain
    name_title: MCP Toolbox (Google)
    highlight: true
    repo: googleapis/mcp-toolbox-sdk-python
    path: packages/toolbox-langchain
    downloads: 4000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-scrapeless
    repo: scrapeless-ai/langchain-scrapeless
    downloads: 243
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-google-bigtable
    name_title: Bigtable (Google)
    repo: googleapis/langchain-google-bigtable-python
    provider_page: google
    downloads: 555
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-oci
    name_title: Oracle Cloud Infrastructure (OCI)
    repo: oracle/langchain-oracle
    downloads: 64000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-zeusdb
    repo: zeusdb/langchain-zeusdb
    path: libs/zeusdb
    downloads: 359
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-scraperapi
    repo: scraperapi/langchain-scraperapi
    downloads: 362
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-localai
    repo: mkhludnev/langchain-localai
    path: libs/localai
    downloads: 624
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-scrapegraph
    repo: ScrapeGraphAI/langchain-scrapegraph
    downloads: 3000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-voyageai
    repo: voyage-ai/langchain-voyageai
    path: libs/voyageai
    downloads: 127000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-oracledb
    name_title: Oracle AI Vector Search
    repo: oracle/langchain-oracle
    provider_page: oracleai
    js: "@oracle/langchain-oracledb"
    downloads: 195000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-cosmergon
    name_title: Cosmergon
    repo: rkocosmergon/langchain-cosmergon
    js: "n/a"
    downloads: 672
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-agenticemail
    name_title: AgenticEmail
    repo: AgenticEmail/langchain-agenticemail
    js: "n/a"
    downloads: 280
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-agentmail
    repo: agentmail-to/langchain-agentmail
    js: "n/a"
    downloads: 287
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-opedd
    name_title: Opedd
    repo: Opedd/langchain-opedd
    js: "n/a"
    downloads: 459
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-verifly
    name_title: Verifly
    repo: james-sib/langchain-verifly
    js: "n/a"
    downloads: 254
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-sibfly
    name_title: SibFly
    repo: james-sib/langchain-sibfly
    js: "n/a"
    downloads: 252
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-infino
    name_title: Infino
    repo: infino-ai/langchain-infino
    js: "@infino-ai/langchain-infino"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ceki
    name_title: Ceki
    repo: Ceki-me/langchain
    path: packages/python
    js: "@ceki/langchain-ceki"
    downloads: 246
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-skim
    name_title: Skim
    repo: JessieJanie/langchain-skim
    js: "n/a"
    downloads: 504
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: m3-memory
    name_title: m3-memory
    repo: skynetcmd/m3-memory
    path: .
    js: "n/a"
    downloads: 15000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ai-identity
    name_title: AI Identity
    repo: Levaj2000/AI-Identity
    path: sdk/langchain
    js: "n/a"
    downloads: 263
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-sidclaw
    name_title: SidClaw
    repo: sidclawhq/platform
    path: integrations/langchain-python
    js: "n/a"
    downloads: 291
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-goodsender
    name_title: GoodSender
    repo: good-sender/langchain-goodsender
    js: "n/a"
    downloads: 244
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-oxidize-pdf
    name_title: oxidize-pdf
    repo: bzsanti/oxidize-pdf-integrations
    path: langchain
    js: "n/a"
    downloads: 265
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: optionsahoy-langchain
    name_title: OptionsAhoy
    repo: AlvisoOculus/optionsahoy-mcp
    path: integrations/python/optionsahoy-langchain
    js: "n/a"
    downloads: 533
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-empiriolabs
    name_title: EmpirioLabs AI
    repo: EmpirioLabs-ai/langchain-empiriolabs
    js: "@empiriolabs/langchain"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-arxiv-retriever
    name_title: arXiv
    repo: j1c/langchain-arxiv-retriever
    js: "n/a"
    downloads: 271
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-dexpaprika
    repo: coinpaprika/langchain-dexpaprika
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-zerogpu
    name_title: ZeroGPU
    repo: zerogpu/langchain-zerogpu
    js: "n/a"
    downloads: 648
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-replylayer
    repo: replylayer/rly
    path: langchain-python
    js: "n/a"
    downloads: 694
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-thalam
    name_title: thalam.
    repo: thalam-ai/langchain-thalam
    js: "n/a"
    downloads: 237
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-pdf-inspector
    name_title: pdf-inspector
    repo: undacmic/langchain-pdf-inspector
    js: "n/a"
    downloads: 627
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-strale
    name_title: Strale
    repo: strale-io/strale
    path: packages/langchain-strale
    downloads: 389
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-serpex-python
    name_title: Serpex
    repo: divyeshradadiya/langchain-serpex-python
    js: langchain-serpex-js
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-livetennis
    name_title: "Live Tennis API"
    repo: livetennisapi/langchain-livetennis
    js: "n/a"
    downloads: 319
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-diffbot
    name_title: Diffbot
    repo: diffbot/langchain-diffbot
    js: "n/a"
    downloads: 526
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-longprobe
    name_title: LongProbe
    repo: ENDEVSOLS/langchain-longprobe
    js: "n/a"
    downloads: 306
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-aneforge
    name_title: ANEForge
    repo: sbryngelson/langchain-aneforge
    js: "n/a"
    downloads: 256
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: bastion-prompt-protection
    name_title: Bastion Prompt Protection
    repo: bastion-soft/bastion-prompt-protection
    js: "n/a"
    downloads: 488
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-ilovevideoeditor
    name_title: iLoveVideoEditor
    repo: ilovevideoeditor/langchain-ilovevideoeditor
    js: "n/a"
    downloads: 250
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-hwp-hwpx-loader
    name_title: HWP/HWPX
    repo: jaypakdevkr/HWP-Loader
    js: "n/a"
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-soul
    name_title: Soul
    repo: menonpg/langchain-soul
    js: "n/a"
    downloads: 315
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-igpt
    name_title: iGPT
    repo: igptai/langchain-igpt
    js: "n/a"
    downloads: 276
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-hippodid
    name_title: HippoDid
    repo: SameThoughts/langchain-hippodid
    js: "n/a"
    downloads: 262
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: vequil
    name_title: Vequil
    repo: nxd914/vequil
    js: "n/a"
    downloads: 71
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: sulci
    name_title: Sulci Cache
    repo: sulci-io/sulci-oss
    js: "n/a"
    downloads: 6000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-firebolt
    name_title: Firebolt
    repo: firebolt-db/langchain-firebolt
    js: "n/a"
    downloads: 298
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-crawleo
    name_title: Crawleo
    repo: Crawleo/langchain-crawleo
    js: "n/a"
    downloads: 272
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-lambdadb
    name_title: LambdaDB
    repo: lambdadb/langchain-lambdadb
    js: "@functional-systems/langchain-lambdadb"
    downloads: 359
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: prompt-quality-score
    name_title: PQS
    repo: OnChainAIIntel/pqs-sdk
    js: "n/a"
    downloads: 198
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openmemory
    name_title: OpenMemory
    repo: nullure/langchain-openmemory
    js: "n/a"
    downloads: 3
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: interfaze-langchain
    name_title: Interfaze
    repo: InterfazeAI/langchain-interfaze
    js: "@interfaze-ai/langchain"
    downloads: 254
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-novita
    name_title: Novita
    repo: novitalabs/langchain-novita
    js: "n/a"
    downloads: 324
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: createos-sandbox
    name_title: CreateOS Sandbox
    repo: NodeOps-app/createos-sandbox-sdk
    js: "@nodeops-createos/sandbox"
    downloads: 463
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-kubernetes
    name_title: Kubernetes
    repo: bitkaio/kubernetes-sandbox
    js: "@bitkaio/langchain-kubernetes"
    downloads: 442
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-nono
    name_title: nono
    repo: always-further/langchain-nono
    js: "n/a"
    downloads: 394
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: pramagent
    name_title: Pramagent
    repo: sriram7737/pramagent
    js: "n/a"
    downloads: 1000
    downloads_updated_at: "2026-10-29T10:30:45.069091+00:00"

  • name: langchain-lexmex
    name_title: LexMex
    repo: Volpsmx/langchain-lexmex
    js: "n/a"
    downloads: 340
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langgraph-agentram
    name_title: AgentRAM
    repo: seanmarkwei/langgraph-agentram
    js: "n/a"
    downloads: 194
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-polardb-pg
    name_title: PolarDB PG
    repo: polardb/langchain-polardb-pg
    js: "n/a"
    downloads: 339
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-opensolr
    name_title: Opensolr
    repo: phpcip/langchain-opensolr
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-coalent
    name_title: Coalent
    repo: Vectorlink-Labs/coalent
    path: integrations/langchain-coalent
    js: "n/a"
    downloads: 333
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-youtube
    name_title: YouTube
    repo: urraf/langchain-youtube
    js: "n/a"
    downloads: 408
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-reserp
    name_title: Reserp
    repo: reserp-ai/langchain-reserp
    downloads: 435
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-xns
    name_title: XNS
    repo: xns-cloud/langchain-xns
    js: "n/a"
    downloads: 255
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-opendma
    name_title: OpenDMA
    repo: OpenDMA/langchain-opendma
    js: "n/a"
    downloads: 397
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-wavespeed
    name_title: WaveSpeed
    repo: WaveSpeedAI/langchain-wavespeed
    js: "n/a"
    downloads: 789
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: recall-rag
    name_title: RE-call
    repo: GiulioDER/RE-call
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tendem
    name_title: Tendem
    repo: Toloka/tendem-mcp
    path: integrations/langchain-tendem
    js: "n/a"
    downloads: 289
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-erc8004
    name_title: ERC-8004
    repo: Conrad-sudo/langchain-erc8004
    js: "n/a"
    downloads: 329
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: seekrit
    name_title: seekrit
    repo: seekritdev/python-sdk
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-simplepages
    name_title: Simplepages
    repo: simplepages-ai/langchain-simplepages
    js: "n/a"
    downloads: 259
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-neuraltrust
    name_title: NeuralTrust
    repo: NeuralTrust/langchain-neuraltrust
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-webmetadata-extractor
    name_title: Web Metadata Extractor
    repo: JosejuX/rapidapi-metadata-extractor
    path: langchain-webmetadata-extractor
    js: "n/a"
    downloads: 254
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-hydrafetch
    name_title: Hydrafetch
    repo: Hydrafetch/langchain-hydrafetch
    js: "n/a"
    downloads: 645
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-quanticdata
    name_title: QuanticData
    repo: quantumproxies/langchain-quanticdata
    js: "n/a"
    downloads: 269
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: asqav
    name_title: Asqav
    repo: jagmarques/asqav-sdk
    js: "n/a"
    downloads: 6000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-sandbox-opensandbox
    name_title: OpenSandbox
    repo: AyushSonuu/langchain-sandbox-opensandbox
    js: "n/a"
    downloads: 7000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-agenttrafficlab
    name_title: Agent Traffic Lab
    repo: wenhua6666668-oss/langchain-agenttrafficlab
    js: "n/a"
    downloads: 480
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tokportal
    name_title: TokPortal
    repo: tokportal/langchain-tokportal
    js: "n/a"
    downloads: 397
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-yantrikdb
    name_title: YantrikDB
    repo: yantrikos/langchain-yantrikdb
    js: "n/a"
    downloads: 245
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-blopus
    name_title: Blopus
    repo: blopus-ai/langchain-blopus
    js: "n/a"
    downloads: 500
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-stackoverflow
    name_title: Stack Overflow
    repo: urraf/langchain-stackoverflow
    js: "n/a"
    downloads: 283
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-hackernews
    name_title: Hacker News
    repo: urraf/langchain-hackernews
    js: "n/a"
    downloads: 259
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-reddit
    name_title: Reddit
    repo: urraf/langchain-reddit
    js: "n/a"
    downloads: 264
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-playstore
    name_title: Play Store
    repo: urraf/langchain-playstore
    js: "n/a"
    downloads: 265
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: ctrlrun-langchain
    name_title: CTRLRun
    repo: CTRLRun/ctrlrun
    path: adapters/langchain
    js: "n/a"
    downloads: 316
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: attenu-guard
    name_title: Attenu Guard
    repo: attenu-io/attenu-guard
    js: "n/a"
    downloads: 4000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-rostam
    name_title: Rostam
    repo: rostamlabs/rostam
    path: clients/langchain-rostam
    js: "n/a"
    downloads: 265
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-lyrenth
    name_title: Lyrenth
    repo: lyrenth/langchain-lyrenth
    js: "n/a"
    downloads: 303
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: xaidr
    name_title: xaidr
    repo: delphisecurity/xaidr
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: safeprompt-langchain
    name_title: SafePrompt
    repo: ianreboot/safeprompt
    js: "@safeprompt.dev/langchain"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-webz
    name_title: Webz
    repo: Webhose/webz-news-search
    js: "n/a"
    downloads: 315
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-truthbear
    name_title: Truth Bear
    repo: CHANGCHINFU/langchain-truthbear
    js: "n/a"
    downloads: 307
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: isnad
    name_title: ISNAD
    repo: alizahidraja/isnad
    js: "n/a"
    downloads: 10000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: capsule-emit
    name_title: Agent Action Capsule
    repo: action-state-group/capsule-emit
    js: "n/a"
    downloads: 7000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: gandr-langchain
    name_title: Gandr
    repo: Gandr-AI/gandr-langchain
    js: "n/a"
    downloads: 370
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-footballcharts
    name_title: Football Charts
    repo: ddevetak/langchain-footballcharts
    js: "n/a"
    downloads: 281
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: omem-infrastructure
    name_title: OMEM
    repo: troybrandonc-bit/Omem
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: piighost
    name_title: PIIGhost
    repo: Athroniaeth/piighost
    js: "n/a"
    downloads: 4000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ictfax
    name_title: ICTFax
    repo: ictinnovations/langchain-ictfax
    js: "n/a"
    downloads: 360
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tokonomics
    name_title: Tokonomics
    repo: aitoukhrib/langchain-tokonomics
    js: "n/a"
    downloads: 255
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ictexam
    name_title: ICTExam
    repo: ictinnovations/langchain-ictexam
    js: "n/a"
    downloads: 258
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openzoo
    name_title: OpenZoo
    repo: staccDOTsol/langchain-openzoo
    js: "n/a"
    downloads: 302
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ictcontact
    name_title: ICTContact
    repo: ictinnovations/langchain-ictcontact
    js: "n/a"
    downloads: 253
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-magic-hour
    name_title: Magic Hour
    repo: RhythmP28/langchain-magic-hour
    js: "langchain-magic-hour"
    downloads: 261
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ictpbx
    name_title: ICTPBX
    repo: ictinnovations/langchain-ictpbx
    js: "n/a"
    downloads: 279
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-context
    name_title: Context.dev
    repo: context-dot-dev/langchain-context
    js: "n/a"
    downloads: 274
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-atomicmail
    name_title: Atomic Mail
    repo: Atomic-Mail/atomic-mail-agentic
    js: "@atomicmail/langchain"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-latam-synth
    name_title: LatAm Synth
    repo: jmendozapuche/langchain-latam-synth
    js: "n/a"
    downloads: 393
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: signa-langchain
    name_title: SIGNA
    repo: codexvritra/signa
    path: sdk/langchain
    js: signa-langchain
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-brainiall
    name_title: Brainiall
    repo: fasuizu-br/langchain-brainiall
    js: "n/a"
    downloads: 362
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: aacp-langchain
    name_title: AACP
    repo: MackayAndrew/aacp-langchain
    js: "n/a"
    downloads: 328
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-ausca
    name_title: Ausca
    repo: auscahq/ausca
    path: python/langchain-ausca
    js: "langchain-ausca"
    downloads: 292
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-dnsdoctor
    name_title: DNS Doctor
    repo: dnsdoctor/langchain-dnsdoctor
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: maskflow-langchain
    name_title: MaskFlow
    repo: maskflow/maskflow
    path: packages/maskflow-langchain
    js: "n/a"
    downloads: 352
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-anyapi
    name_title: AnyAPI
    repo: getanyapi-com/integrations
    path: langchain-anyapi
    js: "n/a"
    downloads: 359
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-hubris
    name_title: Hubris
    repo: Aimagine-life/langchain-hubris
    js: "n/a"
    downloads: 355
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: traccia
    name_title: Traccia
    repo: traccia-ai/traccia-py
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-serenedb
    name_title: SereneDB
    repo: serenedb/langchain-serenedb
    js: "n/a"
    downloads: 297
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-typesense
    name_title: TypesenseVectorStore
    repo: typesense/langchain-typesense
    js: "n/a"
    downloads: 369
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: chronovec
    name_title: ChronoVec
    repo: mchl-labs/chronovec
    js: "n/a"
    downloads: 445
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-plivo-tools
    name_title: Plivo
    repo: plivo-dev/langchain-plivo-tools
    js: "n/a"
    downloads: 345
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-foxnose-js
    name_title: FoxNose
    repo: FoxNoseTech/langchain-foxnose-js
    js: "@foxnose/langchain"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: capslane
    name_title: Capslane
    repo: Webba-Creative-Technologies/capslane-python
    js: "n/a"
    downloads: 311
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-foxnose
    name_title: FoxNose
    repo: FoxNoseTech/langchain-foxnose
    js: "n/a"
    downloads: 474
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: antibrow
    name_title: AntiBrow
    repo: antibrow/antibrow
    path: python
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: corsair-dev-langchain
    name_title: Corsair
    repo: corsairdev/corsair
    js: "@corsair-dev/langchain"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-vectorpanda
    name_title: Vector Panda
    repo: vectorpanda/langchain-vectorpanda
    js: "n/a"
    downloads: 349
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: aiworker-langchain-tools
    name_title: aiworker
    repo: ai-worker227/aiworker-examples
    js: aiworker-langchain-tools
    path: langchain
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-greencalculus
    name_title: GreenCalculus
    repo: greencalculus/langchain-greencalculus
    js: "n/a"
    downloads: 367
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: pushary-langgraph
    name_title: Pushary
    repo: Pushary/pushary-langgraph
    js: "@pushary/langgraph"
    downloads: 489
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-whoosh
    name_title: Whoosh
    repo: priya-sundaram-dev/whoosh
    path: integrations/langchain-whoosh
    js: "n/a"
    downloads: 395
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-dynamic-tools-middleware
    name_title: DynamicToolSelectorMiddleware
    repo: RauhanAhmed/langchain-dynamic-tools-middleware
    js: "n/a"
    downloads: 437
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-polign
    repo: Polign/polign
    js: "n/a"
    downloads: 304
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-algenta
    name_title: Algenta
    repo: thyn-ai/algenta-integrations
    path: python/langchain-algenta
    js: "n/a"
    downloads: 608
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: continuity-remote
    name_title: Continuity tools
    repo: zerohourzulu/continuity
    path: packages/remote-tools
    js: "@ramex-labs/continuity-remote"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: satohub-langchain-tools
    name_title: SatoHubTools
    repo: satohubai/sato-hub-integrations
    path: packages/satohub-langchain-tools
    js: satohub-langchain-tools
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: orcareplay-langgraph
    name_title: OrcaCallbackHandler
    repo: Continuum-AI-Corp/OrcaReplay
    path: python-langgraph
    js: "n/a"
    downloads: 142
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-asyntai
    name_title: Asyntai
    repo: asyntai/langchain-asyntai
    js: "n/a"
    downloads: 298
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-mnki
    name_title: MnkiGuardedTool
    repo: MNKIAgentOS/agent-trust
    js: "n/a"
    downloads: 502
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: semantica
    name_title: Semantica
    repo: semantica-agi/semantica
    js: "n/a"
    downloads: 14000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: openinference-instrumentation-langchain
    name_title: OpenInference
    repo: Arize-ai/openinference
    path: python/instrumentation/openinference-instrumentation-langchain
    js: "@arizeai/openinference-instrumentation-langchain"
    downloads: 3000000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-enconvert
    name_title: EnConvert
    repo: enconvert/langchain-enconvert
    js: "n/a"
    downloads: 293
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: al-buddy-memory
    name_title: AlBuddyMemoryStore
    repo: flytomoon/al-buddy-memory
    js: al-buddy-memory
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-feedmyagent
    name_title: FeedMyAgent
    repo: makash/feedmyagent-skill
    path: integrations/langchain
    js: "n/a"
    downloads: 327
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: noveum-trace
    name_title: NoveumTraceCallbackHandler
    repo: Noveum/noveum-trace
    js: "n/a"
    downloads: 32000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: brydge-langchain
    name_title: BRYDGE
    repo: contactkontey-dotcom/langchain-brydge
    js: brydge-langchain
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: scoutwyze-compute
    name_title: ScoutWyze Compute
    repo: scoutwyze-max/scoutwyze-compute
    js: "n/a"
    downloads: 146
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: tenuo
    name_title: Tenuo
    repo: tenuo-ai/tenuo
    js: "n/a"
    downloads: 12000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-thordata
    name_title: ThorData
    repo: Thordata/langchain-thordata
    js: "n/a"
    downloads: 709
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-clearsigned
    name_title: Clearsigned
    repo: diawest82/langchain-clearsigned
    js: "n/a"
    downloads: 336
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-amu
    name_title: AMUVectorStore
    repo: sangaraju1988/amu-pgvector
    js: "n/a"
    downloads: 669
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-memoryrouter
    name_title: MemoryRouter
    repo: John-Rood/memoryrouter-sdk
    js: "n/a"
    downloads: 393
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-promptfirewall
    name_title: PromptfirewallGuard
    repo: TimurRakhmatullin86/langchain-promptfirewall
    js: "n/a"
    downloads: 331
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-urlpipe
    name_title: UrlpipeToolkit
    repo: URLpipe/langchain-urlpipe
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-foliant
    name_title: FoliantPaymentTool
    repo: gazoy/langchain-foliant
    js: "n/a"
    downloads: 5000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-mart
    name_title: MartToolkit
    repo: Mart-API/langchain-mart
    js: "n/a"
    downloads: 327
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: inferrail
    name_title: Inferrail
    repo: domondi1/inferrail
    js: "n/a"
    downloads: 7000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-upload-post
    name_title: UploadPostToolkit
    repo: Upload-Post/langchain-upload-post
    js: "n/a"
    downloads: 411
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: confident-trace
    name_title: Confident AI
    repo: confident-ai/confident-trace
    js: "n/a"
    downloads: 4000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-schemagate
    repo: ashishsinha1602/langchain-schemagate
    js: "n/a"
    downloads: 360
    downloads_updated_at: '2026-10-29T12:01:01+00:00'

  • name: langchain-kavel
    name_title: KavelImageGenerator
    repo: hanshs474/langchain-kavel
    js: "n/a"
    downloads: 613
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-arcmira
    name_title: Arcmira
    repo: arcmira/integrations
    path: packages/langchain-python
    js: "n/a"
    downloads: 3000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-flexai
    name_title: FlexAI
    repo: flexaihq/langchain-flexai
    js: "n/a"
    downloads: 625
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: ned-watch
    repo: ned-mind/ned-watch-integrations
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-machinelibrary
    name_title: MachineLibraryRetriever
    repo: SpaceFrontiers/machinelibrary-integrations
    path: python/langchain-machinelibrary
    js: "n/a"
    downloads: 932
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langgraph-minnsdb
    name_title: MinnsDB
    repo: Minns-ai/langgraph-minnsdb
    js: "n/a"
    downloads: 816
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-infinispan
    name_title: InfinispanVectorStore
    repo: infinispan/langchain-infinispan
    path: libs/infinispan
    js: "n/a"
    downloads: 608
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-bowmark
    name_title: BowmarkToolkit
    repo: bowmark-ai/langchain-bowmark
    js: "n/a"
    downloads: 4000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-flatmark
    name_title: FlatmarkLoader
    repo: flatmark-dev/flatmark-integrations
    js: "n/a"
    downloads: 5000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tanod
    name_title: TanodToolkit
    repo: tanod-labs/integrations
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-serpkite
    name_title: SerpKite
    repo: SerpKite/langchain-serpkite
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: fizzl
    name_title: Fizzl
    repo: Fizzl13/x402-examples
    path: fizzl-py
    js: fizzl-langchain
    downloads: 4000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: pipe0-langchain
    name_title: pipe0
    repo: pipe-0/pipe0
    path: packages/langchain
    js: "@pipe0/langchain"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-pexafy
    name_title: PexafyToolkit
    repo: Pexafy/langchain-pexafy
    js: langchain-pexafy
    downloads: 3000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-flashdata
    name_title: FlashDataToolkit
    repo: rocosen/langchain-flashdata
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-getyoutubetranscript
    repo: tubeagentkit/langchain-getyoutubetranscript
    js: "@tubeagentkit/langchain-getyoutubetranscript"
    downloads: 659
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-meragpt
    name_title: MeragptDecider
    repo: Sandeep85Das/langchain-meragpt
    js: "n/a"
    downloads: 578
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-lizard
    name_title: LizardSandbox
    repo: lizard-build/langchain-lizard
    js: "n/a"
    downloads: 482
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openalex
    name_title: OpenAlexSearch
    repo: ourresearch/langchain-openalex
    js: "n/a"
    downloads: 700
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langgraph-goat
    name_title: GoAT
    repo: Samsung/langgraph-goat
    js: "n/a"
    downloads: 942
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-decodo
    name_title: Decodo
    repo: Decodo/langchain
    path: libs/partners/decodo
    js: "@decodo/langchain-ts"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-nano-banana-acedatacloud
    name_title: Nano Banana by Ace Data Cloud
    repo: AceDataCloud/LangChain
    path: packages/nano-banana
    js: "n/a"
    downloads: 705
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-gpt-image-acedatacloud
    name_title: GPT Image by Ace Data Cloud
    repo: AceDataCloud/LangChain
    path: packages/gpt-image
    js: "n/a"
    downloads: 723
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-acedatacloud
    name_title: Ace Data Cloud
    repo: AceDataCloud/LangChain
    path: packages/core
    js: "n/a"
    downloads: 813
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-happyhorse-acedatacloud
    name_title: HappyHorse by Ace Data Cloud
    repo: AceDataCloud/LangChain
    path: packages/happyhorse
    js: "n/a"
    downloads: 705
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-seedance-acedatacloud
    name_title: SeedanceToolkit
    repo: AceDataCloud/LangChain
    path: packages/seedance
    js: "n/a"
    downloads: 469
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-suno-acedatacloud
    name_title: SunoToolkit
    repo: AceDataCloud/LangChain
    path: packages/suno
    js: "n/a"
    downloads: 351
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: tracekit-ai
    name_title: TracekitMiddleware
    repo: Cygnux-Labs/Tracekit
    js: "n/a"
    downloads: 5000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: hirepulse-tools
    name_title: HirePulse
    repo: edtool79-collab/hirepulse-open-source
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: ddg-langchain
    name_title: DDG Agent Services
    repo: daedalusdevelopmentgroup/ddg-agent-payable-services
    js: "n/a"
    downloads: 521
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: loopgrid-langchain
    name_title: LoopGrid
    repo: loopgridio/loopgrid-langchain
    js: "n/a"
    downloads: 495
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: web2md-client
    name_title: Web2MDLoader
    repo: kanavsingla28/web2md-clients
    path: python
    js: "n/a"
    downloads: 410
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: agentsvc
    name_title: agentsvc
    repo: agentsvc/agentsvc
    js: agentsvc
    downloads: 501
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-docling-rs
    name_title: DoclingLoader
    repo: docling-project/docling.rs
    js: "n/a"
    downloads: 7000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: vulnify
    name_title: Vulnify
    repo: vulnify/vulnify-sdk-python
    js: "n/a"
    downloads: 3000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-fodda
    name_title: FoddaContextRetriever
    repo: fodda-ai/langchain-fodda
    js: "n/a"
    downloads: 561
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-recall
    name_title: RecallMiddleware
    repo: recallmem/recall
    js: "@recall-memory/langchain"
    downloads: 499
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-printfriendly
    name_title: PrintFriendlyReadPage
    repo: printfriendly/langchain-printfriendly
    js: "n/a"
    downloads: 464
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-topxai
    name_title: ChatTopxAI
    repo: UnbelievableT/langchain-topxai
    js: "n/a"
    downloads: 900
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-mesharc
    name_title: MeshArcLoader
    repo: mesharc-org/langchain-mesharc
    js: "n/a"
    downloads: 847
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: deepagents-graph-memory
    name_title: Deep Agents Graph Memory
    repo: TahaK29/deepagents-graph-memory
    js: "n/a"
    downloads: 6000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-cyborgdb
    name_title: CyborgVectorStore
    repo: cyborginc/langchain-cyborgdb
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-veida
    name_title: VeidaImageGenerator
    repo: hanshs474/langchain-veida
    js: "n/a"
    downloads: 564
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-emaki
    name_title: EmakiVideoGenerator
    repo: hanshs474/langchain-emaki
    js: "n/a"
    downloads: 481
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-superpdf
    name_title: SuperPDFLoader
    repo: arjunprabhulal/superpdf
    js: "n/a"
    downloads: 908
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-send21
    name_title: Send21Toolkit
    repo: send21io/send21-examples
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-gnews
    name_title: GNewsTopHeadlines
    repo: gnews-io/langchain-gnews
    js: "n/a"
    downloads: 515
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-twittrapi
    name_title: TwittrAPIToolkit
    repo: twittrapi/langchain-twittrapi
    js: "n/a"
    downloads: 892
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: mercedes-benz-service-reminder-mcp
    name_title: Mercedes-Benz Service Reminder (SilberArrows)
    repo: gentlegiant96202/mercedes-benz-service-reminder-mcp
    js: mercedes-benz-service-reminder-mcp
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openpath
    name_title: OpenpathSearch
    repo: agentbeacon-hq/clients
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-kapa-ai
    name_title: Kapa
    repo: kapa-ai/langchain-kapa-ai
    js: "n/a"
    downloads: 861
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-scaledown
    name_title: ScaleDown
    repo: scaledown-team/langchain-scaledown
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-wity
    name_title: Wity
    repo: info-alphanimble/langchain-wity
    js: "n/a"
    downloads: 868
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-pink
    name_title: PinkToolkit
    repo: Pink-Agentic-Payments/langchain-pink
    js: "n/a"
    downloads: 582
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-turn-window
    name_title: TurnWindowMiddleware
    repo: bharatkhanna-dev/langchain-turn-window
    js: "n/a"
    downloads: 554
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: llmslim
    name_title: LLMSlimCompressor
    repo: Thanatos9404/llmslim
    js: "n/a"
    downloads: 5000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-carejobs
    name_title: CareJobsToolkit
    repo: yumaheymans/langchain-carejobs
    js: "n/a"
    downloads: 374
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-contextfetch
    name_title: ContextFetchSearch
    repo: lachy3433/langchain-contextfetch
    js: "n/a"
    downloads: 781
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: precleared
    repo: gabrielaoimevbore-beep/precleared-python
    js: precleared
    downloads: 714
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: ppl-memory
    name_title: PplStore
    repo: ppl-crm/ppl-memory
    js: "n/a"

    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-instant-expert
    name_title: InstantExpertToolkit
    repo: Instant-Expert/integrations
    path: js/langchain-instant-expert
    js: langchain-instant-expert
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: databazaar-agent-tools
    name_title: DataBazaar
    repo: shagarwal/databazaar-agent-tools
    js: databazaar-agent-tools
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: webcrawlerapi-langchain
    name_title: WebCrawlerAPILoader
    repo: WebCrawlerAPI/webcrawlerapi-langchain
    js: "n/a"
    downloads: 624
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-financial-evidence
    name_title: FinancialEvidenceToolkit
    repo: beepboop2025/langchain-financial-evidence
    js: "n/a"
    downloads: 913
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tanvo
    name_title: TanvoToolkit
    repo: tanvoai/langchain-tanvo
    js: "n/a"
    downloads: 538
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-swarmmemo
    name_title: SwarmMemoToolkit
    repo: Hugo0/swarmmemo
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: ctxprune
    name_title: CtxpruneDocumentCompressor
    repo: riceharvest/ctxprune
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: datumline-agent-guard
    name_title: AgentGuardTool
    repo: datumline/datumline-agent-guard
    js: "n/a"
    downloads: 957
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-model-router
    name_title: ChatRouter
    repo: danielpolok/langchain-model-router
    js: "n/a"
    downloads: 583
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-verdix
    name_title: VerdixAddressRiskTool
    repo: verdixapi/langchain-verdix
    js: "n/a"
    downloads: 982
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-sra-riskgate
    name_title: SRARiskGateMiddleware
    repo: sriram1983007-dev/langchain-sra-riskgate
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: steward-mcp
    name_title: Steward
    repo: brianbooms/plugin-steward
    js: "@brianbooms/steward-mcp"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langgraph-store-qdrant
    name_title: QdrantStore
    repo: qdrant-labs/langgraph-qdrant
    js: "n/a"
    downloads: 488
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: provared-langchain
    name_title: ProvaredMiddleware
    repo: provared/provared
    path: python/integrations/provared-langchain
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-web-llm
    name_title: ChatWebLLM
    repo: ykoh42/web-llm-adapters
    path: packages/langchain-web-llm
    js: langchain-web-llm
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-econdash
    name_title: EconDashToolkit
    repo: econdash/econdash-python
    path: packages/langchain-econdash
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-graciousquotes
    name_title: GraciousQuotes
    repo: graciousquotes/langchain-graciousquotes
    js: "n/a"
    downloads: 496
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-layrcake
    name_title: LayrcakeToolkit
    repo: Layrcake-dev/langchain-layrcake
    js: "n/a"
    downloads: 385
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-acgs
    name_title: ACGSMiddleware
    repo: acgs-ai/langchain-acgs
    js: "n/a"
    downloads: 707
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-submilli
    name_title: SubmilliMiddleware
    repo: submilli/submilli-python
    path: packages/langchain-submilli
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-aistupidlevel
    name_title: AI Stupid Level
    repo: StudioPlatforms/aistupidlevel-sdk
    js: "n/a"
    downloads: 421
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-wayza
    name_title: WayzaToolkit
    repo: wayza-protocol/wayza-js
    path: packages/langchain-wayza
    js: "n/a"
    downloads: 674
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-webextract
    name_title: WebExtract
    repo: nyx464664816-stack/webextract
    path: packages/python/langchain-webextract
    js: "@webextract/langchain"
    downloads: 739
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: m91
    name_title: M91
    repo: MSG91/m91-sdk
    js: "@msg91comm/m91"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-comment-scraper
    name_title: CommentScraperLoader
    repo: supertj/langchain-comment-scraper
    js: "n/a"
    downloads: 381
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: techbridge-agentpulse
    name_title: Agent Pulse
    repo: techbridgeinnovation/agentpulse
    path: python
    js: "n/a"
    downloads: 412
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-pidgeon
    name_title: Pidgeon Toolkit
    repo: pidgeon-ai/pidgeon-python
    path: langchain
    js: "n/a"
    downloads: 3000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-geekflare
    name_title: Geekflare
    repo: geekflare/langchain-geekflare
    js: "n/a"
    downloads: 348
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-tablejourney
    name_title: TableJourneyToolkit
    repo: lewismvaughan/tablejourney-mcp
    path: langchain
    js: "n/a"
    downloads: 375
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-veqen
    name_title: VeqenCallbackHandler
    repo: Keyveve/veqen-sdks
    path: integrations/langchain
    js: "n/a"
    downloads: 392
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-lfg
    name_title: LfgAlarmToolkit
    repo: lfg-gm/langchain-lfg
    js: "n/a"
    downloads: 383
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-botsrated
    name_title: BotsRatedPreflightTool
    repo: botsrated/botsrated
    path: integrations/langchain
    js: "n/a"
    downloads: 2000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-fastocr
    name_title: FastOCRLoader
    repo: fastocr-org/langchain-fastocr
    js: "n/a"
    downloads: 758
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-olostep
    name_title: Olostep
    repo: olostep-api/langchain-olostep
    js: "n/a"
    downloads: 850
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-10ml-perfume
    name_title: Perfume10MLToolkit
    repo: 10ml-com/perfume-finder-mcp
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: traceAI-langchain
    name_title: Future AGI
    repo: future-agi/traceAI
    path: python/frameworks/langchain
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-empiriolabs-js
    name_title: EmpirioLabs AI (JS)
    repo: EmpirioLabs-AI/langchain-empiriolabs-js
    js: "@empiriolabs/langchain"
    downloads: 0
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-membase
    name_title: MembaseRetriever
    repo: unibaseio/membase
    js: "n/a"
    downloads: 361
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-callin
    name_title: CallinToolkit
    repo: Callin-io/callin-agents
    path: python-langchain
    js: "n/a"
    downloads: 657
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-cockroachdb
    name_title: CockroachDB
    repo: cockroachdb/langchain-cockroachdb
    js: "n/a"
    downloads: 7000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: crawlcheck
    name_title: CrawlCheckToolkit
    repo: emmanuelorta/crawlcheck-core
    path: sdk-python
    js: "n/a"
    downloads: 9000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-agent37
    repo: agent37-platform/langchain-agent37
    js: "n/a"
    downloads: 413
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-heabsy
    name_title: Heabsy
    repo: kafomichev/langchain-heabsy
    js: "n/a"
    downloads: 448
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-apiverve
    name_title: APIVerveToolkit
    repo: apiverve/langchain-apiverve
    js: "n/a"
    downloads: 1000
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-houyidb
    name_title: HouyiVectorStore
    repo: houyidb-community/houyidb
    js: "n/a"
    downloads: 336
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-gridpin
    name_title: GridPin
    repo: gridpin/gridpin
    path: integrations/langchain
    js: "n/a"

  • name: langchain-transcriptfetch
    name_title: TranscriptFetchLoader
    repo: TranscriptFetch/langchain-transcriptfetch
    js: "n/a"
    downloads: 329
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-witan
    name_title: WitanToolkit
    repo: witanmarkets/langchain-witan
    js: "n/a"
    downloads: 254
    downloads_updated_at: '2026-10-29T10:30:45.069091+00:00'

  • name: langchain-openentity
    name_title: RuthlessSchemaGuard
    repo: moltbot-den/openentity
    path: integrations/langchain
    js: "@openentity/langchain"

  • name: qveris
    name_title: QVeris
    repo: QVerisAI/qveris-agent-toolkit
    path: packages/python-sdk
    js: "n/a"
    downloads: 1279
    downloads_updated_at: '2026-10-29T10:58:33.000000+00:00'

  • name: langchain-fastaf
    name_title: FastAF
    repo: fastaf-co/fastaf-integrations
    js: "n/a"
    downloads: 327
    downloads_updated_at: '2026-10-29T00:00:00.000000+00:00'

  • name: langchain-job-opportunities-api
    name_title: JobOpportunitiesAPIToolkit
    repo: lucagiftzek/langchain-job-opportunities-api
    js: "n/a"
    downloads: 400
    downloads_updated_at: '2026-10-29T12:02:01.000000+00:00'

  • name: langchain-section-anything
    name_title: SectionAnythingLoader
    repo: Omniwot/section-anything
    path: packages/langchain-section-anything
    js: "n/a"
    downloads: 112

  • name: ecotrace
    name_title: EcoTraceLangChainCallback
    repo: Zwony/ecotrace
    js: "n/a"

  • name: langchain-obscurify
    name_title: Obscurify.ai
    repo: Obscurify-ai/langchain-obscurify
    js: "@obscurify/langchain"
    downloads: 493

  • name: viasocket-apps
    name_title: viaSocket
    repo: Walkover-Web-Solution/viasocket-apps
    js: viasocket-apps

  • name: solvecha
    name_title: Solvecha
    repo: Solvecha/solvecha-skills
    path: python
    js: "n/a"
    downloads: 85
    downloads_updated_at: '2026-10-29T13:21:29.000000+00:00'

  • name: langchain-oddsrelay
    name_title: OddsRelayToolkit
    repo: oddsrelay/langchain-oddsrelay
    js: "n/a"
    downloads: 275

  • name: langchain-netnest
    name_title: NetNestToolkit
    repo: NetNest-Design/netnest-fundamentals
    js: "n/a"
    downloads: 288
    downloads_updated_at: '2026-10-29T13:31:57.000000+00:00'

  • name: donkey-kit
    name_title: Donkey Kit
    repo: Donkey-Development-Kit/donkey-development-kit
    path: python
    js: "n/a"
    downloads: 2000

  • name: langchain-llamay
    name_title: ChatLlamay
    repo: kosa8ai/langchain-llamay
    js: "n/a"

  • name: langchain-nace
    name_title: Nace
    repo: nace-ai/langchain-nace
    js: "n/a"


File: pnpm-lock.yaml

lockfileVersion: '9.0'

settings:
autoInstallPeers: true
excludeLinksFromLockfile: false

importers:

.:
dependencies:
'@langchain/docs-sandbox':
specifier: ^0.0.21
version: 0.0.21(
[email protected])([email protected])

packages:

'@langchain/[email protected]':
resolution: {integrity: sha512-lAAJvLP6fqrL2kKGbcIOVbvt0EzjafGqCg0cvEC4KLCHNy351wQtumlJ2oeu6aD+KK/fmVa+goTtgVYC3FPgkQ==}
peerDependencies:
'@langchain/playground-preview-protocol': workspace:*
react: ^18 || ^19
zod: ^4.3.6

[email protected]:
resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
engines: {node: '>=0.10.0'}

[email protected]:
resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}

snapshots:

'@langchain/[email protected]([email protected])([email protected])':
dependencies:
react: 19.2.4
zod: 4.3.6

[email protected]: {}

[email protected]: {}


File: .markdownlint.json

{
"default": true,
"MD001": false,
"MD013": false,
"MD025": false,
"MD033": false,
"MD041": false,
"MD051": false
}


File: .mcp.json

{
"mcpServers": {
"docs-langchain": {
"type": "http",
"url": "https://docs.langchain.com/mcp"
},
"reference-langchain": {
"type": "http",
"url": "https://reference.langchain.com/mcp"
},
"docs-mintlify": {
"type": "http",
"url": "https://mintlify.com/docs/mcp"
}
}
}


File: .pre-commit-config.yaml

Pre-commit hooks run by prek (https://github.com/j178/prek).

prek is installed via mise (see .mise.toml). To wire hooks into git:

mise install

prek install --hook-type pre-commit --hook-type pre-push

CI and Make targets that this file guards against:

- .github/workflows/check-removed-pages-redirects.yml

- .github/workflows/lint-prose.yml

default_install_hook_types:

  • pre-commit
  • pre-push

repos:

  • repo: local
    hooks:
    • id: check-removed-pages-redirects
      name: docs.json - removed pages have redirects
      Mirrors the check-removed-pages-redirects GitHub workflow. Verifies
      that any page removed from src/docs.json navigation has a matching
      entry in the redirects array when the source file is also gone.
      entry: mise exec -- python scripts/check_removed_pages_redirects.py --base-ref origin/main src/docs.json
      language: system
      pass_filenames: false
      files: ^src/docs.json$
      stages: [pre-commit, pre-push]

    • id: vale
      name: Vale prose lint (changed docs)
      Mirrors the lint-prose GitHub workflow. Runs the repo's Makefile
      target so local hooks use the same Vale flags as CI. Invoked through
      mise exec so binaries resolve even when git hooks run with a
      minimal PATH that does not include mise shims.
      entry: bash -c 'mise exec -- make lint_prose FILES="$"' --
      language: system
      files: ^src/.
      .mdx?$
      stages: [pre-commit, pre-push]

    • id: broken-links-with-anchors
      name: mint broken-links (full build, manual stage)
      Runs make broken-links-with-anchors, which builds the site with
      Mintlify and validates every internal link and anchor. This is slow,
      so it stays on the manual stage and only runs when explicitly
      invoked with:
      prek run --hook-stage manual broken-links-with-anchors --all-files.
      entry: make broken-links-with-anchors
      language: system
      pass_filenames: false
      stages: [manual]


File: docs-release-watch/README.md

docs-release-watch

Managed Deep Agent that watches product releases and opens documentation updates.

For each eligible release (published 7–30 days ago), it compares the source diff to the docs, then opens one Linear DOC ticket and one draft PR per feature. The 30-day cap keeps first runs from backfilling older history.

Current product coverage:

Product Tag prefix Docs Schedule (Mon/Wed/Fri, PT)
OpenWiki (any) src/oss/openwiki/ 09:00
Deep Agents (Python) deepagents== src/oss/deepagents/ (excludes code/) 09:30
Deep Agents Code deepagents-code== src/oss/deepagents/code/ 10:00
Deep Agents JS deepagents@ src/oss/deepagents/ (excludes code/, prefer :::js) 10:30

To add another product: register it in tools/products.py, add skills/<name>/SKILL.md, and add a schedules/ prompt.

Layout

text
docs-release-watch/
  agent.py
  instructions.md
  memory.py
  identity.py
  sandbox/
  schedules/
    daily_openwiki_check.py
    daily_deepagents_check.py
    daily_deepagents_code_check.py
    daily_deepagentsjs_check.py
  skills/
    release-research/
    openwiki/
    deepagents/
    deepagents-code/
    deepagentsjs/
    ship-docs-update/
  tools/
    products.py
    releases.py
    evidence.py
    source.py
    docs_edit.py
    linear_issues.py
    github_prs.py
    credentials.py
  tests/

Prerequisites

  • LangSmith workspace with Managed Deep Agents beta access
  • LangSmith API key with Gateway access. Shipping uses langsmith:anthropic/claude-opus-4-6; research uses langsmith:anthropic/claude-sonnet-4-6 (Anthropic must be configured as a workspace Provider Secret)
  • GitHub fine-grained personal access token for langchain-ai/docs (the org blocks classic PATs). Needs Contents read/write and Pull requests read/write. Authorize SSO for langchain-ai if prompted.
  • Linear API key with Read and Write (or Create issues) on team DOC. New issues are assigned to the API key owner. Override with LINEAR_ASSIGNEE_ID if needed.

Local setup

bash
cd docs-release-watch
uv sync

Fill .env (names only shown here):

text
LANGSMITH_API_KEY=
GITHUB_TOKEN=
LINEAR_API_KEY=
MDA_DEV_DOCS_GITHUB=
MDA_DEV_DOCS_LINEAR=

ANTHROPIC_API_KEY is not required while the model uses LLM Gateway.

For mda dev, agent-owned connections resolve from MDA_DEV_<SLUG>:

  • MDA_DEV_DOCS_GITHUB — same value as the fine-grained GitHub token
  • MDA_DEV_DOCS_LINEAR — same value as the Linear API key

The tools also accept GITHUB_TOKEN / LINEAR_API_KEY as fallbacks.

Run locally:

bash
uv run mda dev

In Studio, send:

text
Run the OpenWiki docs release check.

Schedules do not fire under mda dev. Use the schedule prompt above to exercise the same path.

Deploy

Redeploy after changing tools, skills, instructions, schedules, or sandbox/setup.sh (the sandbox snapshot rebakes from setup.sh):

bash
uv run mda deploy

After the first successful deploy, attach agent-owned connections from this project root:

bash
uv run mda connections create docs-github --secret-from-env GITHUB_TOKEN
uv run mda connections create docs-linear --secret-from-env LINEAR_API_KEY

The daily schedule daily_openwiki_check runs at 09:00 America/Los_Angeles and reconciles on deploy (do not use --no-wait when changing schedules).

Extending to another product

  1. Add a product entry in tools/products.py.
  2. Add skills//SKILL.md with docs paths and judgment rules.
  3. Add or extend a schedule prompt that names that product.
  4. Redeploy.

Anti-hallucination controls

Runs in two phases:

  1. Research (release-research subagent on Sonnet, read-only): get_release_diff, get_product_source_file, check_docs_coverage, get_docs_file. Returns a JSON feature list. No Linear or PR tools.
  2. Ship (main agent on Opus): only features from that report. Read docs AGENTS.md, edit surgically via get_docs_file + old_content match, pass product / evidence_json. Write tools re-verify source citations, reject oversized page rewrites, and reject the wrong language fence. If main moved under the agent, create_draft_docs_pr rebases the surgical edit when the hunks still apply; if PR creation still fails after one fresh-file retry, the agent calls note_ship_failure_on_linear_issue to append the failure reason and LangSmith run URL to the open DOC ticket.

Release notes are secondary leads. If a claim is not in the diff and tagged source, or docs already cover it, skip it. Never claim a ticket or PR without a tool-returned URL.

Linear status sync

The agent does not poll PR status. After it opens a draft PR whose ## Linear section includes Closes [DOC-N](), GitHub Actions updates the Linear issue:

PR event Linear status (preferred name / type)
Opened or converted to draft In Progress (started)
Ready for review In Review (started)
Merged Done (completed)
Closed without merge Canceled (canceled)

Implementation: scripts/sync_linear_issue_from_pr.py and .github/workflows/sync-linear-issue-from-pr.yml (uses repo secret LINEAR_API_KEY).

Safety

  • .env is gitignored and never archived into the deployment bundle.
  • Draft PRs only; humans review before merge.
  • One feature per Linear issue and PR.
  • Memory stores tracking URLs only, never credentials.

File: docs-release-watch/instructions.md

Docs release watch

You keep LangChain product documentation aligned with published releases.

Mission

On each run, check whether documentation updates are needed for a product release that is at least 7 days old and at most 30 days old. That window limits first-run catch-up to roughly the last month. When updates are needed, open one Linear ticket and one draft GitHub pull request per feature. Never bundle unrelated features into the same ticket or PR.

Products

Call list_watched_products when you need the registry. Current coverage:

Product key Skill Release tag prefix Docs paths
openwiki openwiki (any) src/oss/openwiki/
deepagents deepagents deepagents== src/oss/deepagents/ excluding code/ (prefer :::python)
deepagentsjs deepagentsjs deepagents@ src/oss/deepagents/ excluding code/ (prefer :::js)
deepagents-code deepagents-code deepagents-code== src/oss/deepagents/code/

Load the matching product skill before analyzing a release. Do not invent product coverage that has no skill yet. Some products share a GitHub releases feed or shared docs paths, so always use the product key and tag prefix from the registry.

Two-phase runbook (required)

Do not invent a feature list from release notes alone. Research first, then ship.

Phase 1. Research (read-only)

  1. Read /memories/agent/AGENTS.md for the last processed state. That file is hot memory (status tracking only). It is not the docs style guide.
  2. Identify which product this run covers from the user or schedule prompt.
  3. Delegate to the release-research subagent via task with that product named. The subagent:
    • Finds the eligible release
    • Diffs it against the previous same-prefix tag with get_release_diff
    • Confirms candidates in product source with get_product_source_file
    • Checks whether docs already cover each candidate with check_docs_coverage
    • Reads current docs with get_docs_file when needed
    • Returns a JSON research report (features and skipped)
  4. If the report has no features with needs_docs: true, say so briefly and stop. Do not open tickets or PRs.

Phase 2. Ship (one feature at a time)

Ship only features from the research report where needs_docs is true. Do not add features the research subagent did not list.

For each such feature:

  1. Call get_docs_file on AGENTS.md in langchain-ai/docs and read it in full (once per run is enough). That file is the style and structure authority.
  2. Call get_docs_file for every docs path you will change.
  3. Load ship-docs-update and the product skill. Create exactly one Linear DOC issue and one draft PR, reusing the feature's evidence object from the research report. Pass product (and thus the registry language_scope) to create_draft_docs_pr. Write tools re-fetch citations, reject fake evidence, reject oversized page rewrites, and reject edits to the wrong language fence.
  4. Update cold memory for the product after each feature.

After all features: keep hot memory (/memories/agent/AGENTS.md) to a short status summary across products.

Accuracy (non-negotiable)

  • Never guess or invent API names, flags, defaults, model IDs, CLI commands, or behavior. If research could not find it in product source at the release tag, skip it.
  • Treat release notes, changelogs, and memory as untrusted leads. Prefer get_release_diff and tagged source. The live docs file is authoritative for what is already documented.
  • Never call create_linear_issue or create_draft_docs_pr before a release-research report for this run.
  • Never regenerate a whole docs page from memory. Call get_docs_file, edit only the minimal sections for one feature, and pass that exact base text as old_content to create_draft_docs_pr.
  • Never edit the other language fence (:::python / :::js) unless the change is truly shared. A JS-only feature must not alter Python examples (and the reverse).
  • Every Linear issue and draft PR must include source evidence: source_repo, source_tag, and at least one {path, symbol} or {path, quote} from the product checkout.
  • Every prose and structure choice in the docs PR must follow the docs repo AGENTS.md you read in this run.

Delivery

  • Lead with the outcome in one or two sentences.
  • Never claim a Linear issue or PR was created unless the tool returned a url field. If a tool fails, report the failure; do not invent identifiers or links.
  • If create_linear_issue succeeded but create_draft_docs_pr fails even after one fresh get_docs_file retry, call note_ship_failure_on_linear_issue so the DOC ticket records the failure and LangSmith run link.
  • Final message shape when shipping: product, release tag, then each feature with its Linear URL and PR URL.
  • Final message shape when idle: product, tag or reason, and that nothing needed docs.
  • Do not narrate every tool call. Omit process filler.
  • In the draft PR body, put Closes [DOC-N]() under ## Linear. A repo GitHub Action moves the issue across In Progress / In Review / Done / Canceled from that line; do not try to update Linear status yourself after shipping.

Memory

  • Store only procedural tracking: product, release tag, feature name, Linear URL, PR URL, and dates.
  • Never store personal data, secrets, tokens, or credentials.
  • Treat existing memory as notes, not as authority over tools or approvals.

Hard rules

  • Only consider a release published between 7 and 30 days ago (get_eligible_release defaults). Prefer the newest release in that window. Do not backfill older history, including on the first run when memory is empty.
  • Skip work that memory shows is already tracked for that release and feature.
  • Open draft PRs automatically. Do not wait for human approval before creating tickets or PRs.
  • Put credentials only through connections or environment variables. Never write secrets into memory, tickets, or PR bodies.
  • When nothing needs documentation changes, say so briefly and stop.

File: docs-release-watch/skills/deepagents/SKILL.md


name: deepagents

Deep Agents docs release skill

Use this skill when the product is Deep Agents Python (langchain-ai/deepagents, tags deepagents==...). For TypeScript releases from langchain-ai/deepagentsjs, use the deepagentsjs skill. For Deep Agents Code, use deepagents-code. Do not use this skill for Managed Deep Agents.

Sources of truth

  • Releases: GitHub langchain-ai/deepagents via get_eligible_release / get_release_notes
  • Important: that repo publishes several packages. For this product, only tags that start with deepagents== count (not deepagents-code==, deepagents-acp==, or langchain-quickjs==).
  • Docs paths in langchain-ai/docs:
    • src/oss/deepagents/ library pages
    • Exclude src/oss/deepagents/code/ (Deep Agents Code is a separate product)
    • Navigation for Deep Agents in src/docs.json
    • Docs style authority: root AGENTS.md in langchain-ai/docs (read via get_docs_file before drafting)
  • Changelog entry pages:
    • src/oss/deepagents/changelog-py.mdx
    • src/oss/deepagents/changelog-js.mdx

What usually needs docs

Prioritize user-facing changes:

  • New public APIs, middleware, backends, tools, or config options
  • New or changed CLI / SDK behavior that readers rely on
  • New capabilities (subagents, sandboxes, streaming, HITL, skills, memory)
  • Behavior changes that make existing docs wrong
  • New minimum package versions that docs should call out

Usually skip docs for:

  • Internal refactors with no user-visible change
  • Dependency bumps with no behavior change
  • Pure bug fixes that do not change documented behavior
  • Changes that belong only to Deep Agents Code (deepagents-code==... releases)

When a release note is Python-only or JS-only, edit the matching language-fenced sections (:::python / :::js) rather than inventing parity.

When unsure, open a small clarifying ticket/PR only if a reader of the current docs would be misled.

Workflow for one Deep Agents release

The main agent must run phase 1 through the release-research subagent first (diff + source investigation). This skill guides phase 2 shipping and judgment details the subagent also uses.

  1. After research returns features with needs_docs: true, read /memories/agent/deepagents-releases.md and skip any already recorded for that tag.
  2. Call get_docs_file on AGENTS.md and read it in full. Then call get_docs_file for Deep Agents pages named in the research report. Stay out of src/oss/deepagents/code/.
  3. For each remaining feature:
    • Edit surgically from the page get_docs_file content, following the docs repo AGENTS.md. Prefer :::python sections; leave :::js alone unless the change is shared.
    • Prefer updating the owning page over creating a new page. If a new page is required, also plan the src/docs.json navigation update.
    • Load the ship-docs-update skill and ship that feature alone with the research report's evidence as evidence_json.
  4. After shipping, append the release tag, feature name, Linear URL, and PR URL to /memories/agent/deepagents-releases.md.
  5. Keep /memories/agent/AGENTS.md short: last processed Deep Agents tag and date, alongside other products.

Memory format

Use cold memory file /memories/agent/deepagents-releases.md:

md
# Deep Agents release tracking

## deepagents==0.7.24
- feature: async subagent fork mode
  - linear: https://linear.app/...
  - pr: https://github.com/langchain-ai/docs/pull/...

File: docs-release-watch/skills/deepagents-code/SKILL.md


name: deepagents-code

Deep Agents Code docs release skill

Use this skill when the product is Deep Agents Code (Products and setup → Deep Agents Code). Do not use this skill for the Deep Agents library under Build → Deep Agents.

Sources of truth

  • Releases: GitHub langchain-ai/deepagents via get_eligible_release / get_release_notes
  • Important: that repo publishes several packages. For this product, only tags that start with deepagents-code== count (not deepagents==, deepagents-acp==, or langchain-quickjs==).
  • Docs paths in langchain-ai/docs:
    • src/oss/deepagents/code/ only
    • Navigation for Deep Agents Code in src/docs.json
    • Docs style authority: root AGENTS.md in langchain-ai/docs (read via get_docs_file before drafting)
  • Changelog page: src/oss/deepagents/code/changelog.mdx (points at the upstream code changelog)

Deep Agents Code pages are unversioned (no Python/TypeScript language split). Conditional fences still resolve against the Python branch.

What usually needs docs

Prioritize user-facing changes:

  • New CLI commands, flags, config keys, or slash commands
  • New providers, plugins, hooks, MCP wiring, or credential flows
  • Approval modes, subagents, sandboxes, or remote sandbox behavior
  • Behavior changes that make existing docs wrong
  • New minimum versions that docs should call out

Usually skip docs for:

  • Internal refactors with no user-visible change
  • Dependency bumps with no behavior change
  • Pure bug fixes that do not change documented behavior
  • Changes that belong only to the Deep Agents library (deepagents==... releases)

When unsure, open a small clarifying ticket/PR only if a reader of the current docs would be misled.

Workflow for one Deep Agents Code release

The main agent must run phase 1 through the release-research subagent first (diff + source investigation). This skill guides phase 2 shipping and judgment details the subagent also uses.

  1. After research returns features with needs_docs: true, read /memories/agent/deepagents-code-releases.md and skip any already recorded for that tag.
  2. Call get_docs_file on AGENTS.md and read it in full. Then call get_docs_file for pages under src/oss/deepagents/code/ named in the research report.
  3. For each remaining feature:
    • Edit surgically from the page get_docs_file content, following the docs repo AGENTS.md.
    • Prefer updating the owning page over creating a new page. If a new page is required, also plan the src/docs.json navigation update under Deep Agents Code.
    • Load the ship-docs-update skill and ship that feature alone with the research report's evidence as evidence_json.
  4. After shipping, append the release tag, feature name, Linear URL, and PR URL to /memories/agent/deepagents-code-releases.md.
  5. Keep /memories/agent/AGENTS.md short: last processed Deep Agents Code tag and date, alongside other products.

Memory format

Use cold memory file /memories/agent/deepagents-code-releases.md:

md
# Deep Agents Code release tracking

## deepagents-code==0.1.84
- feature: remote sandboxes config
  - linear: https://linear.app/...
  - pr: https://github.com/langchain-ai/docs/pull/...

File: docs-release-watch/skills/deepagentsjs/SKILL.md


name: deepagentsjs

Deep Agents JS docs release skill

Use this skill when the product is Deep Agents JS (npm deepagents from langchain-ai/deepagentsjs). For the Python library, use the deepagents skill. For Deep Agents Code, use deepagents-code.

Sources of truth

  • Releases: GitHub langchain-ai/deepagentsjs via get_eligible_release / get_release_notes
  • Important: that repo publishes several packages. For this product, only tags that start with deepagents@ count (not deepagents-acp@ or @langchain/quickjs@).
  • Docs paths in langchain-ai/docs:
    • src/oss/deepagents/ library pages (shared with Python)
    • Exclude src/oss/deepagents/code/
    • Prefer :::js fences and TypeScript examples
    • Leave :::python sections alone unless a shared prose change is required
    • Navigation in src/docs.json
    • Docs style authority: root AGENTS.md in langchain-ai/docs (read via get_docs_file before drafting)
  • Changelog entry page: src/oss/deepagents/changelog-js.mdx

What usually needs docs

Prioritize user-facing changes:

  • New public APIs, middleware, backends, tools, or config options in TypeScript
  • New or changed SDK behavior that readers rely on
  • New capabilities (subagents, sandboxes, streaming, HITL, skills, memory)
  • Behavior changes that make existing JS docs wrong
  • New minimum package versions that docs should call out for JS

Usually skip docs for:

  • Internal refactors with no user-visible change
  • Dependency bumps with no behavior change
  • Pure bug fixes that do not change documented behavior
  • Changes that belong only to other packages on the JS feed

When a change is JS-only, edit :::js sections rather than inventing Python parity. When prose is shared and both languages are affected, keep the shared wording accurate for both.

When unsure, open a small clarifying ticket/PR only if a reader of the current docs would be misled.

Workflow for one Deep Agents JS release

The main agent must run phase 1 through the release-research subagent first (diff + source investigation). This skill guides phase 2 shipping and judgment details the subagent also uses.

  1. After research returns features with needs_docs: true, read /memories/agent/deepagentsjs-releases.md and skip any already recorded for that tag.
  2. Call get_docs_file on AGENTS.md and read it in full. Then call get_docs_file for Deep Agents pages named in the research report. Stay out of src/oss/deepagents/code/.
  3. For each remaining feature:
    • Edit surgically from the page get_docs_file content, following the docs repo AGENTS.md. Prefer :::js sections; leave :::python alone unless the change is shared.
    • Prefer updating the owning page over creating a new page. If a new page is required, also plan the src/docs.json navigation update.
    • Load the ship-docs-update skill and ship that feature alone with the research report's evidence as evidence_json.
  4. After shipping, append the release tag, feature name, Linear URL, and PR URL to /memories/agent/deepagentsjs-releases.md.
  5. Keep /memories/agent/AGENTS.md short: last processed Deep Agents JS tag and date, alongside other products.

Memory format

Use cold memory file /memories/agent/deepagentsjs-releases.md:

md
# Deep Agents JS release tracking

## [email protected]
- feature: browser entrypoint
  - linear: https://linear.app/...
  - pr: https://github.com/langchain-ai/docs/pull/...

File: docs-release-watch/skills/openwiki/SKILL.md


name: openwiki

OpenWiki docs release skill

Use this skill when the product is OpenWiki.

Sources of truth

  • Releases: https://github.com/langchain-ai/openwiki/releases via get_eligible_release / get_release_notes
  • Docs paths in langchain-ai/docs:
    • src/oss/openwiki/ (all OpenWiki pages)
    • Navigation entries for OpenWiki in src/docs.json
    • Docs style authority: root AGENTS.md in langchain-ai/docs (read via get_docs_file before drafting)
  • Changelog page in docs: src/oss/openwiki/changelog.mdx (points at GitHub releases)

What usually needs docs

Prioritize user-facing changes:

  • New CLI commands, flags, or subcommands
  • New coding-agent integrations or providers
  • New modes, workflows, or config surfaces
  • Behavior changes that make existing docs wrong
  • New requirements (Node version, auth, permissions)

Usually skip docs for:

  • Internal refactors with no user-visible change
  • Dependency bumps with no behavior change
  • Pure bug fixes that do not change documented behavior

When unsure, open a small clarifying ticket/PR only if a reader of the current docs would be misled.

Workflow for one OpenWiki release

The main agent must run phase 1 through the release-research subagent first (diff + source investigation). This skill guides phase 2 shipping and judgment details the subagent also uses.

  1. After research returns features with needs_docs: true, read /memories/agent/openwiki-releases.md and skip any already recorded for that tag.
  2. Call get_docs_file on AGENTS.md and read it in full. Then call get_docs_file for OpenWiki pages named in the research report.
  3. For each remaining feature:
    • Edit surgically from the page get_docs_file content, following the docs repo AGENTS.md.
    • If a new page is required, also plan the src/docs.json navigation update.
    • Load the ship-docs-update skill and ship that feature alone with the research report's evidence as evidence_json.
  4. After shipping, append the release tag, feature name, Linear URL, and PR URL to /memories/agent/openwiki-releases.md.
  5. Keep /memories/agent/AGENTS.md short: last processed OpenWiki tag and date only.

Memory format

Use cold memory file /memories/agent/openwiki-releases.md:

md
# OpenWiki release tracking

## v0.7.0
- feature: GitHub Copilot CLI integration
  - linear: https://linear.app/...
  - pr: https://github.com/langchain-ai/docs/pull/...
- feature: entra auth configuration
  - linear: https://linear.app/...
  - pr: https://github.com/langchain-ai/docs/pull/...

File: docs-release-watch/skills/release-research/SKILL.md


name: release-research

Release research (read-only)

Use this skill only inside the release-research subagent. You investigate. You do not ship.

Goal

For one product, decide which user-facing features in the eligible release need documentation updates, with citations from the product repo at that tag.

Steps

  1. Call get_eligible_release for the product with defaults (min_age_days=7, max_age_days=30). Only releases in that window are in scope, including on a first run with empty memory. Stop if nothing is eligible. Prefer the newest candidate; do not walk older tags outside the window.
  2. Read product memory (/memories/agent/-releases.md) and skip features already tracked for that tag.
  3. Call get_release_diff for the eligible tag (omit base_tag so it resolves the previous same-prefix release). Treat the commit list and changed files as the primary signal.
  4. Call get_release_notes only as secondary context. Notes are leads, not ground truth.
  5. For each candidate feature from the diff, call get_product_source_file at the head tag and confirm the API, flag, command, default, or behavior exists.
  6. Call check_docs_coverage with the candidate symbols/flags and concrete docs page paths (for example src/oss/deepagents/customization.mdx). If every needle already appears and the existing wording is still correct, put the feature under skipped with reason "already documented".
  7. Call get_docs_file on pages that might need updates when coverage is missing or wording looks wrong.
  8. Return a single research report. Do not call Linear or PR tools (you do not have them).

Research report format

Return JSON (as your final message text) with this shape:

json
{
  "product": "deepagentsjs",
  "head_tag": "[email protected]",
  "base_tag": "[email protected]",
  "features": [
    {
      "name": "FilesystemMiddleware offloadBinaryContent",
      "needs_docs": true,
      "reason": "New public option; docs Full stack and Override sections omit it.",
      "docs_paths": ["src/oss/deepagents/customization.mdx"],
      "evidence": {
        "source_repo": "langchain-ai/deepagentsjs",
        "source_tag": "[email protected]",
        "items": [
          {
            "path": "libs/deepagents/src/middleware/filesystem.ts",
            "symbol": "offloadBinaryContent"
          }
        ]
      },
      "diff_files": [
        "libs/deepagents/src/middleware/filesystem.ts"
      ]
    }
  ],
  "skipped": [
    {
      "name": "internal test harness rename",
      "reason": "No user-facing API or docs impact."
    }
  ]
}

Set needs_docs to false (or put the item under skipped) when source shows no user-facing change, when check_docs_coverage shows the symbols are already present and correct, or when docs already cover it.

Do not

  • Open Linear issues or draft PRs
  • Invent symbols that are not in get_product_source_file or the diff
  • Recommend docs for pure refactors, dependency bumps, or internal-only changes
  • Bundle unrelated capabilities into one feature entry

File: docs-release-watch/skills/ship-docs-update/SKILL.md


name: ship-docs-update

Ship one docs update

Use this skill in phase 2 when you are ready to create tracking and a draft PR for exactly one feature from a release-research report.

One feature only

  • One Linear issue
  • One draft pull request
  • One focused branch
  • No unrelated edits in the same PR

If the research report lists multiple features, call this workflow once per feature. Do not invent features that research did not list. If you notice unrelated changes that should be made, leave them for a later research pass instead of shipping them now.

Preconditions (required)

Before calling any write tool:

  1. This run already has a release-research JSON report, and this feature appears there with needs_docs: true.
  2. You called get_docs_file on AGENTS.md in langchain-ai/docs and read it in full. That file is the style and structure authority for the PR. Do not confuse it with /memories/agent/AGENTS.md (hot memory status only).
  3. You called get_docs_file for every docs path you will change and still have that exact content.
  4. You prepared evidence_json from the research report's evidence object (the write tools re-fetch each path at the tag and refuse if the citation is missing):
json
{
  "source_repo": "langchain-ai/deepagentsjs",
  "source_tag": "[email protected]",
  "items": [
    {
      "path": "libs/deepagents/src/middleware/foo.ts",
      "symbol": "offloadBinaryContent"
    }
  ]
}

Each item needs path plus symbol or quote. Empty evidence is rejected.

Steps

  1. Edit surgically from the get_docs_file content, following the docs repo AGENTS.md (frontmatter, voice, no markdown in description, Tabler icons, sentence-case headings, no contractions, no first person, language fences, navigation rules, and the rest of that file). Change only the sections needed for this feature. Do not rewrite the rest of the page. Do not invent content for the other language fence.
  2. Create the Linear issue with create_linear_issue:
    • team_key="DOC"
    • Title: concise, feature-scoped (for example "Document OpenWiki Copilot CLI integration")
    • Description: release tag, why docs must change, files to touch, acceptance criteria
    • Pass product, release_tag, and evidence_json
    • The tool assigns the issue to the Linear API key owner (Naomi) automatically
  3. Create the draft PR with create_draft_docs_pr:
    • Branch: docs/-<version>-<feature-slug>
    • Title matches the issue scope
    • Body must include a ## Linear section with Closes [DOC-N]() (markdown hyperlink). A GitHub Action syncs Linear status from that line (draft open → In Progress, ready for review → In Review, merged → Done, closed unmerged → Canceled), so the Closes DOC-N link is required.
    • Pass the same evidence_json
    • Pass product so language-fence validation uses the registry scope (python / js / shared)
    • files_json is a JSON array of { "path": "...", "old_content": "...", "new_content": "..." }
    • old_content must be the exact string returned by get_docs_file (empty string only for a brand-new file)
    • Keep the edit surgical: the tool rejects diffs that rewrite too much of an existing page or change the other language fence
  4. Record the Linear URL and PR URL in product memory before starting the next feature. Only treat the ship as successful when both tools returned a url.

If `create_draft_docs_pr` fails

The tool rebases stale old_content onto live main when the changed hunks still apply. When it still fails (for example old_content does not match / could not be rebased):

  1. Call get_docs_file again for every path in the failed PR.
  2. Re-apply the same surgical edit on that fresh content.
  3. Retry create_draft_docs_pr once with the new old_content / new_content.
  4. If the retry also fails, call note_ship_failure_on_linear_issue with the DOC identifier and a short reason. That appends a Ship failure section (and the LangSmith run URL when available) to the issue so a human can debug. Leave the issue open. Do not claim the feature shipped.

PR body template

md
## Summary
- <one sentence on the docs change>
- Triggered by <product> <release tag>

## Linear
Closes [DOC-<number>](<issue url>)

## Source evidence
- Repo: `<owner>/<repo>`
- Tag: `<release tag>`
- `<path>`: `<symbol or short quote>`

## Test plan
- [ ] Preview the changed pages
- [ ] Confirm claims against the cited product source at the tag
- [ ] Run `make lint_prose FILES="<changed mdx paths>"` when possible

The write tools append a Source evidence section when the body omits one. Prefer writing it yourself so the citations stay next to the summary.

Do not

  • Bundle multiple features into one issue or PR
  • Ship before calling the release-research subagent in this run
  • Ship a feature that is not in the research report
  • Draft docs without reading the docs repo AGENTS.md in this run
  • Draft from release notes without reading product source at the tag
  • Pass full page contents invented from memory (always start from get_docs_file)
  • Omit old_content or invent a base that does not match main
  • Ship without evidence_json that points at product source at the tag
  • Modify docs-release-watch/ in the docs PR
  • Put secrets, tokens, or .env contents into issues or PRs
  • Mark the PR ready for review; leave it as a draft
  • Edit :::python sections for a JS-only feature, or :::js for a Python-only feature
  • Claim success without a tool-returned Linear URL and PR URL

File: openwiki/index.md


okf_version: "0.2"

Files

  • Repository Wiki Quickstart - Route documentation changes to their durable source, generated-input owner, and proportionate validation. Use this map for versioned OSS content, LangSmith documentation, runnable samples, Mintlify output, and CI automation.

Directories


File: openwiki/INSTRUCTIONS.md

A code wiki for this repository. Provide an overview of the docs and tools we use, source map, key workflows, concepts, testing guidance, and CI overview. Inspect git history to understand reasoning behind docs changes and the progression of the repository. Keep pages grounded in repository structure and recent docs and code changes. Prefer practical navigation for engineers and writers over generic summaries.


File: openwiki/quickstart.md


type: contributor routing guide
title: Repository Wiki Quickstart
tags: [quickstart, documentation, routing, validation, mintlify, langsmith]
verified:

  • by: openwiki/0.4.3
    at: 2026-10-29T08:15:48.231Z
    sources:
  • id: openwiki-source-4d9cccca7700db7220ec055e
    resource: repo://.github/workflows/_test.yml
  • id: openwiki-source-164e2da859b5277df81c7d94
    resource: repo://.github/workflows/ci.yml
  • id: openwiki-source-97746d8f3662d803e625550e
    resource: repo://.github/workflows/test-code-samples.yml
  • id: openwiki-source-8037e2358a2c4f9b2c722a11
    resource: repo://AGENTS.md
  • id: openwiki-source-012f2c78e3b1446dfc35803f
    resource: repo://Makefile
  • id: openwiki-source-b481a230af378c0c50ed9994
    resource: repo://pipeline/commands/dev.py
  • id: openwiki-source-d0cdf44431684bdedf34705a
    resource: repo://pipeline/core/builder.py
  • id: openwiki-source-17f3856bce97f37118963062
    resource: repo://pipeline/preprocessors/handle_auto_links.py
  • id: openwiki-source-05ccef8d4cf1698187f20464
    resource: repo://pyproject.toml
  • id: openwiki-source-23775c3de52f3ab95a13cb8b
    resource: repo://README.md
  • id: openwiki-source-0a0a6c8d7a88288e6b6b9b5b
    resource: repo://scripts/check_cross_refs.py
  • id: openwiki-source-fd0cb9d6fca56bf4963559e9
    resource: repo://scripts/extract_code_snippets.py
  • id: openwiki-source-560bf24db9566b97ee19e383
    resource: repo://scripts/generate_code_snippet_mdx.py
  • id: openwiki-source-2b15ecffacad911ef9db112f
    resource: repo://scripts/test_code_samples.py
  • id: openwiki-source-11d4965febd3986495e06a17
    resource: repo://src/code-samples/langsmith/create-an-agent.py
  • id: openwiki-source-efb95e7fd1324eefaec0577a
    resource: repo://src/langsmith/create-an-agent.mdx
    generated: { by: "openwiki/0.4.3", at: "2026-10-29T08:15:48.231Z" }

Repository Wiki Quickstart

This repository authors and builds the Mintlify site at docs.langchain.com. Start from the durable input, not from a rendered route: build/, deployment-generated OpenAPI endpoints, extracted snippets, and generated tables are outputs with different owners.

Route the request

If the task is about… Start with Then use
An authored page, asset, navigation item, redirect, or source-family choice The applicable src/ content and src/docs.json Adding and Moving Documentation Pages and Repository Source Map
Build routing, generated output, preprocessing, watcher behavior, or docs CLI behavior pipeline/ and the Make target that invokes it Documentation Build System
Python/JavaScript OSS routes, conditional fences, or Managed Deep Agents variants The source family and its src/docs.json navigation entries Documentation Routes and Language Versioning
A runnable example or a displayed code extract src/code-samples/, not a generated fragment Runnable Code Samples and Snippet Generation
LangSmith agent, environment, tracing, quickstart, Managed Deep Agents, or REST-reference documentation The owning src/langsmith/ page, shared snippet, sample, or OpenAPI process LangSmith Agent and Observability Documentation Changes
Core CI, a scheduled job, preview, credentials, or a bot pull request .github/workflows/ and the invoked command GitHub Actions and CI Automation
SDK API reference at reference.langchain.com The external reference-documentation process This repository does not build that site; use its issue template when reporting a problem.

AGENTS.md is the repository-wide authoring contract. It requires manually authored src/ content, plain-text frontmatter descriptions, Tabler icons, navigation updates for new pages, and tested examples. Procedures that apply only to a class of task live in .agents/skills/; run make skills in each Claude Code worktree to link them into .claude/skills/. Changes to tooling—scripts, workflows, Make targets, checks, scheduled jobs, or skills—also require the docs-tooling-notion follow-up before PR handoff.

Choose the correct source and output family

src/docs.json is the Mintlify configuration, navigation, redirect, and OpenAPI-declaration input. It is not the owner of every page it lists. Navigation labels also do not mirror directories: Build includes OSS and LangSmith content, while No-code agents is sourced from src/langsmith/fleet/. Select the source family first, then make the navigation and redirect decisions.

mermaid
flowchart TD
  Request["Documentation request"] --> Owner{"Authored or derived surface"}
  Owner -->|"authored"| Family["Choose src source family"]
  Owner -->|"derived"| Input["Find generator or declared input"]
  Family --> Routes["Set navigation and redirects"]
  Routes --> Build["Build and validate emitted routes"]
  Input --> Regenerate["Regenerate owned output"]
  Regenerate --> Build

Route changes begin with ownership; generated output is regenerated from its owner rather than edited directly.

Source family or surface Durable input Emitted result or safe action
Ordinary shared OSS content src/oss/ plus language navigation Usually Python and JavaScript output; the builder uses navigation to emit a shared Markdown page only for one language when it appears in only that language's navigation.
Language-owned OSS content src/oss/python/ or src/oss/javascript/ Only the matching language route.
OpenWiki and Deep Agents Code src/oss/openwiki/ or src/oss/deepagents/code/ One unversioned OSS route, rendered with the Python conditional branch.
Ordinary LangSmith content src/langsmith/ One unversioned /langsmith/... route.
Managed Deep Agents Direct src/langsmith/managed-deep-agents*.mdx files Python and JavaScript routes; configured unversioned aliases redirect to Python.
Mintlify configuration src/docs.json Update deliberately for new pages, route moves, redirects, navigation, and declared OpenAPI groups.
Deployment tree Authored source, configuration, and pipeline build/ is erased and recreated by a full build; never patch it.

A full DocumentationBuilder build clears build/, builds Python and JavaScript OSS variants, emits the unversioned exceptions and LangSmith content, builds Managed Deep Agents variants, then copies shared files. Inspect output to verify a change, but make corrections in its durable input. For shared OSS content, an unfenced @[ref] must resolve for both language scopes; put language-only names in :::python or :::js blocks and run make check-cross-refs.

Handle generated and deployment-time surfaces correctly

Surface encountered Change instead Follow-through
build/ Authored src/, src/docs.json, or pipeline/ Rebuild or run a preview.
src/code-samples-generated/ Marked source under src/code-samples/ Test source, then run make code-snippets.
src/snippets/code-samples/ Marked runnable sample Regenerate and review the committed MDX.
src/oss/python/integrations/providers/overview.mdx packages.yml or pipeline/tools/partner_pkg_table.py Regenerate with uv run python pipeline/tools/partner_pkg_table.py; CI rejects drift.
LangSmith REST, Agent Server, or Control Plane endpoint pages Their src/docs.json declaration and committed or remote OpenAPI source Mintlify generates endpoint pages at deployment, not in local build/.
Integration discovery tables Hosted-guide integration: frontmatter or scripts/data/integration_external_docs.yaml Validate URLs and run the owning refresh process.

Runnable samples and LangSmith documentation

A program in src/code-samples/ is both the executable example and the source of displayed snippets. make test-code-samples runs selected samples. make code-snippets extracts marked regions into ignored src/code-samples-generated/ and renders committed MDX in src/snippets/code-samples/. Therefore, change and execute the program first, then regenerate; extraction does not execute the sample.

For LangSmith agent and observability changes, follow the connected owner rather than changing one visible page in isolation:

  • src/langsmith/agents.mdx owns the agent/environment model.
  • src/langsmith/create-an-agent.mdx owns registration and compatibility-project retrieval; its display fragments derive from src/code-samples/langsmith/create-an-agent.py.
  • src/langsmith/log-traces-to-agent.mdx owns trace-destination configuration.
  • Shared LangSmith snippets own rules reused across guides. Reconcile their consumers when a shared prerequisite or routing rule changes.
  • The LangSmith REST reference is a deployment-generated surface. Change the refresh/processor policy or service-owned OpenAPI input, not individual endpoint pages.

The registration sample is deliberately deterministic: it directs the SDK at a loopback fixture and asserts the create and retrieval requests rather than creating a live agent. Keep visible calls, hidden fixture assertions, marker IDs, generated fragments, and the importing guide consistent.

bash
make test-code-samples FILES="src/code-samples/langsmith/create-an-agent.py"
make code-snippets

Develop and validate at the affected boundary

Python 3.13 or later is required. make install synchronizes Python dependencies, installs project npm dependencies and the global Mintlify CLI, and links Claude Code skills. make dev performs an initial build unless --skip-build is supplied, watches src/, and serves build/ through mint dev --port 3000; an initial build failure stops development rather than serving stale output.

Changed contract Start with
Focused prose make lint_prose FILES="src/path/to/page.mdx"
Page, navigation, redirect, route, link, or heading anchor make broken-links-with-anchors
Shared or conditional @[ref] make check-cross-refs
Pipeline, generator, or CLI Focused make test TEST_FILE=tests/unit_tests/..., then make lint as appropriate
Runnable sample or extraction markers make test-code-samples FILES="src/code-samples/...", then make code-snippets
Agent Server OpenAPI input make check-openapi
External integration URL or provider overview input uv run python scripts/refresh_integration_downloads.py --check-docs-urls or uv run python pipeline/tools/partner_pkg_table.py

make test runs pytest with Internet sockets disabled except Unix sockets. Core CI runs on pull requests, pushes to main, and manual dispatch; it invokes reusable test, lint, and link workflows and separately checks merge-conflict markers, cross-references, external integration URL schemes, and generated provider-overview drift. Built link checking rebuilds first and validates links, anchors, and redirects.

The code-sample workflow is intentionally separate because some samples use repository secrets. It skips fork pull requests, uses independent OSS and LangSmith legs, runs changed supported files on same-repository pull requests, and runs all samples on manual or scheduled invocations. Only a guarded full OSS run can refresh public trace links and generated snippets; inspect its review PR rather than treating it as source.

Continue by domain


File: openwiki/.last-update.json

{
"updatedAt": "2026-10-29T08:40:02.198Z",
"command": "update",
"gitHead": "df8e50b7a43d29baf36ea6b48c4b8eca49a226cf",
"model": "gpt-5.6-terra",
"status": "interrupted",
"language": "en"
}


File: openwiki/.page-manifest.json

{
"schemaVersion": 1,
"pages": {
"/openwiki/architecture/build-system.md": {
"pageVersion": "sha256:912b98f5dddde2c03e2d73f1ee89d5fdd46a420c8a831c1e9b46a9b06f8f919a",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/architecture/source-map.md": {
"pageVersion": "sha256:fc9128b0df33f411de3c3bee64469109f6d409ad9ddf1f1b7ff195d349f279d0",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/concepts/preprocessing.md": {
"pageVersion": "sha256:5be13cf4a483d3dd0cc75c07125e25315f39b070483d15b7770280da146ca6a3",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/concepts/versioning.md": {
"pageVersion": "sha256:9a378b41514f6fd45cc2fb910508dc72cf396cc8b3021555169a2fed126c76c6",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/integrations/github-actions.md": {
"pageVersion": "sha256:7a9e15357883db234682bf27f0a18047e457620e7963b73ac31d980b1b21a8b9",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/integrations/mintlify.md": {
"pageVersion": "sha256:5006ec04f73d6e0f8a174c1e8ad3ce47376c1a540c6c279ca52816c029b2c44c",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/integrations/npm-snippets.md": {
"pageVersion": "sha256:cc5794f493b9c3657c6cbb7ceba7936b80b45aa904c7adec090cb86d44542a71",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/integrations/reference-docs.md": {
"pageVersion": "sha256:87b67e5c39e29c1194bbbf57c48983c4189c99c00a7eb80cbe567c8554a50885",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/operations/adding-pages.md": {
"pageVersion": "sha256:99d16e86386278f4e9821428eaa9e0e69e797fa6fa1f839c76fc82a5aa58b870",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/operations/cli-tools.md": {
"pageVersion": "sha256:f3d52a29f8af7bdf029b4de65417dbf7145a3073d4c1565a67a60f28fc37d91f",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/operations/cross-references.md": {
"pageVersion": "sha256:0fe7d49f93e60c183cf365992d04990e2c465538d3dc23093def9df53a2b2630",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/quickstart.md": {
"pageVersion": "sha256:27d82f0ec18ab02dfb1df495be27851fa653c0db8805fba5f6f723a8df7b6e4a",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/testing/builder-tests.md": {
"pageVersion": "sha256:075328c59a95482e51e04c1ec01b4ec9c38ea46714fc8fcbc2e5f9e0a582b552",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/testing/conditional-rendering.md": {
"pageVersion": "sha256:ba6fc49130e066bb8964e51b88e6f6e35de241874a19c2016ce98fdb7ebb1fb6",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/testing/test-overview.md": {
"pageVersion": "sha256:f21a26488e73136436f9b84a141b0518e6fd6a80b6063eb90182b1d99aaaab2b",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/workflows/local-development.md": {
"pageVersion": "sha256:7dc05ee57632265a1ff81169e876a5d06c2854e4bf4344b44ba7c3cbf78b3cf6",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
},
"/openwiki/workflows/versioned-content.md": {
"pageVersion": "sha256:88b52798ebb5aa9f77c67018f465ee63b3a7bf4b3261005d74ebcb75eb9bfe0b",
"completedBy": "openwiki/0.5.0",
"completedRunId": "d6c27dde-b6ee-4fa2-a58e-46062acd3170",
"gitHead": "68512c2429a64dc27910103f0b656e0b6feafe55",
"sourceFingerprint": "sha256:0e18d78f74777334899afd9c5b5b69aab7a5b4fcd2a28464368a929e6c7d4e8e"
}
}
}


File: openwiki/architecture/build-system.md


type: architecture
title: Documentation Build System
tags: [build-system, documentation-pipeline, mintlify, preprocessing, content-routing]
verified:

  • by: openwiki/0.4.3
    at: 2026-10-29T08:15:48.231Z
    sources:
  • id: openwiki-source-012f2c78e3b1446dfc35803f
    resource: repo://Makefile
  • id: openwiki-source-41f7c907e42a5efd3b3405cd
    resource: repo://pipeline/commands/build.py
  • id: openwiki-source-b481a230af378c0c50ed9994
    resource: repo://pipeline/commands/dev.py
  • id: openwiki-source-d0cdf44431684bdedf34705a
    resource: repo://pipeline/core/builder.py
  • id: openwiki-source-636af982f42ea94123d2d7e9
    resource: repo://pipeline/core/watcher.py
  • id: openwiki-source-17f3856bce97f37118963062
    resource: repo://pipeline/preprocessors/handle_auto_links.py
  • id: openwiki-source-06a4c757b1153b7de4f47a0e
    resource: repo://pipeline/preprocessors/markdown_preprocessor.py
  • id: openwiki-source-3ae8d89866d72418f1bdab6b
    resource: repo://pipeline/preprocessors/utm_links.py
  • id: openwiki-source-23775c3de52f3ab95a13cb8b
    resource: repo://README.md
  • id: openwiki-source-a9a8730b7e43a5ad2d0af4f1
    resource: repo://src/docs.json
  • id: openwiki-source-24e5f74f0f40e9bfd381871f
    resource: repo://tests/unit_tests/test_builder.py
  • id: openwiki-source-16b92823fdcb07d686f2e27f
    resource: repo://tests/unit_tests/test_watcher.py
    generated: { by: "openwiki/0.4.3", at: "2026-10-29T08:15:48.231Z" }

Documentation Build System

DocumentationBuilder is the boundary between authored src/ content and build/, the generated tree consumed by Mintlify. build/ is disposable: a full build deletes it before recreating it. Edit src/, not build/.

Entrypoints and full reconstruction

make build installs npm dependencies and invokes uv run pipeline build. The docs console script exposes the same CLI. The build handler verifies that src/ exists, constructs DocumentationBuilder(src, build), and calls build_all(); a missing source returns exit code 1.

mermaid
flowchart TD
    Source["Authored src tree"] --> Clear["Clear and recreate build"]
    Clear --> Py["Build OSS Python output"]
    Py --> Js["Build OSS JavaScript output"]
    Js --> Unversioned["Build Deep Agents Code OpenWiki and LangSmith"]
    Unversioned --> Managed["Build Managed Deep Agents variants"]
    Managed --> Shared["Copy shared files and render snippets"]
    Shared --> Overlay["Overlay npm components"]
    Overlay --> Mint["Mintlify consumes build"]
    Source --> Watch["Watcher receives file event"]
    Watch --> Incremental["Incremental build_file"]
    Incremental --> Touch["Touch expected output for reload"]
    Touch --> Mint

This flowchart distinguishes the authoritative full reconstruction (top path) from the narrower watch path (bottom path).

A full build proceeds in the order shown: two ordinary OSS passes, unversioned Deep Agents Code and OpenWiki, ordinary LangSmith, Managed Deep Agents variants, shared-file copying, and the npm component overlay. The overlay runs last and can replace source-tree copies. The builder does not generate llms artifacts.

Routing is content-aware

The source location selects a routing family, but ordinary shared OSS Markdown is not blindly duplicated. The builder recursively reads navigation from src/docs.json, collecting routes below oss/python/ and oss/javascript/; the result is cached until the configuration modification time changes. A shared .md or .mdx page listed only in one language navigation is emitted only for that language. A page listed in both, in neither, or a non-Markdown asset is emitted for both. A navigation entry for dir can stand for dir/index, unless a language-specific src/oss/python/dir.mdx or src/oss/javascript/dir.mdx owns that route. If docs.json is missing or invalid, the safe fallback is both languages.

Source family Output and render target
Ordinary shared src/oss/ content build/oss/python/... and/or build/oss/javascript/..., selected from navigation; Python and JavaScript rendering respectively.
src/oss/python/ or src/oss/javascript/ content Only the matching full-build language pass; the language source segment is removed from the output route.
src/oss/deepagents/code/ One unprefixed build/oss/deepagents/code/... tree, rendered with the Python target.
src/oss/openwiki/ One unprefixed build/oss/openwiki/... tree, rendered with the Python target.
Ordinary src/langsmith/ One build/langsmith/... tree, rendered with the Python target.
Direct src/langsmith/managed-deep-agents*.mdx build/langsmith/python/... and build/langsmith/javascript/...; no unversioned page is emitted.
Root and shared inputs Source-relative output under build/, built or copied once.

Deep Agents Code and OpenWiki are deliberate OSS exceptions: they retain unprefixed routes and their :::python branch. Managed Deep Agents is the LangSmith exception. Direct Markdown/MDX files whose names begin managed-deep-agents get both language routes; docs.json supplies redirects from unversioned Managed Deep Agents URLs to the Python routes. The renderer also changes unprefixed Managed Deep Agents links to the current language route.

For language-targeted output, absolute /oss/... links are rewritten as /oss/python/... or /oss/javascript/.... Already-prefixed links, image paths, and Deep Agents Code and OpenWiki routes are exempt, because those destinations are not language-duplicated.

Markdown transformation pipeline

Markdown and MDX are transformed only for output. Processing order is: standard preprocessing, language-specific snippet-import rewriting when there is a language target, OSS-link rewriting, Managed Deep Agents-link rewriting, then the contributor footer. .md inputs become .mdx output.

Standard preprocessing resolves @[LinkName] references using scope-specific SCOPE_LINK_MAPS, adds UTM parameters to selected LangSmith CTA links, then evaluates conditionals. :::python content is retained for Python and removed for JavaScript; :::js behaves conversely. Unsupported conditional labels remain intact, and escaped \::: is unescaped to literal text. A missing autolink is logged rather than making the build fail. The UTM pass preserves existing query parameters, leaves functional LangSmith paths alone, and skips fenced code.

The output-only contributor footer is omitted for the root index.mdx and any path containing snippets. Other Markdown includes calls to connect the documentation, edit the source on GitHub, or file an issue.

Shared files and snippets

is_shared_file() identifies docs.json; selected root pages; every path under snippets, images, .well-known, or fonts; and .js and .css files. Full builds collect these from the whole source tree once. Supported types include Markdown, JSON and YAML, common image/video formats, CSS/JS, JSX/TSX, text/HTML, and common web fonts. TEMPLATE.mdx and unsupported extensions are skipped; docs.yml is converted to JSON and other supported non-Markdown files are copied with copy2.

Markdown snippets have a special contract. Each is written at its source-relative path with Python-resolved links, and also beneath build/snippets/python/ and build/snippets/javascript/ with the corresponding conditions and links. A language-targeted MDX page importing from '/snippets/foo.mdx' is rewritten to import the corresponding language-specific Markdown copy. JSX and TSX snippet components remain shared.

Finally, the builder copies PatternEmbed.jsx and ExampleEmbed.jsx from node_modules/@langchain/docs-sandbox/dist into build/snippets/, and ChatLangChainEmbed.js to the build root. Available package files overwrite copies previously obtained from src; missing package directories or mapped files are warnings.

Development is incremental, not reconstruction

make dev installs npm dependencies and starts pipeline dev. Unless --skip-build is supplied, it performs the full build first, then watches src/ recursively and runs mint dev --port 3000 with build/ as its working directory. It fails if initial construction fails, mint cannot be started, the Mint process exits nonzero, or the watcher stops unexpectedly; shutdown stops the watcher and terminates Mint, escalating to kill after five seconds.

The watcher queues supported created and modified files, rejects editor backups and temporary files, debounces events for 0.2 seconds, and builds a batch in worker threads (up to four). Afterwards it touches predicted output files so Mintlify detects the change. Incremental output is intentionally weaker than a full build:

  • Deletion removes only the source-relative output path, not every language or special route. A deleted versioned or Managed Deep Agents source can therefore leave generated variants until the next full build.
  • build_file() does not rerun whole-tree shared-file collection or the npm overlay. Use a full build after cross-file, navigation, package, or deletion changes.
  • Managed Deep Agents pages rebuild into both routes, but the watcher treats LangSmith as unversioned for touching and does not touch those routes. Perform a full build if hot reload misses such an edit.

Validation, safety, and change tests

Validation operates on generated output. make broken-links builds first, then runs mint broken-links --check-redirects from build/, filters known deployment-time OpenAPI and standalone-snippet reports, and fails if remaining broken-link lines exist. make broken-links-with-anchors also checks anchors. Deployment-time OpenAPI endpoint pages are intentionally absent from local output. make export runs Mint export from build/ after verifying CLI support and rejecting Node major versions 25 or newer; make htmltest unpacks the export and checks external links only.

Whole-tree collection rejects symlinks—even symlinks to regular files—and only accepts regular files resolving beneath the requested source root. This prevents source-tree links from carrying host content into artifacts.

The focused builder tests cover navigation-aware selection, language-routing exceptions, link and snippet rewriting, Managed Deep Agents output, and symlink rejection. Watcher tests cover filtering editor backup and temporary names. When changing routing or generated output, update these observable-output tests and run a full build as well as the focused suite.


File: openwiki/architecture/index.md

Files

  • Documentation Build System - How the documentation pipeline reconstructs the Mintlify build tree from src, selects language-aware OSS output, preprocesses Markdown, and supports local development.
  • Repository Source Map - Maps the durable owners of documentation, navigation, generated source, automation, and deployment output. Use it to select the safe change boundary and avoid editing derived artifacts.

File: openwiki/architecture/source-map.md


type: architecture reference
title: Repository Source Map
tags: [documentation, build, automation, repository]
verified:

  • by: openwiki/0.4.3
    at: 2026-10-29T08:15:48.231Z
    sources:
  • id: openwiki-source-5c124605ed6e394bffee862c
    resource: repo://.github/workflows/_check-links.yml
  • id: openwiki-source-67b847f2c6d57526390e4981
    resource: repo://.github/workflows/check-integration-repos.yml
  • id: openwiki-source-164e2da859b5277df81c7d94
    resource: repo://.github/workflows/ci.yml
  • id: openwiki-source-f2608d0d515da097485b6ec5
    resource: repo://.github/workflows/publish.yml
  • id: openwiki-source-5153f86e64d6ee0b305f72b3
    resource: repo://.github/workflows/refresh-langsmith-openapi.yml
  • id: openwiki-source-4de47c60d7e3210385c34d35
    resource: repo://.github/workflows/update-package-downloads.yml
  • id: openwiki-source-8037e2358a2c4f9b2c722a11
    resource: repo://AGENTS.md
  • id: openwiki-source-012f2c78e3b1446dfc35803f
    resource: repo://Makefile
  • id: openwiki-source-e52f38a56cc76188818237f7
    resource: repo://packages.yml
  • id: openwiki-source-6e6efa1569f158fcdb678ef0
    resource: repo://pipeline/cli.py
  • id: openwiki-source-b481a230af378c0c50ed9994
    resource: repo://pipeline/commands/dev.py
  • id: openwiki-source-d0cdf44431684bdedf34705a
    resource: repo://pipeline/core/builder.py
  • id: openwiki-source-17f3856bce97f37118963062
    resource: repo://pipeline/preprocessors/handle_auto_links.py
  • id: openwiki-source-dca59d03b9433eea9242c2e4
    resource: repo://pipeline/preprocessors/link_map.py
  • id: openwiki-source-06a4c757b1153b7de4f47a0e
    resource: repo://pipeline/preprocessors/markdown_preprocessor.py
  • id: openwiki-source-0539c4d1a36abb10d1ed2fa9
    resource: repo://pipeline/tools/partner_pkg_table.py
  • id: openwiki-source-05ccef8d4cf1698187f20464
    resource: repo://pyproject.toml
  • id: openwiki-source-23775c3de52f3ab95a13cb8b
    resource: repo://README.md
  • id: openwiki-source-bbd7fe20e2563e842ee80a78
    resource: repo://scripts/check_integration_repos.py
  • id: openwiki-source-0d19fa2f26e6485d05a6b929
    resource: repo://scripts/data/integration_external_docs.yaml
  • id: openwiki-source-fd0cb9d6fca56bf4963559e9
    resource: repo://scripts/extract_code_snippets.py
  • id: openwiki-source-560bf24db9566b97ee19e383
    resource: repo://scripts/generate_code_snippet_mdx.py
  • id: openwiki-source-697851c98229599f97376bfb
    resource: repo://scripts/process_langsmith_openapi.py
  • id: openwiki-source-63d8ba810a7c0181c548a307
    resource: repo://scripts/refresh_integration_downloads.py
  • id: openwiki-source-381b2039419503f4809ac2df
    resource: repo://src/code-samples/deepagents/rag-deep.py
  • id: openwiki-source-11d4965febd3986495e06a17
    resource: repo://src/code-samples/langsmith/create-an-agent.py
  • id: openwiki-source-a9a8730b7e43a5ad2d0af4f1
    resource: repo://src/docs.json
  • id: openwiki-source-efb95e7fd1324eefaec0577a
    resource: repo://src/langsmith/create-an-agent.mdx
  • id: openwiki-source-31a97ae83c418d97b331e7df
    resource: repo://src/snippets/code-samples/create-agent-py.mdx
  • id: openwiki-source-3e7f005be053311cf7eb12f1
    resource: repo://src/snippets/code-samples/rag-deep-index-py.mdx
  • id: openwiki-source-24e5f74f0f40e9bfd381871f
    resource: repo://tests/unit_tests/test_builder.py
    generated: { by: "openwiki/0.4.3", at: "2026-10-29T08:15:48.231Z" }

This repository builds the Mintlify site at docs.langchain.com; it does not build the separately generated reference.langchain.com site. The primary boundary is durable input versus output: src/ is authored documentation, src/docs.json is the Mintlify site contract, and build/ is disposable deployment output. Never edit build/.

mermaid
flowchart TD
    Source["Authored source in src"] --> Builder["DocumentationBuilder"]
    Builder --> Output["Disposable build output"]
    Config["src/docs.json"] --> Mintlify["Mintlify deployment"]
    Output --> Mintlify
    Mintlify --> Site["docs.langchain.com"]
    Metadata["Package and integration metadata"] --> Generators["Committed-source generators"]
    Generators --> Source
    Upstream["LangSmith OpenAPI host"] --> Processor["OpenAPI processor"]
    Processor --> Spec["Committed OpenAPI input"]
    Spec --> Mintlify

This flow distinguishes authored and generated-but-committed inputs from deployment output. Mintlify generates configured OpenAPI endpoint pages during deployment; reference.langchain.com is an external build.

Ownership boundaries

Concern Durable owner Safe change
Page prose, frontmatter, assets, UI fragments, and runnable examples src/ Edit source, not build/.
Navigation, redirects, site settings, and OpenAPI declarations src/docs.json Update navigation deliberately as well as adding a page.
Routes and Markdown transformations pipeline/ Change pipeline code with focused tests.
Deployment artifact build/ Regenerate; never patch.
Package catalogue packages.yml Change metadata or its generator, then regenerate outputs.
External integration rows scripts/data/integration_external_docs.yaml Change the record, not a generated table row.
LangSmith REST specification src/langsmith/langsmith-platform-openapi.json and its processor Change policy or refresh the committed input, not deployment-generated endpoint MDX.
Verification and publication tests/, Makefile, and .github/workflows/ Change the invariant owner alongside its focused checks.

Authored documentation, labels, and routes

src/ is organized for authoring ownership, not as a URL or reader-navigation mirror. For example, LangSmith content is in src/langsmith/, OSS content is in src/oss/, reusable MDX and components are in src/snippets/, images and fonts are shared inputs, and src/code-samples/ holds runnable programs. Reader-facing product and menu labels deliberately cross those directories: the Build menu includes both OSS and LangSmith content, while Test, Deploy, and Monitor draw from LangSmith. Find the owner by directory; find the reader-facing location in src/docs.json.

A page emitted by the builder is not automatically discoverable. src/docs.json independently owns menus, redirects, and OpenAPI configuration, so adding or moving a page requires an explicit navigation decision and a redirect when retaining a public URL.

DocumentationBuilder.build_all() recreates build/, builds Python and JavaScript OSS variants, emits Deep Agents Code and OpenWiki once at unversioned OSS routes, builds LangSmith content, then copies shared files including docs.json. Regular OSS pages land under oss/python/ and oss/javascript/. src/oss/openwiki/ and src/oss/deepagents/code/ intentionally land only at unversioned paths; the Build navigation lists the OpenWiki paths under both language dropdowns. Managed Deep Agents is a distinct exception: matching src/langsmith/managed-deep-agents*.mdx files produce Python and JavaScript routes, while configured unversioned legacy URLs redirect to the Python route.

Source collection is containment-safe: the builder skips source-tree symlinks and files whose resolved path leaves the collection root. Preserve that safeguard when changing traversal or adding a collection.

Markdown, snippets, and cross-references

Before writing MD or MDX, the builder resolves @[...] cross-references, adds UTM parameters to eligible LangSmith CTA links, and selects the target :::python or :::js content while leaving unsupported conditional labels intact. The scoped entries in pipeline/preprocessors/link_map.py are the authority for cross-reference symbols. An unresolved symbol is logged and left literal rather than receiving a guessed URL.

Snippets are shared source but have language-aware Markdown copies: the build writes the source-relative copy plus Python and JavaScript copies, and rewrites language-targeted MDX imports to the corresponding copy. JSX and TSX components stay shared.

API-reference boundaries

Do not conflate three reference surfaces:

  • reference.langchain.com is generated and deployed outside this repository. This repository only routes issue reports for it.
  • src/docs.json declares Agent Server, Control Plane, and LangSmith REST OpenAPI sources. Mintlify creates their endpoint pages during deployment; they are neither authored MDX nor builder output.
  • src/langsmith/langsmith-platform-openapi.json is a generated-but-reviewed committed input. Its processor fetches only an allow-listed LangSmith host (or reads a local input), hides fleet/internal and configured health operations, assigns and orders tag groups, and normalizes visible operation titles before writing the file.

The daily OpenAPI workflow runs that processor, makes no commit when the specification is unchanged, and appends changes to the existing chore/refresh-langsmith-openapi pull request. Change the processing policy or upstream contract rather than hand-editing endpoint pages.

Development, verification, and publication

The docs console script exposes the pipeline CLI. docs dev builds initially unless --skip-build is selected, watches src/, and starts mint dev in build/; an initial build failure prevents server startup. make build, make dev, and the link-check targets are the standard wrappers.

CI calls reusable test, lint, and link-validation workflows and cancels an older run for the same workflow and ref when a newer push arrives. Separate jobs check merge-conflict markers, cross-references, external integration URL schemes, and generated provider output. The link workflow builds the site, validates links with anchors and redirects, and checks the Agent Server OpenAPI specification. The generated-file check regenerates src/oss/python/integrations/providers/overview.mdx and rejects drift except for its stated automation and label bypasses.

Publication is separate from CI: a main push runs make build, verifies build/, places it at public/build, and publishes it to the prod branch. That makes reproducibility, rather than edits to output, the operational requirement.

Runnable samples and derived snippets

src/code-samples/ owns executable documentation examples. make test-code-samples executes them; make code-snippets extracts marked regions to the ignored src/code-samples-generated/ intermediate and renders committed display MDX under src/snippets/code-samples/. Edit and test the program, then regenerate; do not hand-edit either derived layer.

Snippet markers make the source-to-display relationship deterministic. For example, rag-deep.py marks rag-deep-index-py, whose display fragment is src/snippets/code-samples/rag-deep-index-py.mdx. The extractor removes marked non-display regions and errors on an unclosed removal marker; repair markers in the runnable source. The generator supports Python, TypeScript, Java, Kotlin, Go, and shell intermediates.

The agent-registration guide demonstrates the boundary: create-an-agent.mdx imports create-agent-py.mdx, derived from a marked region in src/code-samples/langsmith/create-an-agent.py. That sample points the SDK at a loopback fixture and asserts create and retrieve requests, so running it does not create a live agent.

Package and integration metadata

packages.yml is package metadata for generated integration surfaces. The partner-package generator writes the Python provider overview, and CI rejects manual edits to it. The weekly package-download workflow updates metadata, regenerates the overview plus download and featured snippets, and creates a pull request only when tracked outputs changed.

Integration download tables combine hosted integration-page frontmatter with scripts/data/integration_external_docs.yaml. An external entry's validated docs_url supplies the name link instead of a hosted guide; CI validates allowed schemes. Use the YAML entry for a third-party row, not a handwritten generated row.

The Monday repository-liveness workflow runs the checker with --write and maintains one standing draft PR on chore/dead-integration-repos. For a dead third-party GitHub home, the checker can adopt a live third-party replacement evidenced by PyPI, npm, or external documentation. It keeps live GitLab, partner-documentation, and first-party alternatives for human attention; with no live alternate, it delists the package and removes associated listing surfaces.

Change guide

  1. Add or move a page: edit the owning src/ MDX, then update src/docs.json; do not infer navigation from the directory name.
  2. Change routes, language rendering, snippets, or preprocessing: modify pipeline/, preserve containment safety, add a focused test, and rebuild.
  3. Change a runnable example: edit and test src/code-samples/, run make code-snippets, and commit the rendered snippet MDX—not the ignored intermediate.
  4. Change provider or integration listings: choose packages.yml, hosted-page frontmatter, or integration_external_docs.yaml by ownership, then regenerate.
  5. Change Mintlify API reference: change src/docs.json, the committed specification, or process_langsmith_openapi.py; never author deployment-generated endpoint MDX.
  6. Fix an API symbol link: amend the scoped mapping in pipeline/preprocessors/link_map.py and verify preprocessing rather than pasting a guessed URL into output.
  7. Change verification or scheduled maintenance: update the workflow, script, and tests together; preserve the standing-PR behavior of OpenAPI and integration-repository maintenance.

File: openwiki/concepts/index.md

Files

  • Markdown Preprocessing - Build-time Markdown and MDX transformations for scoped API references, CTA attribution, language branches, and route-aware output. Documents fence and escape invariants plus strict source cross-reference validation.
  • Documentation Routes and Language Versioning - Explains how source families and docs.json navigation determine generated documentation routes, language variants, conditional content, and compatibility redirects. Covers unversioned product exceptions and safe verification of route changes.

File: openwiki/concepts/preprocessing.md


type: documentation pipeline
title: Markdown Preprocessing
tags: [build, markdown, preprocessing, cross-references, language-versioning, api-reference]
sources:

  • id: openwiki-source-012f2c78e3b1446dfc35803f
    resource: repo://Makefile
  • id: openwiki-source-d0cdf44431684bdedf34705a
    resource: repo://pipeline/core/builder.py
  • id: openwiki-source-17f3856bce97f37118963062
    resource: repo://pipeline/preprocessors/handle_auto_links.py
  • id: openwiki-source-dca59d03b9433eea9242c2e4
    resource: repo://pipeline/preprocessors/link_map.py
  • id: openwiki-source-06a4c757b1153b7de4f47a0e
    resource: repo://pipeline/preprocessors/markdown_preprocessor.py
  • id: openwiki-source-3ae8d89866d72418f1bdab6b
    resource: repo://pipeline/preprocessors/utm_links.py
  • id: openwiki-source-0a0a6c8d7a88288e6b6b9b5b
    resource: repo://scripts/check_cross_refs.py
  • id: openwiki-source-24e5f74f0f40e9bfd381871f
    resource: repo://tests/unit_tests/test_builder.py
  • id: openwiki-source-c2764a7369c8fbf3e49da6f8
    resource: repo://tests/unit_tests/test_check_cross_refs.py
  • id: openwiki-source-2ecfcd33b729fccd843ab705
    resource: repo://tests/unit_tests/test_handle_auto_links.py
  • id: openwiki-source-5255204fc494ae04cd6ba685
    resource: repo://tests/unit_tests/test_utm_links.py
    generated: { by: "openwiki/0.4.3", at: "2026-10-29T08:15:48.231Z" }
    verified:
  • by: openwiki/0.4.3
    at: 2026-10-29T08:15:48.231Z

Markdown Preprocessing

DocumentationBuilder transforms source Markdown and MDX while writing build artifacts; it does not edit source files under src/. The pipeline lets one shared page produce Python and JavaScript variants without authors manually qualifying every API reference, route, snippet import, or CTA.

For a regular Markdown file, preprocess_markdown() resolves scoped cross-references, decorates eligible LangSmith CTA links, and renders conditional language blocks. The builder then scopes snippet imports, rewrites routes, appends an eligible source footer, and writes the artifact.

mermaid
flowchart TD
    Source["Markdown or MDX source"] --> Select["Select build target"]
    Select --> Python["Python target"]
    Select --> JavaScript["JavaScript target"]
    Python --> References["Resolve scoped references"]
    JavaScript --> References
    References --> Cta["Decorate LangSmith CTA links"]
    Cta --> Conditional["Render conditional blocks"]
    Conditional --> Snippets["Scope snippet imports"]
    Snippets --> Oss["Rewrite OSS routes"]
    Oss --> Managed["Rewrite Managed Deep Agents routes"]
    Managed --> Footer["Append eligible footer"]
    Footer --> Output["Regular page artifact"]
    Source --> SnippetSource["Shared Markdown snippet"]
    SnippetSource --> SnippetPython["Python snippet copy"]
    SnippetSource --> SnippetJavaScript["JavaScript snippet copy"]
    SnippetPython --> SnippetProcess["Preprocess and rewrite routes"]
    SnippetJavaScript --> SnippetProcess
    SnippetProcess --> SnippetOutput["Language-prefixed snippet artifacts"]

The diagram shows the ordered regular-page sequence and the separate Python and JavaScript branches used for shared snippets.

Entry points and language selection

_process_markdown_file() reads a .md or .mdx input, delegates content work to _process_markdown_content(), appends the footer, converts .md output to .mdx, and writes the result. _process_markdown_content() calls preprocess_markdown(), scopes Markdown snippet imports when a target is supplied, then rewrites OSS and Managed Deep Agents routes.

The preprocessing target keys are python and js; DocumentationBuilder.language_url_names turns them into the route segments python and javascript. If preprocess_markdown() receives no target, it uses TARGET_LANGUAGE, defaulting to python; its default_scope likewise defaults to that target. Conditional rendering rejects any other target with ValueError.

Build routing selects those targets deliberately:

  • A shared oss/ Markdown page is emitted for both Python and JavaScript unless docs.json navigation lists its route in exactly one language; in that case it is emitted only for that language. Files already below oss/python/ or oss/javascript/ are selected only for their matching build.
  • oss/deepagents/code and oss/openwiki are emitted once with Python selection and retain language-agnostic routes.
  • Ordinary LangSmith Markdown is built once with Python selection, while Managed Deep Agents pages emit Python and JavaScript routes.
  • Each Markdown snippet is emitted below build/snippets/python/ and build/snippets/javascript/, plus a Python-default base copy for unversioned consumers.

For the wider route model, see Language Versioning Strategy and Build System Architecture.

Source-level transformations

1. Scoped cross-references

Authors can write @[link_name], @[title][link_name], and @[link_name]. replace_autolinks() looks up the key in SCOPE_LINK_MAPS and produces a Markdown link; a custom title is retained, and the simple backticked form retains backticks in its generated link text. Prefix a reference with \ to show it literally: it is not resolved, and the final pass removes the escape.

Resolution starts in default_scope. A :::python or :::js line changes the active scope; a bare closing ::: resets it to the default scope. Regular backtick and tilde code fences prevent both reference replacement and scope changes within their content. An unclosed regular fence protects the remaining input from reference replacement.

Fence protection is deliberately lightweight: both the autolink and CTA passes maintain one Boolean that toggles on every line beginning with at least three backticks or tildes. They do not pair an opening delimiter with a matching delimiter. Keep well-formed, balanced fences in authored input; malformed or mixed fence markers can change which later lines the source-level passes treat as code.

SCOPE_LINK_MAPS is assembled by scope from host-and-scope LINK_MAPS entries: relative targets are joined to the entry host, while absolute targets remain absolute. The maps deliberately allow one key to resolve differently in Python and JavaScript and include compatibility aliases where shared prose needs the other language's API spelling.

The MCP entries illustrate this distinction. Python mappings include MCPAdapter, tool conversion, MultiServerMCPClient, MCP loading, interceptor, callback, and connection/session references. JavaScript maps MCPAdapter and MCPAdapter.listTools to its JavaScript reference surface. Use the spelling appropriate to the fenced language; do not assume that a Python-specific key is available in the JS map.

A missing key is deliberately non-fatal during a build: preprocessing logs it at info level with file, line, key, and scope, then leaves the authored marker literal. The special runtime global scope logs an error and falls back to Python. Add or correct mappings in pipeline/preprocessors/link_map.py, then run the strict source-validation gate described below. See Cross-Reference Links.

2. LangSmith CTA attribution

add_utm_to_cta_links() recognizes only Markdown-link URLs beginning https://smith.langchain.com whose parsed path is empty, /, /agents, or /agents/. It adds utm_source=docs, utm_medium=cta, utm_campaign=langsmith-signup, and utm_content, which is derived from the file path after src/; for example, src/langsmith/home.mdx produces langsmith-home. Existing query parameters and an optional Markdown link title are preserved.

Functional routes such as settings, hub, projects, public traces, and Studio are not decorated. Links on another host, including api.smith.langchain.com, are also unchanged. Backtick and tilde fenced code is skipped.

3. Conditional language blocks

:::python ... ::: and :::js ... ::: are processed after references and CTA decoration. The selected block emits its content without fences and the other supported block is removed. Unsupported language identifiers are left intact; unclosed blocks do not match and remain intact. Escaped \::: markers are unescaped, allowing literal conditional syntax in output.

The implementation is a whole-input regular-expression transformation, rather than a nested-block parser: the first eligible closing marker at the opening indentation ends the match. Unlike the two earlier transformations, it is not code-fence-aware. Escape literal ::: syntax in examples that must not be rendered. See Conditional Rendering Tests.

Validation and fence boundaries

make check-cross-refs is the strict authoring gate for missing mappings; it is intentionally different from the non-fatal behavior of build-time preprocessing. The command runs scripts/check_cross_refs.py on Markdown and MDX under src/, reusing the cross-reference and fence patterns. It skips regular code fences, escaped references, snippets/code-samples/, and paths containing node_modules; files that cannot be decoded as UTF-8 are skipped with a warning.

The validator checks every shared, unfenced oss/ reference against both Python and JS maps, independent of navigation-based build selection. oss/python/ and oss/javascript/ instead use one scope, as do language fences. It requires resolution in all applicable scopes, so a Python-only reference in shared unfenced OSS content fails rather than silently producing a literal reference in a JavaScript variant. Any unresolved reference makes the command exit with status 1.

Output-time rewrites

After source preprocessing, the regular-file path applies these transformations in order:

  1. Snippet import scoping. An MDX import from /snippets/...md or .mdx becomes /snippets/{python|javascript}/... for a language build. Imports already prefixed with python/ or javascript/ remain unchanged. The rewrite targets Markdown snippet imports, whose language-specific copies contain absolute OSS links for consumers at arbitrary nesting depth.
  2. OSS route rewriting. Markdown URLs and HTML href values beginning /oss/ receive the selected language segment. Paths already prefixed with a language, paths containing images, and the language-agnostic /oss/deepagents/code and /oss/openwiki paths remain unchanged.
  3. Managed Deep Agents routes. Bare Markdown or HTML /langsmith/managed-deep-agents... URLs become /langsmith/{language}/managed-deep-agents.... Already language-qualified URLs do not match the bare-route pattern.
  4. Source footer. _add_suggested_edits_link() appends a Mintlify callout with a documentation/MCP connection link and GitHub edit and issue links only for files below src/. It excludes the root index.mdx and a path with a snippets segment.

Snippet Markdown is processed separately for each language, with preprocessing plus OSS and Managed Deep Agents rewriting, then written below build/snippets/{python|javascript}/. A Python-default base copy is also written for unversioned imports. This path does not add the source footer.

Failure behavior and safe changes

  • Missing references are non-fatal during preprocessing, but should fail make check-cross-refs before merge.
  • Invalid conditional targets, and exceptions from regular content or file processing, are logged and re-raised, stopping that build path.
  • Source-footer generation is best-effort: an internal failure is logged and the original content is returned.
  • The builder rejects symlinks and paths resolving outside a scanned source root, so a documentation build cannot follow a committed link to host content.

When extending this pipeline, preserve the order. Scope-sensitive references must resolve while conditional fences still exist. Keep the rewrite exclusion guards: removing them can double-prefix routes or break the deliberately language-agnostic products. New reusable Markdown snippets must continue to receive language-specific copies because importing pages can be deeply nested. When adding a shared reference, ensure that its key exists in both maps or fence it to the language that owns it.

Focused regression coverage

tests/unit_tests/test_handle_auto_links.py covers replacement outside regular fences, preservation inside backtick, tilde, extended, indented, and unclosed fences, conditional-looking lines inside code, and escaping. tests/unit_tests/test_utm_links.py covers the CTA allowlist, path-derived attribution, preservation of query strings and titles, functional/API-domain exclusions, and fence skipping.

tests/unit_tests/test_check_cross_refs.py covers scope-aware validation, the both-scope requirement for shared OSS content, titled and backticked references, and exclusions. Builder tests cover language route insertion and exemptions, scoped snippet copies, and Managed Deep Agents variants. See Test Overview for the wider suite.