Skip to main content

Azure Functions LangGraph

Deploy existing LangGraph graphs as Azure Functions Python v2 HTTP endpoints without writing request wrappers. This is a deployment adapter, not an agent builder or a replacement for LangGraph.

PyPI CI Security Docs

한국어 · 日本語 · 简体中文

Installation

Python 3.11–3.14 is supported. Azure Functions hosting support depends on the selected plan/runtime; see deployment.

pip install azure-functions-langgraph

Quick Start

Save as function_app.py in a Functions app with host.json:

from typing import TypedDict
from langgraph.graph import START, END, StateGraph
from azure_functions_langgraph import LangGraphApp
class State(TypedDict):
    message: str
builder = StateGraph(State)
builder.add_node("echo", lambda state: {"message": state["message"]})
builder.add_edge(START, "echo")
builder.add_edge("echo", END)
app = LangGraphApp()
app.register(builder.compile(), "echo")
func_app = app.function_app

Run func start, then POST {"input":{"message":"hello"}} to http://localhost:7071/api/graphs/echo/invoke; the result is {"output":{"message":"hello"}}. Deployed routes require a function key by default. Follow the 5-minute tutorial for complete project files, local setup and deployment.

Deploy to Azure (default path)

One path, start to finish: the 5-minute tutorial: local invoke, minimal Azure resources, publish, authenticated cloud invoke, cleanup. Stateless graphs need only the Storage Account Azure Functions itself requires. Premium, Blob/Table persistence, Platform compatibility, Managed Identity and distributed locks are optional next steps in the advanced deployment guide. Cloud steps are not claimed as certified beyond the stability table below.

Stability — rolling 0.x, per surface

The package-level classifier is Beta, not a promise that every surface is production-ready. Compatibility decisions follow CONTRIBUTING.md; breaking changes remain on the 0.x line under the existing release policy.

Surface Tier Contract
LangGraphApp construction, native invoke/stream/state HTTP endpoints, auth levels Stable Preserve supported calls; incompatible changes require explicit classification and migration
Checkpoint backends, thread locks, async runtime, version="v2", RunObserver Beta Shape settled; refinements remain possible before v1.0
Platform compatibility, true HTTP streaming, Service Bus and Durable lifecycle Experimental Opt-in; may change between minor releases

Classic stream routes return buffered SSE, not incremental tokens. StreamingLangGraphApp is a separate experimental transport. Function keys are not user/thread ownership; applications must enforce authorization. Default locks and Platform thread records are process-local. Shared writers need explicit distributed storage/locking; see the production guide and security boundaries.

Optional, after the default path. These are independent, capability-focused apps, not cumulative production templates or prerequisites:

  1. Azure OpenAI agent
  2. Conversation memory
  3. Tool calling
  4. Persistent production wiring

Also optional: an official LangGraph guide graph hosted with minimal changes, an official-example adaptation (not one of the custom examples above).

Examples support deterministic fake models without cloud credentials. For Platform thread storage, the tested Managed Identity storage recipe wires Azure Table explicitly. State separation is not authenticated ownership.

Documentation

Contributing

Contributions are welcome. The Contributing Guide covers local setup, the checks to run, and the pull request workflow.

Looking for something to work on?

  • Good first issue: small, self-contained starter tasks.
  • Help wanted: tasks that may need more familiarity with this codebase or Azure Functions.

Please comment on an issue to request assignment before you open a pull request. Either list can be empty at any time, so bug reports and small documentation suggestions are always welcome too.

Part of the Azure Functions Python DX Toolkit. Integrated application recipes live in the cookbook; this package owns serving compiled graphs, not prompts, models or tool frameworks.

Independent community project; not affiliated with Microsoft or LangChain. Azure, Azure Functions and LangGraph are their owners' trademarks. MIT.

Metadata

Release files for azure-functions-langgraph 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for azure-functions-langgraph 0.13.0
File Size Uploaded Provenance Actions
azure_functions_langgraph-0.13.0.tar.gz 122.5 kB With provenance Details for azure_functions_langgraph-0.13.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for azure-functions-langgraph 0.13.0
File Interpreter ABI Platform Actions
azure_functions_langgraph-0.13.0-py3-none-any.whl Python 3 none any Details for azure_functions_langgraph-0.13.0-py3-none-any.whl

Total release size: 273.0 kB

Release files / azure_functions_langgraph-0.13.0.tar.gz

Download URL azure_functions_langgraph-0.13.0.tar.gz
Size 122.5 kB
Tags Source
SHA-256 checksum
How to use checksums
614a439f196a3cbb3ba8e1abe1405691e0ac30f00b398e7c151fb730830f89b9
BLAKE2b-256 checksum
How to use checksums
ec0645180bb2b197979c3f7d5e1037dd8e7a6315b850792e8a09e253bb1c0fa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Release files / azure_functions_langgraph-0.13.0-py3-none-any.whl

Download URL azure_functions_langgraph-0.13.0-py3-none-any.whl
Size 150.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c4c924182861a1a0fdb47058a19611d448352be7eadcff7cca95e34aec71d91
BLAKE2b-256 checksum
How to use checksums
24179eb2df4a78f539a4f7cc7ad6b08296bd295fdcb6d84684bc6051fe390ec0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

Security for azure-functions-langgraph 0.13.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for azure_functions_langgraph-0.13.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page