The TaskList class allows you to display a task list next to the chatbot UI.



The status of the TaskList. We suggest using something short like “Ready”, “Running…”, “Failed”, “Done”.


The list of tasks to be displayed in the UI.


The TaskList element is slightly different from other elements in that it is not attached to a Message or Step but can be sent directly to the chat interface.

import chainlit as cl

async def main():
    # Create the TaskList
    task_list = cl.TaskList()
    task_list.status = "Running..."

    # Create a task and put it in the running state
    task1 = cl.Task(title="Processing data", status=cl.TaskStatus.RUNNING)
    await task_list.add_task(task1)
    # Create another task that is in the ready state
    task2 = cl.Task(title="Performing calculations")
    await task_list.add_task(task2)

    # Optional: link a message to each task to allow task navigation in the chat history
    message_id = await cl.Message(content="Started processing data").send()
    task1.forId = message_id

    # Update the task list in the interface
    await task_list.send()

    # Perform some action on your end
    await cl.sleep(1)

    # Update the task statuses
    task1.status = cl.TaskStatus.DONE
    task2.status = cl.TaskStatus.FAILED
    task_list.status = "Failed"
    await task_list.send()

Task List in action