grithdocs

grith init

Write a default config.toml. It overwrites any file already there, with no backup and no merge.

grith init

Writes $HOME/.config/grith/config.toml from the shipping defaults and prints Created default config at <path>. No flags beyond the global ones.

🚨It overwrites, unconditionally

There is no backup, no merge and no prompt. If config.toml already exists, grith init replaces it. To change one value on an existing file, use grith config set.

Where it writes, and what from

The path is literally $HOME/.config/grith/config.toml. XDG_CONFIG_HOME is not consulted, and neither is GRITH_CONFIG_DIR - that variable moves the daemon's state files, not the config.

The defaults come from the first of these that exists: config/default.toml relative to the working directory, then the same path relative to the repository root, then the copy compiled into the binary. An installed user always gets the compiled-in copy, so the result does not depend on where you were standing when you ran it.

init also stamps onboarded = true into [general], so the setup wizard does not fire over the config you just made.

After running it

The file is around 360 lines, comments included, and covers every section the daemon reads. Print the effective result with grith config - that output is the merged struct with the comments stripped, so it is shorter - and see Configuration overview for which layer wins.

⚠️Do not hand-write a sparse config

Every configuration layer is deep-merged from a whole serialised struct, so a two-line overlay file quietly contributes Rust defaults for everything it omits - including an empty supervisor.default_profile, which fails validation and stops the CLI. Start from grith init and edit, or use grith config set.

See also

Last updated: 2026-08-24Edit this page on GitHub →