Install
Most people install the desktop app. You can also self-host Varin with Docker and use it from a browser, or build it from source.
Desktop app
Section titled “Desktop app”Download the installer for your system from the latest release: .exe for Windows x64 or ARM64, .dmg for macOS on Apple silicon, .AppImage for Linux x64 or ARM64. The app runs its own Host, so nothing else needs to be installed. It checks for new versions by itself; see Updates.
Windows installers and macOS packages are not signed yet, so your system may ask you to confirm the first launch.
For a phone, see Mobile apps & PWA.
Prerequisites for building from source
Section titled “Prerequisites for building from source”- Node.js 22.19 or newer (Node.js 24 is the development baseline)
- Bun 1.3.14
- A Rust toolchain selected by
kernel/rust-toolchain.toml(install rustup; the repository selects the required version) - Git
Varin builds and starts its native Rust Agent runtime with the Application Host. No separate agent CLI is required. Existing workspace files and historical conversation assets are not automatically migrated or rewritten.
From source (web)
Section titled “From source (web)”git clone https://github.com/Youzini-afk/Varin.gitcd Varinbun install --frozen-lockfilebun run devOpen the Vite URL printed in the terminal. Varin starts the UI and the trusted API/runtime service together.
From source (desktop)
Section titled “From source (desktop)”bun run electron:devCloser to a packaged build:
bun run electron:dev:bundledA Windows installer can be built locally with bun run electron:build:win. Unsigned installers are expected until signing credentials are configured.
Docker
Section titled “Docker”On a Linux Docker host:
mkdir -p data/varin data/ssh data/cloudflared workspacessudo chown -R 1000:1000 data workspacesumask 077printf 'VARIN_UI_PASSWORD=%s\n' "$(openssl rand -base64 24)" > .envdocker compose up -dcurl --fail http://127.0.0.1:3000/healthOpen http://127.0.0.1:3000 and use the generated password. Put a TLS reverse proxy or an approved tunnel in front of any Internet-facing deployment. For production, pin VARIN_IMAGE to a tested digest instead of :latest.
Compose pulls the slim image ghcr.io/youzini-afk/varin-slim:latest by default (enough to run the server: Bun, Node, Git, SSH, and cloudflared). If the agent needs to compile Python, Java, Go, or Rust inside the container, apply the toolbelt overlay:
docker compose -f docker-compose.yml -f docker-compose.toolbelt.yml up -d