Skip to main content
tauri-plugin-configurate exposes 16 IPC commands that the Tauri frontend can call via invoke("plugin:configurate|<name>", { payload }). Under normal usage you never call these directly — the TypeScript SDK builds the correct payload and invokes the appropriate command for every operation. This reference is intended for advanced users building custom integrations, debugging IPC traffic, or writing alternative client-side SDKs.
All commands listed here are internal implementation details of the TypeScript SDK. The stable public API is the Configurate class and its methods. If you find yourself calling these commands directly, consider opening an issue to discuss whether the SDK is missing a feature you need.

Common payload fields

Most single-config commands accept a ConfiguratePayload object with these fields:
FieldTypeDescription
fileNamestringConfig file name (no path separators)
baseDirnumberTauri BaseDirectory enum value
providerobjectProvider descriptor — see below
options.dirNamestring?Replaces the app-identifier directory segment
options.currentPathstring?Sub-directory within the resolved root
dataunknownConfig data to write (write operations only)
keyringEntriesarray?Keyring entries to read or write
keyringOptionsobject?{ service, account } for keyring access
withUnlockbooleanWhen true, return unlocked data
returnDatabooleanWhen true, return the written data
createIfMissingbooleanpatch only — create if file does not exist
backupbooleanEnable rolling backup files before each write
The provider field is an object with a kind field ("json", "yml", "toml", "binary", or "sqlite") plus provider-specific fields (encryptionKey, kdf, dbName, tableName).

Single-config commands

create

IPC name: plugin:configurate|create Creates a new config entry and writes it to storage. Emits a configurate://change event with operation: "create" on success.
Payload fieldRequiredDescription
fileNameYesFile name for the new config
baseDirYesBase directory
providerYesStorage provider
dataYesInitial config data to write
keyringEntriesWith keyringOptionsSecrets to store in the OS keyring
keyringOptionsWith keyringEntriesKeyring service and account
Returns unknown (the written data when returnData: true, otherwise null).

load

IPC name: plugin:configurate|load Reads an existing config from storage and returns the raw data. Keyring fields in the stored data are null — use unlock to populate them.
Payload fieldRequiredDescription
fileNameYesFile name to load
baseDirYesBase directory
providerYesStorage provider
Returns unknown — the raw deserialized config data.

save

IPC name: plugin:configurate|save Overwrites an existing config with data, replacing all stored content. Emits a configurate://change event with operation: "save".
Payload fieldRequiredDescription
fileNameYesFile name to overwrite
baseDirYesBase directory
providerYesStorage provider
dataYesFull replacement config data
keyringEntriesWith keyringOptionsSecrets to store in the OS keyring
keyringOptionsWith keyringEntriesKeyring service and account
Returns unknown (written data when returnData: true, otherwise null).

patch

IPC name: plugin:configurate|patch Reads the existing config, deep-merges data into it, and writes the result back. Object keys are merged recursively; non-object values are replaced. Emits a configurate://change event with operation: "patch". The file is locked for the full duration of the read-merge-write cycle.
Payload fieldRequiredDescription
fileNameYesFile name to patch
baseDirYesBase directory
providerYesStorage provider
dataYesPartial data to merge
createIfMissingNoWhen true, creates the config if it does not exist instead of returning an error
Returns unknown (merged data when returnData: true, otherwise null).

delete

IPC name: plugin:configurate|delete Deletes the config file (or SQLite row) from storage. If keyring entries are provided, removes the corresponding secrets from the OS keyring after the file is deleted. Emits a configurate://change event with operation: "delete".
Payload fieldRequiredDescription
fileNameYesFile name to delete
baseDirYesBase directory
providerYesStorage provider
keyringEntriesWith keyringOptionsKeyring entries to remove
keyringOptionsWith keyringEntriesKeyring service and account
Returns null.

exists

IPC name: plugin:configurate|exists Checks whether the config file (or SQLite row) exists in storage.
Payload fieldRequiredDescription
fileNameYesFile name to check
baseDirYesBase directory
providerYesStorage provider
Returns boolean.

reset

