Local-First Cross platform open-source alternative to Raycast.
Asyar is a fast, extensible, local-first command launcher for macOS, Windows, and Linux. No account. No cloud. No subscription. Just a blazing-fast launcher that stays entirely on your machine.
Built with Tauri v2 + Rust and Svelte 5 — not Electron.
Asyar-github.mp4
Raycast is great. But when I moved to a new machine, I hit a wall: syncing my settings and installed extensions required a paid plan. And that plan was bundled with an AI subscription — for models I already pay for elsewhere.
I didn't need a new AI. I needed my snippets, my extensions, and my shortcuts to follow me between devices.
That one missing feature — free, local backup and restore — is what started this project. Asyar gives you full control over your data: export everything to a local file, carry it to any machine, and restore it instantly. No account. No subscription. No cloud you didn't ask for.
| Asyar | Raycast | Alfred | |
|---|---|---|---|
| Open Source | ✅ | ❌ | ❌ |
| Local-First (data never leaves device) | ✅ | ❌ | ✅ |
| No Account Required | ✅ | ❌ (Pro features) | ✅ |
| No Cloud Required | ✅ | ❌ | ✅ |
| Free Extensions | ✅ | Freemium | Paid Powerpack |
| Linux Support | ✅ | ❌ | ❌ |
| Built on Electron | ❌ | ✅ | ❌ |
| Native Rust Backend | ✅ | ❌ | ❌ |
| Reactive Svelte 5 UI | ✅ | ❌ | ❌ |
| Extension Sandboxing | ✅ | ❌ | ❌ |
Asyar is built with Tauri + Rust instead of Electron. That means:
- Significantly less RAM — no bundled Chromium, no V8 runtime sitting idle
- Instant startup — the Rust backend initializes in milliseconds
- Real OS integration — native APIs for app indexing, clipboard, global hotkeys, and accessibility
- Secure by default — extensions run in isolated iframes; a broken extension can't crash the launcher
Native performance, web flexibility — Rust does the heavy lifting, Svelte 5 keeps the UI snappy.
- Application Launcher — Find and launch any installed application instantly
- AI Chat — Built-in AI assistant with streaming responses, conversation history, and configurable provider/model settings
- Calculator — Instant math evaluation with currency conversion, directly in the search bar
- Clipboard History — Search and reuse anything you've copied
- Snippets — Text snippet expansion, including background text expansion without opening the launcher
- Shortcuts — Define and run custom keyboard-triggered commands
- Portals — Open URLs and web tools directly from the launcher
- Context Modes — Type prefixes (
ask ai, a URL, etc.) to switch the launcher into a specialized mode; visual chips indicate the active context - Create Extension — Scaffold a new extension from a template without leaving the launcher
- Themes — Customize the launcher's appearance with built-in themes or create your own
- Backup & Restore — Export and import your data locally; optional password encryption for sensitive fields
- Extension Store — Browse and install extensions from asyar.org
- Live Tray Menu — Extensions can show real-time status in your system tray
- Cross-Platform without Compromise — First-class citizen on macOS, Windows, and Linux — not a port
- Keyboard-First — Global hotkey (
Cmd+K/Ctrl+K) to summon from anywhere
| Asyar | |
|---|---|
| Data stored locally only | ✅ |
| Works fully offline | ✅ |
| No telemetry by default | ✅ |
| No account or login required | ✅ |
| No subscription to unlock features | ✅ |
| Source code auditable | ✅ (AGPLv3) |
| Extensions run in sandboxed iframes | ✅ |
| Sensitive backup fields encrypted | ✅ |
| Feature | macOS | Windows | Linux (X11)* |
|---|---|---|---|
| Spotlight | ✅ | ✅ | ✅ |
| Applications | ✅ | ✅ | ✅ |
| Application Icons | ✅ | ✅ | ✅ |
| AI Chat | ✅ | ✅ | ✅ |
| Calculator | ✅ | ✅ | ✅ |
| Clipboard History | ✅ | ✅ | ✅ |
| Context Modes | ✅ | ✅ | ✅ |
| Create Extension | ✅ | ✅ | ✅ |
| Portals | ✅ | ✅ | ✅ |
| Shortcuts | ✅ | ✅ | ✅ |
| Snippets | ✅ | ✅ | ✅ |
| Store | ✅ | ✅ | ✅ |
| Installed Extensions | ✅ | ✅ | ✅ |
| Backup & Restore | ✅ | ✅ | ✅ |
- Note on Linux Wayland: Global input-heavy features like Snippets do not work on Wayland (e.g., default Ubuntu 22.04+, Fedora 25+, KDE Plasma 6).
(Asyar is fully tested and verified on macOS, Windows 11, and Debian)
- macOS: Fully supported and tested. Global features like Snippets require Accessibility permissions.
- Windows: Fully tested on Windows 11. Supported on Windows 10 out-of-the-box.
- Linux (X11): Fully tested on Debian. Supported on all other X11 sessions (Mint, MATE, Xfce, Ubuntu on Xorg).
- Linux (Wayland): ❌ Not supported for global hooks. Workaround: Log out and select an "Xorg" or "X11" session at your login screen.
| Layer | Technology | Why It Matters |
|---|---|---|
| Backend | Rust (Tauri v2) | Native OS integration, memory safety, no Electron overhead |
| Frontend | Svelte 5 | Fine-grained reactivity, minimal bundle size, instant renders |
| Extensions | TypeScript + any web framework | Build with Svelte, React, Vue, or vanilla JS — sandboxed in iframes |
| Extension Store | asyar.org | Browse, publish, and install community extensions |
Asyar's power comes from its extension system. Extensions add commands to the launcher, contribute live search results, and open rich UI panels.
- Built-in extensions run natively alongside the app for maximum speed
- Installed extensions run in secure sandboxes — they can't crash the app or access other extensions' data
- Build your own with the Asyar SDK using any web framework (Svelte, React, Vue, or vanilla JS)
Raycast gives every extension full Node.js access — filesystem, network, child processes — with no restrictions. Asyar takes a different approach: extensions only get the permissions they declare, enforced at two layers.
Every installed extension declares the permissions it needs in its manifest.json. At runtime, those declarations are enforced twice:
- Frontend gate — the IPC router intercepts every extension call and checks it against the manifest before it ever reaches the backend
- Rust gate — the permission registry enforces the same rules again at the Rust layer, so a compromised frontend can't bypass security
| Permission | What it grants |
|---|---|
clipboard:read / clipboard:write |
Access the system clipboard |
fs:read / fs:write |
Read or write files |
network |
Make HTTP requests |
shell:execute |
Run shell commands |
shell:open-url |
Open URLs in the browser |
notifications:send |
Show system notifications |
store:read / store:write |
Persist extension data |
On top of permission gating, each installed extension runs in an isolated iframe with its own browsing context — no access to the host DOM, no access to other extensions' data, and a strict Content Security Policy that prevents loading external scripts. All communication flows through a typed postMessage bridge; malformed messages are rejected.
The result: users can install community extensions without trusting them with full system access.
npm install -g asyar-sdkThe asyar CLI handles the full workflow — scaffolding, development, building, and publishing:
asyar dev # development mode with hot reload
asyar build # production build
asyar publish # package and publish to the storeSee the Extension Development Guide for the full walkthrough.
Asyar includes a built-in AI assistant accessible directly from the launcher. Type ask ai, ai, or chat to enter AI mode, or trigger it from any search result.
- BYOK (Bring Your Own Key) — connect your existing API key from OpenAI, Anthropic, or any compatible provider; no Asyar account or AI subscription needed
- Streaming responses — replies appear word-by-word as they're generated
- Conversation history — browse and resume past conversations
- Configurable provider & model — set your preferred AI provider and model in AI Chat settings
- Your key, your data — requests go directly from your device to your provider; nothing routes through Asyar servers
Typing certain prefixes transforms the launcher into a specialized mode:
| Prefix | Mode |
|---|---|
ask ai, ai, chat |
AI Chat |
| A URL or portal trigger | Portal / web view |
An active context is shown as a chip in the search bar. Press Escape to exit the current context and return to normal search.
Define reusable text snippets and expand them anywhere:
- In-launcher — search for a snippet and paste it into the focused app
- Background expansion — type a snippet keyword in any app and it expands automatically, without opening the launcher (requires Accessibility permissions on macOS)
Asyar lets you export and import your data locally — no account required.
Go to Settings → Backup to:
- Export — choose which categories to include (snippets, clipboard history, extensions, etc.), optionally set a password to encrypt sensitive fields (like API keys), and save a
.ziparchive to disk. - Restore — open a backup file, preview what's inside (item counts and conflicts per category), choose a conflict strategy (
replace,merge, orskip) per category, then apply.
How sensitive data is handled: if a backup contains sensitive fields and no password is set, those fields are stripped from the export automatically. When a password is provided, the archive is encrypted and the password is required to restore it.
Cloud sync and account-based backup are intentionally out of scope — they will live in a future Account tab.
We welcome contributions! To set up the full development environment:
git clone https://github.com/Xoshbin/asyar.git
cd asyar
node setup.mjsThis clones all repositories, links the SDK, installs dependencies, and verifies the setup in one command. See the asyar repo for the full development guide.
For architecture details, see docs/ARCHITECTURE.md. For release guidelines, see docs/RELEASING.md.
VS Code + Svelte + Tauri + rust-analyzer
Distributed under the AGPLv3 License. See LICENSE for more information.