Skip to main content

Architecture

OpenPawz is a Tauri v2 desktop application with a Rust backend and TypeScript frontend.

System overview

Tauri Shell

TypeScript Frontend

Views · Feature Modules · IPC Bridge

↕ IPC (invoke / events)

Rust Engine

Agent Loop · Providers · Channels · Memory · Skills · Orchestrator · Sandbox

SQLite Database

sessions · messages · memories · tasks · skills · agents · projects · trades

Extensibility — Three-Tier System

Pawz has a three-tier extensibility architecture. Each tier adds more power over the previous.

Tier 3 — Extensions

Custom sidebar views · Dashboard widgets · Persistent data
pawz-skill.toml + [view] + [storage]

Tier 2 — Integrations

Credential vault · API access · CLI binaries · Widgets
pawz-skill.toml + [[credentials]] + [instructions]

Tier 1 — Skills

Prompt injection only · Zero config · SKILL.md format
skills.sh ecosystem · Agent-installable

Skill loading pipeline

Agent prompt assembly

For full details: Skills · Integrations · Extensions · PawzHub

Frontend (src/)

Vanilla TypeScript with DOM manipulation — no framework. Each view is a module that renders into the main content area.

Views

Feature modules (src/features/)

Atomic design pattern — each feature has atoms.ts (data/state), molecules.ts (UI components), and index.ts (exports).

Flow engine (src/views/flows/)

The visual workflow builder has its own execution engine built on the Conductor Protocol — an optimizer that detects parallelism, convergence, and higher-dimensional structures in flow graphs.

IPC bridge (src/engine-bridge.ts)

All communication with the Rust backend goes through Tauri’s invoke() and event system. The bridge provides typed wrappers for every engine command.

Backend (src-tauri/src/engine/)

Rust async engine built on Tokio.

Core modules

Channel bridges

Each channel has its own bridge module: telegram.rs · discord.rs · slack.rs · matrix.rs · irc.rs · mattermost.rs · nextcloud.rs · nostr.rs · twitch.rs · webchat.rs · whatsapp/

Provider implementations

Database

Pawz uses two SQLite databases — one managed by the Rust engine, one by the TypeScript frontend.

Engine database (Rust — rusqlite)

Frontend database (TypeScript — @tauri-apps/plugin-sql)

Canvas database (Rust — rusqlite)

:::info Sensitive fields in the frontend database are encrypted with AES-256-GCM using a key stored in the OS keychain. Encrypted values are prefixed with enc: for identification. :::

IPC bridge architecture

All communication between the TypeScript frontend and Rust backend uses Tauri’s IPC system. The bridge (src/engine/molecules/ipc_client.ts) provides typed wrappers for every invoke command.

Invoke commands (Frontend → Backend)

Commands are called via invoke() and return Promises:

Agent built-in tools

Every agent has access to these built-in tools (defined in tools.rs, executed in tool_executor.rs): These tools allow agents to discover, install, and manage community skills during conversations without requiring the user to visit the Skills tab.

Events (Backend → Frontend)

The engine communicates with the frontend via Tauri’s event system for real-time updates. The frontend subscribes using listen() and the backend emits events asynchronously.

EngineEvent kinds

The engine-event payload contains a kind field that determines the event type:

Event flow

Build pipeline

Pawz uses a dual build pipeline — Vite for the frontend and Cargo for the Rust backend, orchestrated by Tauri:

Development

  1. Vite dev server starts on http://localhost:1420 (HMR enabled)
  2. Cargo compiles the Rust backend in debug mode
  3. Tauri launches the app window pointing at the Vite dev server
  4. File changes in src/ trigger Vite HMR; changes in src-tauri/ trigger Cargo rebuild

Production build

  1. pnpm build — Vite bundles TypeScript → dist/ (optimized, minified)
  2. cargo build --release — Compiles Rust backend with optimizations
  3. Tauri packages both into a native installer (.dmg, .AppImage, .msi)

Build configuration

Content Security Policy

The production CSP restricts the frontend:

Technology stack