dino-desktop
v1.0.0
Published
Desktop UI for Dino AI verification agent — trigger Playwright test automation prompts with one click
Readme
Dino Desktop
Desktop UI for Dino — trigger AI-powered Playwright verification prompts with one click.
Screenshot
┌─────────────────────────────────────────────────────────────┐
│ 🦕 Dino Desktop │
│ AI-Powered Playwright Verification Agent 🟢 ⚙️ │
├─────────────────────────────────────────────────────────────┤
│ Server: [http://localhost:4003 ] [↻]│
├──────────────┬──────────────────────────────────────────────┤
│ PROMPTS │ /generate-pom-from-url-cli │
│ │ ───────────────────────────────────── │
│ /setup- │ │
│ playwright │ URL: [https://example.com ] [required] │
│ │ Dir: [tests/pom ] [optional] │
│ │ │
│ /generate- │ [▶ Run] [■ Stop] [✕ Clear] │
│ pom-from-* │ ───────────────────────────────────── │
│ │ ▶ Starting /generate-pom-from-url-cli... │
│ /generate- │ 🔧 bash ... ✓ done │
│ bdd-from-* │ 🔧 read ... ✓ done │
│ │ Generated POM for LoginPage... │
│ /generate- │ ✅ Session complete. │
│ spec-from-* │ │
│ │ TOOL CALLS │
│ /heal- │ ▶ bash ✓ read ✓ write │
│ playwright │ │
├──────────────┴──────────────────────────────────────────────┤
│ @assertrx/dino | Ready │
└─────────────────────────────────────────────────────────────┘Prerequisites
- Node.js ≥ 18
- Dino API server running — follow the Dino README to start it.
Quick Start
# 1. Clone or download this project
cd dino-desktop
# 2. Install dependencies
npm install
# 3. Start the app
npm startMake sure the Dino API server is running on http://localhost:4003 (or enter your server URL in the app).
Usage
- Enter the API server URL in the top bar (defaults to
http://localhost:4003) - Click a prompt on the left sidebar to select it
- Fill in required parameters (URL, output directory, etc.)
- Click ▶ Run — the agent response streams in real-time
- Watch tool calls in the bottom panel as the pi agent runs bash, read, write, etc.
Prompts Available
| Prompt | Description |
|--------|-------------|
| /setup-playwright | Set up a vanilla Playwright project |
| /generate-pom-from-url | Generate POMs via Playwright MCP bridge |
| /generate-pom-from-url-cli | Generate POMs via playwright-cli (preferred) |
| /generate-bdd-from-url | Generate Gherkin BDD scenarios |
| /generate-spec-from-feature | Generate Playwright spec from Gherkin |
| /heal-playwright-failures | Auto-heal failed Playwright tests |
Package for Distribution
npm run package:win # Windows .exe
npm run package:mac # macOS .dmg
npm run package:linux # Linux AppImageOutput goes to dist/.
Configuration
Settings are stored in localStorage:
dinoServerUrl— API server address (default:http://localhost:4003)
Open the ⚙️ Settings panel from the header to configure:
- Project Workspace — saved as the
cwdsent to the Dino API, so prompts run in the right directory. - API Key & Model — pick any provider (Anthropic, OpenAI, Google, DeepSeek, Groq, …), enter its API key, click ↻ Load Models to list the models that key unlocks, then select a model from the dropdown. Clicking Save persists the provider, key, and model.
All values are persisted with electron-store and are automatically included in every prompt execution request — each run sends cwd, provider, apiKey, and model, so the Dino API uses exactly the credentials and model you selected. Keys are optional if the provider is already configured on the server (via env vars or pi /login).
Note: keys are stored locally in the Electron settings file and forwarded per request; they are never written to the Dino server's disk.
Tech Stack
- Electron — desktop shell
- Vanilla JS — no framework, minimal overhead
- SSE — real-time streaming from Dino API server
Licensing (LicenseSeat)
Dino Desktop is licensed via LicenseSeat. On first launch users see an activation dialog where they enter their XXXX-XXXX-XXXX-XXXX license key; the app unlocks once activated. Licenses are validated online hourly, send heartbeats, and keep working offline for up to 14 days (offlineFallbackEnabled in src/renderer/license.js).
Setup:
Sign up at licenseseat.com and create a product.
Put your publishable API key (
pk_live_...) and product slug insrc/renderer/license.js(LICENSE_CONFIG).If you ever update the SDK, rebuild the vendored bundle:
npm run bundle:license
Users can check license status and deactivate their device under Settings → License.
