Skip to main content
This example demonstrates how to use the Cloud Code SDK together with LangGraph to build an AI coding agent that can create, read, search, and edit files in a sandbox environment. The agent uses a ReAct-style loop and exposes tools for file management and code editing.

Example: sandbox.py

import os
import json
import sys
from typing import Any, Dict, List, Optional, Annotated, Sequence
from typing_extensions import TypedDict

from langchain.chat_models import init_chat_model
from langchain_core.messages import BaseMessage, SystemMessage, ToolMessage
from langchain_core.runnables import RunnableConfig
from langgraph.graph import StateGraph, END
from langgraph.graph.message import add_messages

# Import Cloud Code Sandbox SDK
from cloudcode import SandboxSDK

# Define the agent state
class AgentState(TypedDict):
    messages: Annotated[Sequence[BaseMessage], add_messages]
    sandbox_id: Optional[str]
    working_dir: str
    sdk: Optional[Any]

DEFAULT_WORKING_DIR = "/home/user"
DEFAULT_SANDBOX_TIMEOUT = 300  # 5 minutes

def initialize_sandbox(state: AgentState) -> AgentState:
    sdk = SandboxSDK(
        model="gpt-4.1",
        api_key=os.getenv("CLOUD_CODE_API_KEY"),
        sandbox_timeout=DEFAULT_SANDBOX_TIMEOUT,
        user_id="react-agent-user"
    )
    sandbox_info = sdk.get_sandbox_info()
    state["sdk"] = sdk
    state["sandbox_id"] = sandbox_info["sandbox_id"]
    state["working_dir"] = sdk.working_dir
    sdk.create_file(
        "hello.py",
        """def greet(name):
    return f\"Hello, {name}!\"

if __name__ == "__main__":
    print(greet("World"))
"""
    )
    return state

def cleanup_sandbox(state: AgentState) -> Dict:
    if state.get("sdk"):
        return state["sdk"].kill_sandbox()
    return {"success": False, "message": "No sandbox to terminate"}

# Tool functions for the agent
# ... (see full code for details)

# Define the tools list and create a lookup dictionary by name
# ...

# Initialize the language model and bind tools
# ...

# Define the tool node for the react agent
# ...

# Define the node that calls the model
# ...

# Define the conditional edge that determines whether to continue or not
# ...

# Create the react agent graph
# ...

# Create the agent
# ...

if __name__ == "__main__":
    # Initialize state
    state = {
        "messages": [],
        "working_dir": DEFAULT_WORKING_DIR,
        "sandbox_id": None,
        "sdk": None
    }
    try:
        # Initialize the sandbox
        try:
            state = initialize_sandbox(state)
            print(f"🚀 LangGraph Sandbox App initialized with:")
            print(f"   - Sandbox ID: {state['sandbox_id']}")
            print(f"   - Working directory: {state['working_dir']}")
            print(f"   - Model: gpt-4.1")
        except Exception as e:
            print(f"❌ Failed to initialize sandbox: {str(e)}")
            print("Please check your CLOUD_CODE_API_KEY environment variable.")
            sys.exit(1)
        print("\nEnter your coding request (or 'quit' to exit):")
        while True:
            user_input = input("\n> ")
            if user_input.lower() in ("quit", "exit", "q"):
                break
            messages = [{"role": "user", "content": user_input}]
            print("\nProcessing your request...\n")
            # Stream the agent's response
            for step in agent.stream(
                {"messages": messages, **state},
                stream_mode=["messages"],
                config={"configurable": {"thread_id": 1}},
            ):
                if "messages" in step:
                    content = step["messages"][-1].content
                    if content:
                        print(content, end="")
    finally:
        # Clean up sandbox
        if state.get("sdk"):
            print("\nCleaning up sandbox...")
            result = cleanup_sandbox(state)
            print(f"Sandbox termination: {result['message']}")
            print(f"Termination success: {result['success']}")
Note:
  • This example demonstrates how to build a ReAct-style AI coding agent using LangGraph and the Cloud Code SDK in a sandbox environment.
  • You must set your CLOUD_CODE_API_KEY environment variable before running.
  • The agent exposes tools for file creation, reading, searching, code editing, and running shell commands.
I