Johannes Kaindl36 downloadsChange app and plugin settings through reviewed profiles or a local-LLM chat — with secrets left out, a diff before every write, and snapshots to roll back.
🇬🇧 English · 🇩🇪 Deutsch
Change app and plugin settings through reviewed profiles or a local-LLM chat — with secrets left out, a diff before every write, and snapshots to roll back.

Settings live in JSON files inside your configuration folder, and changing them by hand is easy to get wrong and hard to undo. Settings Assistant puts a review step in between: you describe the change as a profile (or ask the chat to draft one), the plugin compares it with the current state, shows every difference, and writes only what you tick — after saving a snapshot you can restore later.
settings-profile holds the settings you want. In reading view it shows a live comparison with the current state and an apply button. The same profile applied in another vault brings two vaults in line.apiKey, token, password or authorization are left out of profiles, chat context, saved notes and the API. They appear as a locked row with a button to the plugin's own settings. Snapshots copy a file unchanged, secrets included, and stay in your configuration folder; see Why secrets never travel.data.json, version 1 can write hotkeys.json. The other Obsidian files can be read and appear as read-only rows.docs/API.md.data.json.app.json, appearance.json, core-plugins.json or community-plugins.json. See Known limits.The plugin is not in the Community Store yet. Download main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/settings-assistant/ (use your configuration folder if it is not .obsidian), then enable Settings Assistant under Settings → Community plugins.
git clone https://github.com/johannes-kaindl/settings-assistant
cd settings-assistant
npm install
npm run build # produces main.js
Write a profile in any note. Reading view then shows the comparison:
```settings-profile
{
"version": 1,
"plugins": {
"my-plugin": { "maxRounds": 20 }
},
"notes": {
"plugins.my-plugin.maxRounds": "Shorter runs on the work machine."
}
}
```
Press Apply N change(s). A dialog lists the rows grouped by file; untick what you do not want, then confirm. A plugin that is switched on is turned off, written and turned on again, so open views of it close.
To ask instead of write: run Open settings chat (or use the ribbon icon), name a plugin in your question, and read the answer. A proposed profile appears with the same rows and the same apply button; Save as profile note keeps it for another vault.
To undo: run Undo last apply, or pick a snapshot in the settings under Snapshots. A file that changed since the apply is shown as such and is not ticked.
![]()
Click the preview for the full-size chat
The walk-through First profile does all of this once, step by step.
Settings → Community plugins → Settings Assistant, from top to bottom:
| Setting | What it does |
|---|---|
| Help | Opens the documentation and the issue tracker. |
| Endpoint | With the LLM Endpoint Manager installed: choose an endpoint or let the first reachable one win. Without it: an ordered list of OpenAI-compatible servers, each with an optional API key and model, a connection status and a Test connection button |
| Request | The sampling values, thinking level and token budget actually sent for the current model family, with the last request and any deviations of the session. |
| Retention | How many snapshots stay: Keep from today, Keep per day, Keep per week, Keep per month. Defaults 6, 7, 4 and 6; 0 keeps none for that period. |
| Saved snapshots | The list of snapshots, newest first. Selecting one opens the restore dialog. |
![]()
Click the preview for the full-size section
Everything that is about settings lives in a pure core without any Obsidian import: parsing a profile, comparing it with the files, finding secrets, patching JSON while keeping unknown keys, order and indentation, and deciding what a restore may touch. A gate keeps that boundary, so the core is tested in plain Node.
All three entrances — a note, the chat and the API — deliver a profile and an origin to one write path: read the files, compare, show the dialog, save a snapshot (if that fails, nothing is written), write each file, read it back and report what the plugin corrected. On an error it stops and offers a restore instead of rolling back on its own. Only one apply runs at a time.
Writing is limited to plugins/<id>/data.json of other plugins and hotkeys.json. The plugin's own data.json is never written through a profile, and the plugin never switches itself off or on.
AGENTS.md — architecture, conventions and gotchas for contributors and AI agents.CHANGELOG.md — what changed per release.Code AGPL-3.0-or-later (LICENSE), documentation CC BY-SA 4.0 (LICENSE-DOCS).
Lessons learned from Config Sync (MIT, xooooooooox/obsidian-config-sync) informed several edge cases. No code was copied.