10000
Skip to content

ARM64 Architecture Detection Issue on Linuxย #525

@santiagomalter

Description

@santiagomalter

Bug Report: ARM64 Architecture Detection Issue on Linux

Summary

Jesse's installer incorrectly detects ARM64 Linux systems (common in Docker on M1/M2 Macs) as non-ARM, preventing installation of the live-trade plugin.

Environment

  • Platform: Docker on Apple M1/M2 Mac
  • OS in Container: Linux (Debian/Ubuntu)
  • Architecture: ARM64/aarch64
  • Jesse Version: 1.10.4
  • Python Version: 3.11

Bug Details

Current Code (in /jesse/services/installer.py):

is_arm = platform.machine().startswith('arm')

Problem:

  • On ARM64 Linux, platform.machine() returns 'aarch64', not 'arm'
  • This causes is_arm to be False when it should be True
  • Results in Jesse trying to download x86_64 wheels on ARM64 systems

Reproduction Steps

  1. Run Jesse in Docker on M1/M2 Mac with ARM64 Linux container
  2. Execute jesse install-live
  3. Observe output:
is_64_bit True
is_arm False  # <-- Should be True
Downloading the latest version of the live-trade plugin...
Installing jesse_live-1.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl...
ERROR: jesse_live-1.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl is not a supported wheel on this platform.

Suggested Fix

Replace the detection line with:

is_arm = platform.machine() in ['arm64', 'aarch64'] or platform.machine().startswith('arm')

Impact

  • Affects all M1/M2 Mac users running Jesse in Docker
  • Forces users to choose between:
    • Fast ARM64 performance (10-12x faster numpy operations) without live trading
    • Slow x86 emulation with live trading support

Additional Context

  • platform.machine() returns different values on different ARM systems:
    • macOS ARM: 'arm64'
    • Linux ARM64: 'aarch64'
    • Some embedded systems: 'armv7l', 'armv8', etc.

Request

  1. Fix the ARM detection logic
  2. Provide ARM64 Linux wheels for the live-trade plugin
    • Many developers now use M1/M2 Macs with Docker
    • ARM64 servers are becoming more common (AWS Graviton, etc.)

Workaround

Currently, users must use x86 emulation (with significant performance penalty) or run separate containers for development vs live trading.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0