v0.9.0
Letta Filesystem
We are introducing a big revamp in how Letta handles uploaded documents like PDFs! Letta Filesystem allows you to create folders and files (uploaded documents) that contextualize your agent's responses -- think Claude Projects, but transparent and controllable.
# upload a file into the folder
job = client.folders.files.upload(
folder_id=folder.id,
file=open("my_file.txt", "rb")
)
# wait until the job is completed
while True:
job = client.jobs.retrieve(job.id)
if job.status == "completed":
break
elif job.status == "failed":
raise ValueError(f"Job failed: {job.metadata}")
print(f"Job status: {job.status}")
time.sleep(1)When documents are uploaded to Letta, they are represented in the context window as files in a folder, and can be "open" (in-context) or "closed" (hidden). The agent manages this automatically will tools, but you can also manually open/close files (add/remove to the context window).
Options for converting documents to markdown
There are two options for parsing files: the default markitdown packages, or Mistral's OCR endpoint. To use Mistral, you must set LETTA_MISTRAL_API_KEY. If you're using Letta Cloud, Mistral OCR will be enabled by default.
Memory blocks vs. filesystem vs. archival memory
Curious on when to use memory blocks vs. filesystem vs. archival memory? See our guidelines on how to manage a context hierarchy.