# How to Set Up Zackriya-Solutions/Meetily Locally: Complete Development Guide

> Install Rust, Node.js 18+, and audio libraries to set up Zackriya-Solutions/meetily locally. Run clean_run.sh or clean_run_windows.bat to build and launch the Tauri 2 desktop app.

- Repository: [Zackriya Solutions/meetily](https://github.com/Zackriya-Solutions/meetily)
- Tags: getting-started
- Published: 2026-08-03

---

**Set up Meetily locally by installing Rust, Node.js 18+, and platform-specific audio libraries, then run [`./clean_run.sh`](https://github.com/Zackriya-Solutions/meetily/blob/main/./clean_run.sh) (macOS/Linux) or `clean_run_windows.bat` to build and launch the Tauri 2 desktop app.**

Meetily is an **open-source, privacy-first AI meeting assistant** that runs entirely offline. This guide walks you through setting up the Zackriya-Solutions/Meetily repository for local development, covering the Rust backend, Next.js 14 frontend, and Whisper-cpp transcription engine.

## Prerequisites for Meetily Local Setup

You need four core toolchains before cloning the repository:

| Tool | Purpose | Installation |
|------|---------|------------|
| **Rust toolchain** (`rustup`, `cargo`) | Compiles the Tauri backend and native commands | [rustup.rs](https://rustup.rs) |
| **Node.js 18+** and **pnpm** | Manages frontend dependencies and Tauri scripts | `npm i -g pnpm` |
| **Tauri CLI** (`tauri-cli`) | Orchestrates the native build process | `cargo install tauri-cli` |
| **Platform audio libraries** | Enables microphone and system audio capture | See section below |

For **GPU acceleration** of Whisper transcription, install platform-specific toolchains: Xcode for Metal on macOS, or CUDA toolkit / Vulkan SDK on Windows/Linux. The repository includes detailed guidance in [[`docs/architecture.md`](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/architecture.md)](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/architecture.md) and [[`docs/GPU_ACCELERATION.md`](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/GPU_ACCELERATION.md)](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/GPU_ACCELERATION.md).

## Clone and Install Dependencies

Start by cloning the repository and installing JavaScript dependencies:

```bash
git clone https://github.com/Zackriya-Solutions/meetily.git
cd meetily
pnpm install

```

The `pnpm install` command downloads Next.js 14, React, and all UI dependencies defined in the workspace configuration.

## Platform-Specific Audio Setup

Meetily requires additional configuration for system audio capture on each operating system.

### macOS Requirements

1. Install **BlackHole** virtual audio driver for system audio loopback (see the "System Audio" section in the repository README)
2. Grant **Microphone** and **Screen Recording** permissions to the built app — required by ScreenCaptureKit in [`frontend/src-tauri/src/audio/`](https://github.com/Zackriya-Solutions/meetily/tree/main/frontend/src-tauri/src/audio)

### Windows Requirements

1. Install **Visual Studio Build Tools** with the **Desktop development with C++** workload
2. No virtual audio driver needed — Tauri uses WASAPI loopback for system audio capture

### Linux Requirements

Install ALSA and PulseAudio development headers plus build essentials:

```bash
sudo apt install libasound2-dev libpulse-dev cmake llvm libomp-dev

```

Complete Linux build instructions are available in [[`docs/building_in_linux.md`](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/building_in_linux.md)](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/building_in_linux.md).

## Build and Run Meetily Locally

The repository provides convenience scripts that wrap Tauri development commands.

### macOS and Linux

```bash

# Standard development build with info-level logging

./clean_run.sh

# Verbose debug output

./clean_run.sh debug

```

### Windows

```cmd
clean_run_windows.bat        # Development build and launch

clean_build_windows.bat      # Production build only

```

These scripts delegate to `pnpm run tauri:dev` for development or `pnpm run tauri:build` for production. The development server serves the Next.js frontend at `http://localhost:3118` while the Rust backend runs natively.

## Enable GPU Acceleration (Optional)

Whisper transcription performance improves significantly with GPU support:

- **macOS**: Metal acceleration auto-detects; no configuration required
- **Windows/Linux**: Build with explicit feature flags:

```bash

# NVIDIA CUDA

cargo tauri dev --features cuda

# AMD/Intel Vulkan

cargo tauri dev --features vulkan

```

The `WhisperEngine` struct in [[`frontend/src-tauri/src/whisper_engine/whisper_engine.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs)](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs) handles model loading and inference dispatch based on available hardware.

## Verify Your Local Setup

Confirm successful installation by completing these checks:

1. **App launches** — Tauri window opens with the Meetily interface
2. **Audio devices detected** — Click **Start Recording** and observe live level meters for Microphone and System audio
3. **Transcription flows** — Speak for 10+ seconds; transcript segments appear in the UI
4. **Summary generates** — Stop recording to trigger the AI summary pipeline

If dependencies are missing, check the console for `perf_debug!` logs emitted from [[`frontend/src-tauri/src/lib.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs)](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs).

## Key Integration Code Examples

### Invoke Recording Commands from Frontend

```tsx
import { invoke } from '@tauri-apps/api/tauri';

async function startMeeting() {
  await invoke('start_recording', {
    mic_device_name: 'Built-in Microphone',
    system_device_name: 'BlackHole 2ch',  // macOS virtual device
    meeting_name: 'Engineering Standup'
  });
}

```

This Tauri command is implemented in [[`frontend/src-tauri/src/audio/recording_commands.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_commands.rs)](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_commands.rs).

### Subscribe to Real-Time Transcripts

```tsx
import { listen } from '@tauri-apps/api/event';

listen<{
  text: string;
  timestamp: string;
}>('transcript-update', event => {
  console.log('Transcription:', event.payload.timestamp, event.payload.text);
});

```

Events are emitted by the audio pipeline in [[`frontend/src-tauri/src/audio/pipeline.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/pipeline.rs)](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/pipeline.rs).

### Load Whisper Model in Rust

```rust
let engine = WhisperEngine::new().await?;
engine.load_model("base").await?;  // Options: tiny, base, small, medium, large

```

Model management lives in [[`frontend/src-tauri/src/whisper_engine/whisper_engine.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs)](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs).

## Critical Source Files for Local Development

| Path | Responsibility |
|------|-------------|
| [`frontend/src-tauri/src/lib.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs) | Tauri application entry point; command registration |
| [`frontend/src-tauri/src/audio/pipeline.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/pipeline.rs) | Audio mixing, VAD gating, Whisper streaming |
| [`frontend/src-tauri/src/audio/recording_manager.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_manager.rs) | Recording lifecycle orchestration |
| [`frontend/src-tauri/src/audio/recording_saver.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_saver.rs) | Audio file persistence |
| [`frontend/src-tauri/src/whisper_engine/whisper_engine.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs) | Whisper model loading and inference |
| [`frontend/src/app/page.tsx`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src/app/page.tsx) | Main meeting control UI |
| [`frontend/src/components/Sidebar/SidebarProvider.tsx`](https://github.com/Zackriya-Solutions/meetily/blob/main/frontend/src/components/Sidebar/SidebarProvider.tsx) | Global meeting state context |
| [`scripts/clean_run.sh`](https://github.com/Zackriya-Solutions/meetily/blob/main/scripts/clean_run.sh) / `clean_run_windows.bat` | Development build automation |

## Summary

- **Install four toolchains**: Rust, Node.js 18+/pnpm, Tauri CLI, and platform audio libraries
- **Clone with `git clone https://github.com/Zackriya-Solutions/meetily.git`**
- **Run helper scripts**: [`./clean_run.sh`](https://github.com/Zackriya-Solutions/meetily/blob/main/./clean_run.sh) on macOS/Linux, `clean_run_windows.bat` on Windows
- **Verify audio capture** via level meters and live transcription
- **Enable GPU acceleration** with `--features cuda` or `--features vulkan` on Windows/Linux

## Frequently Asked Questions

### What is the minimum Node.js version for Meetily development?

**Node.js 18 or higher is required.** The frontend uses Next.js 14 features that depend on modern Node APIs. Use `pnpm` rather than npm for faster, deterministic installs.

### Why does macOS require BlackHole for system audio?

**macOS lacks native system audio loopback APIs.** BlackHole creates a virtual audio device that Meetily's [`recording_commands.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/recording_commands.rs) can capture alongside microphone input. Without it, only microphone transcription works.

### How do I debug build failures in the Rust backend?

**Run `./clean_run.sh debug` for verbose logging.** The `perf_debug!` macros in [`lib.rs`](https://github.com/Zackriya-Solutions/meetily/blob/main/lib.rs) emit detailed diagnostics about missing system libraries, permission errors, and audio device enumeration failures. Check that you have installed all platform-specific dependencies listed in [`docs/building_in_linux.md`](https://github.com/Zackriya-Solutions/meetily/blob/main/docs/building_in_linux.md) or the README.

### Can I run Meetily without GPU acceleration?

**Yes — CPU inference works on all platforms.** The `WhisperEngine` automatically falls back to CPU mode if no GPU is detected. Expect slower transcription, especially with larger models (medium, large). Use `tiny` or `base` models for acceptable CPU performance.