English · العربية
A local desktop AI Prompt Engineering Studio — convert developer requests (Arabic or English) into structured, LLM-optimized prompts. All data stays on your machine. No telemetry, no cloud sync, no account.
Stack: Tauri 2 · React 19 · TypeScript 5.8 · Tailwind CSS v4 · SQLite · Rust
- Multi-provider LLM support — OpenAI, Anthropic, Azure OpenAI, Google Gemini, Groq, and Ollama (local models).
- Encrypted API keys — AES-256-GCM with the master key stored in the OS keyring (Windows Credential Manager, macOS Keychain, Linux secret-service).
- Handlebars template engine — write meta-prompts with
{{variable}}placeholders; 4 built-in templates included. - Streaming responses — token-by-token output with cancel support.
- Execution history — prompts, outputs, tokens, latency, and cost stored locally in SQLite.
- Cost tracking — automatic pricing lookup across ~30 models.
- Monaco Editor — full-featured template editor with a side-by-side diff viewer.
- Template import/export — share template bundles as JSON files.
- Signed auto-updates — cryptographically verified releases via the Tauri updater.
- Arabic-first RTL UI — with full LTR support for English content.
- Node.js 24+
- Rust 1.95+ (stable, MSVC toolchain on Windows)
- Windows: Visual Studio 2022 BuildTools with the "Desktop development with C++" workload.
:: Dev mode — opens a native Tauri window with hot reload + devtools
dev.bat
:: Production build — produces .msi + .exe installers
build.bat
:: Rust type-check only (fast iteration)
dev-check.batThe
.batwrappers automatically load the MSVC environment from VS 2022 BuildTools before invoking cargo/npm.
Do not open
http://localhost:1420in a regular browser — the Tauri IPC bridge only exists inside the native window, soinvoke()calls will silently fail.
React UI ──invoke──▶ Tauri Commands ──▶ Services (llm, pricing, templates) ──▶ DB / HTTP / Keyring
◀──emit stream events──
Single process, no background services, no queues. Streaming flow:
- Frontend calls
execute_template_streamwith a template + variables. - The command renders the prompt, registers a cancel channel, and spawns a tokio task.
- The provider adapter streams chunks from the LLM API via mpsc.
- Each chunk is emitted to the frontend as a
StreamEvent::Delta. - On completion (or cancellation), the execution row — including partial output and computed cost — is persisted to SQLite.
itqan/
├── src-tauri/ Rust backend
│ ├── src/
│ │ ├── commands/ Tauri command handlers (IPC layer)
│ │ ├── crypto/ AES-256-GCM + OS keyring
│ │ ├── db/ SQLite via sqlx (migrations, models)
│ │ ├── errors/ Unified AppError
│ │ ├── llm/ LlmProvider trait + per-provider adapters
│ │ ├── pricing/ Model pricing catalog
│ │ └── templates/ Handlebars rendering + built-in prompts
│ └── migrations/ SQL migrations (idempotent, run on startup)
├── src/ React frontend
│ ├── components/ui/ Primitive components (Button, Card, Input, CodeEditor…)
│ ├── lib/ Typed IPC wrappers, types, utilities
│ ├── stores/ Zustand (cross-cutting state only)
│ └── views/ Top-level tabs (Executor, Templates, Providers, History)
└── scripts/env.bat MSVC environment loader
| What | Where |
|---|---|
| SQLite database | %APPDATA%\com.wosoolsoft.itqan\itqan.db (Windows) |
| Master encryption key | Windows Credential Manager: service com.wosoolsoft.itqan |
| UI preferences | localStorage under itqan.* keys |
- API keys are never logged or returned in plaintext — only masked previews (first 4 + last 4 chars).
- All LLM traffic goes directly from your machine to the provider you configured. No proxy, no middleman.
- No telemetry. No analytics. No "phone home."
Copyright © 2026 WosoolSoft. All rights reserved.
Source-available for viewing, study, and personal use. Redistribution, modification, and derivative works require prior written permission. See LICENSE for full terms.