How to Set Up Zackriya-Solutions/Meetily Locally: Complete Development Guide
Set up Meetily locally by installing Rust, Node.js 18+, and platform-specific audio libraries, then run ./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 |
| 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) and [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:
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
- Install BlackHole virtual audio driver for system audio loopback (see the "System Audio" section in the repository README)
- Grant Microphone and Screen Recording permissions to the built app — required by ScreenCaptureKit in
frontend/src-tauri/src/audio/
Windows Requirements
- Install Visual Studio Build Tools with the Desktop development with C++ workload
- No virtual audio driver needed — Tauri uses WASAPI loopback for system audio capture
Linux Requirements
Install ALSA and PulseAudio development headers plus build essentials:
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).
Build and Run Meetily Locally
The repository provides convenience scripts that wrap Tauri development commands.
macOS and Linux
# Standard development build with info-level logging
./clean_run.sh
# Verbose debug output
./clean_run.sh debug
Windows
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:
# 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) handles model loading and inference dispatch based on available hardware.
Verify Your Local Setup
Confirm successful installation by completing these checks:
- App launches — Tauri window opens with the Meetily interface
- Audio devices detected — Click Start Recording and observe live level meters for Microphone and System audio
- Transcription flows — Speak for 10+ seconds; transcript segments appear in the UI
- 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).
Key Integration Code Examples
Invoke Recording Commands from Frontend
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).
Subscribe to Real-Time Transcripts
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).
Load Whisper Model in 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).
Critical Source Files for Local Development
| Path | Responsibility |
|---|---|
frontend/src-tauri/src/lib.rs |
Tauri application entry point; command registration |
frontend/src-tauri/src/audio/pipeline.rs |
Audio mixing, VAD gating, Whisper streaming |
frontend/src-tauri/src/audio/recording_manager.rs |
Recording lifecycle orchestration |
frontend/src-tauri/src/audio/recording_saver.rs |
Audio file persistence |
frontend/src-tauri/src/whisper_engine/whisper_engine.rs |
Whisper model loading and inference |
frontend/src/app/page.tsx |
Main meeting control UI |
frontend/src/components/Sidebar/SidebarProvider.tsx |
Global meeting state context |
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.shon macOS/Linux,clean_run_windows.baton Windows - Verify audio capture via level meters and live transcription
- Enable GPU acceleration with
--features cudaor--features vulkanon 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 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 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 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.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →