> ## Documentation Index
> Fetch the complete documentation index at: https://configurate.crystaworld.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# tauri-plugin-configurate Plugin Overview for Tauri v2

> Overview of tauri-plugin-configurate: schema-driven, type-safe configuration for Tauri v2 with multi-format storage and native OS keyring support.

`tauri-plugin-configurate` is a Tauri v2 plugin that brings structured, type-safe configuration management to your desktop application. Define your config shape once with a TypeScript schema, and the plugin handles reading, writing, encrypting, and migrating your settings — across JSON, YAML, TOML, and encrypted binary formats — with full type inference throughout your codebase.

<Note>
  This plugin targets **desktop platforms only**. Android and iOS are not supported.
</Note>

## Platform Support

| Platform | Supported |
| -------- | --------- |
| Linux    | ✓         |
| Windows  | ✓         |
| macOS    | ✓         |
| Android  | —         |
| iOS      | —         |

## Key Features

<CardGroup cols={2}>
  <Card title="Multi-Format Storage" icon="folder-open">
    Persist configuration as **JSON**, **YAML**, **TOML**, or **Binary**. The binary provider uses XChaCha20-Poly1305 encryption with either a high-entropy key (SHA-256 KDF) or a user password (Argon2id).
  </Card>

  <Card title="Type-Safe Schema" icon="shield-check">
    Define your config shape with `defineConfig` and get full **TypeScript type inference** across every read and write. Mark individual fields as `optional()` to model settings that may be absent. No more stringly-typed settings objects or manual casting.
  </Card>

  <Card title="OS Keyring Integration" icon="key">
    Mark individual fields with `keyring()` to store sensitive values — passwords, tokens, API keys — in the **native OS credential store** (Keychain on macOS, Credential Manager on Windows, Secret Service on Linux) instead of on disk.
  </Card>

  <Card title="Atomic Writes & Rolling Backups" icon="floppy-disk">
    Every file write uses **atomic replace** via `tempfile::persist`, protecting against partial writes and data corruption even on unexpected shutdown. Rolling backup support keeps prior versions recoverable.
  </Card>

  <Card title="Batch Operations" icon="layer-group">
    Use `Configurate.loadAll`, `Configurate.saveAll`, and `Configurate.patchAll` to read or write **multiple config entries in a single IPC call**, reducing round-trips in apps with many config files.
  </Card>

  <Card title="Schema Versioning & Migrations" icon="code-branch">
    Attach a version to your schema and provide migration functions so the plugin can **automatically upgrade stored config** from older application releases to the current shape.
  </Card>

  <Card title="File Watching" icon="eye">
    Subscribe to **external file-change events** so your UI can react in real time when the config file is modified outside your app — useful for power users who edit settings by hand.
  </Card>

  <Card title="Export & Import Across Formats" icon="arrows-rotate">
    Export a live config to any supported format and import it back, enabling **format migrations** (e.g. JSON → TOML) and portable settings backup workflows.
  </Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Installation" icon="download" href="/installation">
    Add the Rust crate and npm package to your project, register the plugin, and configure permissions.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Define your first schema, create a config file, and read it back in five minutes.
  </Card>
</CardGroup>
