LazyLlama
A blazing fast Terminal User Interface (TUI) client for Ollama with real-time streaming, GitHub-flavored markdown, syntax highlighting, and smart scrolling.
Built with performance and user experience in mind
Responses are generated live, providing immediate feedback without waiting for complete generation.
Feature-complete markdown rendering with bold, italic, strikethrough, inline code, headers (all 6 levels), ordered/unordered lists, task lists (โ/โ), blockquotes, horizontal rules, and clickable links.
Professional-grade code highlighting for 100+ languages (Rust, Python, JavaScript, TypeScript, Go, C++, Java, and more) with 10 customizable themes optimized for both dark and light terminal backgrounds.
Automatic following of AI output with manual scroll lock (๐) for reading previous messages undisturbed.
Easily switch between installed Ollama models using arrow keys with separate input/output buffers per model.
Each LLM maintains its own chat history, input text, and scroll position for seamless multi-model workflows.
Every chat session is automatically saved as text files with both combined and per-model histories.
Persistent configuration with in-app settings dialog (Ctrl+O). Choose from 10 syntax highlighting themes, with more settings coming soon. Preferences are saved automatically.
Familiar keyboard shortcuts for efficient navigation and control, designed for power users.
Ultra-low latency and minimal resource footprint using Rust and the Ratatui terminal framework.
Ultra-low latency operations well within 60 FPS frame budget (< 16ms)
LazyLlama is built with performance as a top priority. All operations complete in microseconds or nanoseconds, ensuring a smooth and responsive user experience even with large conversation histories.
Note: All benchmarks are measured on optimized release builds. Unicode operations are actually faster than ASCII due to efficient UTF-8 handling in Rust. Run cargo test --release --benches to execute the full benchmark suite yourself.
Last measured: 2 March 2026 · Release build · cargo test --release --benches
Get up and running in minutes
# From crates.io (recommended)
cargo install lazyllama
# Or build from source
git clone https://github.com/Pommersche92/lazyllama.git
cd lazyllama
cargo install --path .
lazyllama
That's it! Start chatting with your AI models right in your terminal.
Choose your preferred installation method
Universal Linux package that runs on any distribution
โInstall directly from AUR using your favorite AUR helper
โPre-built binary for Windows 10/11
โBuild from source using Rust's package manager
โClone the repository and build it yourself
โDesigned for efficiency and productivity
All keyboard shortcuts are fully customizable via the settings.toml config file.
Create or edit ~/.config/lazyllama/settings.toml (Linux/macOS) or %APPDATA%\lazyllama\settings.toml (Windows) and add a [keybindings] section.
Keybinding format: C- = Ctrl, S- = Shift, C-S- = Ctrl+Shift. Examples:
quit = "C-q" # Ctrl+Q
copy = "C-S-c" # Ctrl+Shift+C
insert_newline = "S-Enter" # Shift+Enter
select_next_model = "C-Down" # Ctrl+Down Arrow
send_query = "Enter" # Enter (no modifier)
Here's the complete reference of all configurable actions with their defaults:
| Setting | Default | Action |
|---|---|---|
quit | C-q | Quit the application |
clear_history | C-c | Clear current chat history |
open_settings | C-o | Open settings dialog |
toggle_autoscroll | C-s | Toggle autoscroll mode |
| Setting | Default | Action |
|---|---|---|
copy | C-S-c | Copy selected text to clipboard |
paste | C-S-v | Paste text from clipboard |
| Setting | Default | Action |
|---|---|---|
send_query | Enter | Send message to AI |
insert_newline | S-Enter | Insert newline in input |
cursor_up | โ | Move cursor up |
cursor_down | โ | Move cursor down |
cursor_left | โ | Move cursor left |
cursor_right | โ | Move cursor right |
cursor_word_left | C-โ | Jump to previous word |
cursor_word_right | C-โ | Jump to next word |
cursor_home | Home | Jump to start of input |
cursor_end | End | Jump to end of input |
| Setting | Default | Action |
|---|---|---|
cursor_left_select | S-โ | Select text left character-wise |
cursor_right_select | S-โ | Select text right character-wise |
cursor_word_left_select | C-S-โ | Select text left word-wise |
cursor_word_right_select | C-S-โ | Select text right word-wise |
cursor_home_select | S-Home | Select to start of input |
cursor_end_select | S-End | Select to end of input |
| Setting | Default | Action |
|---|---|---|
select_next_model | C-โ | Switch to next AI model |
select_previous_model | C-โ | Switch to previous AI model |
| Setting | Default | Action |
|---|---|---|
backspace | Backspace | Delete character before cursor |
delete_forward | Delete | Delete character after cursor |
delete_word_left | C-Backspace | Delete previous word |
delete_word_right | C-Delete | Delete next word |
| Setting | Default | Action |
|---|---|---|
page_up | PageUp | Scroll history up |
page_down | PageDown | Scroll history down |
These only apply when the settings dialog is open (press Ctrl+O):
| Setting | Default | Action |
|---|---|---|
close_dialog | Esc | Close dialog without saving |
dialog_up | โ | Move selection up |
dialog_down | โ | Move selection down |
dialog_apply | Enter | Apply selected setting and close |
๐ก Tip: You only need to specify the keybindings you want to change. Unspecified keybindings use their default values. The status bar in LazyLlama dynamically updates to show your configured keybindings.
Everything you need to get the most out of LazyLlama