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

# Electron

> Add auth to Electron apps via `createKavachElectron`. Covers OS keychain token storage, OAuth popup windows, IPC bridge, and automatic token refresh.

`@kavachos/electron` provides secure auth for Electron desktop apps with encrypted token storage, OAuth popup windows, and IPC bridge for renderer-to-main communication.

## Install

```bash theme={"system"}
pnpm add @kavachos/electron
```

## Setup (main process)

```ts theme={"system"}
import { createKavachElectron } from '@kavachos/electron';

const kavach = createKavachElectron({
  baseUrl: 'https://api.myapp.com/api/kavach',
  appName: 'MyApp',
});

// Register IPC handlers
kavach.registerIpcHandlers(ipcMain);
```

## Usage (renderer)

```ts theme={"system"}
import { useKavachElectron } from '@kavachos/electron/renderer';

const { signIn, signOut, getSession, getUser } = useKavachElectron();

const session = await getSession();
if (!session) {
  await signIn('google'); // Opens OAuth popup window
}
```

## Features

| Feature        | Description                                     |
| -------------- | ----------------------------------------------- |
| Secure storage | Tokens encrypted via Electron's safeStorage API |
| OAuth popup    | Opens provider auth in a new BrowserWindow      |
| IPC bridge     | Secure main/renderer communication              |
| Auto-refresh   | Background token refresh                        |
| Deep links     | Handle `myapp://` callback URLs                 |

<Info>
  Token storage uses Electron's `safeStorage.encryptString()` which uses the OS keychain (Keychain on macOS, DPAPI on Windows, Secret Service on Linux).
</Info>
