Kyvyrn is a lightweight, Linux-first desktop app wrapper that turns web apps into clean, native-feeling applications — without Electron overhead.
Built with React, TypeScript, Vite, and Tauri, Kyvyrn focuses on performance, transparency, and sane defaults.
- Web → Native Wrapping: Convert any website into a native desktop app
- App-Mode Launching: No tabs, no address bar, no browser UI clutter
- Smart Browser Detection:
- Brave → Chrome → Chromium → Vivaldi → Opera → Edge
- Per-App Configuration: Each wrapped app has its own isolated config
- Global Defaults: Theme mode, layout preferences, and UI defaults for new apps
- Modern UI: Clean, responsive interface built with Tailwind CSS
- Lightweight by Design: Uses system web engines via Tauri (no Electron)
- Frontend: React 19, TypeScript, Vite
- Styling: Tailwind CSS v4
- Build Tool: Vite
- Desktop Backend: Tauri (Rust)
- Linting: ESLint with TypeScript support
kyvyrn/
├── eslint.config.js
├── index.html
├── LICENSE
├── package.json
├── postcss.config.cjs
├── README.md
├── tailwind.config.js
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.ts
├── public/ # Static assets
├── src/
│ ├── App.tsx # App state & routing
│ ├── index.css # Global styles (Tailwind)
│ ├── main.tsx # React entry point
│ ├── assets/
│ ├── components/
│ │ └── UrlInput.tsx # Reusable URL input component
│ ├── pages/
│ │ ├── Landing.tsx # Welcome page for first-time users
│ │ └── Wrapper.tsx # Main app interface
│ ├── types/
│ │ ├── engine.ts
│ │ └── globalConfig.ts
│ └── utils/
│ └── icon.tsx
└── src-tauri/ # Tauri backend (Rust)
├── build.rs
├── Cargo.toml
├── tauri.conf.json
├── capabilities/
│ └── default.json
├── gen/
│ └── schemas/
│ ├── acl-manifests.json
│ ├── capabilities.json
│ ├── desktop-schema.json
│ └── linux-schema.json
├── icons/ # Platform icons
├── src/
│ ├── lib.rs
│ ├── main.rs
│ ├── commands/
│ │ ├── chromium.rs
│ │ ├── configs.rs
│ │ ├── global_config.rs
│ │ ├── icons.rs
│ │ ├── mod.rs
│ │ └── webview.rs
│ ├── net/
│ │ ├── http.rs
│ │ └── mod.rs
│ └── utils/
│ ├── browser.rs
│ ├── mod.rs
│ ├── paths.rs
│ └── url.rs
└── target/ # Build artifacts
- Enter a website URL
- Kyvyrn selects the best available browser engine
- The site launches in app mode
- App configuration is persisted locally
Each wrapped app is stored in:
~/.local/share/kyvyrn/<app-name>/Global preferences are stored separately and only apply to newly created apps.
-
Node.js (v18 or higher)
-
npm or yarn
-
Rust (latest stable)
-
Tauri CLI
cargo install tauri-cli
sudo apt update
sudo apt install \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelfxcode-select --install
brew install gtk+3 librsvg- Install Microsoft Visual Studio C++ Build Tools
- Install WebView2 Runtime (usually preinstalled on Windows 10+)
-
Clone the repository:
git clone <repository-url> cd kyvyrn
-
Install frontend dependencies:
npm install
-
Verify Tauri setup:
cargo tauri --version
npm run devRuns the app in the browser at http://localhost:5173
cargo tauri devLaunches the native desktop app with hot reload.
npm run build
npm run previewcargo tauri buildDistributable binaries are generated in:
src-tauri/target/release/bundle/- Add new apps by entering a URL
- Manage all wrapped apps from the main interface
- Launch apps in native windows
- Persist per-app and global settings locally
- Per-app configs live inside the Kyvyrn data directory
- Global defaults affect only newly created apps
- No hidden state or opaque storage
The Rust backend handles:
- Window creation and lifecycle
- App-mode launching
- File system persistence
- OS-level integration
Key files:
main.rs— Tauri command definitionstauri.conf.json— App metadata and permissionsicons/— Platform-specific icons
Kyvyrn is built for people who want:
- Native performance
- Minimal overhead
- Predictable behavior
- Respect for the host OS
No background junk. No bloated runtimes. Just your app — running clean.
Kyvyrn is under active development. Breaking changes may occur until the first stable release.