-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
Caution
For LEARNING PURPOSES ONLY. Running this against the live Elite Dangerous service violates its Terms of Service. See Home for the full warning.
| Requirement | Notes |
|---|---|
| Windows 10/11 | The keypress sender (pydirectinput-rgx) is Windows-only; window-focus + capture target EliteDangerous64.exe. |
| Python 3.11+ | Use the Python Launcher (py -3.11), or python if 3.11+ is your default. |
| Elite Dangerous: Odyssey | Installed and launchable; you start it and get in the cockpit yourself. |
| Git | To clone the repo. |
Note
pydirectinput-rgx, not upstream pydirectinput. These are distinct PyPI packages. ed-autojump doctor detects the wrong one and fails loudly with the fix. If the first keypress raises a TypeError, run pip uninstall pydirectinput && pip install pydirectinput-rgx.
git clone https://github.com/Quadstronaut/ED-AFK.git
cd ED-AFKED-AFK is a six-package editable workspace. The simplest path is to run the launcher once — with no .venv present it creates the virtualenv and editable-installs the workspace automatically (offline-safe: it vendors the build backend from a donor interpreter rather than hitting PyPI):
.\launch.ps1This provisions projects\ed-autojump\.venv and installs ed-autojump[dev,hotkey,vision] editable, pulling in ed-core and ed-vision (the leaf) as its dependencies. Every workspace package resolves to your live tree, so edits take effect without reinstalling.
Install editable leaf-first so the sibling path dependencies resolve locally:
cd ED-AFK\projects\ed-autojump
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
# Core engine + dev + panic-hotkey + nav-compass vision
pip install -e .[dev,hotkey,vision]The extras cascade down through ed-core to ed-vision:
| Extra | Adds | When |
|---|---|---|
dev |
pytest, pytest-asyncio
|
Always (for the test suite) |
hotkey |
keyboard (Win32 hooks) |
The global Ctrl+Alt+P panic hotkey |
vision |
onnxruntime, opencv, dxcam
|
Nav-compass alignment (the light path) |
vision-heavy |
ultralytics (PyTorch) |
Opt-in heavy backend only, if the light path misbehaves |
cv |
opencv, dxcam, pytesseract
|
Older/auxiliary CV path (not the default) |
ed-autojump doctor # pre-flight environment + config + binds check
ed-autojump --help
pytest # the offline unit + replay suitedoctor runs these checks (FAIL blocks a run):
| Check | FAIL means |
|---|---|
journal_dir |
Journal directory not found or not readable |
sessions_dir |
Session output dir not writable |
binds_preset |
Bundled ED-AFK.4.2.binds missing or a critical action unbound |
status_files |
Status.json / NavRoute.json absent (the game hasn't run yet) |
pydirectinput |
Wrong package installed (upstream instead of -rgx) |
panic_hotkey |
keyboard not installed (Ctrl+Alt+P won't work; Ctrl+C still does) |
The bot sends keyboard scancodes. Elite ships with pitch on the mouse and honk on a mouse button — a keyboard sender can't drive those. The bundled ED-AFK.4.2.binds preset maps every required action to a key.
ed-autojump install-binds # copies ED-AFK.4.2.binds into ED's bindings dirThen in-game: Options → Controls → preset dropdown → select "ED-AFK".
ed-autojump restore-binds # restore your original preset from the CLIThe bot also restores your original preset automatically on exit ([binds].restore_on_exit = true by default). ed-autojump pull-binds diffs (or, with --apply, adopts) the live in-game preset back into the repo.
Important
Enable the HUD mouse widget in "point" mode (it's set in the ED-AFK preset). The widget-ring fine alignment pass rides on it. With [vision].widget_ring_on_miss = "required", a missing widget halts the launch rather than flying compass-only; "degrade" (the softer option) flies compass-only for that run.
Without a calibrated compass the bot jumps blind — it will not orient before firing the FSD, and (fail-closed) will refuse to throttle forward.
- Start Elite, get into the cockpit with the nav-compass disc visible (the small disc left of the radar).
- Run:
ed-autojump calibrate-compassIt captures the screen after a 3-second delay, locates the compass ring, prints a [vision] block, and saves an annotated compass_calibration.png so you can eyeball the detected ring + box.
- Paste the block into
config.tomland confirmenabled = true:
[vision]
enabled = true
backend = "cyan" # cyan-dot reader; the OpenCV fallback needs no model weights
capture_backend = "gdi"
region = [x, y, w, h] # values printed by calibrate-compass
compass_radius = rIf you want the CV-debug boxes (labeled rectangles drawn where each CV/OCR read looks), align the screen→overlay transform once:
ed-autojump calibrate-overlayEnable the boxes with the launcher's VISION toggle (persists ED_AUTOJUMP_OVERLAY_CV_DEBUG=1 to projects/ed-autojump/.env) or cv_debug = true in config.local.toml. In-game status text (procedure / step / event) is separate and turns on with [overlay].enabled. Both require EDMCOverlay.
-
Repository root: MIT — see
LICENSE. -
ed-autojumpdistribution: AGPL-3.0-or-later — seeprojects/ed-autojump/LICENSE.
The ed-autojump distribution bundles the nav-compass detection model (projects/ed-vision/src/ed_vision/model/compass.onnx and compass.pt), whose Ultralytics weights are AGPL-3.0. A build that ships those weights carries AGPL obligations. To avoid them:
- Use the OpenCV fallback backend — no model weights, no AGPL obligation.
- Or remove the model files and supply your own.
- Or accept AGPL-3.0 and redistribute with source.
Full attribution chain in THIRD_PARTY_NOTICES.md.