Skip to main content
An interactive terminal UI runs PraisonAI agents with streaming output, queues, and session persistence.
from praisonaiagents import Agent

agent = Agent(name="tui-assistant", instructions="Help via the PraisonAI terminal UI.")
agent.start("Summarise what is in my TUI queue.")
The user runs praisonai tui launch and chats with the agent in a full-screen Textual session.

PraisonAI TUI

The PraisonAI TUI (Terminal User Interface) provides an app-like interactive experience for running AI agents directly in your terminal. Built with Textual, it offers a modern, responsive interface with streaming output, queue management, and session persistence.

Features

  • Event-loop driven UI - Always-active input, non-blocking operations
  • Multi-pane layout - Chat history, status bar, queue panel, tool execution
  • Streaming output - Token-by-token display with backpressure handling
  • Queue management - Submit multiple tasks, cancel, retry, priority ordering
  • Session persistence - Resume sessions after crashes
  • Slash commands - Quick actions like /help, /model, /cost
  • Keyboard shortcuts - Efficient navigation and control

Quick Start

1

Launch the TUI

praisonai tui launch
2

Launch with options

praisonai tui launch --model gpt-4 --workspace ./my-project

Installation

TUI is included by default with PraisonAI:
pip install praisonai
For a minimal installation without TUI:
pip install praisonai[lite]

Architecture

The TUI is built on a clean separation of concerns:
┌─────────────────────────────────────────────────────────┐
│                    TUI Application                       │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐       │
│  │  App    │ │ Widgets │ │ Screens │ │ Events  │       │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘       │
│       └───────────┴───────────┴───────────┘             │
│                         │                               │
│  ┌─────────────────────┴─────────────────────┐         │
│  │         Event Bus / Message Queue          │         │
│  └─────────────────────┬─────────────────────┘         │
│                         │                               │
│  ┌─────────┐ ┌─────────┴─────────┐ ┌─────────┐         │
│  │ Queue   │ │ Worker Pool       │ │ Persist │         │
│  │ Manager │ │ (Agent Runners)   │ │ Layer   │         │
│  └─────────┘ └───────────────────┘ └─────────┘         │
└─────────────────────────────────────────────────────────┘

Key Components

Widgets

WidgetDescription
ChatWidgetDisplays chat history with streaming support
ComposerWidgetInput area with slash command detection
StatusWidgetStatus bar showing session, model, tokens, cost
QueuePanelWidgetQueue display with cancel/retry actions
ToolPanelWidgetTool execution status and approvals

Screens

ScreenDescription
MainScreenPrimary chat interface
QueueScreenQueue management
SettingsScreenConfiguration
SessionScreenSession browser

Keyboard Shortcuts

KeyAction
Ctrl+EnterSend message
Ctrl+CCancel current run
Ctrl+QQuit TUI
Ctrl+LClear screen
F1Show help
F2Toggle queue panel
F3Open settings
/Start slash command

Best Practices

Ctrl+Enter to send and F2 for the queue panel speed up daily terminal workflows.
Enqueue heavy tasks instead of blocking the interactive session.
Ctrl+L resets the view when switching test cases or agents.
Script headless runs for regression tests; use the interactive TUI for exploration.

TUI Commands

CLI commands reference

Queue System

Queue management details