langchain-pubnub
LangChain integration for PubNub real-time messaging platform. This package provides tools that allow LangChain agents to publish messages, fetch message history, and subscribe to real-time updates.
Installation
pip install langchain-pubnub langchain-core langchain langgraph-prebuilt langgraph langchain-openai
Quick Start
Using the Toolkit
from langchain_pubnub import PubNubToolkit
# Initialize the toolkit
toolkit = PubNubToolkit(
publish_key="your-publish-key", # or "demo" for testing
subscribe_key="your-subscribe-key", # or "demo" for testing
user_id="my-langchain-agent"
)
# Get all tools
tools = toolkit.get_tools()
# Or access individual tools
publish_tool = toolkit.publish_tool
history_tool = toolkit.history_tool
subscribe_tool = toolkit.subscribe_tool
Using the Factory Function
from langchain_pubnub import create_pubnub_tools
tools = create_pubnub_tools(
publish_key="demo",
subscribe_key="demo",
user_id="my-agent"
)
With a LangChain Agent
from langchain_pubnub import create_pubnub_tools
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
# Create tools
tools = create_pubnub_tools(
publish_key="your-publish-key",
subscribe_key="your-subscribe-key",
user_id="my-agent"
)
# Initialize LLM
llm = ChatOpenAI(model="gpt-5")
# Create agent
prompt = PromptTemplate.from_template("""...""")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# Use the agent
agent_executor.invoke({
"input": "Send a greeting to the 'announcements' channel"
})
Available Tools
PubNubPublishTool
Publish messages to a PubNub channel.
result = publish_tool.invoke({
"channel": "my-channel",
"message": {"text": "Hello, World!"},
"meta": {"priority": "high"} # optional
})
Parameters:
channel(str, required): The channel to publish tomessage(str | dict, required): The message payload (must be JSON-serializable)meta(dict, optional): Metadata for message filtering
PubNubHistoryTool
Fetch historical messages from PubNub channels.
result = history_tool.invoke({
"channels": ["channel-1", "channel-2"],
"count": 25,
"include_meta": True
})
Parameters:
channels(list[str], required): Channels to fetch history fromcount(int, optional): Number of messages per channel (default: 25, max: 100)include_meta(bool, optional): Include message metadata (default: False)start(int, optional): Start timetoken for paginationend(int, optional): End timetoken for pagination
PubNubSubscribeTool
Subscribe to a channel and collect real-time messages.
result = subscribe_tool.invoke({
"channel": "my-channel",
"timeout": 300,
"max_messages": 10
})
Parameters:
channel(str, required): The channel to subscribe totimeout(int, optional): Max seconds to wait (default: 300)max_messages(int, optional): Max messages to collect (default: 10)
Configuration Options
The PubNubToolkit accepts additional configuration options:
toolkit = PubNubToolkit(
publish_key="your-publish-key",
subscribe_key="your-subscribe-key",
user_id="my-agent",
ssl=True, # Enable SSL (default: True)
# Additional PNConfiguration options...
)
Development
Setup
# Clone the repository
git clone https://github.com/pubnub/langchain-pubnub.git
cd langchain-pubnub
# Install dependencies
pip install -e ".[dev]"
# Install test dependencies
pip install -e ".[test]"
Running Tests
# Run unit tests
pytest tests/unit_tests/ -v
# Run integration tests (requires network)
pytest tests/integration_tests/ -v
# Run all tests with coverage
pytest --cov=langchain_pubnub --cov-report=term-missing
Linting
# Run ruff linter
ruff check .
# Run ruff formatter
ruff format .
Type Checking
mypy langchain_pubnub
Requirements
- Python >= 3.9
- langchain-core >= 0.2.0
- pubnub >= 10.0.0
- pydantic >= 2.0.0
License
MIT License - see LICENSE for details.
Contributing
Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.
Links
Metadata
Release files for langchain-pubnub 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langchain_pubnub-0.1.4.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_pubnub-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.3 kB
Release files / langchain_pubnub-0.1.4.tar.gz
| Download URL | langchain_pubnub-0.1.4.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2dcfd1d712c7a15e3a38338d1d53b1dc659e32d309169fd01be87b7aa88d948a
|
|
BLAKE2b-256 checksum How to use checksums |
cfdeaefd6b202df82272953417ba1de544a7469947c68faa2766c9d4d7f87bd9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 8, 2025.
Transparency logRelease files / langchain_pubnub-0.1.4-py3-none-any.whl
| Download URL | langchain_pubnub-0.1.4-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
05f83af54df10fd344223f63426554d76c0ef41ff0653685bae56afef24cbb19
|
|
BLAKE2b-256 checksum How to use checksums |
b431cb204cb22ec39a76a39f264ad2a37eb0ff7ac681f7f08ec36b2238f885dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 8, 2025.
Transparency log