Skip to main content
The shortest path from clone to a running chat.

Quick Start

1

Install

The package is private and needs Node >=22.18. Runtime dependencies load through adapters, so there is no runtime dependencies block.
2

Run the gates

check chains typecheck, boundaries, and test.
3

Build the webview bundle


Package Scripts

Every script the package ships, from package.json.

Swap the Engine

Which engine answers is a setting, read at boot in app/src/main.ts. Change one value.
Set engineId: "praisonai-ts" to run the agent loop in-process instead of over HTTP. The in-process engine is offered only when its factory is passed to enginesFor.
The device build is blocked on PraisonAI PR #4438: crypto and events are static imports on the Agent graph and die at webview import time. The app runs today with remote-http; it becomes runnable on device with praisonai-ts once #4438 lands.

Best Practices

The bundle gate catches Node builtins and top-level process.env that pass in Node but blank the webview on device.
It speaks the full 11-event vocabulary against a running desktop engine, so you see tool rows and approvals while iterating.
engineId is read from settings at boot, so users switch runtimes without a rebuild.

Agent Engine Port

The three shipped engines and the conformance harness.

The Two Seams

Why the boundaries are enforced by build.