Building Jan from Source
For developers who want to build Jan from source or contribute to the project, this guide covers everything you need to get started.Prerequisites
Before building Jan, ensure you have the following installed:- Node.js ≥ 20.0.0
- Yarn ≥ 1.22.0
- Make ≥ 3.81
- Rust (for Tauri backend)
- Install from rustup.rs
Platform-Specific Requirements
- macOS
- Linux
- Windows
For macOS universal builds, you’ll need:For iOS development:
Quick Start with Make
The easiest way to build and run Jan:- Installs all dependencies
- Builds Tauri plugin APIs
- Builds core components
- Builds extensions
- Downloads required binaries
- Launches the development environment
Available Make Targets
Jan uses a Makefile to simplify common development tasks:Development
Building
Testing & Linting
Cleanup
Manual Build Commands
If you prefer more control over the build process:Install Dependencies
Build Core Components
Run Development Server
Production Builds
Platform-Specific Builds
macOS Universal Build
Windows Build
Linux Build
.deb and .AppImage packages.
Mobile Development
Android
- Install Android Rust targets
- Initialize Android app (if needed)
- Set up Android environment
- Start development server
iOS
- macOS only
- Xcode command line tools
- iOS simulators installed
Testing
Run All Tests
Watch Mode
Project Structure
Understanding the codebase structure:Troubleshooting
Build Failures
Check your versions:Extensions Not Loading
Verify extensions are properly built:Common Issues
Permission denied on Linux
Permission denied on Linux
Make build scripts executable:
Rust target not found
Rust target not found
Install required targets for your platform:
MLX server build fails
MLX server build fails
MLX server only builds on macOS Apple Silicon:
- Ensure you’re on macOS
- Check Swift is installed:
swift --version - Requires Xcode or Xcode command line tools
Getting Help
If you encounter issues:- Check the troubleshooting docs
- Search GitHub Issues
- Ask in Discord
#🆘|jan-helpchannel - Review the Contributing Guide
Next Steps
Contributing Guide
Learn how to contribute code to Jan
Core Library
Understand Jan’s core library and architecture