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 ·
skills.sh ecosystem · Agent-installable
SKILL.md formatskills.sh ecosystem · Agent-installable
Skill loading pipeline
Agent prompt assembly
For full details: Skills · Integrations · Extensions · PawzHubFrontend (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 viainvoke() and return Promises:
Agent built-in tools
Every agent has access to these built-in tools (defined intools.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 usinglisten() and the backend emits events asynchronously.
EngineEvent kinds
Theengine-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
- Vite dev server starts on
http://localhost:1420(HMR enabled) - Cargo compiles the Rust backend in debug mode
- Tauri launches the app window pointing at the Vite dev server
- File changes in
src/trigger Vite HMR; changes insrc-tauri/trigger Cargo rebuild
Production build
pnpm build— Vite bundles TypeScript →dist/(optimized, minified)cargo build --release— Compiles Rust backend with optimizations- Tauri packages both into a native installer (
.dmg,.AppImage,.msi)

