LangChain secret manager integration for AVP
Drop-in replacement · All LLM providers · Hardware security
langchain-avp provides AVP integration for LangChain. Replace insecure .env files with hardware-grade credential storage — no code changes required.
pip install langchain-avpfrom langchain_anthropic import ChatAnthropic
import os
# ❌ API key in plaintext .env file
llm = ChatAnthropic(api_key=os.environ["ANTHROPIC_API_KEY"])from langchain_anthropic import ChatAnthropic
from langchain_avp import AVPSecretManager
# ✅ API key in hardware-secured vault
secrets = AVPSecretManager("avp.toml")
llm = ChatAnthropic(api_key=secrets.get("anthropic_api_key"))Load all secrets into environment variables at startup:
from langchain_avp import load_secrets
# Load secrets into os.environ
load_secrets("avp.toml", [
"ANTHROPIC_API_KEY",
"OPENAI_API_KEY",
"PINECONE_API_KEY",
])
# Now use LangChain normally — it reads from environment
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic() # Automatically uses ANTHROPIC_API_KEY# Step 1: Import existing .env into AVP
avp import .env --backend keychain
# Step 2: Update your code
# Replace: load_dotenv()
# With: from langchain_avp import load_secrets; load_secrets("avp.toml")
# Step 3: Delete insecure .env file
rm .envfrom langchain_anthropic import ChatAnthropic
from langchain_avp import AVPSecretManager
secrets = AVPSecretManager("avp.toml")
llm = ChatAnthropic(api_key=secrets.get("anthropic_api_key"))from langchain_openai import ChatOpenAI
from langchain_avp import AVPSecretManager
secrets = AVPSecretManager("avp.toml")
llm = ChatOpenAI(api_key=secrets.get("openai_api_key"))from langchain_avp import AVPSecretManager
secrets = AVPSecretManager("avp.toml")
anthropic_llm = ChatAnthropic(api_key=secrets.get("anthropic_api_key"))
openai_llm = ChatOpenAI(api_key=secrets.get("openai_api_key"))
pinecone = Pinecone(api_key=secrets.get("pinecone_api_key"))from langchain_avp import AVPSecretManager, Backend
# OS Keychain (recommended)
secrets = AVPSecretManager(backend=Backend.KEYCHAIN)
# Hardware secure element (maximum security)
secrets = AVPSecretManager(backend=Backend.HARDWARE)
# Remote vault (team environments)
secrets = AVPSecretManager(
backend=Backend.REMOTE,
url="https://vault.company.com"
)from langchain.agents import initialize_agent
from langchain_avp import AVPSecretManager
secrets = AVPSecretManager("avp.toml")
# All tool credentials from AVP
tools = [
SerpAPIWrapper(serpapi_api_key=secrets.get("serpapi_key")),
WikipediaQueryRun(),
]
agent = initialize_agent(
tools=tools,
llm=ChatAnthropic(api_key=secrets.get("anthropic_api_key")),
)| Method | Infostealer | Git Leak | Host Compromise |
|---|---|---|---|
| .env file | ✗ | ✗ | ✗ |
| Environment vars | ✗ | ✓ | ✗ |
| AVP Keychain | ✓ | ✓ | ✗ |
| AVP Hardware | ✓ | ✓ | ✓ |
See CONTRIBUTING.md.
Apache 2.0 — see LICENSE.