Terminal Settings
Atmos provides configurable terminal settings that allow you to customize the output appearance, including syntax highlighting for YAML and JSON outputs. These settings can be configured in your atmos.yaml configuration file.
You will learn
- Configure syntax highlighting for terminal output
- Customize color schemes and formatting options
- Control output pagination and line wrapping
- Pace terminal output for demos and recordings
- Set display preferences for different output formats
General Terminal Settings
Configure general terminal behavior. These are also the default settings if not specified in your atmos.yaml:
settings:
terminal:
max_width: 120 # Maximum width for terminal output
pager: false # Pager disabled by default (set to true, or pager name like 'less' to enable)
color: true # Enable colored output (default: true)
unicode: true # Use Unicode characters in output
tab_width: 2 # Number of spaces for YAML indentation (default: 2)
theme: atmos # Terminal color theme (default: atmos)
speed: 0 # Lines per second for paced output (0 = unlimited)
links: auto # How long URLs are delivered: auto, osc8, clipboard, or raw
help:
filter: true # Bare --help shows a focused view; --help=all prints everything
Terminal Theme
Atmos supports customizable terminal themes that control the appearance of CLI output, including tables, markdown rendering, help text, and status messages. Themes provide consistent color schemes optimized for either dark or light terminal backgrounds.
Setting a Theme
Configure the theme in your atmos.yaml:
settings:
terminal:
theme: atmos # Use the default Atmos theme
Or use an environment variable:
export ATMOS_THEME=dracula
atmos describe config
Available Themes
Atmos includes hundreds of pre-configured themes. To browse available themes:
# List all available themes
atmos theme list
# Show only recommended themes
atmos theme list --recommended
# Preview a specific theme
atmos theme show dracula
Popular themes include:
- atmos (default) - Cloud Posse's optimized theme for Atmos
- dracula - Dark theme with vibrant colors
- github - Light theme matching GitHub's style
- monokai - Dark theme popular in code editors
- solarized-dark / solarized-light - Precision colors designed for long-term use
For a complete list of themes and detailed previews, see:
atmos theme list- List available themesatmos theme show- Preview a specific themeatmos list themes- Alternative list command
Configuration Precedence
Atmos follows a clear precedence order for terminal settings, with command-line flags having the highest priority:
Pager Configuration Precedence
- CLI Flags (highest priority):
--pager=false,--pager=less - NO_PAGER Environment Variable:
NO_PAGER=1(standard CLI convention) - ATMOS_PAGER Environment Variable:
ATMOS_PAGER=less - PAGER Environment Variable:
PAGER=more(system default) - Configuration File (lowest priority):
settings.terminal.pager: true
Color Configuration Precedence
- Disable Controls (highest priority): nonempty
NO_COLOR,--no-color, orATMOS_NO_COLOR=truedisable all color, including forced color and logs.--no-color=falseoverridesATMOS_NO_COLOR, but nonemptyNO_COLORalways disables color. - CLICOLOR=0:
CLICOLOR=0(disables color unless forced) - CLICOLOR_FORCE:
CLICOLOR_FORCE=1(forces color even for non-TTY) - Force Flags:
--force-colororATMOS_FORCE_COLOR=true(forces TrueColor) - Enable Flags:
--colororATMOS_COLOR=true(enables color only if TTY) - Configuration File (lowest priority):
settings.terminal.color: true(enables color only if TTY) - Default: Automatically detects TTY and terminal capabilities
Log color has one more control, logs.color (--logs-color, ATMOS_LOGS_COLOR). Setting it to false keeps
logs plain while terminal output stays colored. See Logs.
CLICOLOR remains supported independently of NO_COLOR. CLICOLOR=1 (or another nonzero value)
permits automatic color on supported terminals and in color-capable CI environments such as GitHub
Actions; it does not force color into pipes or files. CLICOLOR=0 disables automatic color, including
the version logo, unless color is explicitly forced. An empty CLICOLOR leaves detection unchanged.
When the variables contradict each other, nonempty NO_COLOR wins:
CLICOLOR=1 NO_COLOR=1 atmos version # Plain output
CLICOLOR=1 NO_COLOR=0 atmos version # Also plain: NO_COLOR is nonempty
CLICOLOR=1 NO_COLOR= atmos version # Automatic terminal/CI detection
CLICOLOR=0 atmos version # Plain output
CLICOLOR=0 atmos --force-color version # Forced color
CLICOLOR=0 NO_COLOR=1 atmos --force-color version # Plain output: NO_COLOR wins
These rules apply to Atmos output; child processes may implement their own color conventions.
Force Flags for Screenshot Generation
Atmos provides force flags to generate consistent terminal output regardless of the environment. These are particularly useful for screenshot generation, documentation, and testing.
--force-tty and ATMOS_FORCE_TTY
Force TTY mode with sane defaults when terminal detection fails:
- Forces
IsTTY()to returntrueeven when not connected to a terminal - Uses default dimensions: width=120, height=40
- Enables all TTY-dependent features (colors, icons, formatting)
Use cases:
- Screenshot generation for documentation
- Recording terminal sessions with tools like
vhs - CI/CD environments where TTY detection fails
Example:
# Generate screenshot with consistent output
atmos terraform plan --force-tty --force-color | screenshot.sh
# Using environment variables
ATMOS_FORCE_TTY=true ATMOS_FORCE_COLOR=true atmos describe stacks | vhs record.tape
--force-color, ATMOS_FORCE_COLOR, and CLICOLOR_FORCE
Force TrueColor (24-bit) output even when not a TTY:
ATMOS_FORCE_COLORandCLICOLOR_FORCEare equivalent and both fully supportedCLICOLOR_FORCEis a standard environment variable (CLI Colors)- Forces TrueColor profile regardless of terminal detection
- Overrides automatic color degradation
- Useful when piping to tools that preserve ANSI codes
Important distinction:
--color/ATMOS_COLOR- Enables color only if TTY (respects terminal capabilities)--force-color/ATMOS_FORCE_COLOR/CLICOLOR_FORCE- Forces TrueColor even for non-TTY (for screenshots)
Example:
# Normal piped output - automatically disables color
atmos terraform output | jq .vpc_id
# Force color when piping to color-aware tool
atmos describe stacks --force-color | bat
# Screenshot generation
atmos describe config --force-tty --force-color > screenshot.ansi
Automatic Color Degradation
Atmos automatically degrades color output based on terminal capabilities:
- TrueColor (24-bit, 16 million colors) - Modern terminals (iTerm2, Windows Terminal)
- 256 colors - Terminals with
TERM=*-256color - 16 colors (ANSI) - Basic terminals with
TERM=xterm - No color - Non-TTY, piped output, or when color is disabled
Automatic behavior:
- When piping output:
atmos describe stacks | grep vpc- color automatically disabled - When redirecting:
atmos terraform output > file.txt- color automatically disabled - When using
--force-color: Color preserved even when piping
Terminals That Never Answer Queries
Terminal UI libraries (such as Bubble Tea and termenv, which Atmos and many other CLI tools use) ask the terminal for its foreground color, background color, and cursor position at startup, then wait for the reply. Atmos answers these queries itself for the pseudo-terminals it owns, such as recorded sessions and child commands that run without forwarded input.
Terminals and harnesses that never answer these queries (some CI runners, remote shells, and AI tool harnesses) can make startup wait about 5 seconds for each query. In those environments, set TERM=screen-256color (or tmux-256color) so the libraries skip the queries:
TERM=screen-256color atmos terraform plan vpc -s dev
Long URLs
Some commands hand you a URL to open by hand. atmos auth login, for example, shows the AWS sign-in URL in case the browser does not open. AWS IAM Identity Center now returns sign-in URLs of more than 500 characters. When AWS also provides a short verification address, where you enter the code from the prompt, Atmos shows that instead. A URL of up to 80 columns is shown inside the prompt's box. A longer one is never drawn inside the box, because the border would wrap into the URL and end up in the text you copy. It is delivered below the box instead, in the form settings.terminal.links selects. The same setting applies to the console sign-in URL that atmos auth console shows when it does not open a browser:
settings:
terminal:
links: auto # auto (default), osc8, clipboard, or raw
autoShow a short clickable link (an OSC 8 hyperlink) such as Open AWS sign-in when the terminal is known to support one, and print the full URL otherwise.
osc8Always show the short clickable link. Use this when your terminal supports hyperlinks but Atmos cannot tell, which is common inside a container (such as Geodesic or a devcontainer) or over SSH.
clipboardCopy the URL to the system clipboard, replacing its current contents, and confirm it with a
Copied the URL to your clipboardmessage. If the operating system has no clipboard Atmos can reach, Atmos asks the terminal to copy the URL instead (an OSC 52 request), warns that the copy could not be confirmed, and also prints the full URL, because a terminal does not acknowledge that request.rawAlways print the full URL as plain text. The terminal wraps it without inserting any characters, so it can be selected and copied intact.
Terminals offer no way to ask whether they support hyperlinks, so auto recognizes terminals by the environment variables they set:
- iTerm2 (3.1+) and VS Code (1.72+):
TERM_PROGRAM(iTerm.apporvscode) withTERM_PROGRAM_VERSION - WezTerm, Ghostty, and Orca:
TERM_PROGRAM(WezTerm,ghostty, orOrca) - Ghostty and kitty:
TERM(xterm-ghosttyorxterm-kitty) - kitty:
KITTY_WINDOW_ID - Windows Terminal:
WT_SESSION - VTE-based terminals such as GNOME Terminal (0.50+):
VTE_VERSION - Konsole (20.12+):
KONSOLE_VERSION - Orca:
ORCA_PANE_KEY
Anything else gets the full URL, including TERM=dumb, sessions inside tmux or screen (detected by TMUX and STY), and containers that do not pass those variables through. Set links: osc8 there if your terminal does support hyperlinks, or pass the variables into the container.
auto also honors the FORCE_HYPERLINK environment variable used by other command-line tools: FORCE_HYPERLINK=1 turns the clickable link on and FORCE_HYPERLINK=0 turns it off, whatever the terminal, including inside tmux. It applies only when the effective mode is auto: a mode other than auto set by --links, ATMOS_TERMINAL_LINKS, or settings.terminal.links takes precedence over it.
When output is not a terminal (piped, redirected, or in CI), Atmos always prints the full URL and never touches the clipboard, whatever this setting says.
Syntax Highlighting
You can customize the syntax highlighting behavior for terminal output using the following settings:
settings:
terminal:
# Main terminal settings
pager: true # Enable pager for all terminal output
max_width: 120 # Maximum width for terminal output
color: true # Enable colored output
speed: 0 # Lines per second for paced output (0 = unlimited)
# Syntax highlighting specific settings
syntax_highlighting:
enabled: true # Enable/disable syntax highlighting
formatter: terminal # Output formatter
theme: dracula # Color scheme to use
line_numbers: false # Show line numbers
wrap: false # Wrap long lines
Terminal Configuration Options
max_width- Maximum width for terminal output (default:
120) pagerConfigure pager behavior for output display.
falseor empty: Pager disabled (default)trueoron: Enable pager with system default- Pager command (e.g.,
less,more): Use specific pager program - Environment variables:
NO_PAGER(disable),ATMOS_PAGER,PAGER(system default) - CLI control:
--pagerglobal flag
colorEnable colored terminal output (default:
true).- Environment variables:
NO_COLOR(standard),ATMOS_NO_COLOR,ATMOS_COLOR,COLOR - CLI control:
--no-colorglobal flag
- Environment variables:
unicode- Use Unicode characters in output (default:
true) tab_width- Number of spaces for YAML indentation (default:
2) themeTerminal color theme for Atmos CLI output (default:
atmos). Controls colors for tables, markdown, help text, and status messages.- Environment variable:
ATMOS_THEME - List available themes:
atmos theme list - Preview themes:
atmos theme show <theme-name> - Popular options:
atmos,dracula,github,monokai,solarized-dark,solarized-light
- Environment variable:
speedPace terminal output at the configured number of lines per second. Use this for demos, tutorials, and terminal recordings where instant output is hard to read. A value of
0disables pacing and preserves the default unlimited output behavior.- Environment variable:
ATMOS_TERMINAL_SPEED
- Environment variable:
linksHow a URL too long for a prompt's box is delivered:
auto(default),osc8,clipboard, orraw. See Long URLs.- Environment variable:
ATMOS_TERMINAL_LINKS - Command-line flag:
--links
- Environment variable:
help.filterFilter the bare
--helpoutput to a focused view that omits the GLOBAL FLAGS section (default:true). Use--help=allto print the full help output on demand. Setsettings.terminal.help.filter: false(orATMOS_HELP_FILTER=false) to always show the full output, including the GLOBAL FLAGS section.- Environment variable:
ATMOS_HELP_FILTER - The default changed from
falsetotruein the 2026-07 edition; a project pinned to an earlier edition keeps the unfiltered output.
- Environment variable:
Syntax Highlighting Configuration Options
enabled- Enable or disable syntax highlighting (default:
true) formatter- Output formatter (default:
terminal) themeColor scheme for syntax highlighting. Available options include:
vimmonokaigithubdracula- ...and many other standard themes
You can find the full list of supported themes here.
line_numbers- Show line numbers in output (default:
false) wrap- Wrap long lines (default:
false)
Example Usage
The syntax highlighting is automatically applied when using commands that output YAML or JSON, such as:
# Display config in YAML format with syntax highlighting
atmos describe config -f yaml
# Display config in JSON format with syntax highlighting
atmos describe config
When the output is piped to another command, syntax highlighting is automatically disabled to ensure compatibility:
# Syntax highlighting is disabled when piping
atmos describe config | grep base_path
Supported Themes
Atmos supports a wide range of themes for syntax highlighting. You can find the full list of supported themes here.