IPC name: plugin:configurate|reset Deletes the existing config and re-creates it with the provided data. This is an atomic operation within the process — the file lock is held for the entire delete-then-create sequence. Emits a configurate://change event with operation: "reset".
Payload fieldRequiredDescription
fileNameYesFile name to reset
baseDirYesBase directory
providerYesStorage provider
dataYesDefault data to write after deletion
Returns unknown (written data when returnData: true, otherwise null).

unlock

IPC name: plugin:configurate|unlock Reads keyring secrets and inlines them into an already-loaded plain data object. Does not re-read the file from disk — pass in data you have already loaded.
Payload fieldRequiredDescription
dataYesPreviously loaded plain config data (with null keyring fields)
keyringEntriesYesEntries describing which keyring IDs map to which dot-paths
keyringOptionsYesKeyring service and account
Returns unknown — the data object with keyring fields populated.

export_config

IPC name: plugin:configurate|export_config Reads a config and serializes it to a string in the specified format. Supports "json", "yml", and "toml".
Payload fieldRequiredDescription
sourceYesA ConfiguratePayload identifying the config to export
targetFormatYes"json", "yml", or "toml"
Returns string — the serialized config.

import_config

IPC name: plugin:configurate|import_config Parses a config string from the specified source format and saves the parsed data to the target config location. Emits a configurate://change event with operation: "import".
Payload fieldRequiredDescription
targetYesA ConfiguratePayload identifying where to save the imported data
sourceFormatWith content"json", "yml", or "toml"
contentWith sourceFormatThe serialized config string to parse
parseOnlyNoWhen true, parses and returns the data without writing to storage
Returns unknown — the imported (parsed) data.

File-watching commands

watch_file

IPC name: plugin:configurate|watch_file Registers a file-system watcher on the config file. When the file is modified by an external process, a configurate://change event is emitted with operation: "external_change". Only file-based providers are supported — calling this for a SQLite provider returns an error.
Payload fieldRequiredDescription
fileNameYesFile to watch
baseDirYesBase directory
providerYesMust be a file-based provider
Returns null.
watch_file is not supported for SqliteProvider. Calling it with a SQLite payload returns an invalid_payload error.

unwatch_file

IPC name: plugin:configurate|unwatch_file Unregisters a previously registered file watcher. Safe to call even if the file is not currently watched.
Payload fieldRequiredDescription
fileNameYesFile to stop watching
baseDirYesBase directory
providerYesStorage provider
Returns null.

list_configs

IPC name: plugin:configurate|list_configs Lists config entries in the resolved root directory.
  • File-based providers — scans the directory for files matching the provider’s extension. Backup files (.bak1, .bak2, …) and temp files (.*.tmp) are excluded. Results are sorted alphabetically.
  • SQLite — queries all config_key values from the table.
Payload fieldRequiredDescription
fileNameYesUsed only to resolve path options; the name itself is not filtered on
baseDirYesBase directory to scan
providerYesStorage provider
Returns string[] — file names or SQLite keys.

Batch commands

Batch commands accept a BatchPayload with an entries array. Each entry has a unique id string and a payload field containing a standard ConfiguratePayload. Duplicate IDs within the same batch are rejected. Results are returned as a map keyed by entry id.

load_all

IPC name: plugin:configurate|load_all Loads multiple configs in a single IPC call. Each entry is processed independently — one failure does not abort the rest.
Entry fieldRequiredDescription
idYesUnique identifier for this batch entry
payloadYesStandard ConfiguratePayload for the config to load
Returns BatchRunResult{ results: Record<string, { ok: true; data: unknown } | { ok: false; error: { kind: string; message: string } }> }.

save_all

IPC name: plugin:configurate|save_all Saves multiple configs in a single IPC call. Change events for all successful entries are emitted after all saves complete.
Entry fieldRequiredDescription
idYesUnique identifier for this batch entry
payloadYesStandard ConfiguratePayload with data included
Returns BatchRunResult.

patch_all

IPC name: plugin:configurate|patch_all Deep-merges patch data into multiple configs in a single IPC call. Each entry’s file lock is held for its individual read-merge-write cycle. Change events are emitted after all patches complete.
Entry fieldRequiredDescription
idYesUnique identifier for this batch entry
payloadYesStandard ConfiguratePayload with partial data to merge
Returns BatchRunResult.

Build docs developers (and LLMs) love