Tauri API
This document describes all Tauri commands exposed to the frontend via invoke().
Overview
Skelenote's Rust backend provides commands in these categories:
Crypto - Encryption, key management, Skeleton Key operations
Network - Local P2P server and mDNS discovery
Device - Device management and revocation
Usage
From TypeScript/React, call commands using Tauri's invoke:
import { invoke } from '@tauri-apps/api/core';
// Example: Check if Skeleton Key exists
const hasKey = await invoke<boolean>('crypto_has_key');Crypto Commands
Commands for managing the Skeleton Key and encryption operations.
crypto_init
crypto_initInitialize the crypto subsystem. Must be called on app startup.
Returns: boolean - true if a Skeleton Key already exists
Notes: Guards against double-initialization (safe to call from React StrictMode)
crypto_generate_key
crypto_generate_keyGenerate a new Skeleton Key (BIP39 mnemonic).
Returns: string - 24-word mnemonic phrase
Notes: This does NOT store the key. Call crypto_import_key to store it.
crypto_import_key
crypto_import_keyImport and store a Skeleton Key from mnemonic.
Parameters:
mnemonic: string- 24-word BIP39 mnemonic
Notes: Validates the mnemonic before storing. Derives and caches sync key.
crypto_has_key
crypto_has_keyCheck if a Skeleton Key exists in secure storage.
Returns: boolean - true if key exists
crypto_encrypt
crypto_encryptEncrypt data for sync transmission using XChaCha20-Poly1305.
Parameters:
data: number[]- Plaintext bytes to encrypt
Returns: number[] - Encrypted bytes (includes nonce)
crypto_decrypt
crypto_decryptDecrypt data received from sync.
Parameters:
data: number[]- Encrypted bytes (with nonce)
Returns: number[] - Decrypted plaintext bytes
crypto_generate_qr
crypto_generate_qrGenerate a QR code for the Skeleton Key.
Parameters:
mnemonic: string- The mnemonic to encode
Returns: string - SVG as base64 data URI for <img src>
crypto_parse_qr
crypto_parse_qrParse a QR code payload to extract the mnemonic.
Parameters:
payload: string- Raw QR code content
Returns: string - Extracted mnemonic
crypto_validate_mnemonic
crypto_validate_mnemonicValidate a mnemonic phrase.
Parameters:
mnemonic: string- Phrase to validate
Returns: boolean - true if valid BIP39 phrase
crypto_get_user_id
crypto_get_user_idGet the derived user ID from the Skeleton Key.
Returns: string - Deterministic user ID (same across all devices with same key)
Notes: Used for sync room identification. All devices with same Skeleton Key get same user ID.
crypto_clear_key
crypto_clear_keyClear the Skeleton Key and all secrets.
Notes: Removes master key from Stronghold. App will show setup screen on next launch.
Network Commands
Commands for local P2P networking.
network_start_server
network_start_serverStart the local sync TCP server.
Returns: number - Port the server is listening on
Events Emitted:
local-peer-connected- When a peer connectslocal-peer-disconnected- When a peer disconnectslocal-sync-message- When sync data is receivedlocal-sync-error- On connection errors
network_stop_server
network_stop_serverStop the local sync TCP server.
network_get_server_info
network_get_server_infoGet server running status and port.
network_get_connected_peers
network_get_connected_peersGet list of currently connected peers.
network_get_device_info
network_get_device_infoGet this device's network info.
network_get_device_id
network_get_device_idGet this device's unique ID.
network_sync_device_id
network_sync_device_idSynchronize device ID with persistent storage.
Notes: Call after crypto_init to ensure device ID persists across restarts.
mDNS Discovery Commands
Commands for discovering peers on the local network.
network_start_discovery
network_start_discoveryStart mDNS discovery and advertising.
Notes: Server must be running first (call network_start_server first)
Events Emitted:
local-peer-discovered- When a new peer is foundlocal-peer-lost- When a peer disappears
network_stop_discovery
network_stop_discoveryStop mDNS discovery and advertising.
network_get_discovered_peers
network_get_discovered_peersGet list of discovered peers on the local network.
network_is_discovery_running
network_is_discovery_runningCheck if mDNS discovery is running.
Peer Connection Commands
network_connect_to_peer
network_connect_to_peerConnect to a discovered peer by device ID.
Parameters:
deviceId: string- Device ID of the peer to connect to
Notes: Peer must be in discovered peers list. Will refuse if device is blocked.
Sync Relay Commands
Commands for broadcasting sync data to connected peers.
network_broadcast_sync
network_broadcast_syncBroadcast sync data to all connected local peers.
Parameters:
data: number[]- Encrypted Loro update bytes
Returns: number - Number of peers data was sent to
network_peer_count
network_peer_countGet number of connected peers.
network_broadcast_device_registry
network_broadcast_device_registryBroadcast device registry to all connected peers.
Parameters:
data: number[]- Loro snapshot bytes of device registry
network_broadcast_device_revoke
network_broadcast_device_revokeBroadcast device revocation to all connected peers.
network_broadcast_device_rename
network_broadcast_device_renameBroadcast device rename to all connected peers.
Device Management Commands
Commands for managing device trust and revocation.
device_get_signing_public_key
device_get_signing_public_keyGet the Ed25519 public signing key for this device.
Notes: All devices with same Skeleton Key have same signing keypair.
device_sign_revocation
device_sign_revocationCreate a signed device revocation.
device_verify_revocation
device_verify_revocationVerify a device revocation signature.
device_block
device_blockBlock a device from P2P connections.
Notes: Adds to local blocklist. Blocked devices are filtered from mDNS and rejected at TCP handshake.
device_is_blocked
device_is_blockedCheck if a device is blocked.
device_get_blocked
device_get_blockedGet all blocked device IDs.
Events
The Tauri backend emits these events that can be listened to from the frontend:
local-peer-connected
{ deviceId, deviceName, address }
A peer connected via TCP
local-peer-disconnected
{ deviceId }
A peer disconnected
local-sync-message
{ deviceId, msgType, payload }
Sync data received from peer
local-sync-error
{ message }
Connection error occurred
local-peer-discovered
{ deviceId, deviceName, addresses, port, fingerprint }
Peer found via mDNS
local-peer-lost
{ deviceId }
Peer no longer visible on network
Listening to Events
Last updated