Where Does Marimo Store Its Config?
Marimo reads user defaults from marimo.toml in the XDG config dir and project overrides from pyproject.toml.
Last updated
Marimo layers its config. User defaults live at ~/.config/marimo/marimo.toml (or $XDG_CONFIG_HOME/marimo/marimo.toml). Project settings override them from the tool.marimo section in pyproject.toml. A legacy .marimo.toml is still searched upward from the notebook through home.
Run marimo config show when confused. It prints which file is actually active, which settles most why-won't-this-stick mysteries. Project overrides win over user defaults, and UI edits cannot change values a project file pins.
Where Marimo stores this, by platform
~/.config/marimo/marimo.toml
User defaults. A per-directory .marimo.toml and home ~/.marimo.toml are still searched first. MARIMO_CONFIG_DIR relocates the XDG file.
~/.config/marimo/marimo.toml
Same search order as macOS. Project pyproject.toml tool.marimo keys override this file.
Frequently asked questions
Which marimo config wins when several exist?
Notebook script metadata first, then pyproject.toml tool.marimo, then the user marimo.toml. Run marimo config show to print the active file and values so you can see the resolution directly.
Why do my marimo UI settings keep reverting?
The project pyproject.toml is overriding them. Edit the project file instead of the user file, or remove the pinned keys there so your user defaults apply again.
Notice an outdated path? Let us know.