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
- Pass an explicit jan_app_path argument pointing to the Jan executable on your system, which bypasses the platform-default logic entirely.
- Run the autoqa suite on a supported platform (Windows, Linux, or macOS).
- 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
- Always pass jan_app_path explicitly in cross-platform test harnesses rather than relying on defaults.
- Add a platform-support check at test-suite startup rather than letting it fail deep in start_jan_app.
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
- Jan app not found at {jan_app_path}
- No supported backend binaries found for this system. Backend
- Unsupported platform: ${platform}
- MLX engine not found
- Extension does not support CUDA runtime installation
AI-assisted analysis of janhq/jan@fad3f12a14 (2026-08-12).
Data as JSON: /api/errors/ea8154f62366809c.
Report an issue: GitHub.