Skip to main content

A toolkit for building LangChain applications

Project description

gatana-langchain

Current version: v1.0.2

PyPI Python License: MIT

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 deepagents framework
  • 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

gatana_langchain-1.1.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

gatana_langchain-1.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

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

Hashes for gatana_langchain-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7a9db429b3f2224d08257da18729da2a7488e329207bff56720022dd57c11953
MD5 92f9d10b259fa69e3b8459ddb99d99ca
BLAKE2b-256 aeea0bd9a7d66f50d99a53d4e5fca817831101066d93885f1716c625db9a0349

See more details on using hashes here.

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

Hashes for gatana_langchain-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7fdb2be3325cfebf8d80344ab2ff809ab395f6edc64746e13a85bad937839eaf
MD5 a494b9c00ad89c675505b1f7388bd123
BLAKE2b-256 70a6e18e056116d6803500bbd01bc12be214313d86b3972b602b25f866990b65

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