A toolkit for building LangChain applications
Project description
gatana-langchain
Current version: v1.0.2
A LangChain sandbox backend for Gatana. Use Gatana sandboxes as isolated execution environments for LangChain deep agents.
Features
- Drop-in sandbox backend for LangChain's
deepagentsframework - Isolated command execution, file upload/download, and full filesystem tool support
- Auto-creates and cleans up sandboxes via context manager
- Fully typed with PEP 561 support
- Python 3.11+
Installation
pip install gatana-langchain
Or with uv:
uv add gatana-langchain
Basic usage
Create a Gatana sandbox and pass it as the backend to a deep agent. The agent gets filesystem tools (ls, read_file, write_file, edit_file, glob, grep) and an execute tool for running shell commands — all inside the sandbox.
from gatana_client import GatanaClient
from langchain_anthropic import ChatAnthropic
from deepagents import create_deep_agent
from gatana_langchain import GatanaSandbox
# Env variables: GATANA_API_KEY and GATANA_ORG_ID
# Or, ~/.gatana.config
client = GatanaClient()
with GatanaSandbox(client=client) as backend:
agent = create_deep_agent(
model=ChatAnthropic(model="claude-sonnet-4-20250514"),
system_prompt="You are a coding assistant with sandbox access.",
backend=backend,
)
result = agent.invoke(
{
"messages": [
{
"role": "user",
"content": "Create a Python script that prints the Fibonacci sequence and run it",
}
]
}
)
print(result["messages"][-1].content)
# Sandbox is automatically deleted when the `with` block exits.
See gatana-client configuration docs for details on environment variables and the ~/.gatana.config file. You can also pass credentials explicitly:
client = GatanaClient(org_id="YOUR_ORG_ID", token="your-gatana-pat")
Wrapping an existing sandbox
If you already have a sandbox ID (e.g. from a previous session), pass it directly. The sandbox will not be auto-deleted on exit:
backend = GatanaSandbox(client=client, sandbox_id="existing-sandbox-id")
result = backend.execute("echo hello from existing sandbox")
print(result.output)
Running commands directly
You can call execute() without creating an agent:
with GatanaSandbox(client=client) as backend:
result = backend.execute("python --version")
print(result.output) # e.g. "Python 3.12.0\n"
print(result.exit_code) # 0
Uploading and downloading files
Seed the sandbox with files before the agent runs, or retrieve artifacts afterwards:
with GatanaSandbox(client=client) as backend:
# Upload files into the sandbox
backend.upload_files([
("/src/main.py", b"print('Hello')\n"),
("/pyproject.toml", b"[project]\nname = 'my-app'\n"),
])
# Run the agent or execute commands...
backend.execute("cd /src && python main.py")
# Download artifacts from the sandbox
results = backend.download_files(["/src/main.py"])
for r in results:
if r.content is not None:
print(f"{r.path}: {r.content.decode()}")
else:
print(f"Failed to download {r.path}: {r.error}")
Development
This package is part of the gatana-python monorepo. See the root CONTRIBUTING.md for setup instructions.
License
MIT — Copyright (c) 2026 Gatana
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gatana_langchain-1.1.0.tar.gz.
File metadata
- Download URL: gatana_langchain-1.1.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a9db429b3f2224d08257da18729da2a7488e329207bff56720022dd57c11953
|
|
| MD5 |
92f9d10b259fa69e3b8459ddb99d99ca
|
|
| BLAKE2b-256 |
aeea0bd9a7d66f50d99a53d4e5fca817831101066d93885f1716c625db9a0349
|
File details
Details for the file gatana_langchain-1.1.0-py3-none-any.whl.
File metadata
- Download URL: gatana_langchain-1.1.0-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fdb2be3325cfebf8d80344ab2ff809ab395f6edc64746e13a85bad937839eaf
|
|
| MD5 |
a494b9c00ad89c675505b1f7388bd123
|
|
| BLAKE2b-256 |
70a6e18e056116d6803500bbd01bc12be214313d86b3972b602b25f866990b65
|