FlexiGPT is local-first, but requests still go to the provider you choose. This page explains what stays on your device, what can leave it, and what to check when something feels wrong.
- What stays local
- What can be sent to a provider
- Attachments need deliberate handling
- Tool outputs can be resent too
- Debug settings can expose more than normal use
- Troubleshooting checklist
- Practical privacy checklist
- Final reminder
The frontend may remember UI-only state in your browser profile, such as:
- chat tab state
- selected tab
- scroll position
- startup theme choice
This is separate from durable app data.
Provider secrets are protected through the OS keyring.
The app can show credential metadata such as key name or whether a value exists, but not the secret itself.
Conversations are stored locally, and local search is available for conversation history.
That means these capabilities stay on-device:
- stored conversation history
- local history search
- reopening saved conversations into tabs
The app also stores local data for areas such as:
- settings metadata
- provider and model presets
- prompt bundles and templates
- tool bundles and tool definitions
- assistant presets
- skill bundles and skills
- bundled docs shipped inside the app
Most of this is local configuration and catalog data.
FlexiGPT stores its local data under the app's XDG data-home location, using a flexigpt app-data folder.
These get created at first launch of FlexiGPT.
For current packaged builds, that typically means:
- macOS:
~/Library/Containers/io.github.flexigpt.client/Data/Library/Application Support/flexigpt/ - Linux Flatpak:
~/.var/app/io.github.flexigpt.client/data/flexigpt/ - Windows:
%LOCALAPPDATA%\flexigpt\, usuallyC:\Users\<username>\AppData\Local\flexigpt\. Manually finding the folder:- Open File Explorer -> Go to
C:\Users\<username>\-> Enable hidden folders as View -> Show -> Hidden items -> OpenAppData\Local\flexigpt. - OR if
AppDatais not visible or you are unsure which local profile path Windows is using, open PowerShell and run$env:LOCALAPPDATA.
- Open File Explorer -> Go to
When you send a request, the selected provider may receive some or all of the following:
- the current user message
- system prompt content
- prompt template output
- earlier user turns included by the history setting
- attachments belonging to included messages
- model preset and advanced parameter values
- selected tool choices and tool outputs
- web-search configuration when supported by the provider
- skill session context and skill-related behavior when enabled
FlexiGPT does not proxy billing through its own service. Billing and limits come from the provider account behind the configured key.
Attachments are often the biggest privacy multiplier in a request.
Depending on the attachment type, the app may turn them into:
- text content
- image content
- file content
Folder attachments can expand into multiple files, so treat them as a batch of source material rather than as a single symbolic pointer.
A URL attachment is not the same as leaving a plain link in your message.
Depending on the attachment type and provider support, the app may fetch and transform URL content before it becomes request context.
Tool-assisted workflows can add more context to later requests.
Before sending sensitive work, remember that tool outputs can also become part of the continuing conversation, whether they were added after manual review or after an auto-executed step.
Debug settings can affect:
- backend log verbosity
- whether raw LLM request and response payloads are logged
- whether content stripping is disabled for debug details
If you enable raw request and response logging, treat your local logs as sensitive.
Check these first:
- a provider key was added in Settings
- the selected provider is enabled in Model Presets
- the selected model preset is enabled
- the current tool or web-search choice is not blocked by missing arguments or missing configuration
- the current request still has real content after removing stale attachments or tool outputs
Adjust one layer at a time:
- simplify the request
- reduce stale history with Previous user turns
- attach the exact source file or URL that matters
- switch to a better model preset
- refine system prompt sources or prompt templates
- enable tools or skills only if the task truly needs them
Look for these causes:
- the tool call is waiting for manual execution
- auto-execute is off
- required user arguments are missing
- the selected tool is not the right one for the current provider or task
Use these inspection surfaces before changing too many things at once:
- message details
- token usage
- citations
- tool details and outputs
- debug settings, only when needed
Before sending sensitive work, confirm:
- the selected provider key is the intended one
- the history window is not larger than necessary
- stale attachments are removed
- tool outputs do not include data you would not want resent
- debug logging is off unless you are actively diagnosing a problem
Local-first does not mean provider requests stay local. The safest habit is to think about the full request payload, not only the text currently visible in the editor.