Skip to main content

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)

Platform-Specific Requirements

For macOS universal builds, you’ll need:
For iOS development:

Quick Start with Make

The easiest way to build and run Jan:
This single command handles everything:
  • 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

make clean removes node_modules, build folders, and caches. You’ll need to run make dev again after cleaning.

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

Creates a universal binary that runs on both Intel and Apple Silicon Macs.

Windows Build

Linux Build

Produces both .deb and .AppImage packages.

Mobile Development

Android

This will:
  • Install Android Rust targets
  • Initialize Android app (if needed)
  • Set up Android environment
  • Start development server

iOS

Requirements:
  • 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:
Clean and rebuild:

Extensions Not Loading

Verify extensions are properly built:
Rebuild extensions:

Common Issues

Make build scripts executable:
Install required targets for your platform:
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:
  1. Check the troubleshooting docs
  2. Search GitHub Issues
  3. Ask in Discord #🆘|jan-help channel
  4. Review the Contributing Guide

Next Steps

Contributing Guide

Learn how to contribute code to Jan

Core Library

Understand Jan’s core library and architecture