janhq/jan · error · NotImplementedError

Platform {platform.system()} not supported

Error message

Platform {platform.system()} not supported

What it means

Raised by start_jan_app when the host OS is neither Windows, Linux, nor macOS and no explicit jan_app_path was supplied. The function falls through every IS_WINDOWS/IS_LINUX/IS_MACOS branch and hits the final else clause. This is a NotImplementedError because the autoqa harness has no known default install location for any other platform.

Source

Thrown at autoqa/utils.py:234

            return True
        except Exception as e2:
            logger.warning(f"All maximize methods failed: {e2}")
            return False

def start_jan_app(jan_app_path=None):
    """
    Start Jan application in maximized window (cross-platform)
    """
    # Set default path based on platform
    if jan_app_path is None:
        if IS_WINDOWS:
            jan_app_path = os.path.expanduser(r"~\AppData\Local\Programs\jan\Jan.exe")
        elif IS_LINUX:
            jan_app_path = "/usr/bin/Jan"  # or "/usr/bin/Jan" for regular
        elif IS_MACOS:
            jan_app_path = "/Applications/Jan.app/Contents/MacOS/Jan"  # Default macOS path
        else:
            raise NotImplementedError(f"Platform {platform.system()} not supported")
    
    logger.info(f"Starting Jan application from: {jan_app_path}")
    
    if not os.path.exists(jan_app_path):
        logger.error(f"Jan executable not found at: {jan_app_path}")
        raise FileNotFoundError(f"Jan app not found at {jan_app_path}")
    
    try:
        # Start the Jan application
        if IS_WINDOWS:
            subprocess.Popen([jan_app_path], shell=True)
        elif IS_LINUX:
            # On Linux, start with DISPLAY environment variable
            env = os.environ.copy()
            subprocess.Popen([jan_app_path], env=env)
        elif IS_MACOS:
            # On macOS, use 'open' command to launch .app bundle properly
            if jan_app_path.endswith('.app/Contents/MacOS/Jan'):

View on GitHub (pinned to fad3f12a14)

Solutions

  1. Pass an explicit jan_app_path argument pointing to the Jan executable on your system, which bypasses the platform-default logic entirely.
  2. Run the autoqa suite on a supported platform (Windows, Linux, or macOS).
  3. Extend the IS_WINDOWS/IS_LINUX/IS_MACOS branch set with the additional platform and a default path if this is a permanent need.

Example fix

// before
start_jan_app()
// after
start_jan_app(jan_app_path="/path/to/Jan")
Defensive patterns

Strategy: validation

Validate before calling

import platform, sys

def can_start_jan_default() -> bool:
    return platform.system() in ('Windows', 'Linux', 'Darwin')

# Before calling start_jan_app():
if not can_start_jan_default() and jan_app_path is None:
    raise SystemExit(f"Unsupported platform {platform.system()}; pass jan_app_path explicitly")

Prevention

When it happens

Trigger: Calling start_jan_app() (or a wrapper that calls it) on FreeBSD, Solaris, AIX, or any platform where platform.system() returns something other than 'Windows', 'Linux', or 'Darwin' — while leaving jan_app_path=None.

Common situations: Running autoqa in a CI runner with an uncommon OS image; running inside a container whose platform.system() reports an unexpected value; importing and calling the function from a test harness on an unsupported platform.

Related errors


AI-assisted analysis of janhq/jan@fad3f12a14 (2026-08-12). Data as JSON: /api/errors/ea8154f62366809c. Report an issue: GitHub.