"Some choices belong to the job. Some belong to the machine. Put each where it changes, not where it's convenient."
One Profile for the Whole App
Alongside the per-macro vault dial sits a single app-wide execution profile: where inference runs (local, server, cloud), which brain, how much effort it spends, which soul (if any), and the Ollama tier and model. These are settings you pick once and rarely touch — they describe your machine and your preference, not the individual transformation. So they live once, at the app level, rather than being copied into every macro. A macro says what to do and how much context it needs; the profile says how the whole app runs.
Scope Follows Change Rate
The reason vault mode is per-macro and the profile is app-wide is simply how often each changes. Vault use-or-bypass genuinely differs from one transformation to the next, so it belongs to the macro. Brain, effort, and tier are stable choices for your setup that you'd want to apply to everything — duplicating them into every macro would just create dozens of copies to keep in sync. Put a setting at the scope where it actually varies: the volatile decision on the unit of work, the stable one on the app.
PER MACRO (varies per job) APP-WIDE (stable preference)
-------------------------- ----------------------------
vault use / bypass Pippa location (local/server/cloud)
prompt template brain
hotkey effort
enabled soul
Ollama tier / model
Per-Request, Not a Side Effect
There's a subtle invariant hiding in the profile. When Flint picks an Ollama tier and model for a request, that choice travels with the request — it does not reach across the boundary and change the brain's own global model. Flint stating 'run this one on the local tier' must never leave the brain stuck on the local tier for its other callers. The profile configures Flint's requests; it is not a remote control for the brain's global state. Settings on one side of a boundary must not mutate the other side's state as a side effect.