Skip to main content
Every key is optional — a missing one means its default, so you only write what you change. Out-of-range numbers are clamped rather than rejected, and an unrecognised enum value falls back to the default with a log line instead of failing the file.

Where the directory comes from

The config directory holds everything an instance keeps, not just config.json: themes, sessions, scrollback, history, and the background server’s socket. The first of these wins:
  1. --config-dir <dir> on the command line — tty7-app.exe --config-dir D:\tty7-data, or tty7-app --config-dir ~/tty7-alt elsewhere. The app hands it on to the server it starts, so the whole instance moves.
  2. The TTY7_CONFIG_DIR environment variable. Unlike a flag it also reaches launches you do not control — Explorer’s Open in tty7, a desktop file, the tty7 command in another terminal.
  3. Windows portable mode: a data folder next to tty7-app.exe in an unzipped portable ZIP (the one carrying a .tty7-portable file). See Installation.
  4. The platform default in the table above.
Two directories are two independent instances, each with its own server and sessions.

Typography

More about fonts →

Theme and window

Built-in theme ids: light, one_light, catppuccin_latte, rose_pine_dawn, dark, dracula, harbor, one_dark_pro, rose_pine. Your own themes take their id from the file name. More about themes →

Tabs, sidebar, panels

Terminal

Mouse and scrolling

Input and clipboard

The default word_separators are a comma, a box-drawing bar, a backtick, a pipe, a colon, both quote characters, a space, the six bracket characters, the angle brackets, and a tab:

Notifications

Agents

Agent slugs →

SSH

servers.json

The saved hosts are not in config.json: they live in servers.json in the same directory, so config.json can be synced between machines without taking your list of servers along. The file is written with mode 0600 and read as forgivingly as config.json; if it cannot be parsed, tty7 keeps a copy at servers.json.corrupt and saves nothing until it is repaired. An older config.json that still holds ssh_profiles is split the first time a newer tty7 reads it: servers.json is written first, and only then are the two keys removed from config.json, leaving the rest of it as it was. If both files hold hosts, servers.json wins, and the copy in config.json is dropped the next time settings are saved. Each object in ssh_profiles can also set:

Updates and network

Updates →

Keys tty7 manages itself

shell_frecency and command_frecency record how often and how recently you open a shell or run a command, so the new-tab menu and Search Everywhere can rank them. They are written by the app; there is no reason to edit them.
If the file cannot be parsed, tty7 starts on defaults, keeps your original at config.json.corrupt, and logs the reason. It never silently overwrites what you wrote.