Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.upsonic.ai/llms.txt

Use this file to discover all available pages before exploring further.

AutonomousAgent inherits all execution methods from Agent, including synchronous, asynchronous, and streaming options.

Synchronous Execution

The simplest way to run an autonomous agent:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project"
)

# Execute and print result
task = Task("Read README.md and summarize it")
result = agent.print_do(task)
print(result)

# Or execute without printing
task = Task("Create a new file called hello.py with a hello world program")
result = agent.print_do(task)
print(result)

Asynchronous Execution

For async applications:
from upsonic import AutonomousAgent, Task
import asyncio

async def main():
    agent = AutonomousAgent(
        model="anthropic/claude-sonnet-4-5",
        workspace="/path/to/project"
    )
    
    # Execute asynchronously
    task = Task("Search for TODO comments in all Python files")
    result = await agent.do_async(task)
    print(result)

asyncio.run(main())

Streaming Output

Stream responses as they’re generated:
from upsonic import AutonomousAgent, Task
import asyncio

async def main():
    agent = AutonomousAgent(
        model="anthropic/claude-sonnet-4-5",
        workspace="/path/to/project"
    )
    
    # Stream the response
    task = Task("Analyze the project structure and suggest improvements")
    async for chunk in agent.astream(task):
        print(chunk, end='', flush=True)
    print()

asyncio.run(main())

Long Tasks

The agent handles complex long tasks automatically:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project"
)

task = Task("""
1. Create a new directory called 'src'
2. Create a Python file 'src/main.py' with a simple Flask app
3. Create a requirements.txt with Flask as a dependency
4. List all created files
""")


# The agent will use multiple tools to complete this task
result = agent.print_do(task)

Working with Files

Example of reading and modifying files:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project"
)

# Read a file
task = Task("Read the config.py file and explain its settings")
agent.print_do(task)

# Edit a file (agent will read first, then edit)
task = Task("Update the DEBUG setting to False in config.py")
agent.print_do(task)

# Search files
task = Task("Find all files that import the 'requests' library")
agent.print_do(task)

Running Shell Commands

Execute terminal commands safely:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project",
    shell_timeout=10  # 60 second timeout
)

# Run commands
task = Task("run a shell command that waits 120 seconds")
agent.print_do(task)

Accessing Results

Get detailed information about the execution:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project"
)

task = Task("Count lines of code in all Python files")
result = agent.print_do(task)

# Get the run output with metadata
run_output = agent.get_run_output()
if run_output:
    print(f"Output: {run_output.output}")
    print(f"Tool calls: {run_output.tool_call_count}")
    print(f"Status: {run_output.status}")

Session Persistence

Session memory is enabled by default, so the agent remembers context between tasks:
from upsonic import AutonomousAgent, Task

agent = AutonomousAgent(
    model="anthropic/claude-sonnet-4-5",
    workspace="/path/to/project"
    # full_session_memory=True is the default
)

# First task
task = Task("Read the user model in models/user.py")
agent.print_do(task)

# Second task - agent remembers the previous context
task = Task("Add an 'email' field to that user model")
agent.print_do(task)

# Get session usage
usage = agent.get_session_usage()
print(f"Total tokens used: {usage.total_tokens}")