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 justconfig.json: themes, sessions, scrollback, history, and the background
server’s socket. The first of these wins:
--config-dir <dir>on the command line —tty7-app.exe --config-dir D:\tty7-data, ortty7-app --config-dir ~/tty7-altelsewhere. The app hands it on to the server it starts, so the whole instance moves.- The
TTY7_CONFIG_DIRenvironment variable. Unlike a flag it also reaches launches you do not control — Explorer’s Open in tty7, a desktop file, thetty7command in another terminal. - Windows portable mode: a
datafolder next totty7-app.exein an unzipped portable ZIP (the one carrying a.tty7-portablefile). See Installation. - The platform default in the table above.
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:
Links
Notifications
Agents
Agent slugs →
SSH
servers.json
The saved hosts are not inconfig.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.