Skip to main content

LangChain toolkit for reliable Web3 execution via KeeperHub

Project description

langchain-keeperhub

langchain-keeperhub

Give your LangChain agent the ability to send tokens, call smart contracts, and resolve ENS names — without ever touching a private key.

PyPI Package


langchain-keeperhub is a Python SDK that connects LangChain / LangGraph agents to KeeperHub, a Web3 execution service. You provide an API key; KeeperHub handles wallet management and transaction signing inside a secure enclave (Turnkey TEE). Your code never sees the private key.

Originally built for ETHGlobal OpenAgents.

Independent community project by @devendra116. Not affiliated with or endorsed by KeeperHub.

What can it do?

Capability How
Send tokens (ETH, USDC, any ERC-20) transfer_funds tool
Read/write smart contracts contract_call tool
Conditional execution ("send only if balance > X") check_and_execute tool
Resolve ENS names (vitalik.eth → 0x...) resolve_ens / reverse_resolve_ens tools
Track transaction history Built-in SQLite store
Manage KeeperHub workflows Optional MCP bridge

Your agent gets these as LangChain tools. It decides when and how to use them based on the user's request.

Install

pip install langchain-keeperhub

Optional extras:

pip install "langchain-keeperhub[workflows]"  # MCP workflow tools
pip install "langchain-keeperhub[ens]"         # keccak fallback (if OpenSSL lacks it)

Quick start

1. Get a KeeperHub API key at app.keeperhub.com (starts with kh_).

2. Install dependencies:

pip install langchain-keeperhub langchain langchain-google-genai langgraph python-dotenv

3. Write your agent:

from dotenv import load_dotenv
from langchain.agents import create_agent
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_keeperhub import KeeperHubToolkit

load_dotenv()  # reads KEEPERHUB_API_KEY and GOOGLE_API_KEY from .env

toolkit = KeeperHubToolkit()  # or pass api_key="kh_..." directly
agent = create_agent(
    model=ChatGoogleGenerativeAI(model="gemini-2.5-flash", temperature=0),
    tools=toolkit.get_tools(),
)

result = agent.invoke({"messages": [("user", "Send 1 USDC on Base Sepolia to 0x...")]})
print(result["messages"][-1].content)

Any LangChain-compatible model works (OpenAI, Anthropic, etc.) — the examples just happen to use Gemini.

Tools reference

Tool What it does
transfer_funds Send native tokens or ERC-20s. Returns an execution_id.
contract_call Read from or write to any verified smart contract.
check_and_execute Read a value, check a condition, then execute only if it passes.
get_execution_status Poll a write's status by execution_id until it completes.
list_chains List all chains KeeperHub supports.
fetch_contract_abi Fetch a contract's ABI by chain and address.
get_wallet_address Get the wallet address tied to your API key.
resolve_ens ENS/Basenames forward lookup (name → address). Uses public RPC, no KeeperHub API.
reverse_resolve_ens ENS/Basenames reverse lookup (address → name).
list_execution_history Query past writes (requires history=True).

After any write tool (transfer_funds, contract_call, check_and_execute), always call get_execution_status with the returned execution_id to get the final transaction hash.

Safety options

toolkit = KeeperHubToolkit(
    api_key="kh_...",
    testnet_only=True,                       # block writes to mainnet chains
    allowed_chain_ids={"11155111", "84532"},  # only Sepolia + Base Sepolia
    history=True,                             # log every write to SQLite
)

Use without an LLM

You can also use KeeperHubClient directly for scripting — no agent needed:

import asyncio
from langchain_keeperhub import KeeperHubClient

async def main():
    async with KeeperHubClient() as client:
        chains = await client.list_chains()
        print(chains)

asyncio.run(main())

Environment variables

Variable Required Purpose
KEEPERHUB_API_KEY Yes Your KeeperHub API key (kh_ prefix) from app.keeperhub.com
GOOGLE_API_KEY Only for examples Needed by langchain-google-genai for Gemini

Compatibility

  • Python 3.10+
  • v0.4+ requires langchain-core 1.x. If you're on langchain-core 0.3.x, use langchain-keeperhub 0.3.x.

Development

git clone https://github.com/devendra116/langchain_keeperhub.git
cd langchain_keeperhub
pip install -e ".[dev]"
pytest

Docs

Links

License

MIT — see LICENSE.

Independent community package. Not an official KeeperHub release. Trademarks belong to their owners.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_keeperhub-0.5.2.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_keeperhub-0.5.2-py3-none-any.whl (47.0 kB view details)

Uploaded Python 3

File details

Details for the file langchain_keeperhub-0.5.2.tar.gz.

File metadata

  • Download URL: langchain_keeperhub-0.5.2.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for langchain_keeperhub-0.5.2.tar.gz
Algorithm Hash digest
SHA256 2f44a19ce2e16df863e785ae95d1aa4f46e96ba2093bac2380a8a8841bcadcb4
MD5 727ba4b6db01bd96ec217630fea3f72e
BLAKE2b-256 034c943f221a338a0e4b037c9737cc074ff6aa44871d5d54f9c74e7ed19b9c49

See more details on using hashes here.

File details

Details for the file langchain_keeperhub-0.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_keeperhub-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7ee515570625d588793572865fcf23f2fb5e15c04a71c18faefc77446147a9a8
MD5 b0df278093c98387b6c501fda05e5a7f
BLAKE2b-256 518301d51b1f1dc5d0434c415b3b0cf36c1374816454021ac78162568c321d58

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page