> ## 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.

# Canvas

> Create and manage persistent text documents with AI-powered editing

## Overview

Canvas provides a persistent text document system that integrates seamlessly with Agent. When you pass a Canvas to an Agent, the agent automatically receives tools to read and edit the canvas, enabling intelligent document management through natural language tasks.

**How it works:**

* Create a Canvas with a name (documents persist as `.txt` files)
* Pass the Canvas to Agent during initialization via the `canvas` parameter
* The Agent automatically registers canvas tools (`get_current_state_of_canvas` and `change_in_canvas`)
* During task execution, the agent can intelligently read, update, and organize canvas content
* Canvas content is automatically cleaned (code blocks removed) and persisted to disk

## Quick Start

### Basic Canvas Integration

```python theme={null}
from upsonic import Canvas, Agent, Task

# Create canvas and pass it to agent
canvas = Canvas("My Project Notes")
agent = Agent("anthropic/claude-sonnet-4-5", canvas=canvas)

# Agent automatically has access to canvas tools
task = Task("Add a project overview section to the canvas")
result = agent.do(task)
```

### Meeting Notes Example

```python theme={null}
from upsonic import Canvas, Agent, Task

# Create canvas-enabled agent
canvas = Canvas("Meeting Notes")
agent = Agent("anthropic/claude-sonnet-4-5", canvas=canvas)

# Agent can create and organize meeting notes
task = Task("""
Create comprehensive meeting notes for our weekly team standup including:
- Attendees and their roles
- Key discussion points
- Action items with owners
- Next meeting agenda
""")

result = agent.do(task)
# Agent automatically updates the canvas during execution
```

## Configuration Guide

### Canvas with Custom Model

```python theme={null}
from upsonic import Canvas, Agent, Task

# Canvas can use a different model for editing operations
canvas = Canvas("Technical Notes", model="openai/gpt-4o-mini")
agent = Agent("anthropic/claude-sonnet-4-5", canvas=canvas)

task = Task("Create a project summary document")
result = agent.do(task)
```

## Real-World Examples

### Document Updates

```python theme={null}
from upsonic import Canvas, Agent, Task

canvas = Canvas("Project Documentation")
agent = Agent("anthropic/claude-sonnet-4-5", canvas=canvas)

# Agent can review and update existing canvas content
task = Task("""
Review and update the project documentation with:
- Latest technical specifications
- Updated API endpoints
- New deployment procedures
- Security best practices
""")

result = agent.do(task)
```

### Technical Documentation

```python theme={null}
from upsonic import Canvas, Agent, Task

canvas = Canvas("API Documentation")
agent = Agent("anthropic/claude-sonnet-4-5", canvas=canvas)

task = Task("""
Create comprehensive API documentation for our user management endpoints:
- Authentication methods
- Request/response examples
- Error handling
- Rate limiting
""")

result = agent.do(task)
```

## Tips and Best Practices

* **Use descriptive canvas names** - "Project Documentation" vs "Doc1"
* **Let the agent organize content** - The agent intelligently places and updates sections
* **Canvas persists automatically** - Documents are saved as `.txt` files in your working directory
* **Agent handles formatting** - Code blocks and formatting are automatically cleaned
