Workspace of EQTY lineage integrations, published to pypi.eqtylab.io. Each
integration lives under packages/ as its own distribution sharing the
eqty_lineage import namespace:
| Package | Import | Purpose |
|---|---|---|
eqty-lineage-langchain |
eqty_lineage.langchain |
Callback handler registering LangChain/LangGraph runs as EQTY lineage |
eqty-lineage-deepagents |
eqty_lineage.deepagents |
The same, extended with a deep agent's filesystem, plan, subagents and skills |
eqty-lineage-vnim |
eqty_lineage.vnim |
ChatOpenAI implementation for working with LLMs in EQTY vNIM |
Future integrations (e.g. eqty-lineage-mcp, eqty-lineage-llamaindex) follow
the same pattern. Because eqty_lineage is an implicit namespace package, no
package may ship an eqty_lineage/__init__.py.
from eqty_lineage.langchain import EqtyCallbackHandler
app.invoke(state, config={"callbacks": [EqtyCallbackHandler()]})Each package documents its own usage and demos. For LangChain and LangGraph, see
packages/eqty-lineage-langchain, which includes a
before/after lineage comparison you can run with just langchain-diff-demo. For DeepAgents, see
packages/eqty-lineage-deepagents and just deepagents-demo,
plus a survey of the upstream DeepAgents examples showing how to
instrument each one.
For a browser chat example around the LangChain travel agent, run:
OPENAI_API_KEY=... uv run python examples/langchain/travel_chat_ui.pyFor a local EQTY VNIM tunnel at 127.0.0.1:8000, run the interactive chat example:
uv run python examples/langchain/eqty_vnim_agent.pyjust sync # install the workspace + dev deps into .venv
just build # build wheel + sdist for all packages into ./dist
just publish # upload ./dist to pypi.eqtylab.io (uv publish --index eqty)
just clean # remove ./disteqty-sdk resolves from the eqty index configured in pyproject.toml, not
public PyPI.