janhq/jan · error · FileNotFoundError
Jan app not found at {jan_app_path}
Error message
Jan app not found at {jan_app_path} What it means
Raised when the resolved Jan executable path does not exist on the filesystem. The function checks os.path.exists(jan_app_path) and, if false, logs an error and raises FileNotFoundError. This fires regardless of platform — the path may be a default guess or a user-supplied value.
Source
Thrown at autoqa/utils.py:240
"""
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'):
# Use the .app bundle path instead
app_bundle = jan_app_path.replace('/Contents/MacOS/Jan', '')
subprocess.Popen(['open', app_bundle])
elif jan_app_path.endswith('.app'):
# Direct .app bundle
subprocess.Popen(['open', jan_app_path])View on GitHub (pinned to fad3f12a14)
Solutions
- Install Jan at the default platform location (e.g. /usr/bin/Jan on Linux, AppData\Local\Programs\jan\Jan.exe on Windows).
- Pass jan_app_path explicitly to point to the actual Jan binary.
- Verify the path with `ls -la <path>` or `test -f <path>` before calling start_jan_app().
Example fix
# before start_jan_app() # after start_jan_app(jan_app_path="/snap/bin/jan")
Defensive patterns
Strategy: validation
Validate before calling
import os
def jan_path_is_valid(jan_app_path: str) -> bool:
return os.path.isfile(jan_app_path)
# Before calling:
if not jan_path_is_valid(resolved_path):
print(f"Jan not found at {resolved_path}; install it or pass the correct path") Prevention
- In CI, assert Jan is installed as a pre-step before running autoqa.
- Use a configurable environment variable for jan_app_path so CI images can point to non-default installs.
When it happens
Trigger: Jan is not installed; Jan is installed in a non-default location; the default path for the platform doesn't match where the user installed Jan; jan_app_path points to a wrong or stale location.
Common situations: Fresh CI environment without Jan pre-installed; user installed Jan via Snap/Flatpak/AppImage whose binary lives elsewhere; portable Windows install where Jan.exe is not under AppData\Local\Programs.
Related errors
AI-assisted analysis of janhq/jan@fad3f12a14 (2026-08-12).
Data as JSON: /api/errors/29860367d324a9db.
Report an issue: GitHub.