Configuration files
Where Miton stores settings and project data — user profile, project `.miton/` folder, override order, and wipe options.
- Product stage
- Development build
- Last reviewed
- 2026-08-27
- Successful result
- The change is visible in the active project.
Who this is for: power users and developers who need to know what lives on disk, what is safe to commit, and how to reset a bad state.
Most settings are easier to change in Settings (Cmd+, / Ctrl+,). This page describes the
files behind those panels.
User profile (application data)
Created on first launch. Typical locations:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Miton/ |
| Windows | %APPDATA%\Miton\ |
| Linux | ~/.config/Miton/ |
Common contents:
| Path | Holds |
|---|---|
settings.json |
Global preferences (theme, defaults, telemetry toggles) |
recent.json |
Recent projects list |
logs/ |
Rotated application logs |
queue.ndjson |
Pending telemetry events (only if you opted in) |
crashes/ |
Local crash reports (only if enabled) |
Wipe everything: Settings → Diagnostics → Wipe user data (irreversible).
Some UI state (for example parts of the session list) also uses browser localStorage in the
desktop shell.
Shared CLI/desktop files (~/.miton/ by default)
The CLI and desktop use a second, home-relative directory (separate from the platform app-data path
above) for their small interoperability files. The CLI uses ~/.miton/ by default; set
MITON_CONFIG_DIR to give CLI-owned configuration and credential fallbacks another root. That
override also means the CLI will not see the desktop snapshot in the default location.
| Path | Holds |
|---|---|
config.json |
Chosen provider and default model, shared between desktop and CLI |
desktop-state.json |
Preferences, project list, and active project — read by the CLI on launch |
plugins/ |
Installed plugin bundles |
athenaeum/<type>/<slug>/ |
Marketplace installs — skills, themes, workflows, and templates |
skills/_drafts/ |
Skills Miton proposes from a session, pending your approval |
logs/react-crash.log |
Crash log for the desktop UI |
A second, separate app-data directory (the platform path from the table above, with a miton/
subfolder) holds two more shared stores that are easy to mistake for project files because a project
window is what triggers them:
| Path | Holds |
|---|---|
catalogue/catalogue.db |
One shared database: the model/provider catalogue, Writer citations, and saved Automation workflow versions (including anything built from a preset). Not project-scoped — citations and workflow versions from every project you’ve opened live in the same file. |
argus/tantivy |
The code-search index. One index at a time, rebuilt when you open a project — not a per-project folder, and not inside any project’s own .miton/. |
The CLI’s own configuration and usage ledgers live under ~/.miton/ by default and follow
MITON_CONFIG_DIR. Its workflow runs, cron schedules, sessions, model caches, egress ledger,
activity and checkpoints follow MITON_STATE_DIR. Both defaults are ~/.miton/, so existing
installations do not change location.
Project folder (.miton/)
Each project has a .miton/ directory in the project root, created on first open.
| Path | Holds | Usually in git? |
|---|---|---|
plan.md |
Written project plan | Yes |
blueprint.md |
Written project blueprint (Blueprint tab: title, status, components) | Yes |
milestones.json |
Goals — the milestone list behind the Goals view | Yes |
milestones.json.bak |
Previous milestones.json, kept as a recovery copy |
No |
drift.json |
Drift findings (blueprint-stale, dependency, security, and other checks) | Varies |
memory.sqlite |
Workspace memory database | No (local) |
canvas/*.sqlite |
Canvas data blocks, one file per data source | Varies |
blueprint/blueprint.sqlite |
Internal code-structure index (AST graph) that backs code search and context — regenerates automatically, not something you edit | No |
worktrees/ |
Sub-agent git worktrees | No |
wiki/ |
Project wiki pages | Yes |
shared-preferences.json |
A snapshot of your preferences, written only when you import a project someone shared with you | Varies |
There’s no project-level settings.json override file and no per-project starters/, presets/,
citations.db, data/*.db, argus/, or logs/ — see “Override order” and the shared app-level
stores above for where those settings and databases actually live.
The project’s .gitignore template excludes heavy or machine-local paths (blueprint/,
worktrees/, memory.sqlite, etc.). Commit the plan, blueprint, and goals you want to share with
teammates.
Custom, project-specific commands are not a YAML file convention — extend chat with a skill instead, installed from the marketplace or proposed by Miton from a session.
Also at the project root (outside .miton/):
MITON.md— project overview the agent reads every session.miton/rules/— rule files injected into context (path may be.miton/rules/per project layout)
Override order
There’s no project-level settings file to layer on top of your preferences. For a given setting, Miton resolves:
user settings.json → built-in default
Environment variables override file settings where supported — see environment variables.
Wipe and recovery
| Target | Effect |
|---|---|
| User data wipe | Clears global settings, caches, custom skills, logs |
| Project data wipe | Clears project memory, code search index, worktrees, local databases |
All wipes require confirmation in Settings → Diagnostics → Wipe.
Secrets (API keys) are not in JSON files — they live in the OS keychain.
Settings across several machines
Settings in this build are per-machine. Signing in to your Miton account on a second computer restores your account, not your preferences — themes, model groups, routing weights and the rest start at their defaults there.
Account-based preference sync is designed and planned, but is not in this build. When it arrives it will cover portable preferences only: machine-specific values (ports, paths, hardware profiles, local model endpoints) are deliberately excluded, and secrets will continue to stay in the OS keychain and never sync.
Until then, two things are worth knowing:
- Project content already travels.
plan.md,blueprint.md,milestones.json, andwiki/sit in the project’s own.miton/folder, so committing the project carries that work to every machine and teammate. Your app preferences don’t move with it — there’s no project-level settings override. - Your own sync tool works for the user profile, with one caveat: syncing the whole profile directory between different operating systems will carry machine-specific values across too, and those can misbehave. Sync deliberately, not wholesale.
What this page does not cover
- Encrypted settings files — JSON is plain text; keys stay in the keychain
- Full settings schema — see architecture package docs for field-level detail
See also
- Environment variables
- Glossary — project, goals, plan
- Troubleshooting