Skip to content

Introduction

eMule AI modernizes the eMule experience with NAT Traversal, QUIC/uTP and IPv6 support, stronger LowID and firewalled peer connectivity, smoother interface performance and a broad range of usability, protection and reliability improvements.

This page brings together the key information around the project: an overview of the client, technical guidance for advanced connectivity features, release notes for recent work, and support sections that help users get started and troubleshoot effectively.

Highlights

Modern Connectivity

Connect more peers through NAT Traversal, including "eServer assisted LowID to LowID" and "Kad firewalled to firewalled" transfers, with QUIC or uTP used for direct client to client traffic.

Cross-Platform Access with Docker

Use the official emuleai/emuleai Docker image on Windows, Linux, or macOS with the release launcher package. Xpra presents eMule AI as a separate desktop window while noVNC provides browser based VNaccess.

Built for Large Libraries

Background loading, virtual lists, shared file caching and lighter bulk operations keep startup, searches, transfers and very large libraries smooth and responsive.

Dark Mode & UI Polish

A complete dark theme, refined dialogs, clearer progress overlays and responsive layouts make everyday use cleaner and easier to follow.

Protection Panel

Centralized anti-leecher and abuse controls let you choose fair actions for suspicious behavior with timed rules, friend exemptions and safeguards against false positives.

Safer Downloads

Download Validator, Download Inspector, spam detection and blacklist tools help avoid duplicates, misleading files and unwanted results before they become a problem.

Smarter Upload Management

Flexible slot targets, idle slot recycling, adaptive buffering and queue controls help make better use of both everyday and high-bandwidth connections.

Shared Library Automation

Background scanning, folder watching, startup caches and automatic subdirectory sharing keep large collections current with less manual work.

Network Privacy & Control

VPN Guard, interface binding, IPv6 support, firewall rule management and optional port randomization provide clearer control over how eMule AI connects.

Better Search & Discovery

Configurable eD2K and Kad limits, fast filters, restored search tabs and clearer file states make large result sets easier to explore and manage.

Backup, Migration & Recovery

A guided migration wizard, automatic backups, safer state saving and restored source data help protect your setup and resume interrupted work quickly.

Everyday Productivity

Useful toolbar actions, richer sortable columns, client notes, flexible notifications and 116 built-in languages make common tasks faster and more accessible.

Options

This section follows the Options window from top to bottom. Each page and setting appears in the same order as the application and uses the same explanation shown in its tooltip.

General
User Name

Enter the name shown to other eMule users. It does not need to be unique, but a recognizable name is easier for friends to identify.

Language

Choose the language used by eMule menus, dialogs and messages. The interface updates after you apply the change.

Miscellaneous

These settings control how eMule reacts to links, closing, status reporting and the MiniMule window.

Bring to front on link click

Bring the eMule window to the front when an eD2K link is opened. When disabled, eMule accepts the link without taking focus from the application you are using.

Prompt on exit

Ask for confirmation before eMule closes. This helps prevent an accidental exit that would stop all transfers and network connections.

Enable online signature

Write current connection and transfer information to onlinesig.dat for use by external tools or web pages. The file may reveal your server address and transfer activity.

Enable MiniMule

Enable the compact MiniMule status window. Minimize eMule to the notification area then click its tray icon to view connection status, speeds, completed files and free space.

Prevent Standby mode while eMule AI is running

Keep Windows from entering automatic standby while eMule is connected so uploads and downloads are not interrupted. Manual sleep commands and display power saving still work.

Edit Web Services...

Open the Web Services editor to add, edit, remove or reorder the web searches and links available from file context menus.

Handle eD2K Links

Register eMule as the default application for eD2K links so links opened from a browser or another program are sent to eMule.

Startup

Choose how eMule looks and behaves when it starts with Windows or when you launch it yourself.

Show splash screen

Show the eMule splash image while the application is starting.

Start minimized

Start eMule minimized instead of opening the main window. Its icon remains available in the notification area or taskbar according to your Display settings.

Start with Windows

Launch eMule automatically after you sign in to Windows. Disable this when you prefer to start eMule manually.

Display
Increase options window size [%]

Select a larger Options window.

Tooltip delay time [sec.]

Set how long the pointer must remain over a supported control before its tooltip appears. The value is measured in seconds.

Progress bar style

Change the shape of progress bars from flat to rounded. This affects their appearance only and does not change transfer behavior.

Minimize to system tray

Send eMule to the Windows notification area when it is minimized instead of leaving a button on the taskbar.

Download list double-click to expand

Require a double click to expand or collapse a download and view its sources. When this is disabled, the normal expansion control responds immediately.

Preview file by double-clicking its name in the download list

Start a preview when you double click the file name of a previewable download. The file must contain enough completed data for previewing.

Show percentage of download completion in progressbar

Display the completed percentage inside each download progress bar so progress can be read without opening file details.

Show transfer rates on title

Add the current upload and download speeds to the eMule window title so transfer activity remains visible on every page.

Show download info on category tabs

Show the number of active downloads and the total number of files on each category tab.

Auto clear completed downloads

Remove completed entries from the Transfers list automatically. The downloaded files remain in the Incoming folder and continue to follow your sharing settings.

Show additional toolbar on Transfers window

Show the additional toolbar in Transfers for filtering downloads and accessing common file actions.

Remember open searches between restarts

Save open search tabs and their current results when eMule closes then restore them at the next start.

Enable Windows 7 taskbar effects

Use supported Windows taskbar features to show combined download progress and preview controls on the eMule taskbar button.

Show tooltips in Options

Display helpful explanations when you rest the pointer over controls throughout Options. Turn this off if you prefer to use the pages without hover help.

Save CPU & Memory Usage

Reduce memory and processor use by stopping lists that you do not need. A disabled list is not displayed until you enable it again.

Disable Known Clients list

Stop maintaining the Known Clients list to reduce memory use. The list is unavailable until this option is turned off again.

Disable Queue list

Stop updating the visible upload queue list to reduce processor and memory use. Uploading continues but queued clients are not shown.

Select Font...

Choose the font, style and text color used in the Server, Messages and IRC windows.

Enable auto completion (history)

Store previous search terms and address entries then suggest them while you type. Disable this if you do not want eMule to keep this history.

Reset

Delete all saved autocomplete entries. This action cannot be undone.

Connection
Capacities

Enter the real maximum speeds of your internet connection. Accurate upload capacity is especially important because eMule uses it to manage bandwidth without blocking normal connection traffic.

Limits

Set optional speed limits for eMule. Leaving a limit disabled allows eMule to use the available bandwidth while other connection controls remain active.

Download

Enter the highest download speed your internet connection can provide. The value uses Mbit/s or KB/s, which matches the unit currently shown beside this field. This describes your connection capacity and does not limit eMule by itself.

Download limit

Limit the download bandwidth eMule may use. Enable this when other applications need part of the downstream capacity or leave it disabled for no download limit.

Upload

Enter the highest upload speed your internet connection can provide. The value uses Mbit/s or KB/s, which matches the unit currently shown beside this field. Enter the real line rate, or zero to let automatic upload management estimate it.

Upload limit

Limit the upload bandwidth eMule may use. Keep some upload capacity free for acknowledgements and protocol traffic or download speed and web browsing may suffer.

Client Port

Configure the listening ports used for incoming peer connections. Router forwarding and firewall rules must match these values to obtain High ID and an open Kad status.

TCP

Set the TCP listening port used for direct eD2K client connections and file transfers. TCP establishes a reliable connection before data is exchanged. Forward this port through the router and allow it through the firewall.

UDP

Set the UDP listening port used by Kad and by low overhead messages between clients and servers. UDP sends individual datagrams without a persistent connection. Forward this port for an open Kad status.

Disable

Disable eMule UDP communication when this port cannot be used. Kad will be unavailable and more client communication must use TCP, which increases overhead.

Test Ports

Open the eMule port test in your browser to check whether the configured TCP and UDP ports accept incoming connections. A failed test usually means the firewall or router settings need attention.

Use UPnP to Setup Ports

Let eMule ask a compatible router to forward the configured ports automatically at startup. Use manual port forwarding if UPnP is unavailable or unreliable.

Open ports in Windows Firewall (requires UAC elevation)

Create or update Windows Firewall rules for the current TCP and UDP listening ports so incoming connections are not blocked on this computer.

Randomize listen ports at startup

Choose new TCP and UDP listening ports from the specified range each time eMule starts. Your firewall and router must allow the full range.

Random port range

Define the port range used when random listening ports are enabled. The router and firewall must allow the complete range because a different value can be chosen at each start.

Start

Enter the first port that eMule may choose for randomized TCP and UDP listening ports.

End

Enter the last port that eMule may choose for randomized TCP and UDP listening ports. It must not be lower than the start value.

Hard limit

Set the maximum number of sources eMule keeps for each download. A very high value increases memory use and network requests without always improving speed.

Max. connections

Set the maximum number of simultaneous network connections eMule may open. Values beyond the operating system and router capacity can cause instability or connection failures.

Autoconnect on startup

Connect automatically to the enabled eD2K and Kad networks when eMule starts.

Network

Choose which peer to peer networks eMule may connect to. At least one network must be enabled to find sources and exchange files.

Reconnect on loss

Try to restore a server or Kad connection automatically after it is lost.

Kad

Allow eMule to connect to Kad, the decentralized network that finds files and sources without relying on a central server. Kad requires UDP for full operation.

Show overhead bandwidth

Include protocol overhead in the displayed upload and download rates. Overhead is connection management data rather than file content.

eD2K

Allow eMule to connect to the eD2K server network. Servers help publish shared files and locate sources but file data is exchanged directly between clients.

Display all speed values in KB/s

Display all transfer speeds in KB/s instead of automatically switching between KB/s and MB/s.

Wizard...

Open the connection wizard to fill common capacity and limit values from a known internet connection type. Review the result before applying it.

Network Interface
Network Interface

Choose the network adapter or local IP address that eMule AI should use for P2P traffic.

Bind interface

Select the network adapter for P2P sockets. Choose Any interface to let Windows route normally.

Bind address

Optional local IPv4 address to bind. Leave empty to use the current address of the selected adapter.

Enable IP Guard

Enable IP Guard. While enabled, eMule AI blocks network activity until the selected adapter/IP and optional public IP ranges are verified. If verification fails, eMule AI stays open so you can fix the settings.

Allowed public IP ranges

Optional. Enter allowed public IPv4 or IPv6 addresses and CIDR ranges for IP Guard, separated by commas. Example: 1.2.3.4/24, 2001:4860::/32

Active binding

Shows the adapter and local IP address currently used for P2P binding.

VPN Guard

VPN Guard prevents eMule from connecting when the public IP appears in an unsafe location. It helps avoid accidental exposure when a VPN disconnects or uses an unexpected exit location.

Block internet when the external IP is in this country

Enable VPN Guard and block eMule network access while the public IP is detected in the selected country.

Geolocation

Choose the country that VPN Guard treats as unsafe. eMule blocks its network connections while the public IP is detected there.

Also block when the country cannot be detected

Also block eMule when the country of the public IP cannot be determined. This is safer but may pause connections during temporary lookup failures.

Proxy
General

Configure a proxy only when the network administrator or provider requires one. A home router or modem is not a proxy and incorrect values can prevent every eMule connection.

Enable proxy

Route supported eMule TCP connections through the configured proxy server. Most proxy types do not support UDP, so Kad and UDP features may need to be disabled.

Proxy type

Choose the protocol offered by the proxy server. The selected type must match the server configuration or connections will fail.

Proxy host

Enter the host name or IP address of the proxy server supplied by the network administrator or proxy provider.

Proxy port

Enter the TCP port used to connect to the proxy server. This is the proxy service port, not the eMule listening port.

Authentication

Use these settings only when the proxy server requires a user name and password.

Enable authentication

Send the configured credentials when connecting to the proxy. Leave this disabled for proxies that allow access without authentication.

User Name

Enter the user name required by the proxy server.

Password

Enter the password required by the proxy server. The value is hidden on screen but is stored with the eMule preferences.

Server
Update

Control how eMule obtains and maintains its eD2K server list. Use trusted server list sources because invalid entries can reduce connection quality.

Remove dead servers after ... retries

Set how many failed status checks are allowed before an unresponsive server is removed from the list.

Auto-update server list at startup

Update the server list at startup from the first working address stored in addresses.dat.

List...

Open addresses.dat to edit the server list update addresses used at startup. Save the file before the next update.

Update server list when connecting to a server

Add server entries supplied by the eD2K server after a successful connection. Disable this when you prefer to maintain a trusted list manually.

Update server list when a client connects

Add server entries exchanged with other eMule clients. This can expand the list but may also introduce outdated or unwanted servers.

Miscellaneous

These settings control Low ID handling, connection safety and server priority.

Use smart LowID check on connect

Treat an unexpected Low ID as a possible server problem when this computer previously obtained High ID. Repeated Low ID results are accepted after several attempts.

Safe Connect

Contact one server at a time during connection attempts. This is slower but can reduce incorrect Low ID results on some networks.

Autoconnect to servers in static list only

Connect only to servers stored in staticservers.dat. eMule cannot connect if the static list contains no working server.

Use priority system

Prefer servers according to the priority assigned in the Server list.

Set manually added servers to high priority

Assign high priority automatically to servers you add manually.

Directories
Incoming Files

Choose the folder where completed downloads are moved. Files in this folder are normally shared according to the current sharing settings.

Temporary Files

Choose one or more folders for incomplete part files. Use disks with enough free space and avoid moving or editing these files while eMule is running.

Add temporary folder

Add another temporary folder. eMule can distribute new part files across the configured locations according to available space.

Shared Directories (Ctrl-Click includes subdirectories)

Select the folders that eMule publishes to other users. Hold Ctrl while clicking where supported to include or exclude subdirectories and avoid sharing private folders.

Add UNC share

Add a shared folder by its UNC network path, such as a folder on a NAS or another Windows computer. The path must remain reachable while eMule is running.

Files
Initializations

Choose the initial state and priority assigned when new downloads or shared files are added.

Add files to download in paused mode

Add new downloads in paused state so they do not start transferring until you resume them manually.

Add new shared files with auto priority

Choose upload priority automatically for newly shared files according to demand and availability.

Add new downloads with auto priority

Choose download priority automatically for new downloads according to source availability and queue conditions.

Auto cleanup file names of new downloads

Clean common release separators and unwanted text from new download names before they are shown and saved.

Edit...

Open the file name cleanup rules used for new downloads. Review the rules carefully because they can change the saved file name.

Miscellaneous

These settings control chunk selection, completion order, history and other download behavior.

Try to transfer full chunks to all uploads

Try to send complete file chunks to upload clients instead of frequently switching between chunks. This may improve chunk distribution but can keep one client active longer.

Try to download preview chunks first

Prefer the beginning and end chunks needed by many media formats so a partial download may become previewable sooner.

Watch clipboard for eD2K file links

Watch the Windows clipboard for eD2K links and offer to add them when copied from another application.

Use advanced calculation method for remaining time

Use the advanced calculation for estimated download completion time. It reacts to recent transfer behavior but the result is still an estimate.

Start next paused file when a file completes

Resume another paused download automatically when a file completes.

Prefer same category

Prefer the next paused file from the same category as the completed download.

Only in same category

Resume a paused file only when one exists in the same category. Other categories remain paused.

Remember downloaded files

Keep completed file hashes in known.met so Download Validator and duplicate checks can recognize files that were downloaded before.

Remember cancelled files

Keep hashes of cancelled downloads so eMule can recognize them later and warn or reject them according to Download Validator settings.

Video Player

Configure the external program used to preview video downloads and the command line passed to it.

Command

Enter or browse to the executable used for video preview. Leave this empty to use the Windows default application when supported.

Arguments

Enter optional command line arguments for the video player. The file name is added according to the preview command handling.

Create backup to preview

Create a temporary backup before previewing a partial video. This is safer for players that modify the file but requires additional disk space and time.

Notifications
Display mode

Choose how desktop notifications are displayed. The available modes depend on the notification support provided by the current Windows version and eMule theme.

Sound

Choose how eMule alerts you when a notification is shown.

No sound

Show notifications without playing or speaking an alert.

Test

Show a test notification using the current display and sound settings without saving them first.

Play sound

Play the selected wave file when a notification is shown.

Notification sound file

Enter or browse to the wave file used for notification sounds.

Speak notification message

Read notification text aloud through the Windows speech service instead of playing a wave file.

Pop-up when

Choose which events create a desktop notification. Enabling many frequent events can produce a large number of popups.

Log entry added

Show a notification when a new entry is written to the eMule log.

Chat session started

Show a notification when another user starts a chat session.

Chat message received

Show a notification whenever a chat message is received, including messages in an existing session.

Download added

Show a notification when a new download is added to the transfer list.

Download finished

Show a notification when a download completes successfully.

Urgent: out of disk space, server connection lost

Show notifications for important problems such as low disk space or a lost server connection.

Email Notifications

Send selected notifications by email. A working SMTP configuration and valid sender and receiver addresses are required.

Enable email notifications

Enable email delivery for eMule notifications after the SMTP server and addresses have been configured.

SMTP server...

Open the SMTP server settings used to send notification email, including the server address, port and authentication details.

Recipient address

Enter the email address that should receive eMule notifications.

Sender address

Enter the sender address placed in notification emails. Some SMTP servers require this address to match the authenticated account.

Statistics
Graphs

Configure how the Statistics graphs are updated, scaled and colored. Faster updates use more processor time.

Update Interval

Set how often the live Statistics graphs are refreshed. A shorter interval looks smoother but requires more processor time.

Time for Average-Graph

Set the time period represented by the average graph. A longer period smooths short speed changes and shows broader trends.

Colors

Choose a graph element then select the color used to draw it.

Choose graph color

Open the color picker for the graph element selected in the list.

Draw filled graphs

Fill the area below graph lines instead of drawing lines only. This changes appearance and may make overlapping values harder to compare.

Connections statistics Y-axis scale

Set the vertical scale used by the connection statistics graph. Increase it when high connection counts are clipped at the top.

Active connections ratio

Choose the ratio used to display active connections in the connection statistics graph.

Statistics Tree

Configure how often values in the Statistics tree are recalculated and redrawn.

Update Interval

Set how often the Statistics tree is refreshed. A longer interval reduces processor use on large or busy sessions.

IRC
Server

Enter the IRC server that eMule should connect to. Use a host name supplied by the IRC network and include a port only when the server requires a nonstandard one.

Nick

Enter the nickname shown to other IRC users. It may need to be different from your eMule user name and must follow the rules of the IRC network.

Channels

Filter the channel list by name and minimum user count so large public channel lists are easier to browse.

Use channel list filter

Apply the channel name and minimum user filters when eMule receives the IRC channel list.

Name

Enter text that a channel name must contain to remain visible in the filtered channel list.

Users

Hide channels with fewer users than this number. Set a low value when you also want to see small channels.

Perform

Configure IRC commands that eMule sends automatically after connecting to the server.

Use perform string on connect

Send the perform string automatically after a successful IRC connection.

IRC Perform String

Enter IRC commands to run automatically after connecting. Separate multiple commands with the | character. Open the Help tab for command syntax and examples.

Miscellaneous

These options control IRC messages, links, sounds, text encoding and other chat behavior.

Connect to help channel

Join or make the official eMule help channel easy to access after connecting to IRC.

Load server channel list on connect

Request and display the IRC channel list automatically after connecting. Large networks may take time to return the complete list.

Add timestamp to messages

Add the local time to IRC messages so the order and arrival time remain clear in long conversations.

Ignore info messages

Choose which routine IRC status messages are hidden from the chat window. Hiding them reduces clutter but can conceal useful connection details.

Ignore misc. info messages

Hide miscellaneous IRC server information messages.

Ignore Join info messages

Hide messages that announce when users join a channel.

Ignore Part info messages

Hide messages that announce when users leave a channel normally.

Ignore Quit info messages

Hide messages that announce when users disconnect from the IRC network.

Ignore Ping? Pong! messages

Hide low level IRC ping and pong keepalive messages. These messages are normally useful only for troubleshooting.

Ignore eMule AI protocol messages

Choose which eMule specific IRC protocol messages are ignored. These messages support actions such as friend requests and file links.

Ignore eMule AI add friend protocol messages

Ignore eMule friend requests received through IRC.

Ignore eMule AI send link protocol messages

Ignore eD2K file links sent through eMule specific IRC messages.

Allow others to add you as a friend

Allow IRC users to add you as an eMule friend through the supported eMule IRC protocol.

Accept eD2K links in IRC (Use only with caution!)

Allow supported eD2K links received in IRC to be opened or added through eMule. Review links from unknown users before downloading.

From friends only

Accept actionable eD2K links only from users who are already in your Friends list.

Show smileys

Replace supported text emoticons with graphical smileys in IRC messages.

Play sound events

Play sounds for selected IRC events such as messages, joins or mentions according to the current notification resources.

Enable UTF-8

Use Unicode text encoding for IRC messages. Enable this on networks that support UTF-8 so names and messages from different languages display correctly.

Messages and Comments
Messages

Control which private messages are accepted and how chat content is displayed.

Filter messages containing: (Separator | )

Enter words or phrases that cause an incoming private message to be ignored. Separate multiple entries with the vertical bar character.

Accept from friends only

Accept private messages only from clients in your Friends list. Other users cannot start a normal chat with you.

Advanced spam filter

Use additional checks to identify automated or abusive private messages. The filter may challenge unknown senders before accepting their message.

Require captcha authentication

Require unknown message senders to complete a captcha challenge before their messages are accepted. Friends are not normally challenged.

Show smileys

Replace supported text emoticons with graphical smileys in chat messages.

Comments

Control filtering and indicators for file comments and ratings received from other users.

Ignore comments containing: (Separator | )

Enter words or phrases that cause a received file comment to be hidden. Separate multiple entries with the vertical bar character.

Indicate downloads with comments/rating by icon

Show an icon on downloads that have received a file comment or rating so you can review the information before completion.

Security
IP Filter

Use ipfilter.dat to block communication with listed IP ranges. A stricter filter can improve privacy but outdated or poor quality lists may block valid sources and servers.

Filter servers too

Apply the IP filter to eD2K servers as well as clients. Filtered servers are not used for connections or updates.

Don't filter private IPs

Keep private LAN address ranges outside the IP filter. Enable this when eMule must communicate with trusted devices on the local network.

Filter level

Block IP filter entries whose access level is equal to or below this value. The common default is 127, but the correct value depends on the filter list format.

Reload

Reload the current IP filter file from disk and apply changes that were made outside eMule.

Edit...

Open the current IP filter file in the default text editor. Save your changes then reload the file to apply them.

Update from URL: (filter.dat- or PeerGuardian-format)

Enter the address of an ipfilter.dat or compatible PeerGuardian list. Use a trusted source because the downloaded rules can block all matching network traffic.

IP filter update address history

Open the saved history of IP filter update addresses and choose one for the current update.

Load

Download the IP filter from the address entered above and apply the updated filter entries.

Auto update

Download the configured IP filter automatically at the selected interval.

Period (days)

Set the number of days between automatic IP filter updates. Very frequent updates are unnecessary unless the provider changes the list often.

See My Shared Files/Directories

Choose who may browse the list of files and directories shared by this eMule client. This does not stop normal search results or file transfers.

Everybody

Allow any connected eMule user to request your shared file list.

Friends only

Allow only users in your Friends list to request your shared file list.

Nobody

Do not provide the complete shared file list to other users. Individual files can still appear in normal eD2K and Kad searches.

Protocol Obfuscation

Protocol obfuscation makes eMule traffic less obvious to simple traffic shaping systems. It is not encryption and does not hide your IP address or activity from peers.

Enable protocol obfuscation

Allow outgoing and incoming obfuscated connections when the other client supports them while retaining compatibility with normal connections.

Allow obfuscated connections only (not recommended)

Accept only obfuscated client connections. This reduces the number of reachable sources because older or incompatible clients cannot connect.

Disable support for obfuscated connections

Disable all support for protocol obfuscation and use normal eD2K connections only.

Miscellaneous

These settings control client identity checks, application privileges, search spam filtering and warnings for risky files.

Use secure identification

Use cryptographic secure identification to protect the credit relationship between clients and reduce credit theft by impersonation.

Run eMule AI as unprivileged user

Run eMule with reduced Windows privileges to limit the effect of a malicious file or software flaw. This option may be unavailable on unsupported systems.

Enable spam filter for search results

Detect and mark suspicious search results using file names, metadata, client behavior and configured blacklist rules.

Warn when opening untrusted files

Warn before opening file types or locations that may be unsafe. The warning does not scan the file for malware, so use trusted security software as well.

Scheduler
Enabled

Enable the scheduler so active entries can change eMule settings at their configured times. Disabled schedules remain saved but do not run.

Remove

Delete the selected schedule entry. The change is saved when you apply the Options page.

New

Create a new schedule entry then configure its name, time and actions in the Details section.

Scheduler List

Select a saved schedule to view or edit its details. Each entry can run one or more actions on chosen days and times.

Details

Configure the selected schedule name, recurrence, time range and actions.

Enabled

Enable or disable the selected schedule entry without deleting its configuration.

Title

Enter a descriptive name that helps identify the purpose of this schedule in the list.

Time

Choose the days or recurrence pattern on which the selected schedule is allowed to run.

Start time

Set the time when the selected schedule begins applying its actions.

End time

Set the time when the selected schedule stops or reverses actions that use an end time.

No end time

Run the schedule without a separate end time. This is useful for one time actions or settings that should remain active until another schedule changes them.

Action

Choose the actions performed by this schedule. Actions can change upload and download limits, source and connection limits, network availability, category state or the eMule application state. TCP and UDP refer to network connection settings, not transfer speeds.

Apply

Apply the edited details to the selected schedule entry. Use the main Options Apply button afterward to save all pending changes.

Web Interface
General

Configure the Web Interface included with eMule to monitor and control the application from a browser. Exposing it outside the local network requires strong passwords, HTTPS and careful firewall rules.

Enabled

Start the eMule Web Interface on the configured port. Anyone who can reach the port can attempt to sign in.

Gzip compression

Compress web pages sent to the browser to reduce bandwidth. This uses a small amount of additional processor time.

Include port into UPnP setup

Ask a compatible router to include the Web Interface port in the UPnP forwarding setup. This may expose the interface to the internet, so use HTTPS and strong passwords.

Port

Set the TCP port used by the Web Interface. This port is separate from the eD2K listening ports and must be allowed by the firewall for remote access.

Template

Choose the folder or template file set used to render Web Interface pages. Use templates designed for the installed eMule version.

Browse for template

Open a folder browser to choose the template files used by the Web Interface.

Reload

Reload Web Interface templates from disk without restarting eMule. Existing browser sessions may need to refresh the page.

Session time out

Set how many minutes an inactive Web Interface login remains valid before the user must sign in again.

Use HTTPS

Protect Web Interface traffic with HTTPS. A valid certificate and private key are required to avoid sending passwords and commands as plain text.

Create new certificate

Create a new local certificate and private key for HTTPS. Browsers may warn about a certificate that is not signed by a trusted authority unless you trust it manually.

Certificate

Enter or browse to the certificate file presented by the HTTPS Web Interface.

Key

Enter or browse to the private key that belongs to the HTTPS certificate. Keep this file private and restrict access to it.

Administrator

Configure the administrator account, which has access to all Web Interface controls.

Password

Set the password for the Web Interface administrator account. Use a long unique password, especially when remote access is possible.

Allow exit eMule AI, reboot and shutdown

Allow the administrator to close eMule or request operating system reboot and shutdown from the Web Interface. Enable this only on a trusted and protected interface.

Guest

Configure a limited Web Interface account for monitoring and lower risk actions without full administrator permissions.

Enabled

Enable the limited Web Interface user account.

Password

Set the password for the limited Web Interface account. Use a password different from the administrator password.

Extended
Warning: Do not change these settings unless you know what you are doing. Otherwise you can easily make things worse for yourself. eMule AI will run fine without adjusting any of these settings.

These advanced settings can reduce performance or connectivity when used incorrectly. Change them only when you understand the effect and keep a record of the original values.

TCP/IP connections

Configure advanced TCP connection limits and server connection timing. Values that are too high can overload the router or operating system.

Max. new connections / 5 secs.

Set how many new TCP connection attempts eMule may start within five seconds. A lower value is safer for older routers and restrictive networks.

Max. half-open connections

Set the maximum number of TCP connections that may still be waiting for completion. Excessive values can trigger operating system or router limits.

Fast connection reject

Accept incoming TCP connections conditionally when normal listening behavior cannot be used. Leave this at the default unless a specific network setup requires it.

Server connection refresh interval [min.]

Set how long eMule keeps an idle server TCP connection alive before sending maintenance traffic or reconnecting.

Autotake eD2K links only during runtime

Reclaim the Windows eD2K link association automatically when another application changes it.

Use credit system (reward uploaders)

Use the eMule credit system, which rewards clients that have uploaded data to you with shorter queue waits. Disabling it removes this local credit advantage.

Filter server and client LAN IPs

Reject sources that use private LAN addresses when they arrive from the public networks. Disable this only when you intentionally exchange sources inside a trusted local network.

Show more controls (advanced mode controls)

Show additional expert commands and controls in eMule menus and dialogs. These actions are intended for experienced users.

Disable A4AF checks to save CPU

Disable repeated A4AF checks to reduce processor use. A4AF manages sources that are available for another file, so disabling checks can make source reassignment less responsive.

Disable automatic archive preview start in file details

Prevent eMule from automatically creating archive previews. Disable previews when archive inspection is slow or unnecessary.

Host name for own eD2K links

Enter the host name eMule should advertise when a network feature needs one. Leave it empty unless the connection has a stable and correctly configured host name.

Create new part files as 'sparse' (NTFS only)

Store incomplete downloads as sparse files on supported NTFS volumes so unreceived areas do not consume physical disk space.

Allocate full file size for non-sparse part files

Reserve the complete final file size when a download starts. This detects low disk space early but may allocate large amounts of storage immediately.

Check disk space

Pause downloads when free disk space falls below the configured minimum. This protects the file system from becoming completely full.

Min. free disk space [MB]

Set the free disk space that eMule should preserve on a volume before pausing affected downloads.

Free disk space check period [Minutes]

Set how often eMule checks free disk space for active download locations. Frequent checks react sooner but add file system work.

Safe .met/.dat file writing

Choose when eMule forces buffered file data to stable storage. More frequent commits reduce possible data loss after a crash but increase disk activity.

Never

Do not force part file buffers to disk beyond normal operating system behavior. This minimizes extra disk activity but leaves more recent data dependent on system caching.

On shutdown

Commit buffered part file data when eMule closes normally. Unexpected power loss can still leave recent writes only in the operating system cache.

Always

Commit part file data frequently for stronger persistence. This can cause considerably more disk activity, especially with many downloads.

Extract meta data

Choose whether eMule reads media metadata such as title, artist, codec and duration from completed or shared files. Stored metadata can be reused in lists and searches.

Never

Do not scan files for media metadata. Lists use only information already available from file names and saved tags.

ID3 Library (only for MPEG audio files)

Read supported audio and media tags with the metadata library included in eMule and save useful values for later display.

Resolve shell links in shared directories

Follow Windows shortcut files when scanning shared directories. Disable this when shortcuts should be shared as files rather than resolved to their targets.

Save log to disk

Write normal eMule log messages to a file in addition to showing them in the interface. Log files grow over time and may contain IP addresses or file names.

Verbose (additional program feedback)

Configure detailed diagnostic logging. Use this mainly for troubleshooting because verbose logs can grow quickly and may expose private connection details.

Enabled

Enable detailed debug logging for the selected event categories.

Log level

Choose how much diagnostic detail is recorded. Higher detail produces larger logs and more processing work.

Save log to disk

Write verbose diagnostic messages to a debug log file so they remain available after eMule closes.

Log client source exchange and server source queries/answers

Record detailed source exchange requests and responses for troubleshooting source discovery.

Log banned clients

Record when a client is banned and the reason that triggered the ban.

Log received file descriptions and ratings

Record received file ratings and descriptions for troubleshooting metadata exchange.

Log secure ident

Record secure identification handshakes and failures used by the client credit system.

Log filtered and/or ignored IPs

Record connections and sources rejected by the IP filter. This can create many entries with large filter lists.

Log file save actions

Record file save, rename and move operations performed when downloads complete or metadata changes.

Log A4AF actions

Record source reassignment decisions for sources that are available for another file.

Log upload/download events

Record detailed upload and download state changes for troubleshooting transfers.

Log spam rating results

Record how search results are scored or marked by the spam detection system.

Log failed TCP connection retries

Record attempts to retry failed TCP connections and their results.

Log Extended Source Exchange events

Record additional source exchange events beyond the standard diagnostic entries.

Log NAT traversal events

Record NAT traversal, callback and uTP related events used to connect clients behind routers or firewalls.

Log user interface responsiveness events

Record operations that may delay the user interface so freezes and slow list updates can be investigated.

Upload SpeedSense

Configure Upload Speed Sense, which adjusts upload bandwidth by measuring connection delay. Good values keep the connection responsive while using available upload capacity.

Find best upload limit automatically

Enable Upload Speed Sense to adjust the upload limit automatically according to measured network delay.

Lowest allowed upload speed

Set the lowest upload speed that Upload Speed Sense may choose while responding to high network delay.

Ping tolerance (% of lowest ping)

Set the allowed increase in ping time as a percentage of the measured baseline before upload is reduced.

Ping tolerance (ms)

Set the allowed increase in ping time in milliseconds before Upload Speed Sense reduces upload.

Method for ping tolerance

Choose whether Upload Speed Sense measures allowed delay as a percentage of baseline ping or as a fixed number of milliseconds.

Percent (%)

Use a percentage of the baseline ping as the allowed delay. This adapts to connections with different normal latency.

Milliseconds (ms)

Use a fixed millisecond value as the allowed delay. This gives a consistent threshold when normal latency is stable.

Going up slowness

Control how cautiously Upload Speed Sense raises the upload limit when latency is healthy. Larger divisors generally make increases slower.

Going down slowness

Control how strongly Upload Speed Sense lowers the upload limit when latency becomes too high.

Max number of pings for average

Set how many ping measurements are considered when Upload Speed Sense evaluates connection delay. More samples are steadier but react more slowly.

UPnP

Configure advanced UPnP behavior for automatic router port forwarding. These options affect which router services eMule tries and how mappings are removed.

Remove UPnP port forwarding on exit

Remove eMule port mappings from the router when the application closes normally.

Skip WAN IP setup

Skip the router WANIPConnection service during UPnP setup. Use this only when that service is broken and another supported service works.

Skip WAN PPP setup

Skip the router WANPPPConnection service during UPnP setup. Use this only when that service causes errors or incorrect mappings.

Enable Import parts

Allow eMule to import usable data from compatible incomplete files into an active download. Imported data is verified before it is accepted.

File buffer time limit

Set how long completed writes may remain in memory before eMule flushes them to disk. Longer values can reduce disk activity but increase memory use and the amount of unwritten data lost after a crash.

File buffer size

Set the memory reserved for buffering file writes. A larger buffer can reduce disk activity but consumes more memory and gives little benefit once the storage device is saturated.

Queue size

Set the maximum number of clients kept in the upload waiting queue. A very large queue consumes more memory and does not increase the available upload bandwidth.

Extended

The settings below and the preferences.ini button provide access to advanced behavior that is not normally needed for everyday use.

Open preferences.ini

Open preferences.ini in the default text editor for advanced settings that are not available in Options. Close eMule before editing the file so your changes are not overwritten.

eMule AI
User Interface Tweaks

Here you can find tweaks related to user interface.

Dark Mode

You can turn on/off dark mode here.

Automatic

Sychronizes eMule AI's dark mode with your Windows setting.

Dark Mode

Enables dark mode.

Light Mode

Enables light mode.

Display speed graphics in toolbar

Display speed graphics in toolbar

Display download toolbar

Shows the vertical download toolbar in the transfers window. Disable this option to hide it and reclaim space immediately. (default: checked)

Disable "Find As You Type"

"Find As You Type" is an official feature that starts filtering files immediately as you type on the lists. When you disable "Find As You Type", filtering will be started after an enter or return key press, when you complete typing your text filter.

List update period

This is the time interval in milliseconds that will be waited before updating items in lists.

Maximum Sort Order History

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Server list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Search list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Files lists

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Downloads list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Downloading clients list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Uploading clients list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

On queue clients list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Known clients list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Kad contacts list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

Kad current searches list

You can change the maximum number of sort order history for the specified list here. eMule AI can sort orders of lists by multiple number of colums by remembering user clicks on columns. So if the data of two rows in the last clicked columns (marked with arrow) are equal then eMule AI uses next columns in the sort order history. Default value is 4. 0 means unlimited number of sort order history. Please note that using 0 or big values can effect user interface performance negatively if you have too much items in your download/upload/shared file/file history lists.

IP Geolocation

Provides information about the location of a server / client using DB-IP.com's IP to City Lite database.

Disable

Disable IP geolocation

Show country code

This option shows only country code, doesn't show country or city names.

Show country name

This option shows country name, doesn't show city name.

Display full name

This option shows country and city names

Show Flags

Show country flags

Auto update

Automatically download and reload the IP geolocation database.

Update URL

URL template used to download the DB-IP City Lite MMDB archive. %Y and %m are replaced with the current UTC year and month.

Update period (days)

Number of days between automatic IP geolocation update checks.

Update now

Downloads the configured IP geolocation database now.

Connection Tweaks

Here you can find tweaks related to connection.

Check Connection

When activated, eMule AI constantly checks the internet if it is still connected, disconnects the Server/Kad connection when going offline and reconnects when going online. This prevents losing sources, Kad nodes or server entries when the connecion is offline. This implementation uses a native Windows API to check if the given URL address is reachable or not, instead of using ICMP which can be troublesome with some modem/router configurations. Enabling this option is recommended. Default: False

Activate connection checker

Toggle the connection checker. When enabled, eMule AI automatically monitors connectivity and reconnects when the link comes back.

URL

Please enter URL address in "https://www.google.com" format, otherwise you can break this functionality.

Enable NAT Traversal (NAT-T)

When enabled, eMule AI can use NAT traversal transports for peers behind NATs or firewalls.

Transport protocol

Choose how NAT traversal transports are selected. Prefer QUIC uses QUIC when both clients support it and falls back to uTP when needed. uTP only disables QUIC completely.

Prefer QUIC

Default mode. Use QUIC whenever both clients support it; otherwise fall back to uTP for uTP only clients.

uTP only

Force NAT traversal to use uTP only. QUIC is disabled completely and will never be attempted.

NAT-T Port Window

Accept incoming uTP by IP-only when the observed remote port is within ±N of the expected port. Helps sequential port-mapping NATs. Larger windows increase wrong-match risk; smaller windows reduce success on remapping NATs. Typical: 64–128. Set 0 to disable IP-only fallback.

NAT-T Sweep Window

Maximum +-N port sweep used for NAT-T hole punching around the expected remote port. Smaller values reduce stray probes and wrong matches; larger values improve success on remapping NATs but increase background traffic. Typical: 8-32. Set 0 to disable sweep behavior.

uTP Jitter Min (ms)

Minimum random delay between uTP hole punch service bursts. Only used when uTP NAT traversal is active.

uTP Jitter Max (ms)

Maximum random delay between uTP hole punch service bursts. Only used when uTP NAT traversal is active.

Kad Buddy Slots

Sets the number of clients you can serve as Kad buddies. Served Kad buddies are firewalled users who depend on you to relay Kad traffic. Raising this limit allows more firewalled clients to participate in file sharing and strengthens the network, but also increases your resource usage: typically only a few kbit/s of extra bandwidth per buddy, and around 0.3% CPU load per buddy on a modern high-performance CPU. The default minimum is 5, and the maximum is 100.

eServer Buddy Slots

Sets the number of clients you can serve as eServer buddies. Served eServer buddies are LowID users who depend on you to establish callback connections via an eDonkey server. Raising this limit allows more firewalled clients to participate in file sharing and strengthens the network, but also increases your resource usage: typically only a few bytes/s of extra bandwidth per buddy, and around 0.1% CPU load per buddy on a modern high-performance CPU. The default minimum is 5, and the maximum is 100.

Use Intelligent Chunk Selection

With Intelligent Chunk Selection (ICS) the clients exchange information about which chunk is being downloaded at the moment, then a client can select and download the less downloaded chunk. When"Try to download preview chunks" option is enabled, preview chunks are still prioritized until they are completed.

ICS has three working modes. These modes and upload/download chunk prioritizations are as follows:
RELEASE: complete sources <= 3: rarest>less downloaded>smallest>random
SPREAD: complete sources between 4 and 10: smallest>rarest>less downloaded>random
SHARE: complete sources over 10: smallest>preview (if selected in preferences)>random

Retry failed TCP connection attempts

This feature enables the client to retry a connection attempt after it failed, instead of directly dropping the source. This is an enhancement to bring the balance back with the dead source list. This way only clients land on deadsource list that are really no longer reachable.

ReAsk sources after IP change

When clients with a dynamic IP addresses disconnects and reconnects, their IP changes. Unless they reask the clients they want to download from, those clients cannot be aware about the IP change. So it's possible that a client wants to upload to you, but still thinks you have the old IP and then it fails. This feature helps reasking all the other clients as fast as possible in order not to create the mentioned situation. This feature doesn't work for LowID clients.

Inform queued clients after IP change

Informs all clients in the waiting queue when your IP changed, so they will not lose us and their queue position.

ReAsk Time for File Sources [15-55 min.]

Usually eMule AI reasks every client we want to download from every 15 minutes (30min for the clients with no needed parts). Clients in the upload queue lose their places in that queue after one hour. By increasing the reask time you may decrease overhead of your own client and also the network. But please note that you should not increase your reask time when you have low ID!

Upload Settings

Fine tune upload slot behavior and buffering for users with faster upstream connections. Leave these options disabled if you prefer the classic eMule AI behavior.

Optimize upload slots for high bandwidth

Opens or recycles upload slots when the configured upload capacity is not being used efficiently. Target upload clients is the normal target, and Elastic upload slots can allow temporary overflow while upload bandwidth is underused. Keep this disabled on slow or unstable connections.

Target upload clients

Sets the normal target number of active upload clients for high-bandwidth mode. This is not a strict maximum while Elastic upload slots is above 0%. Allowed range is 4 to 100.

Elastic upload slots [%]

Allows extra high-bandwidth upload slots above Target upload clients after upload underfill persists. Range is 0 to 100 percent. Set this to 0% if you want the target upload client count to act as the effective admission limit.

Slow slot threshold factor

Defines how slow an upload slot must be before it can be recycled. For example, 0.33 means the slot is considered slow when it stays below about one third of the target slot speed.

Slow slot grace period (seconds)

How long a slot must stay below the slow threshold before it can be reassigned to another waiting client.

Slot warm up period (seconds)

Gives a newly opened upload slot time to reach its normal speed before slow slot checks begin.

Inactive slot grace period (seconds)

How long a slot may send no payload data before it is treated as inactive and eligible for reassignment.

Reassignment cooldown (seconds)

Prevents the same client from being recycled again too quickly after a slow or inactive upload slot was reassigned.

Enable low ratio queue score boost

Gives under-served shared files a controlled queue score bonus when their all time upload ratio is below the selected threshold. This helps rare or newly shared files get more upload chances without changing the eD2K protocol.

Low ratio threshold

Files with an all time uploaded to size ratio below this value can receive the low ratio queue score boost. Lower values make the boost apply only to more strongly under-served files.

Effective score bonus

Additional queue score added when the low ratio boost applies. Keep this value moderate so file rarity helps the queue without overwhelming credits and waiting time.

Session transfer limit

Limits how much payload one client may receive during a single upload session. The slot is rotated only when another queued client can use it, so bandwidth is not intentionally left idle.

Disabled

Do not apply an extra per session transfer limit. Classic eMule AI chunk and time rules remain in control.

Percent of file size

Uses a percentage of the requested file size as the per-session payload limit. This scales naturally between small and large shared files.

Percent value

Percentage of the file size that one client may receive in a single upload session when percentage mode is selected.

Absolute MiB

Uses a fixed MiB amount as the per session payload limit. Set the value to 0 to keep this mode effectively inactive.

MiB value

Fixed MiB amount that one client may receive in a single upload session when absolute mode is selected.

Session time limit [sec.]

Maximum upload session duration in seconds before the client can be rotated out. A value of 0 disables this extra time limit.

Adapt download write buffer for high bandwidth

Temporarily allows larger per file download buffers when several files are receiving data at the same time, reducing disk flush pressure on fast connections while keeping a global memory budget.

Download Inspector

Upon activation, eMule AI periodically scans all downloading files, identifies empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and subsequently removes them from the download list. Additionally, it detects invalid file extensions and replaces them with valid ones.

Disable

No detection will be performed.

Log only

Empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and invalid file extensions will be detected, then logged. But these files won't be deleted/renamed.

Delete/Rename

Empty (filled with binary zeros) fake files, incomplete (partially filled with binary zeros) files, DRM-protected media files and invalid file extensions will be detected, deleted/renamed and then logged.

Detect Empty/incomplete files

Enables detection of Empty/incomplete files.

Detect DRM protected files

Enables detection of DRM protected files.

Detect invalid file extensions

When activated, the download list will be periodically scanned for files with invalid file extensions. Any invalid extensions detected will be automatically replaced with the correct, valid ones.

Auto rename to majority name

When enabled, new downloads track the most common source filename. In 'Only log' mode it only logs the suggested rename. In 'Delete/Rename' mode it renames the file. You can override this per file from the download list context menu.

Only for new downloads

When enabled, Auto rename to majority name is enabled automatically only for downloads added after this option is turned on. Existing downloads keep their current per file setting.

Threshold (%)

Defines how many source filenames must agree before eMule AI accepts a majority name. For example, 51 requires more than half of the collected source names to point to the same filename.

Minimum votes

Defines the minimum number of matching source filenames required before Auto rename to majority name can rename a download. Set 0 to disable this extra minimum.

Auto-delete downloads matching criteria

Uses the Download Inspector workflow to evaluate downloads against configurable date and amount criteria. This feature only runs while Download Inspector is in Log only or Delete mode. Log only reports matches without deleting. Delete removes matched downloads via the existing safe delete flow. Date criteria are combined with OR. Amount criteria are combined with OR. The feature only runs if at least one date criterion and at least one amount criterion are enabled. If that requirement is met, the final decision is (DateGroup) AND (AmountGroup). Otherwise, no scan is performed and no deletion decision is made.

Added before

Matches downloads whose added date is older than the configured number of days. If the date is not available, this criterion is treated as not matched.

Threshold (days)

Matches downloads whose added date is older than the configured number of days. If the date is not available, this criterion is treated as not matched.

Last seen complete before

Matches downloads whose last seen complete date is older than the configured number of days. If the date is missing, this criterion is treated as not matched.

Threshold (days)

Matches downloads whose last seen complete date is older than the configured number of days. If the date is missing, this criterion is treated as not matched.

Last received before

Matches downloads whose last received date is older than the configured number of days. If the date is missing, this criterion is treated as not matched.

Threshold (days)

Matches downloads whose last received date is older than the configured number of days. If the date is missing, this criterion is treated as not matched.

Downloaded less than

Matches downloads whose completed amount is below the configured percentage threshold. A threshold of 0 only matches downloads with exactly 0% completed.

Threshold (%)

Matches downloads whose completed amount is below the configured percentage threshold. A threshold of 0 only matches downloads with exactly 0% completed.

Downloaded less than

Matches downloads whose completed amount is below the configured MB threshold. A threshold of 0 only matches downloads with exactly 0 MB completed.

Threshold (MB)

Matches downloads whose completed amount is below the configured MB threshold. A threshold of 0 only matches downloads with exactly 0 MB completed.

Back up eD2k links of files deleted by auto-delete

Only applies to files that are actually deleted by this criteria-based auto-delete feature while Download Inspector is in Delete mode. When enabled, the eD2k link of each deleted file is appended to download_inspector.txt in the config directory. Log only mode does not write this file. The file is intended to be preserved by migration and config backup flows.

Don't mark as canceled

If enabled, downloads removed by auto-delete are not added to canceled.met. This behaves like Cancel (Don't Mark As Canceled) for auto-delete removals.

Check period (in minutes)

When Download Inspector is activated, it periodically checks all downloading files. This parameter sets the interval (in minutes) between each check. Note that the first check will always occur approximately 1 minute after eMule AI starts or this feature is enabled. After the initial check, the defined period value will be used.

Minimum completed data size (in kb)

This parameter specifies the threshold value for downloaded data. Files with a downloaded data amount equal to or greater than this value will be inspected.

Empty data percentage threshold

Fake files are typically completely empty (filled with binary zeros), but they may also contain some garbage data interspersed with large empty sections. Additionally, there might be incomplete files (partially filled with binary zeros) on the network that you might want to cancel downloading. This parameter sets the threshold for the percentage of empty data relative to the total downloaded data. If this threshold is exceeded, the file will be considered fake or incomplete. A threshold value of 100 means that all downloaded data must be empty (binary zeros) for the file to be deemed fake.

Lower compression percentage threshold

This parameter specifies the lower threshold value for file compression percentage. Files with a compression percentage equal to or greater than this value will be inspected.

Bypass empty data check for high compression

Bypasses the empty data check for files with a high compression percentage and accepts them as fake files.

Upper compression percentage threshold

Specifies the upper threshold value for file compression percentage. Files with a compression percentage equal to or greater than this value will be accepted as fake files without checking the empty data percentage.

Search Tweaks

Here you can find tweaks related to search and search list.

Group known files at the bottom

Enabling this option groups all known (shared, downloading, downloaded, canceled) files at the bottom of the search result list. If "Spam" and/or "Blacklisted" features are also enabled then all these files will be grouped as a single group. When you sort search list this will be sorted as a group and will still stay at the bottom.

Show close button on search tabs

You can disable this option to prevent accidental clicks n close buttons that could lead to closing search tabs.

Spam threshold

"Mark As Spam" performs complex heuristic analysis and tries to mark possible similar files. During this process, it generates a value which indicates the probability of being a spam file. This value is compared with the default threshold value 60 and if it is more than or equal to the threshold then the file is marked as spam. Here you can increase the threshold value to minimize the possibility of having files marked as spam wrongly. A value equal or greather than 60 should be defined.

eD2K max results

Limits how many results one eD2K search may collect before it is stopped. Use 0 for unlimited results. A lower value can keep very large result sets from slowing the search window, while a higher value may find more files.

eD2K max More requests

Limits how many additional More requests can be sent for one eD2K search. Use 0 for unlimited requests. Lower values reduce server traffic and UI noise, while higher values may collect more results from supporting servers.

Kad file search total results

Controls how many file search answers a Kad file lookup may collect before it stops early. Higher values can return more sources, but may keep the Kad search active longer and increase network work.

Kad Network search results threshold

A file search started on the Kad Network stops after a specific time limit or when the number of found files reaches a certain limit. Here, you can adjust this limit for the number of found files.

Kad file search lifetime [sec.]

Controls how long a Kad file lookup may stay active. A longer lifetime can find more sources on slow searches, but also keeps the search running longer.

Kad keyword search lifetime [sec.]

Controls how long a Kad keyword search may stay active. A longer lifetime can collect more search results, but also keeps the search running longer and may increase Kad traffic.

Server Tweaks

Here you can find tweaks related to E-Server.

Repeat server list after connection failures

When connection fails and there is no more server to try in the server list, start again from the first entry. Default: True

Don't remove static servers from serverlist

If a static server in the server list goes over the max number of retries it is disabled instead of being removed until the restart of eMule AI

Don't save part files after connecting server

Every server connection triggers saving all part files. When downloading hundreds of files, this takes ""A LOT"" of time and causes freezes. Enabling this option prevents this from occuring. Default: True

File Tweaks

Options for file history visibility and NTFS file time daylight saving adjustments and tolerance handling.

Show downloading files

Shared files and file history lists can include or exclude downloading files. You can switch this here.

Show shared files in file history list

File history list can include or exclude shared files. You can switch this here.

Adjust NTFS daylight file time

On NTFS file systems, file timestamps may appear to shift by one hour if Daylight Saving Time (DST) is active. Enabling this option adjusts file times accordingly, which may help match files more accurately across DST changes.
WARNING: This adjustment may cause unnecessary rehashing of files when DST switches, potentially leading to performance issues, especially with a large number of shared files. To reduce this impact, consider enabling the "Allow DST time tolerance".

Allow DST time tolerance

Enabling this option allows a 1-hour tolerance when comparing file timestamps, which helps prevent unnecessary rehashing of files caused by Daylight Saving Time (DST) differences. This is especially useful when the "Adjust NTFS daylight file time" option is enabled, as it may shift file times by one hour depending on DST status. If this tolerance is not allowed, identical files may appear different and get rehashed each time DST switches, which can negatively impact performance, especially with large numbers of shared files.






Share Tweaks

Options for duplicate history entries, automatic subdirectory sharing, excluded extensions, spreadbar defaults, overshare filtering, selective sharing, Share Only The Need, Powershare and share permissions.

Show duplicate files in file history list

File history list can include or exclude duplicate files. You can switch this here.

Automatically share subdirectories

This option ensures that all existing and newly created subdirectories are automatically shared when a folder is shared.

Don't Share Files With Extensions

Excludes files with the defined extensions when sharing a folder.

List of extensions:

Define a comma seperated list for extension that will be excluded when sharing a folder.

Enable Spreadbar by default

Enable collection data for the spreadbar.
This is optimal for better releases but can take some extra memory.

Overshares before hiding chunks (0 = Disabled)

Balance the upload of chunks within a file.
It hides chunks that were uploaded significantly more than other chunks from downloaders. This causes downloaders to request other, less shared, chunks.
There are always some chunks visible.

Selective chunk sharing

You can make Hide Overshares stricter by revealing only one chunk to each user, starting with the least uploaded chunks and considering the chunks that were already offered when choosing the next.
Hide Overshares must not be disabled for this to work.
Off by default.

Share Only The Need

Share Only The Need hides chunks that were already requested by other clients in your queue. eMule AI analyzes your upload queue to see whether all users ask for the same chunks.
If true, eMule AI hides the chunks that at least one user already has and shows only the chunks that nobody has.
There is always one visible.

Powershare

Powershare settings give absolute priority to a file without the need to unshare other files.

Disabled

Powershare is off unless it is manually set on an individual file.

Activated

Powershare is active unless another mode is manually set on individual files.

Auto

Decide whether Powershare is useful depending on the request count and file rarity.

Limited

Limit Powershare until the file reaches the configured amount of complete sources.

Limit of complete source

Amount of virtual complete sources required before limited Powershare stops prioritizing the file.

Enable PS internal file priority

Use the other priorities of files using Powershare as individual absolute priorities. For example, high priority always goes before normal priority instead of only acting as a factor.
Disabled by default.

Show Permission

Default permission for showing peers a list of your shared files.

Everybody

All shared files are visible to everyone unless an individual file overrides this setting.

Friends only

Allow only friends to see a list of your files.

Hidden

All shared files are hidden.

Color Shared Files rows by permission

When enabled, Shared Files rows are colored according to the effective Show Permission setting. When disabled, no permission-based coloring is applied.

Emulation Settings

Most of the other clients in the eD2k network prefer sharing with clients of their own kind. There are also some communities (which uses addons in the user names) prioritize uploading to their members. In order not to be in a disadvantage, you can activate these features which makes eMule AI pretend to be a client of the same kind of the connected clients and/or a member of the community that connected clients are belong to.

Emulate MLDonkey Clients

eMule AI will pretend to be a MLDonkey client when enabled.

Emulate eDonkey Clients

eMule AI will pretend to be a eDonkey client when enabled.

Emulate eDonkey Hybrid Clients

eMule AI will pretend to be a eDonkey Hybrid client when enabled.

Emulate Shareaza v2 Clients

eMule AI will pretend to be a Shareaza client when enabled.

Emulate Lphant Clients

eMule AI will pretend to be a Lphant client when enabled.

Emulate Communities

eMule AI will pretend to be a member of the community that connected clients are belong to by copying their community tags. This feature implements a smart learning mechanism: Analyzes all tags used in the user names of the all connected clients and if it encounters a tag (on different clients) nth time, where n is equal or more the defined treshold value during an eMule AI execution session, this tag will be saved in "preferences.ini" and started to be emulated. Any tags which is not saved will be ignored and dropped when sending user name.

Tag learning treshold

When eMule AI encounters a tag (on different clients) nth time, where n is equal or more than the defined treshold value during an eMule AI execution session, this tag will be saved in "preferences.ini" and started to be emulated. Any tags which is not saved will be ignored and dropped when sending user name. Default value is 3 and minimum allowed value is 2 since 1 can cause other mods ban/punish our client by sending random tags to see if we copy them.

Log Emulation

Enabling this option logs all emulation events to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see emulation event log.

Credit System

What credit system to use. A credit system is required in Morph. The priority of the peers in your waiting queue is based on the credit system.

Official Credit

Start:1 min:1 max:10
Ratio1=Uploaded Total x 2 / Downloaded Total
Ratio2=SQRT(Uploaded Total+2 )
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
Uploaded Total less than 1MB => Modifier=1
Downloaded Total=0 => Modifier=10

Lovelace Credit

Start:1 min:0.1 max:100
Ratio:1:1.5
l-modifier=100*((1-1/(1+exp((3*{MB uploaded to us}^2-{MB downloaded from us}^2)/1000)))^6.6667)
Only clients using the 'SecureHash' are able to get a multiplier of 100. All others will stay at 10. In contrast to the original credit system, credits are evaluated more on differences and not on quotients. Using the original system you have the best credit values shortly after generating a new userhash. With the new credit system you get good credit values faster if you have already uploadeded many MB before (and did not cheat by killing the userhash).

Ratio Credit

In contrast to its name, it is not based on UL/DL ratio, but on DL, UL values and their differencies.There is no simple and the only formula.
Start:1
Progressively punishes near zero (<= 1 MB) uploaders.
Progressively boosts uploaders who got nothing paid back yet (<= 1 MB in total).
For client who uploaded to me > 1 MB and <=9 MB grants minimal credit DL/9.
For client who uploaded to me > 9 MB minimal credit is 0.7 + sqrt (DL+1)/10.
With balanced ratio credit raises proportional to sqrt (DL+1)
Credit is farther increased/decreased, depending on UL - DL difference.
No limiting values

Pawcio Credit

Start: 3 min: 1 max: 100.
Ratio = 3 * downloaded / uploaded
For new clients (downloaded and uploaded data less than 1MB)
ratio = 3.0 (instead of 1.0) - If you have received more than 1MB from someone but haven't given anything back user gets ratio = 100.0
Small bonus for clients that have given you many MB: If you get 100MB then user receive ratio = 50.0 till you give back 108MB.

EastShare Credit

Start:100 min:10 max:5000
Ratio=+6 per MB uploaded and -2 for downloaded
bonux +100 if upload 1MB+
low value if uploaded at least 1MB+, ratio = 50

Magic Angel Credit

Magic Angel credit system based on the official Creditsstem. The differences are:
it gives Credits for Upload more than 1.65MB (official 1.00MB)
the lowest modifier is 0.1 (official 1.0)
the highest modifier is 50.0 (official 10.0)

Magic Angel+ Credit

Magic Angel+ credit system based on Magic Angel Creditssytem, but increases the modifier a bit, if the client uploaded to us more than we uploaded to him. If the upload of the client minus his download is
<7MB: modifier+0.3
<15MB: modifier+1.0
<30MB: modifier+2.0
>=30MB: modifier+3.0

Sivka Credit

Ident Needed --> Ratio=0.75
Ident failed --> Ratio=0.5
Bad client --> Ratio=0
If upload-download>=1GB --> ratio=32
If 0<upload-download<1GB --> ratio=sqrt(upload-download in MB)
Otherwise ratio=1

S.W.A.T. Credit

There are two different credit modifier calculated:
Ratio1=Uploaded Totalx2.2/Downloaded Total
Ratio2=SQRT(Uploaded Total+2)
Both ratios are compared and the lower value is used as modifier.
Some boundary conditions also exist:
Uploaded Total<1MB (exactly!) => Modifier=1
Downloaded Total=0 => Modifier=10
The modifier may not be lower than 1 or higher than 100

TK4 Credit

If you are sharing completed files and someone downloads data from one of these from you, they probably cannot give you data back as you have all of the file. So in the TK4 system their credit rating remains unchanged. If you are downloading a file and someone takes data from you from the parts of the file you have they will be subject to the credit system and depending on how much they have given they may have their credit rating reduced. At any time if anyone gives you data they get a credit rating increase. The credit system works basically like this:
Start:10 Allowance:'Mb given'/4 + 1MbIf 'Mb taken' greater than 'Mb given + allowance + 1Mb (they have taken more than they gave + some)
Then if the file is a file we are downloading
If '(Mb taken - allowance)' is between 1 to 81Mb credit multiplier range = 9 to 1 math: 10 - square root('(Mb taken - allowance)' - 'Mb given') if '(Mb taken - allowance)' is greater than 81Mb credit multiplier range = 1 to 0.14 math: 9 / square root('(Mb taken - allowance)' -'Mb given')
If 'Mb given' is greater than 'Mb taken' (they have given more than they have taken)
Credit multiplier range = 10 to 342 math: 10 + log(2.72+('Mb given'-'Mb taken)*4)+('Mb taken/12)
There is no absolute range for multipliers but I have quoted a range of 0.14< to >342 (Assumes around a max. 4Gb difference) with a starting point of 10. Clients with failed SUI will start at 10, but not go up.

Xtreme Credit

It rewards clients which gives you a high download. This clients gets a bonus factor.
On the other side, clients you upload much data and the don't give something back to you will get a penalty for the current emule session.
Formula for positive bonus:
Bonus = (download - upload)/10485760 - 1.0/(download/10485760)
The max score ratio is 10. (like official)
A client can get a negative bonus of 0,1 if you gave him 1 chunk(9,28MB) more this session and also at complete comparision of download/upload without geting something back.
A client can get a negative bonus of 0,2 if you gave him more than 2 chunk (9,28MB) this session and also at complete comparsion of download/upload without geting something back.

ZZUL Credit

Start:1 min:1 max:10
Ratio1 = Uploaded Total x 2 / Downloaded Total
Ratio2=SQRT(Uploaded Total+1)
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
Uploaded Total=0 => Modifier=1
Downloaded Total=0 => Modifier=10

Client History

You can enable and tweak setting related with saving and loading clients here. When this feature is enabled, clients will be reloaded after restarting eMule AI. Enabling this feature also helps protection panel, since all punishments will be restored whenever you restart eMule AI.

Enable

Enable this feature

Client history expiration days

Clients not seen since the defined number of days will be purged from clienthistory.met file.

Log client history events

Enabling this option logs all client history events to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see client history event log.

Remote Client's Shared Files

Here, you can enable and tweak setting realated with remote client's shared files.

Always use the user hash as the tab name

Default tab name is user name if it isn't empty otherwise user hash. But there're many clients using same user names, so it can be difficult to distinguish their tab names in the search list. If you activate this option, user hash will always be used as the tab name.

Add the client note to the tab name

If this option is enabled and a note has been added to the client, it will be appended in square brackets at the end of the tab name.

Auto query period

This is the time interval in minutes between shared files auto query processes executed.

Maximum clients to be queried in a single period

This is maximum number of clients that will be auto queried in the defined period.

Auto query period for the same client

This is the minimum time in minutes between consequent auto queries for the same client. Minimum value that can be defined is 30 minutes.

Set auto query for the clients downloaded from us

When enabled, the auto query will be activated for any clients which hasn't queried yet and has downloaded from us more than the specified threshold value.

Download threshold

Auto query will be activated any clients which hasn't queried yet and has downloaded from us more than this amount (in MB) of data.

Set auto query for the clients uploaded to us

When enabled, auto query will be activated for any clients which hasn't queried yet and has uploaded to us more than the specified threshold value.

Upload threshold

Auto query will be activated any clients which hasn't queried yet and has uploaded to us more than this amount (in MB) of data.

Save & Load Sources

You can enable and tune saving and loading sources here. When this feature is enabled, sources will be reloaded after restarting eMule AI.

Enable

Enable this feature

Maximum sources to save

You can limit number of sources here. This can be helpful to reduce saving and loading time and usage of system resources.

Source expiration (in days)

You can adjust the expiration day count for sources here. Expiration helps minimize saving and loading times and reduces system resource usage.

Met File Control

You can tune .met files expiration behaviour with these options.

Don't purge entries

Old entries in the known.met file will never be purged.

Partially purge entries (Official method)

Parts of old entries in the known.met file will be purged. This is the way the official does it.

Completely purge entries

Old entries in the known.met file will be purged completly.

Days until purge (0 = Default [31 days])

Clean up .met files after file has not been seen for the defined days. Saves diskspace. Applies for known*.met. Never set a very low value (less than 30) here.

Remove unused AICH hashes immediately

Enable if AICH hash of unshared files should be deleted immediately. Default: disabled

Client credit expiration days

Clients not seen since the defined number of days will be purged from clients.met file. Minimum value that can be defined here is 150 days.

Backup

These settings allow you to backup your eMule AI configuration data. Here, you can enable and adjust the backup settings.

Backup on exit

Enable automatic backup when eMule AI closes.

Automatic backup

Enable automatic backup at defined periods.

Backup period

This is the interval, in hours, at which a new backup will be created.

Maximum number of backups

This is the maximum number of backups. When this limit is reached, the oldest backup folder will be deleted to create a new backup.

Compress backup folder

This option recursively compresses the backup folder. It is only supported by the NTFS file system.

Advanced Preferences

Minor Preferences for advanced tweaking. Also supported in official by editing preferences.ini

MiniMule

Additional settings for the MiniMule feature.

MiniMule auto close

The MiniMule window will usually remain visible until closed. Setting this value to 0 will automatically close the window when the cursor is moved out of the window. Similar to a tooltip. (default=1)

MiniMule transparency

Controls the transparency of the MiniMule window. 0 and 100 are opaque 1 is translucent. (default=0), might require restart.

Display

How to display some items in the download window

Restore last main window

eMule AI remembers which of the main windows (Kademlia, Server, Transfer, was open, when before application exit and restores it. (default = unchecked)

Restore last log pane

Remember which of the log panes (Log, Verbose) has been used the last session.

Straight window styles

Changes the look of the statistic graph window and some other minor styles stuff. (might require restart)

Right to left windows layout

Adds right-to-left reading support to eMule AI. Useful for languages like Hebrew etc.

Show active download in bold

Enabling this option sets font of the active download as bold in download list.

Maximum chat history

Defines the maximum number of lines saved in the history of the irc messages. After this value is reached the oldest message is purged on new entry (FIFO - First In First Out). default =100

Maximum chat sessions

Maximum open chat sessions

Date&Time format

Date&Time format

Date&Time format for lists

Date&Time format for lists

Show vertical hour markers in the statics

Show an vertical line in the statics window every hour. Resize statistics window to see effect (default: enabled)

Disable some toolbar options

Option to disable toolbar options like i.e.: Added chevron support: If toolbar is too small to display all buttons a chevron ('>>' icon) is shown at the very right side which opens a menu with the remaining button commands. Tooltips for truncated button titles and in 'No Labels' mode of toolbar. Buttons can be moved and/or removed from the toolbar by holding down Ctrl+Alt key while draging a button with the mouse. Button sizes more similar to Windows Explorer. (default: checked)

Flash tray icon on new message

Flash the system tray icon when a new message is received. (default=on)

Show 'copy ed2k link' command

In the shared files windows, Show Copy link to clipboard menu option instead of the 'ed2k links....' context menu. (default = off)

Don't update Queue list in real time

The information displayed in the queue list will be updated not as often which will save some CPU time.

Don't recreate statistic graphs on resize

eMule AI may freeze briefly when the window is resized. This is caused by redrawing the graphs with saved data. If this option is checked, the graphs will not be recreated and start anew.

Use overlay to indicate up/down in taskbar

Windows 7 allows overlays for the taskbar icon. eMule AI can utilize this to indicate active up- and downloads. Default: disabled

Log

Additional settings for customizing the logging.

Maximum log buffer

Defines the amount of system memory eMule AI uses to display the logs. For Win XP a default 128 kB reserved. The logs are rotating, i.e. if the buffer is filled up to its limit an old message is purged when a new one arrives (FIFO).

Log file format

Changes the data format of the log files from unicode to UTF8 when set to 1.

Date&Time format for log

Date&Time format for log

Create crash dump

When this key is enabled eMule AI will automatically save a crash dump should eMule AI unexpectedly crash. This can help the developers to track down the problem. The dump is saved in eMule AI's installation folder, called 'eMule-version-number-Modversion.dmp'. Default=unchecked (disabled)

Ignore instances

Allows the execution of multiple eMule AI instances. Note: For two eMule AIs running on the same machine they must be installed to different folders, must have different temp folders and also the ports used by each eMule AI have to be unique. It is not recommended to run two eMule AIs concurrently apart from testing purposes. default:0

Notifier mail encryption certificate name

Name of the certificate for the encryption of email notifications with S/MIME. The certificate will be looked up in the local windows address book.

Preview small blocks

This function should be only activated when using VLC - VideoLAN Client to preview files. It allows to preview multimedia files when at least 16 kB data for .mpeg files or 256 kB data for all other multimedia content (.avi, CD-Images with multimedia content) has been downloaded. Using this option the 'Create backup for preview' setting has to be deactivated in the 'Video Player' dialog. Note that vlc version 8.5 and higher seem to have some problems with broken indexes.

Preview copied archives

When this option is disabled (=0), eMule AI will use a new preview method which is faster and uses less disk space in the temporary folder.

Preview on double click

If this setting is enabled, double clicking on a row in the download list will invoke the preview command for the related file. If 'Download list double-click to expand' is turned on in 'Preferences -> Display', clicking on the first column invokes the preview command and clicking on the other columns expands the row.

Internet security zone

Security Zones as per Internet Explorer Security settings. Defines which features are allowed in HTML code. Relevant for the MiniMule window. Allowed=Untrusted|Internet|Intranet|Trusted|LocalMachine

Text editor

The default program for editing the Webservices and IPFilter.dat may be entered here. Provide the complete path to the new executable if not using the default notepad.exe.

Server UDP port

Normally the local port for asking servers for sources or searching files on them is randomly chosen . If eMule AI runs on a machine in a more complex network, especially when routers are used, it may be necessary to fix this port to a defined value or to deactivate it at all. Disabling this port means that eMule AI will no longer be able to update the status of the servers in its server list and will also not be able to receive sources from them nor do a global search. Exempt from this is the server eMule AI is actually connected to. Usually the default setting should not be changed. Possible values for ServerUDPPort are: 0:Disabled / 1-65534: Fixed local UDP port / 65535:Random port (default)

Remove files to recycle bin

This setting affects the Delete From Disk function in the right click menu of the Files lists. If disabled then files will be permanently deleted from disk without moving them to the recycle bin.

High resolution timer

Option to make eMule AI use highres scheduling (better precision for sleeps and some timers). Currently the upload throttler takes advantage of it if enabled, which may give smoother upload performance and smoother pings while using eMule AI.

Trust every AICH hashset

Trusts every AICH hashset during the current session. Not recommended except debugging.

Intelligent Corruption Handing (ICH)

Intelligent Corruption Handling (ICH) helps recovering corrupted data downloaded from other clients.

Prefer restricted over user

Do not create a new eMule AI_secure account, but restrict the rights of the current account. Might be an alternative for securemode if you are running in a limited account.

User sorted server list

When enabled this will use the same server list sorting as shown in GUI when trying to connect to a server.

Webserver file upload size limit (in MB)

Amount in MB that are allowed to be downloaded over http from the webserver (Default 5,0=all)

Allowed IP's for webserver

IP addresses that are allowed to connect to the webserver, seperated by ';'

Debug search detail level

Debug search detail level (Default=0)

Crypt TCP padding length [1-254]

Maximum number of random padding bytes added to obfuscated TCP handshakes (default 128). Lower values reduce overhead, higher values increase packet size variation but also add more overhead.

Don't compress avi

Normally all file data is compressed before transfering, except for rar, zip and some other archive formats This options disables compressing avi files like rar files For high speed upload links this increases performance, but for some avi file some possible compression is lost. (default= false). Note that Morph has the option to disable/decrease compression for all files.

Rearrange Kad search keywords

If enabled eMule AI will automatically rearrange search keywords to avoid limitations by Kad. Default: enabled

Beep on errors

Beep on errors

Accept messages from valid clients only

Accept messages from valid clients only

Keep unavailable directories on fixed drives

Usually shared folders that are unavailable are being removed. Enabling this option will keep those folders if they are on fixed drives so they can be loaded again when they are available again. Default: disabled

Download Validator
Disable

No download validation will be performed.

Ask with a message box

Show a message box and ask user to approve or reject the download when a known file with same/similar name is found.

Reject same/similar name

This option will automatically reject any download request having an entry in the file history with the same file name.

Accept same/similar name conditionally

This option will automatically accept any download request having an entry in the file history with the same/similar file name if new file size is larger than the old one by the defined percentage. 0 means accept all; 10 means files %10 or more larger will be accepted.

File size percentage condition

When "Accept same/similar name conditionally" is selected, you can define a percentage here: 0 means accept all; 10 means files %10 or more larger will be accepted.

Reject canceled files

Enabling this option will Reject files with a corresponding entry in the canceled history having similar hash or name.

Reject files with same hash

Enabling this option will Reject files with same hash even if file names are different.

Reject blacklisted file names

Enabling this option will reject files that are manually blacklisted or have blacklisted names. Please note that this option requires the 'Enable manual blacklist' setting to be enabled in the Blacklist Panel.

Case insensitive file name comparison

Enabling this option will always perform case insensitive file name comparison.

Ignore file extension

Enabling this option will ignore file extension during file name comparison.

Ignore tags

Enabling this option will ignore tags enclosed in () [] {} <> during file name comparison.

Don't ignore numeric-only tags

Enabling this option will include numeric-only tags enclosed in () [] {} <> during file name comparison even though "Ignore tags" is enabled. For example tags like (25) or [25] or {25} or <25> will not be ignored.

Ignore non-alphanumeric characters

Enabling this option will ignore any non-alphanumeric characters during file name comparison.

Clean corrupted character artifacts

Enabling this option will detect and strip corrupted character sequences (Mojibake artifacts) from file names prior to all validation checks.

Minimum file name comparison length

Anything shorter than this file name length will discard comparison and accept file. Results of name processing options "Ignore file extension", "Ignore tags" or "Ignore non-alphanumeric" will be reverted if previous step satisfies this condition. Defined value should be greater than 4.

Compare local media length when available

When both files have a media length found by local MediaInfo analysis, candidates outside the allowed difference are ignored. This check is skipped when either value is unavailable or comes from remote metadata.

Maximum media length difference (seconds)

Sets the largest allowed difference between media lengths found by local analysis.

Match date/time text in file names

When enabled, Download Validator detects date text with hour/minute in the processed file name after the existing name processing options. It uses the exact detected date/time text to find already known or downloading files and treats a date/time text match as a name match without comparing the remaining file name; if the size percentage condition is enabled, that condition still has to pass. Alternative date/time formats are not considered equivalent. Optional sub-options can also require seconds or include a numeric value that immediately follows the detected date/time text; when that numeric option is enabled, the optional separator before the numeric value must match too.

Limit detected years

Only detect date text whose resolved year is within the selected four digit range.

Start year

Four digit first year used by the date/time detector when year range limiting is enabled.

End year

Four digit last year used by the date/time detector when year range limiting is enabled.

Match seconds

Require seconds to be present and equal in the detected date/time text. When disabled, only year/month/day and hour/minute are compared.

Include following numeric values

When enabled, numeric values directly after the detected date/time text are included in the comparison key. The values may follow directly or be linked with one separator from space, - _ , . ; : + or %. Separator characters are part of the key, repeated separators stop the scan, and a different or missing trailing value prevents a date/time only match.

Enable regular expression matching

Loads regular expression rules from downloadvalidator.conf and checks them against the original full file name. Lines beginning with # after optional spaces are comments. Each active rule must match once and return one or more capture groups with values. Files are treated as having the same name when the same rule returns the same values. Conflicting results from different rules are ignored. Use Reload Configuration after editing the file outside eMule AI. These rules are checked only when exact and date/time checks find no match.

Enable fuzzy similarity matching

Builds an index from file name character groups to find possible known file matches after exact and regex checks. This option is disabled by default.

Minimum similarity score (%)

Only fuzzy candidates with this score or higher can be treated as similar. The default value of 100 accepts only normalized names that are exactly the same.

Minimum displayed similarity score (%)

Fuzzy matches below this score are not shown under Possible Known File Matches. Trusted same hash, exact name, date and time, and regular expression matches remain at 100 percent.

Minimum shared unique tokens

Require at least this many different whole words to be shared before token coverage can qualify two names as possible matches.

Minimum token coverage for the shorter name (%)

Require shared whole words to cover at least this percentage of the name with fewer unique words.

Minimum name length similarity (%)

Use whole name edit comparison only when the shorter normalized name reaches this percentage of the longer name length.

Minimum edit similarity for the whole name (%)

Accept whole name edit evidence only when the normalized names reach at least this similarity percentage.

Minimum file group label letters

Minimum number of letters required in a file group label used for ID based matching. Higher values reduce short label false matches.

Minimum file ID digits

Minimum number of digits required in the main file ID. Parts after a hyphen may contain fewer digits.

Skip incomplete file download confirmation

Skip "Potentially Incomplete File" confirmation messagebox and download incomplete files.

Mark as blacklisted

If you enable this option, all rejected files will be automatically added to the manual blacklist, unless they are already known files (shared, downloading, downloaded, or canceled). Please note that this option requires the 'Enable manual blacklist' setting to be enabled in the Blacklist Panel.

Automatically validate search results and mark as blacklisted

If you enable this option, once a search is completed, a background process will start to check all search results. Any rejected files will be automatically added to the manual blacklist if they are not already known (shared, downloading, downloaded, canceled). Please note that this option requires the ‘Enable manual blacklist’ option to be checked in the Blacklist Panel.

Rules
Regex Rules

Enter one regular expression per line to recognize alternate names for the same content. Use capture groups for the parts that must match. Lines beginning with # are comments.

Validate

Check the current rule text for syntax errors without saving or activating it. If a rule is invalid, the affected line is selected.

Reload

Reload the rule file from disk and replace the text in the editor. You are asked for confirmation when unsaved changes would be discarded.

Protection Panel
shield.conf status

Show whether shield.conf loaded successfully and how many protection definitions are active. If loading failed, its rules are not being used.

Reload

Reload shield.conf from disk and apply its current protection definitions without restarting eMule.

General Options

You can set general protection panel system options here.

Timing Options

You can set punishment cancellations timing options here.

Punishment cancellation scan period

Protection Panel scans all punished clients periodically and cancel bans and punishments if they are expired. You can change this period value here. This value is in minutes and should be between 2-20.

IP and user hash ban time

Time a client is banned in hours. Please note that all punishments will be reset whenever you restart eMule AI unless you've already enabled Client History feature. Valid value range is 1-720.

Upload ban & score reducing time

Time a client is upload banned or score reduced in hours. Please note that all punishments will be reset whenever you restart eMule AI unless you've already enabled Client History feature. Valid value range is 1-720.

Don't punish friends

When enabled, clients in the friend list will not be banned by the Protection Panel System.

Don't allow hot swapping files with a lower priority

If a client gets a slot for a particular file, then it can requests and download another file (which is called as file hot swapping) with a lower priority. This is a security leak that a leecher mod could exploit and also known as "Maella Backdoor". When this option enabled, file hot swapping with a lower priority will not be allowed, but file hot swapping with the same or a higher priority will still be allowed.

Inform bad clients via user name

Generates a user name including a warning text tag and send this to the bad clients.

Use custom text to inform bad clients

You can define your own custom text message used in the user name to inform bad clients here. Default text messages will be used if you leave this empty

Enable anti upload protection

Don't increase client score before it uploads more than the limit defined below. "Try to transfer full chunks to all uploads" need to be enabled to utilize this option.

Limit before a client gets credits [1000 - 2800 KB]

Limit before a client gets credits in KB. A value between 1000-2800 should be defined.

Enable uploader punishment prevention

Not every client detected by the Protection Panel Systems is really bad. Activating this feature prevents clients from being banned by comparing the defined limit with the upload amount or upload-download difference of a client. Score reduced clients may regain a trustworthy status.

Limit for punishment prevention in KB

You can set the limit (in KB) as the minimum upload amount or upload-download difference of a client that will activate punishment prevention.

UL >= Limit

Don't ban the clients who uploaded more than the defined limit.

UL-DL >= Limit

Don't ban the clients who has a "upload-download" difference more than the defined limit, until the difference reaches the limit.

UL-DL >= Limit till 1:1

Don't ban the clients who has a "upload-download" difference more than the defined limit, until the difference reaches 0 (If session ends before 0 is reached, then the client will have to reach the limit again in the next session).

Shield Leecher Detection

Shield is a customizable dynamic leecher protection module that identifies and punishes leecher clients. It represents an enhanced version of eMule AI XTreme mod's DLP. Unlike DLP, which relies on DLL files, Shield examines client fingerprints defined in the shield.conf configuration file, allowing easy modification by the user.

Check Mod Names

Checks mod names defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Check User Names

Checks user names defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Check User Hashes

Checks user hashes defined in shield.conf to detect leecher or fake mods, bad communities or other kinds of bad clients.

Hard Leecher Punishment

Hard leechers are defined in shield.conf. They leech community with extremely bad upload/download ratios or not uploading at all. Choose an action to be taken against detected clients.

Soft Leecher Punishment

Soft leechers are defined in shield.conf. Even though they upload fairly, their client softwares have bad features and not approved by the community. Choose an action to be taken against detected clients.

Common punishment actions
IP and user hash ban

Ban both client's IP address and user hash.

User hash ban

Ban client's user hash.

Upload ban

Don't upload to these clients.

Score *0.1

Reduce client score by multiplying 0.1.

Score *0.2

Reduce client score by multiplying 0.2.

Score *0.3

Reduce client score by multiplying 0.3.

Score *0.4

Reduce client score by multiplying 0.4.

Score *0.5

Reduce client score by multiplying 0.5.

Score *0.6

Reduce client score by multiplying 0.6.

Score *0.7

Reduce client score by multiplying 0.7.

Score *0.8

Reduce client score by multiplying 0.8.

Score *0.9

Reduce client score by multiplying 0.9.

No punishment

No punishment action will be taken against the clients of this type.

Ban Bad Kad Nodes [Safe Kad v2]

Detect bad Kad nodes by analyzing their behaviour and ban their IP addresses. Banning these nodes slows down their spreading inside Kad network.

Ban Wrong Package Senders

Detect wrong packages sent by clients causing processing errors and ban their IP addresses. This could either be due to a malfunctioning/misconfigured client or a malicious attempt resembling a DoS attack.

Anti-P2P Bot Detection

Detect Anti-P2P bots like MediaDefender and others by checking their user hashes.

Punishment

Choose an action to be taken against detected clients.

Wrong Tag Detection

Detect unknown hello and info tags sent by the clients. These are usually unofficial modification to the original code resulting broken functionality and/or buggy messaging. Bad clients like Applejuice and Darkmule may cause this.

Punishment

Choose an action to be taken against detected clients.

Unknown Tag Detection

Detect wrong hello and info tags sent by the clients. These are usually unofficial modification to the original code, may or may not be a sign of a leecher client. So be carefull about the punishment.

Punishment

Choose an action to be taken against detected clients.

Hash Thief Detection

Detect clients using our client's hash information and spending our credit information by imitate our client.

Punishment

Choose an action to be taken against detected clients.

Mod Thief Detection

Detect clients faking our client's Mod ID.

Punishment

Choose an action to be taken against detected clients.

User Name Thief Detection

Detect clients using our client's user name.

Punishment

Choose an action to be taken against detected clients.

Empty User Name Detection

Detect eMule AI clients using empty user name

Mod Changer Detection

Detect clients changing their Mod ID very often. Using another eMule AI Mod with same configuration folder can cause this and this is generally OK. But changing Mod ID very often might be a sign of the leecher mods.

Mod change intervals

This is the time interval in minutes that will be inspected to decide if Mod ID change treshold is reached. A value between 30-1440 should be defined.

Mod change threshold

If this amount of Mod ID changes is reached inside defined time interval, the client will be punished. A value between 1-24 should be defined.

Punishment

Choose an action to be taken against detected clients.

User Name Changer Detection

Detect clients without a mod name (acts as official client) changing their user names very often. User name changes are generally OK, except a client does this very often. This might be a sing of bad purposes.

User name change intervals

This is the time interval in minutes between user name change checks which will be used to decide if the user name change threshold is reached. A value between 30 and 1440 can be defined.

User name change threshold

If this amount of user name changes is reached inside defined time interval, the client will be punished. A value between 1-24 should be defined.

Punishment

Choose an action to be taken against detected clients.

TCP Error Flooder Detection

Detect clients causing continuous TCP errors. While these errors are not uncommon, the frequency can be alarming with certain clients. This could either be due to a malfunctioning/misconfigured client or a malicious attempt resembling a DoS attack.

TCP error detection intervals

This is the time interval, in minutes, that will be inspected to determine if the TCP error threshold has been reached for a specific client. A value between 30 and 1440 can be defined.

TCP error threshold

If the number of TCP errors reaches the defined threshold within the specified time interval, the client will be punished. The minimum value can be 7.

Punishment

Choose an action to be taken against detected clients.

Community Detection

Detect bad community tags in client user names.

Punishment

Choose an action to be taken against detected clients.

Fake Version Detection

Detect clients faking client version.

Punishment

Choose an action to be taken against detected clients.

Hex Mod Name Detection

Detect eMule AI clients with a mod name containing hexadecimal characters.

Punishment

Choose an action to be taken against detected clients.

Ghost Mod Detection

Detect eMule AI mods sending empty mod name.

Punishment

Choose an action to be taken against detected clients.

Spam Detection

Detect clients spamming chat messages.

Punishment

Choose an action to be taken against detected clients.

eMCrypt Detection

Detect bad eMCrypt mods.

Punishment

Choose an action to be taken against detected clients.

XS-Exploiter Detection

Detect clients exploting source exchange.

Punishment

Choose an action to be taken against detected clients.

File Faker Detection

Detect clients that say they don't have a file but request it anyway.

Punishment

Choose an action to be taken against detected clients.

Upload Faker Detection

Ban clients that failed many upload attempts in a row.

Punishment

Choose an action to be taken against detected clients.

Upload Request Abuse Detection

Detects clients that repeatedly abuse upload requests, queue entries or upload slots by reconnecting, dropping, rotating hashes or failing to request blocks after activation.

Detect repeated no-request upload slots

Detects clients that enter an upload slot and repeatedly fail to request blocks after activation.

Detect repeated queue reask/drop loops

Detects clients that repeatedly request the same shared file and re-enter the queue in a short time.

Suppress duplicate request statistics

Prevents repeat offenders from inflating shared file request counters with rapid duplicate requests.

Track hash rotation by IP

Tracks multiple user hashes from the same IP when they repeat the same upload request abuse pattern.

Disconnect banned hashes after hello

Disconnects clients after hello if their user hash is already banned.

Punishment

Choose an action to be taken against detected clients.

Agressive Client Detection

Detect clients that ask too often for a file.

Average time between reasks before banned [5-15 min.]

Define an average time limit in minutes between file reasks before banned. Defined value should be between 5-15.

Reask count limit before banned [3-10]

Define a counter limit for file reasks before banned. Defined value should be between 3-10.

Log reask times of agressive clients

If enabled, logs the reask times of aggressive clients to the verbose log. This can be useful for debugging and identifying problematic clients.

Punishment

Choose an action to be taken against detected clients.

Punish non SUI Clients

Punish clients without a Secure User Identification.
Explanation of SUI:Clients in the network are identified by a unique value called user hash which is used to grant earned credits with other users. eMule AI can use an asymmetric encryption to avoid exploiting or manipulating other users hash values and this is called Secure User Identification. Secure User Identification can be turned on in Preferences -> Security and recommended to use it.

Punish non SUI MLDonkey Clients

Punish MLDonkey clients without a Secure User Identification.

Punish non SUI eDonkey Clients

Punish eDonkey clients without a Secure User Identification.

Punish non SUI eDonkey Hybrid Clients

Punish eDonkey Hybrid clients without a Secure User Identification.

Punish non SUI Shareaza Clients

Punish Shareaza clients without a Secure User Identification.

Punish non SUI Lphant Clients

Punish Lphant clients without a Secure User Identification.

Punish non SUI aMule Clients

Punish aMule clients without a Secure User Identification.

Punish non SUI eMule AI Clients

Punish eMule AI clients without a Secure User Identification.

Punishment

Choose an action to be taken against detected clients.

Tweak Official Features

These checks strengthen protections included with eMule against corrupted data, hash manipulation, automated file scanning, rank flooding and excessive Kad requests.

Ban Corrupted Data Senders

Ban clients sending corrupted data.

Ban Hash Changers

Ban clients changing their hash very often. This is usually a sign of the leecher mods.

Ban File Scanners

Ban clients that asked a few times in a row for files we don't have.

Ban Rank Flooders

Ban clients that send unrequested rank informations.

Ban Kad Request Flooders

Ban clients flooding Kad by sending excessive amount of packages.

Kad request flood treshold

This is a multiplier of the maximum number of allowed packages sent in a minute. Defined value should be between 1-4. 1 means a client will be banned if it sends more packages than the allowed number; 2 means a client will be banned if it sends more packages than two times of the allowed number; and so on. Default value is 4.

Blacklist Panel
Search Result Blacklist Options

Choose when search result blacklist rules are applied, whether matches are logged and how automatic matches interact with the manual blacklist.

Enable automatic blacklist

Enabling automatic blacklist feature will mark files in search results as blacklisted when they contain the defined words.

Enable manual blacklist

Enabling this will add "Mark As Blacklisted" menu item to the context menu of the search list. When you mark a file on the search list with "Mark As Blacklisted", it will be listed at the bottom inside spam group as spam file with a distinctive text in "Known" column. This file actually will not be marked as a spam and there are some differences between these two: "Mark As Blacklisted" only marks a specific file with its hash value, while "Mark As Spam" performs more complex heuristic analysis and tries to mark possible similar files too. The performance cost of "Mark As Blacklisted" is lower than "Mark As Spam" and there is also no risk for having a file marked as spam wrongly with this option. Both options can still be useful in different situations.

Log when automatic blacklist matches a file

Enabling this option logs all file name matches of automatic blacklist definitions to the verbose log output. You also need to activate verbose log option under Options-->Extended-->Verbose to see automatic blacklist log.

Remove auto-blacklisted files from manual blacklist

Remove auto-blacklisted files from manual blacklist

Search Result Blacklist Definitions

Edit the rules that identify unwanted search results. Validate the definitions before applying them so a syntax error does not replace the active rules.

Blacklist rules

Edit the rules used to identify unwanted search results. Lines that start with # are comments. Open the Help tab for the full rule syntax and examples.

Validate

Check the current rule text for syntax errors without saving or activating it. If a rule is invalid, the affected line is selected.

Reload

Reload the rule file from disk and replace the text in the editor. You are asked for confirmation when unsaved changes would be discarded.

Help

Read the supported blacklist rule syntax, operators and examples. Use this reference when creating or troubleshooting custom rules.

Download & Installation

Download the Latest Release

For current builds, packaged downloads, and versioned release notes, visit the eMule AI Releases page on GitHub. After downloading the release archive from GitHub, unzip it to any directory of your choice, then run eMule AI from that folder.

For Docker deployments, download eMuleAI_Docker_Package.zip from the eMule AI Releases page. The package contains launchers for Windows, Linux, and macOS plus a shared configuration file. The launchers obtain the official emuleai/emuleai image from Docker Hub and start it with persistent storage and the selected display mode. See the Docker Guide below for the complete end-user procedure.

Supported Operating Systems

Windows 10 and Windows 11 are supported natively and can also run the Docker image. Linux and macOS are supported through Docker. See the Docker Guide for prerequisites, launcher instructions, display modes, persistent storage, and networking.

Docker End-User Guide

The official eMule AI Docker image runs the Windows x64 application under Wine in a Linux amd64 container. The release package provides launchers for Windows, Linux, and macOS. The launchers download or update the image, create the container, mount persistent data, publish the selected ports, wait for the display service, and open the user interface.

Downloads: Get eMuleAI_Docker_Package.zip from the eMule AI Releases page. The official image is emuleai/emuleai on Docker Hub.

1. Install the Required Applications

Docker

Windows and macOS users should install Docker Desktop and start it before running the launcher. Linux users need a working Docker Engine and Docker CLI. Docker Desktop for Linux can also be used.

Xpra

Install an Xpra client from the official Xpra download page when using DISPLAY_MODE=xpra. Xpra is not required when using DISPLAY_MODE=novnc.

Installer selection, platform requirements, permissions, upgrades, and application-specific troubleshooting may change over time. Please refer to the Docker and Xpra websites for the current details of those applications.

Windows: Docker Desktop must be running with Linux containers enabled. The Docker CLI must be available from Command Prompt.

2. Download and Extract the Launcher Package

  1. Open the eMule AI Releases page.
  2. Download eMuleAI_Docker_Package.zip from the selected release.
  3. Extract the ZIP to a normal writable directory. Do not run the scripts from inside the ZIP viewer.
  4. Keep these four files together in the extracted directory:
eMuleAI.conf
Windows.bat
Linux.sh
macOS.command

3. Edit eMuleAI.conf

Open eMuleAI.conf in a plain-text editor. It uses KEY=value syntax with no spaces around the equals sign. Lines beginning with # are comments. All launchers read the same file.

The default configuration is suitable for a normal local Xpra installation. Review at least the following settings before the first run:

IMAGE_SOURCE=registry
REGISTRY_IMAGE=emuleai/emuleai
REGISTRY_TAG=latest
DISPLAY_MODE=xpra
XPRA_PASSWORD=emuleai
RESTART_POLICY=no

DATA_DIR_WINDOWS={LOCALAPPDATA}\eMuleAI
DATA_DIR_LINUX=$HOME/.local/share/eMuleAI
DATA_DIR_MACOS=$HOME/Library/Application Support/eMuleAI

EMULE_TCP_PORT=4662
EMULE_UDP_PORT=4672
XPRA_CANVAS_WIDTH=7680
XPRA_CANVAS_HEIGHT=4320
  • Keep IMAGE_SOURCE=registry for normal release use.
  • Use DISPLAY_MODE=xpra for a separate desktop window or DISPLAY_MODE=novnc for browser access.
  • Choose an operating-system-specific DATA_DIR_* path with enough free space. This directory preserves configuration, downloads, temporary files, logs, the Wine prefix, and Xpra data.
  • Keep XPRA_CANVAS_WIDTH and XPRA_CANVAS_HEIGHT at least as large as the complete host desktop. The defaults cover common multi-monitor and ultrawide layouts.
  • Change XPRA_PASSWORD when display access will not be limited to the local computer.

4. Run the Correct Script

Windows

Start Docker Desktop. Then double-click Windows.bat or run it from Command Prompt:

Windows.bat

Linux

Open a terminal in the extracted directory. Restore execute permission if necessary, then run:

chmod +x Linux.sh
./Linux.sh

macOS

Start Docker Desktop. Open Terminal in the extracted directory. Restore execute permission if necessary, then run:

chmod +x macOS.command
./macOS.command

5. What the Launcher Does

  1. Checks that Docker is installed and the Docker engine is running.
  2. Reads and validates every setting in eMuleAI.conf.
  3. Creates the selected persistent data directory.
  4. When IMAGE_SOURCE=registry, checks REGISTRY_IMAGE:REGISTRY_TAG on Docker Hub. If the local image is current, Docker reuses the existing layers. If a newer image exists, Docker downloads the changed layers and updates the local tag.
  5. Removes the existing container with the configured CONTAINER_NAME, then creates a replacement using the selected image. Persistent data is retained because it is stored outside the container.
  6. Waits until the container and selected display service are ready.
  7. When Xpra is selected and AUTO_ATTACH_XPRA=yes, starts the installed Xpra client automatically.
  8. When CLEAN_OLD_IMAGES=yes, removes older image tags and unused image IDs only after the replacement container starts successfully.
Updating eMule AI: Run the same operating-system script again. No separate docker pull command is needed in registry mode.

6. Open the Interface

Xpra Mode

With DISPLAY_MODE=xpra, the launcher connects to tcp://127.0.0.1:14500 by default and opens eMule AI as a separate desktop window. The port, username, password, client path, Windows backend, and scaling behavior are configurable.

noVNC Mode

With DISPLAY_MODE=novnc, open the URL printed by the launcher. With default settings it is:

http://127.0.0.1:6080/vnc.html?autoconnect=1&resize=scale

7. Stop and Start Later

  • Close eMule AI normally from its application window. With the default RESTART_POLICY=no, the container remains stopped.
  • Run the operating-system launcher again to start a fresh container using the same persistent data.
  • To stop it from a terminal, use docker stop eMuleAI when the default container name is unchanged.
  • Do not use the same data directory simultaneously with a native eMule AI instance or another container.
Ports, High ID, and Remote Access

The default eMule ports are 4662/TCP and 4672/UDP. For High ID, the values configured in eMuleAI.conf, the ports configured inside eMule AI, and the ports forwarded by the router should match:

EMULE_TCP_PORT=4662   -> router 4662/TCP
EMULE_UDP_PORT=4672   -> router 4672/UDP

The launcher maps each host port to the same container port. Avoid translating a different host port to the eMule port because eMule announces its configured listening port to peers.

DISPLAY_BIND_ADDRESS=127.0.0.1 keeps Xpra or noVNC local to the computer. Publishing a display service on 0.0.0.0 exposes it to other network interfaces and should only be done with appropriate network restrictions, authentication, and transport protection.

Persistent Data Layout

The selected operating-system data directory is mounted as /data in the container. It contains:

  • config: eMule AI configuration and state files.
  • Incoming: completed downloads.
  • Temp: incomplete downloads and part files.
  • logs: eMule AI logs.
  • wineprefix: persistent Wine environment.
  • xpra: Xpra authentication and related data.

Replacing or updating the container does not remove this directory. Back it up according to your normal data-protection policy.

Troubleshooting

First confirm that Docker is running and that the selected display port is not already used by another application. Useful commands with the default container name are:

docker ps -a --filter name=eMuleAI
docker logs eMuleAI
docker port eMuleAI
docker inspect eMuleAI

For Xpra problems, confirm that the host Xpra client is installed and that XPRA_CLIENT_EXE_WINDOWS, XPRA_CLIENT_EXE_LINUX, or XPRA_CLIENT_EXE_MACOS points to the correct executable when automatic detection does not find it.

For pointer alignment or moved-window click problems on Windows, keep XPRA_CLIENT_BACKEND_WINDOWS=gtk, XPRA_DESKTOP_SCALING=off, and ensure the Xpra canvas is at least as large as the complete Windows desktop.

For noVNC problems, verify the printed browser URL and the configured NOVNC_PORT.


Complete eMuleAI.conf Reference

The descriptions below match the shared configuration file included in eMuleAI_Docker_Package.zip.

Image and Container Settings
Key Default / Values Purpose
IMAGE_SOURCE registry registry or local. registry checks Docker Hub on every launcher run. local uses an image that already exists on the computer and does not contact Docker Hub.
REGISTRY_IMAGE emuleai/emuleai Docker Hub repository used when IMAGE_SOURCE=registry. Normal users should keep the official repository.
REGISTRY_TAG latest Docker Hub tag to use. latest is recommended for the current stable release. A published version tag can be used to stay on a specific release.
LOCAL_IMAGE emuleai/emuleai Repository name used when IMAGE_SOURCE=local. The image must already exist locally.
LOCAL_TAG local Tag used when IMAGE_SOURCE=local. The image must already exist locally with this tag.
CLEAN_OLD_IMAGES yes yes removes older tags and unused image IDs from the selected repository after the new container starts successfully. no keeps them.
CONTAINER_NAME eMuleAI Name assigned to the container. Change it only when intentionally running a separately configured container.
PLATFORM linux/amd64 Docker target platform. Keep linux/amd64 for the published eMule AI image.
SHM_SIZE 256m Shared-memory size assigned to the container. Docker size suffixes such as m and g are accepted, for example 256m or 1g.
RESTART_POLICY no Docker restart policy. no keeps eMule AI closed after the application exits. Other Docker values include unless-stopped, always, and on-failure.
Persistent Data and Container User Settings
Key Default / Values Purpose
DATA_DIR_WINDOWS {LOCALAPPDATA}\eMuleAI Persistent data directory used by Windows.bat. Supported leading placeholders are {LOCALAPPDATA}, {USERPROFILE}, {PROGRAMFILES}, and {PROGRAMFILESX86}.
DATA_DIR_LINUX $HOME/.local/share/eMuleAI Persistent data directory used by Linux.sh. $HOME and ${HOME} are expanded.
DATA_DIR_MACOS $HOME/Library/Application Support/eMuleAI Persistent data directory used by macOS.command. $HOME and ${HOME} are expanded. Spaces in the path are supported.
PUID_WINDOWS 1000 Container user ID on Windows. Use a non-negative integer. auto resolves to 1000.
PGID_WINDOWS 1000 Container group ID on Windows. Use a non-negative integer. auto resolves to 1000.
PUID_LINUX auto auto matches the current Linux host user ID. A non-negative integer can be specified manually.
PGID_LINUX auto auto matches the current Linux host group ID. A non-negative integer can be specified manually.
PUID_MACOS auto auto matches the current macOS host user ID. A non-negative integer can be specified manually.
PGID_MACOS auto auto matches the current macOS host group ID. A non-negative integer can be specified manually.
Display and Network Settings
Key Default / Values Purpose
DISPLAY_MODE xpra xpra opens eMule AI as a separate desktop window. novnc exposes the complete virtual desktop in a web browser.
DISPLAY_BIND_ADDRESS 127.0.0.1 Host address used to publish Xpra or noVNC. 127.0.0.1 limits display access to the local computer. Use 0.0.0.0 only when remote access is intentionally required and properly protected.
DISPLAY_CONNECT_ADDRESS 127.0.0.1 Address used by the launcher and local Xpra client to connect to the display service. Normally 127.0.0.1.
EMULE_BIND_ADDRESS 0.0.0.0 Host address used to publish the eMule TCP and UDP ports. 0.0.0.0 accepts connections on all host network interfaces.
XPRA_PORT 14500 Xpra TCP port. Valid range: 1-65535.
NOVNC_PORT 6080 noVNC HTTP port. Valid range: 1-65535.
EMULE_TCP_PORT 4662 eMule TCP listening port. Valid range: 1-65535. The router-forwarded port and the port configured inside eMule AI should match this value.
EMULE_UDP_PORT 4672 eMule UDP listening port. Valid range: 0-65535. Use 0 to disable the UDP mapping.
DISPLAY_WIDTH 1280 noVNC virtual desktop width. Valid range: 320-8192.
DISPLAY_HEIGHT 800 noVNC virtual desktop height. Valid range: 320-8192.
XPRA_CANVAS_WIDTH 7680 Xpra seamless coordinate-space width. Keep it at least as wide as the complete host desktop. Valid range: 320-8192.
XPRA_CANVAS_HEIGHT 4320 Xpra seamless coordinate-space height. Keep it at least as tall as the complete host desktop. Valid range: 320-8192.
DISPLAY_DEPTH 24 Virtual display color depth. Supported values: 16 or 24.
Xpra Client Settings
Key Default / Values Purpose
XPRA_PASSWORD emuleai Password used for Xpra authentication. Change it before allowing Xpra access beyond localhost. Line breaks are not allowed.
XPRA_USERNAME emuleai Username included in the Xpra connection URL.
AUTO_ATTACH_XPRA yes yes starts the installed Xpra client automatically after the container is ready. no starts only the container.
XPRA_CLIENT_EXE_WINDOWS empty Optional full path to Xpra.exe on Windows. Leave empty for automatic detection. Windows path placeholders supported by DATA_DIR_WINDOWS can also be used.
XPRA_CLIENT_EXE_LINUX empty Optional full path to the Xpra client on Linux. Leave empty to search PATH. $HOME and ${HOME} are supported.
XPRA_CLIENT_EXE_MACOS empty Optional full path to the Xpra executable on macOS. Leave empty for automatic application and PATH detection. $HOME and ${HOME} are supported.
XPRA_CLIENT_BACKEND_WINDOWS gtk Windows Xpra client backend. Values: gtk, win32, or auto. gtk avoids known pointer-coordinate problems in the experimental native backend.
XPRA_DESKTOP_SCALING off Xpra client desktop scaling. Values: off, on, or auto. off keeps window and pointer coordinates at a 1:1 ratio.

Optional External Resources

Some features require user-supplied external files such as server.met, nodes.dat, ipfilter.dat, or GeoLite2-City.mmdb.

If you already have these files, copy them to the eMule AI config directory and restart the application.

You can also load server.met from Servers > Update server.met from URL, nodes.dat from Kad > Nodes.dat from URL, and ipfilter.dat or ipfilter.zip from Options > Security > IP Filter > Update from URL.

GeoLite2-City.mmdb must be downloaded separately from MaxMind and is subject to MaxMind's terms. After copying it to the eMule AI config directory, enable GeoLite2 in Settings and restart the application.

Please use only sources you trust and review their origin, terms, license conditions, and legal status before use.

Migration & Configuration Guide

eMule AI includes a built-in Migration Wizard. For most users, this should be the first and preferred way to restore an older eMule setup. Manual migration is still available for advanced users who want to copy and review files themselves.

Migration Wizard

Start here first. On first launch, eMule AI can automatically offer to restore an older eMule configuration after language selection. The wizard checks the default Windows profile location used by classic eMule and can also let you choose another folder manually.

  • Automatic first-run flow: If a legacy configuration is detected, the wizard can guide you through the restore process right away.
  • Manual later use: You can request it again from Tools > Migration Wizard. When started from the Tools menu, eMule AI schedules the wizard for the next application start, so you should restart the client.
  • What it restores: The wizard copies supported legacy configuration files into the local eMule AI config folder and shows a clear summary when the operation finishes, including any files that could not be copied.
  • Why it is recommended: It is the safest way to preserve your identity, credits, Kad state, server lists, shared configuration, and other compatible settings without manually sorting files.
Recommended workflow: Use the Migration Wizard first. Choose manual migration only if you deliberately want to inspect, copy, or exclude files yourself.

Manual Migration

Manual migration is still supported for advanced users. eMule AI stores its active configuration in a local config folder next to eMuleAI.exe, not in the Windows user profile location used by older eMule builds.

If you prefer to copy files yourself, close eMule AI first, copy only the files you actually want to keep, and then start the client again. If your older setup stores downloads.txt in the main eMule folder instead of inside config, remember to bring that file over as well.

While manual migration is supported, a clean configuration can still be the better choice if you want to start with eMule AI's modern defaults for current hardware, high-speed networks, and newer connection handling.

Important Files to Preserve

If you migrate manually, these files are the most valuable ones to keep because they preserve your identity, credits, and network state.

Identity & Reputation

Your reputation and queue ranking with other clients are tied to your unique identification. Without these files, you lose your "earned luck" and will start from zero in other users' queues.

  • preferences.dat: Stores your unique User Hash. Do not lose this!
  • cryptkey.dat: Your 384-bit private RSA key used for secure identification.
Important: These two files must be migrated together. If you lose one, you lose your identity across the entire eMule network.
Credits & Sharing Socials

Preserve your social standing and the credits other users have earned with your client.

  • clients.met: Stores the credit data earned by other users on your client. Preserving it ensures fairness for those who have uploaded to you.
  • emfriends.met: Your stored friends list.
Connectivity & Initial State

Ensure a fast start without having to re-bootstrap your connections or re-scan your entire library.

  • nodes.dat: Known Kad nodes for instant bootstrap.
  • staticservers.dat: Your static eD2K server list.
  • server.met: All known servers.
Manual Migration Checklist & Tips
  • Copy while the client is closed: Always close eMule AI before manually replacing files in the local config folder.
  • Review directories and ports after startup: Confirm that your incoming, temp, and network settings match what you expect before reconnecting.
  • IP Filter Automation: eMule AI automatically merges all .p2p or .dat files in the config folder at startup, so no extra import step is needed for those files.
  • Modern Tuning: Connection parameters are optimized for today's high-speed internet. Prefer the default values for the best balance of speed and stability.
  • Sparse File Writing: If using NTFS, eMule AI handles sparse part-file writing more efficiently, saving disk space on unfinished downloads.

WARNING: Do Not Run eMule AI Inside an Existing eMule Folder!

This is not a Migration Wizard problem, and it is also not the normal result of a manual migration into a separate eMule AI folder. The real risk appears when eMule AI is copied directly into an existing classic eMule installation folder and started there against the same live configuration.

In that situation, files such as known.met and StoredSearches.met can be updated by eMule AI and may no longer remain compatible with the original eMule client if you later switch back to that same folder.

Safe practice: Keep eMule AI in its own folder and let it use its own local config directory. If you want to test, compare, or keep a fallback copy of classic eMule, work on a backup or a separate folder instead of reusing the original live installation.

Credits

What are these credits and why should I collect them?
Credits reward users who upload. The transferred amount of data determines the amount of credit you are given with a particular client. They are not global, meaning that they can only be used on the client who granted them to you. Credits are a major modifier when calculating how fast a client progresses through eMule's queue. The more credits you have the faster you will advance in other people's queues.
Where can I see my credit score?
To prevent manipulating the score, the credits are not stored locally on your hard disk but on the other client's hard disk. It is not possible to see your own credits.
I lost / deleted my clients.met file. Are my credits gone?
Losing this file doesn't mean that your credits are gone, but all credits other people have on your client are. eMule creates a backup of the clients.met file (clients.met.BAK) so you can restore the file by renaming the backup to clients.met.
Are credits secure?
eMule uses a key handshake method to make sure the credits belong to this special client. Credits stored for a user are only granted if this authentication has been successful.
How to lose the credits anyway?
As described above, the credits are coupled with the secure user authentication. The secret key for this authentication is calculated from information which is stored in preferences.dat and cryptkey.dat. Should one of these files be lost or deleted, you will no longer be able to prove that you are the rightful owner of the credits.
Note: If you lose only cryptkey.dat, it is mandatory to delete the preferences.dat file too.

High ID vs Low ID Explained

An ID is a value calculated from the client's IP address. It is assigned by the server when eMule successfully connects. The purpose of the ID is to indicate whether proper bidirectional communication is possible between two clients.

How to identify your status?

eMule displays your ID status graphically as colored arrows on the globe icon in the lower-right corner, next to the connected server. After connecting, the ID value itself is also visible in the Server's Log window.

High ID

A High ID means the port chosen in your connection settings (default 4662) is open and freely accessible from the internet. Your client is fully reachable by others.

Low ID

A Low ID means your connection port is blocked or cannot be reached. This is typically caused by firewalls, routers, or proxy servers. Any ID value less than 16,777,216 is considered a Low ID.


Disadvantages of a Low ID

  • Server Routing: Since your IP is not directly reachable, all requests (queue, connection, etc.) must be routed through the server you are connected to. This increases CPU load on the server.
  • Server Limitations: Many servers limit the number of Low ID users or may ban them entirely to reduce overhead.
  • Reduced Sources: Two clients with Low IDs cannot connect to each other because messages cannot be routed over two different servers. This leads to fewer available sources for your downloads.
  • Lost Messages: On busy servers, messages can get lost, causing you to miss important queue progression or download requests, which results in fewer credits and slower downloads.

Important Technical Notes:

  • Data Transfer: The ID only affects control message exchange. Actual data transfer is still handled client-to-client (Direct or via NAT-T paths in eMule AI).
  • No "Higher" ID: If your ID is High, it doesn't matter how high it is. There are no extra advantages to an "even higher" ID.
  • ID Calculation: To convert a High ID to an IP (A.B.C.D): High ID = A + 256*B + 256*256*C + 256*256*256*D.
  • Source Filtering: eMule drops some Low ID sources to minimize server load. Only sources on the same server or those downloading from you are accepted.

Troubleshooting Low ID

If you're stuck with a Low ID despite having correct settings, try connecting to a different server or using the Port Tester in connection options. Low user servers often have more resources to handle Low ID routing than congested ones.


Files & Descriptions

eMule AI Exclusive Files

These files are specific to eMule AI and handle its advanced protection, history, and automation features.

File Description
AC_BootstrapIPs.datSaved history of IP addresses used for Kad network bootstrapping.
AC_BootstrapURLs.datStored URLs used for downloading initial Kad node lists.
AC_IPFilterUpdateURLs.datHistory of URLs used for automated IP filter updates.
AC_ServerMetURLs.datStored history of server.met update URLs.
blacklist.confUsed for automated blacklisting of malicious or unfair clients. Stores definitions and patterns for effective filtering.
clienthistory.metManages long-term records of encountered clients, including data for identification and automatic purging based on last seen dates.
ipfilter_static.datContains a fixed set of IP ranges that are always filtered, regardless of dynamic updates.
ipfilter_white.datAn IP "White List" that overrides filters for specific trusted addresses or ranges.
shield.confCentral configuration for the Shield protection system. Defines anti-leecher rules and automated punishment levels.
download_inspector.txtStores eD2k links of files that were deleted by the Download Inspector's criteria-based auto-delete feature while in Delete mode. The file is preserved during migration and config backup flows.

Standard eMule Files

File Description
AC_SearchStrings.datStored search history for auto-completion. Also AC_ServerMetURLs.dat.
Addresses.datURL list for updating server.met at startup.
Cancelled.metTracks cancelled downloads to avoid marking them as new results.
Category.iniStores category settings (name, comments, color coding).
Clients.metStores all users who have earned credits on your eMule. Also see clients.met.BAK.
Collectioncryptkey.datEnables signing of collections to verify the same author.
Cryptkey.datUnique 384-bit private RSA key to verify your User Hash. If deleted, reset preferences.dat as well.
Emfriends.metStores your friends list.
eMule.log / eMule_Debug.logSaves the output of the Log/Debug windows if enabled in Extended options.
eMule.tmplTemplate files for the Webinterface layout and display.
Fileinfo.iniStores comments and ratings for your own shared files.
Ipfilter.datContains IP ranges and access levels to be filtered. See Security options.
Kad FilesIncludes nodes.dat, src_index.dat, key_index.dat, load_index.dat, and preferencesKad.dat for Kad network state.
Known.metSaves all files eMule knows of (shared, downloads, or past). Stores size, filename, hash sets, and statistics. Deleting this forces a rehash on next restart.
Known2.metNo longer used by eMule AI. Can be deleted unless downgrading to an older version.
Known2_64.metStores AICH hashes of all downloaded/shared files. Deleting this forces a rehash.
Onlinesig.datSmall file with connection and up/down stats for IRC scripts or widgets.
Preferences.datSaves your User Hash, used to identify your client in the network for credits and friends.
Preferences.iniMain configuration file for options, visual details, and advanced developer settings.
PreviewApps.datStores configuration for external applications used to preview media files.
Server.metContains all known eD2K servers.
Sharedir.datHolds paths to all shared directories.
Staticservers.datPermanent server list that doesn't change IP.
xx.part / xx.part.metUnfinished downloads and their metadata (hashes, status). Always keep together. Includes xx.part.met.BAK.

NAT Traversal (NAT-T) & uTP

What it is

This feature combines NAT Traversal (NAT-T) and uTP to create direct, reliable peer connections even when both sides sit behind NAT or firewalls.

In eMule AI it unlocks LowID-to-LowID transfers with UDP hole punching and uTP, improving connectivity and stability on difficult networks.

Because the NAT-T/uTP signaling and relay flow are eMule AI-specific, both peers must be running eMule AI to benefit; the more eMule AI users online, the more often this path is available.

How it works

ED2K HighID / LowID
Assigned by ED2K servers while connected to a server. HighID means inbound TCP is reachable. LowID means inbound TCP is blocked by firewall/NAT.

Kad Open / Firewalled
Kad status is server-independent. Open + Verified means UDP is reachable. Firewalled means UDP callback/hole punching is limited or unavailable.

Kad Buddy
Classic Kad mechanism. Used for Kad callback/rendezvous signaling only (not file data). In eMule AI Kad LowID<->LowID transfers, uploader side needs this buddy.

eServer Buddy (New in eMule AI)
A HighID eMule AI client on the same eServer that relays signaling for LowID<->LowID. This is a client-side eMule AI feature and does not require server NAT extension support.

uTP
UDP-based transport used by NAT traversal for hole punching and adaptive congestion control.
Enabling uTP switches peer connections to UDP-based transport with adaptive congestion control, while NAT Traversal adds direct callback and UDP hole punching to connect peers behind NATs.

How it works - end-to-end

  • IDs & reachability: HighID = inbound TCP reachable; LowID = inbound TCP blocked. Kad Open means UDP callback is verified; Kad Firewalled means direct UDP callback is unavailable.
  • Data vs control: File data uses TCP or uTP. Kad lookups, publishes, pings and callbacks use UDP.
  • Direct UDP callback (LowID->HighID): HighID peer sends a UDP callback; LowID opens outbound TCP back. No buddy is involved.
  • Kad buddy path: For Kad LowID<->LowID, uploader side needs Kad buddy and both sides must exchange UDP hole-punch traffic.
  • eServer Buddy path (new in eMule AI): LowID requester uses a connected HighID buddy on the same eServer. This relay is client-driven and does not rely on server NAT extension opcodes.
  • When target is not connected: Buddy can ask the server with classic OP_CALLBACKREQUEST, then continue relay after target comes back.
  • Compatibility: Requester side needs eServer buddy support. Target side can still be contacted through the relay flow.
  • Timers: Buddy discovery runs every 60 seconds (while server-LowID). Keep-alive ping runs every 20 seconds.
  • Diagnostics: Check logs for [eServerBuddy], OP_ESERVER_RELAY_REQUEST, OP_ESERVER_PEER_INFO, OP_HOLEPUNCH, and uTP.

Kad Buddy vs eServer Buddy (eMule AI)

  • Kad Buddy: Kad network callback/rendezvous helper. Used in Kad LowID<->LowID flow.
  • eServer Buddy: eMule AI specific relay over same eServer. This is the newer path added by eMule AI.
  • Main difference: Kad buddy depends on Kad path; eServer buddy depends on same-server eD2K path.
  • Common point: Both relay only control signaling, never the actual file data.

Buddy specifics

  • Who qualifies (eServer Buddy): HighID peer, connected TCP socket, same eServer as you, and advertised slot availability.
  • Slot model: Serving capacity is configurable between 3 and 100 peers (default 3).
  • Concurrency: Buddies carry control signaling only; file payload remains end-to-end between peers.
  • Security & abuse control: Buddy requests are rate-limited (max 3 requests per 10-minute window per peer) and stale relay contexts are expired automatically.

Diagrams

LowID peerTCP blockedKad Open + Verified (UDP) HighID peerTCP reachableKad Open Direct UDP callback Outbound TCP established
LowID -> HighID with direct UDP callback. No buddy required.
Uploader-side Buddy (HighID)Required for Kad rendezvousSignals callback only LowID DownloaderKad Open + VerifiedOwn buddy: optional LowID UploaderKad Open + VerifiedBuddy: required ReaskCallbackUDP Kad rendezvous ReaskCallbackTCP Bidirectional UDP hole punching -> uTP
LowID <-> LowID via Kad rendezvous. In eMule AI, only the uploader-side buddy is required for this path; downloader-side buddy is optional.
HighID eServer BuddySame eServer as requesterRuns relay handshake LowID Requester LowID Target OP_ESERVER_RELAY_REQUEST / OP_ESERVER_PEER_INFO Both peers hole-punch + active uTP connect
LowID <-> LowID via eServer Buddy relay. No Lugdunum NAT extension is required; buddy may optionally use classic OP_CALLBACKREQUEST to bring target online.

Scenarios

Kad Scenarios

Classic Kad-driven connectivity matrix where rendezvous and buddies coordinate hole punching.

# Kad TCP UDP Buddy Outcome
1Open
OpenInbound OK
OpenNot neededUse plain TCP/UDP; NAT-T not needed.
2Open
FirewalledInbound blocked
OpenNot neededDirect UDP callback works (LowID->HighID). NAT-T not needed for this path.
3Open
FirewalledInbound blocked
OpenStarted (to enable rendezvous)NAT-T/uTP possible via buddy-mediated rendezvous/hole-punch. Useful for LowID<->LowID.
4Firewalled
OpenInbound OK
FirewalledNot neededPlain TCP works; NAT-T not needed.
5Firewalled
FirewalledInbound blocked
FirewalledOutbound usually OK
Uploader's buddyNAT-T/uTP path via rendezvous + hole-punch. Uploader-side buddy is required; downloader buddy is optional.
6None
FirewalledInbound blocked
FirewalledVaries
UnavailableKad rendezvous is unavailable. Use eServer Buddy path only if requester has buddy on the same server.

eServer Buddy Scenarios

LowID<->LowID relay driven by eMule AI clients. This path does not depend on server-side NAT relay extensions; it uses OP_ESERVER_* signaling plus classic server callback when needed.

# Preconditions Peers Outcome
1Same eServer + requester has connected eServer buddyLowID requester <-> LowID targetBuddy runs OP_ESERVER relay handshake and both peers form uTP with hole punching.
2Target already connected to buddyLowID requester <-> LowID targetBuddy forwards OP_ESERVER_PEER_INFO immediately; no server callback round-trip is needed.
3Target not connected to buddyLowID requester <-> LowID targetBuddy first tries classic OP_CALLBACKREQUEST (if server callback is available). Relay completes only after target connects and ACK is received; otherwise it fails.
4Different eServer or no connected buddyAny LowID paireServer Buddy path is unavailable; fallback is Kad rendezvous (if prerequisites exist) or classic callback/TCP paths.

Setup & tips

Make UDP reachable

  • Open/forward the configured UDP port on your router (or enable UPnP).
  • Allow the app in OS firewall (UDP + TCP outbound).
  • Verify Kad shows Open and the UDP firewall test is verified.

Enable NAT-T / uTP

  • Ensure NAT Traversal (uTP) is enabled in Preferences.
  • Keep both peers on recent versions (supports rendezvous & uTP).

Buddy stability

  • For Kad LowID<->LowID, keep uploader-side serving buddy active.
  • For eServer Buddy path, keep your HighID buddy connected and on the same eServer as the target source.
  • eMule AI sends keep-alive pings and renews buddy discovery automatically while LowID.

Troubleshooting

LowID <-> LowID fails
Kad path: verify uploader has serving buddy and both sides can exchange UDP hole-punch traffic. eServer Buddy path: verify same-server condition and requester-side connected eServer buddy.
eServer Buddy relay does not start
Check that you are server-LowID, NAT-T service is enabled, and logs show an accepted OP_ESERVER_BUDDY_REQUEST. If buddy changed server, reconnect and wait for a new buddy candidate.
Kad bootstrap fails
Use the peer's UDP port (not TCP) for bootstrap and confirm firewall/router rules.

FAQ

Is ED2K LowID the same as Kad Firewalled?
No. ED2K HighID/LowID exists only while connected to a server and reflects TCP reachability. Kad Open/Firewalled is Kad's status about UDP reachability, independent of servers.
Does NAT-T help if one peer is Kad Firewalled?
No. Direct callback and hole punching require UDP reachability (Kad Open + Verified) on both sides.
What is the difference between Kad Buddy and eServer Buddy?
Kad Buddy is the classic Kad callback helper. eServer Buddy is a newer eMule AI feature for same-server LowID<->LowID relay. They are different paths with different prerequisites.
Can LowID <-> LowID work with only one buddy?
Yes. In Kad rendezvous, uploader-side buddy is required and downloader-side buddy is optional. In eServer Buddy path, requester-side eServer buddy is required while target-side buddy is not.
What about CGNAT and symmetric NAT?
Those NATs often create short-lived or address-dependent mappings which may break hole punching. Results vary and can be unreliable.

Version History

v1.6

  • Improved Download Validator with a dedicated Options page, customizable matching rules, smarter similarity scoring and previously downloaded or shared file matches shown directly under search results.
  • Reduced the eMule AI executable size by storing built-in translations more efficiently.
  • Added helpful tooltips throughout Options with a Display setting to show or hide them.
  • Added adjustable Options window sizing with improved high DPI readability, consistent layouts, more reliable Options behavior and updated help links.
  • Improved Client Details with a clearer layout and separate country and city information.
  • Added a Reset button to restore the current Options page to its default settings before applying changes.
  • Added an option to move all A4AF sources to the selected download.
  • Added multiple selection to the Client List for applying supported actions to several clients at once.
  • Improved startup and shutdown progress windows to display translated status messages without truncation.
  • Improved Upload Request Abuse Detection to avoid punishing legitimate clients after successful upload sessions.
  • Fixed an issue where the Last reception time in the Downloads list could remain outdated while a file was actively downloading.
  • Fixed an issue where expanded download sources could appear under the wrong file after switching categories.
  • Fixed an issue where scrolling through expanded download sources could show an invalid argument error.
  • Fixed an issue where the Asked for another file status could show empty parentheses in the Downloads list.
  • Fixed an issue where comment and rating indicators were not shown after updating shared file details.
  • Fixed an issue where protocol obfuscation could cause a Low ID or Firewalled status on dual stack IPv6 connections.
  • Fixed an issue where MLDonkey clients sending legacy upload requests could be incorrectly penalized for invalid request tags.
  • Fixed an issue where user hash conflicts could be incorrectly reported as aggressive behaviour.
  • Removed outdated phishing site username rules from Shield to prevent users from being unfairly punished for old or inactive domain names.

v1.5.2

  • Added Known filtering checkbox to Search results.
  • Added bulk download options to the Search Results context menu.
  • Improved metadata updates to show progress in the Files list while allowing eMule AI to close normally.
  • Fixed an issue where the hashing progress overlay in the Files list could remain stuck after processing a shared file.
  • Fixed an issue where the exit confirmation could be hidden behind the About screen.
  • Fixed filter layouts so labels stay readable without overlapping nearby controls after changing languages.
  • Fixed Blacklist Panel layout so translated option labels remain fully visible.

v1.5.1

  • Added Docker support with the official emuleai/emuleai image and a shared launcher package for Windows, Linux, and macOS, with Xpra desktop integration or noVNC browser access.
  • Fixed an issue where the Saving Downloads overlay could remain stuck after adding eD2K links from the clipboard and prevent eMule AI from closing.
  • Fixed an issue that could incorrectly punish eMule Qt clients as using a fake eMule AI version.

v1.5

  • Improved UI performace by moving several heavy disk, file, and list operations off the UI thread to reduce freezes during large updates.
  • Improved startup performance by loading large file, search, client, and transfer data in parallel where possible.
  • Added a startup loading overlay so the loading stage and current progress can be observed more easily.
  • Added an exit progress overlay so the shutdown stage and current progress can be observed more easily while eMule AI closes safely.
  • Added overlay info boxes to large list controls to show the status of long bulk operations.
  • Added a loading animation to search tabs while restored or large search result lists are being prepared.
  • Added a dedicated Upload Settings section with high bandwidth slot optimization, slow or idle slot recycling, dynamic upload I/O buffering, adaptive download write buffering, manual upload client limits, low ratio queue score boosting and session based upload rotation controls.
  • Added connection bind controls for interface or IP selection, startup blocking when the selected bind target is unavailable, runtime bind loss exit protection and random listen port selection at startup.
  • Added VPN Guard to help protect your connection by blocking internet access when your external IP is detected in a selected country with an optional safety block for unknown locations.
  • Added configurable eD2K and Kad search limits under Search Tweaks, including eD2K result and request limits, Kad file and keyword result targets, Kad search lifetimes and improved setting persistence.
  • Added a new sortable Last Request column to Files -> All Shared Files, making it easier to see when shared files were last requested.
  • Added shared file startup caches to speed up large shared folder scans, reduce repeated duplicate checks and improve responsiveness during startup, runtime saving and shutdown.
  • Added safer shared file intake filtering for temporary, partial, system and other non shareable files during shared folder scans.
  • Added notification display mode selection with Tray baloon, Windows toast notification and Custom popup options
  • Added majority filename controls for automatic rename, including new download only mode, required agreement percentage, minimum vote count and per download state persistence across restarts.
  • Added a native Windows Firewall option under Options -> Connection to keep eMule AI listen ports open and automatically repair missing or disabled firewall rules when needed. Enabling this option will prompt for UAC elevation.
  • Added Download Validator date/time matching, allowing filenames with different naming styles to be recognized by their date and time information even when the remaining text differs.
  • Added Upload Request Abuse Detection to the Protection Panel to help block clients that repeatedly abuse upload requests, queue entries or upload slots.
  • Improved Low ID and Kad firewalled transfers to use the new QUIC transfer protocol, enabling downloads up to about 2x faster than uTP in supported client to client transfers.
  • Improved uTP performance for Low ID and Kad firewalled transfers, making downloads up to about 2.5x faster in client to client transfers where QUIC is not available or uTP is selected.
  • Improved IP Geolocation by switching to DB-IP.com's IP to City Lite database, now included in the release package, with support for both manual and automatic updates from the settings.
  • Improved bulk list operations, such as adding many downloads or deleting many items, so they no longer block the interface for long periods.
  • Improved very large list reload performance by avoiding unnecessary reload, sort, and redraw work when the visible list has not changed.
  • Improved shared files, file history, known clients, search results, and transfer list responsiveness with safer background preparation and lighter UI updates.
  • Improved the loading and reload behavior of restored search tabs, especially with large saved search result sets.
  • Improved the exit confirmation dialog with updated styling so it matches the newer overlay windows.
  • Improved Kad searches so rare or low result queries can keep looking a little further before giving up.
  • Improved real time folder tree updates so directory changes are reflected more accurately.
  • Improved opening large collection files by using a virtual collection viewer and deferring redraw, sorted row insertion and row update operations until each batch is fully processed.
  • Improved adding large batches of eD2K links by processing parsed links in smaller UI friendly batches and deferring list redraw, sorted insertion and row update work until each batch is fully processed.
  • Improved automatic shared files reloading to better handle large libraries and rapid folder changes without temporarily clearing the shared files list.
  • Improved shared files handling to preserve upload spread bar visuals and reduce unnecessary reloads during large folder scanning and hashing.
  • Improved bind handling across TCP, UDP, Kad, server UDP and web related sockets while preserving IPv6 automatic interface and address selection behavior.
  • Improved async configuration and metadata snapshot saving to use long path aware temporary, backup and final file operations.
  • Improved directory creation to use a dedicated long path preparation helper for Win32 edge cases near the directory length limit.
  • Improved the Transfers window so categories and list filters appear correctly and adapt smoothly to smaller window sizes without overlapping important controls.
  • Improved search result status updates so files now correctly reflect downloading, cancelled, shared or completed states across all open search tabs without slowing down large result lists.
  • Improved IP Filter list sorting responsiveness, especially when sorting very large IP filter lists by Description.
  • Improved log and status bar feedback for IP geolocation updates, server.met downloads and Kad bootstrap start messages.
  • Improved LowID connectivity by allowing compatible clients to reuse an existing eServer buddy as a faster Kad buddy candidate when possible or reuse an existing Kad buddy as an eServer buddy candidate when possible.
  • Improved stopped download recovery so resuming restores saved sources immediately and continues transfers more quickly.
  • Improved My Info to show consistent eServer and Kad serving buddy status information.
  • Fixed LowID to LowID downloads failing when the two clients were using different eServer buddies. Updated eServer buddy discovery to avoid using incompatible older buddy clients for new relay features.
  • Fixed LowID to LowID downloads failing to start when the uploader’s reachable UDP port was detected later during eServer buddy relay setup.
  • Fixed LowID to LowID downloads getting stuck at 0 B/s after the connection had already been established.
  • Fixed LowID to LowID sources being dropped when removing another active download from the same client.
  • Fixed failed buddy connection attempts occupying available buddy slots for too long.
  • Fixed LowID clients failing to reconnect to the same eServer buddy after the buddy changed servers.
  • Fixed eServer buddy reconnects failing after a server change due to stale client information.
  • Fixed an issue where eServer buddy requests could be rejected after all clients reconnected to the same server.
  • Fixed misleading eServer relay IP logging that could make connection troubleshooting confusing.
  • Fixed “Asked for another file” sources being lost after canceling a related download.
  • Fixed cases where list controls could temporarily appear stale or unresponsive while background work was still running.
  • Fixed Web UI file renaming from the Transfers page and improved refresh behavior so renamed files are shown correctly right away.
  • Fixed stale title transfer rates briefly showing after restoring from the system tray.
  • Fixed a rare known2_64.met recovery issue where very large AICH hashset files could be truncated incorrectly after corruption detection.
  • Fixed stalled 0 B/s upload slots caused by hidden part requests or clients that did not send block requests after upload slot activation.
  • Fixed dark mode list header hover flicker that could appear on the Files screen when the mouse was left idle over narrow or right side columns.
  • Fixed Protection Panel general settings not being restored correctly after restart because some values were saved and loaded with mismatched preference keys or variables.
  • Fixed a crash that could occur when viewing Known Clients after changing Credit System settings.
  • Fixed misleading source row transferred values being shown under the Completed column when the Transferred column was hidden.
  • Fixed expanded transfer source rows becoming stale when sources were added or removed by background download processing.
  • Fixed Save Load Sources generating garbled .txtsrc filenames by deriving the path from the part file at save time.
  • Fixed IP Filter list header rendering issues, including misaligned column separators and incorrectly positioned sort arrows.
  • Fixed a rare issue where minor filesystem timestamp differences could cause existing shared files to be reprocessed after reload, leading some servers to show the "Too many files republished by your client software. Please upgrade it." warning.
  • Fixed inconsistent speed unit display by moving the KB/s display option to Connection settings and applying it consistently to Connection, MiniMule and Web Interface speed controls.
  • Speed displays now update together, so the title bar, tray, graphs, MiniMule, statistics, and web status all show the same current upload and download rates.
  • Renamed Download Checker to Download Validator to make it easier to distinguish it from Download Inspector in translations.
  • Updated MediaInfoLib, MiniUPnPc, ResizableLib, and Crypto++. Please see https://emuleai.github.io for version details.

v1.4

  • Added Shared File Management feature set into Options -> eMule AI -> Share Tweaks, including Share Only The Need, Hide Overshares, PowerShare, default share permissions.
  • Added a new criteria-based auto-delete feature to Download Inspector, allowing old low-progress downloads to be logged or safely deleted based on configurable date and amount rules, with optional backup of deleted files’ eD2k links.
  • Added Auto rename to majority name to Download Inspector, with a main toggle in Options and a per-download toggle in the Transfers context menu.
  • Added automatic IP filter updates in Options -> Security, with an Auto update toggle and a configurable update period in days.
  • Improved the Connection options so disabling Upload limit or Download limit now preserves the last configured speed and restores it when the limit is enabled again.
  • Improved Shared Files and Search result context menus by grouping download-only actions in a dedicated section, and added the Download list’s Preview With submenu there for files already in the download list.
  • Improved the Search tab category buttons in Light mode by fixing a visual style inconsistency.
  • Improved Known Clients list responsiveness in very large client histories by avoiding unnecessary re-sorting during frequent active-client refreshes.
  • Merged gemini_translator.py and TranslationCompiler under ai_translator.py, added Local API support, and expanded the translator with many new working modes and options.
  • Fixed a rare crash that could occur while imported downloads were being hashed and stale sources were being removed from the Download Clients list.
  • Fixed a rare crash that could occur when the Download Clients list was refreshed while stale sources were being removed.
  • Fixed a rare crash that could occur while imported download data was being processed during AICH recovery and buffered disk writes.
  • Fixed a rare crash that could occur while adding many search results to the download list at once, especially under heavier UI and background activity.
  • Fixed a rare startup crash that could occur if eMuleAI was launched before the internet connection was fully available.
  • Fixed an issue where the Downloading Clients list could keep archived clients visible after their active download source was removed.
  • Fixed an issue where rows without a current request file could remain visible in the Downloading Clients list and cause empty file entries or invalid status bar redraws.
  • Fixed Downloading Clients and Obtained Parts progress bar rendering so status bars no longer bleed into neighboring columns or appear incorrectly gray in affected redraw cases.
  • Fixed an issue where the Downloads list could show gray text backgrounds after horizontal scrolling when the progress bar style was set to fully flat.
  • Fixed an issue where changing a client’s punishment in Known Clients did not immediately refresh the list or counter while the Bad Client filter was active.
  • Fixed the Transfers banned counter so IP and user-hash bans for the same client are no longer counted twice.
  • Fixed the issue where incorrect variables appeared in translations in some languages.
  • Fixed an issue where using Close All Search Results could leave Kad keyword searches running in the background and block starting the same keyword again.
  • Fixed an issue where .part.met.bak could be refreshed from the newly written .part.met, preventing the backup from rescuing downloads when the same save cycle went bad.
  • Fixed an issue where pressing ESC in the shared files delete confirmation could still delete the selected files instead of cancelling.
  • Fixed the Client Details dialog by renaming the misleading “Average” upload/download rate labels to “Upload rate” and “Download rate” so they correctly reflect the displayed smoothed transfer rate.

v1.3

  • Fixed crash problems observed on older CPUs.
  • Fixed an issue causing upload speed slowdown.
  • Fixed an issue where obfuscated server logins could require multiple attempts even on fully obfuscation-capable server lists.
  • Fixed an issue where duplicate shared files could be rehashed on startup and fail to appear in Duplicate Files or File History after being detected.
  • Fixed an issue where uploads could temporarily disappear from the Transfers window while shared files were being reloaded or newly hashed.
  • Fixed long UI freezes before hashing when adding or reloading large shared folders with automatic subdirectory sharing enabled.
  • Fixed failed servers not being clearly distinguished in dark mode and restored their proper color coding in light mode.
  • Fixed flickering and inconsistent tooltips across list views.
  • Fixed the OK, Cancel, Apply, and Help buttons in the Options window using a different language than the selected application language.
  • Fixed an issue that could crop the Options banner image on some systems.
  • Fixed a formatting bug that could append random translated text to file-open error messages when automatic hashing hit a locked file.
  • Fixed an issue where some clients could appear with incorrect eMule version numbers after being restored from client history. (Note: To fully clear old incorrect entries while testing the new build, delete clienthistory.met.)
  • Fixed a crash that could occur when using the Close All Search Results button while search tabs were still open.
  • Fixed an issue where completed downloads could remain in bold in the Transfers list after finishing.
  • Fixed an issue where the toolbar speedometer could be hidden on some systems even when there was enough visible space to display it.
  • Fixed an issue where the Uploading list in split view could remain too narrow after switching views while the Transfers window was small.
  • Fixed search tab tooltips to show the tab currently under the mouse instead of the active tab.
  • Fixed shared files search tabs to keep client notes separate from stale or unnecessary result counters.
  • Fixed an issue where entering valid values for ReAsk Time for File Sources could be rejected or saved incorrectly in Options.
  • Fixed Shared Files list sorting so files now reposition correctly when live request, accepted request, or transferred counters change.
  • Fixed download list expand/collapse hit testing so column resizing and horizontal scrolling no longer break row toggling.
  • Fixed a crash that could occur while updating the Shared Files status counters.
  • Fixed an issue where the Content tab could show incorrect or missing video/audio codec information for media files.
  • Fixed an issue where importing settings from an older eMule installation could leave download categories empty after migration.
  • Fixed an issue where shared subfolders could fail to show an expand button in the Shared Files tree.
  • Fixed an issue where the eMule AI taskbar icon could occasionally change to a generic Windows icon after long runtime.
  • Fixed the status bar so download, upload, and connection status texts resize more intelligently and no longer get cut off in some languages.
  • Fixed content tab flickering during active transfers, improved media info refresh stability, and now show "-" instead of "Waiting..." for unsupported file types.
  • Fixed duplicate "Found known shared files" log entries during shared file discovery.
  • Fixed inconsistent known shared file counts between the initial startup scan and later refreshes.
  • Fixed an issue where moving a shared file between shared folders could break active uploads until the shared files list caught up with the new path.
  • Fixed an issue where removing main toolbar buttons, such as the eMule AI button, could be lost after restarting the app.
  • Fixed Download Inspector continuing to run periodic scans while set to Disable; manual runs remain available.
  • Fixed an issue where the Restore last main window option could reopen Transfers instead of the Server tab after restart.
  • Fixed an issue where the Transfers window could show an extra horizontal scrollbar at smaller window sizes.
  • Fixed the Shared Files details panel so the Statistics and Content tabs keep the correct height on affected systems.
  • Fixed an issue where the search tab scroll arrows could render black in dark mode until hovered.
  • Replaced legacy ID3Lib integration with MediaInfoLib for cleaner media metadata handling and simpler maintenance.
  • Improved list view responsiveness during bulk operations by batching expensive selection and scroll state restores.
  • Improved shutdown safety by skipping part metadata saves on low temporary disk space and updating backup metadata atomically.
  • Improved automatic shared file hashing to briefly wait for files that are still being copied or moved, reducing false open failures on newly discovered files.
  • Improved category labels so empty or "?" titles now automatically show the correct localized filter name while custom titles remain unchanged.
  • Highlighted the active category tab in bold for easier identification.
  • Highlighted the currently connected server in bold in the Server list.
  • Added an option to preview downloads by double-clicking anywhere in the file name column.
  • Added a User Interface Tweaks option to show or hide the Download Toolbar in the Transfers window.
  • Changed the Enable Import Parts option to persist across restarts by saving and restoring it from preferences.ini.
  • Reset the default value of the "Options -> Display -> Download list double-click to expand" option to its original setting.
  • Improved the Downloads counter to show active downloads relative to the currently visible items.
  • Renamed the File Inspector feature to Download Inspector across the UI, logs, settings keys, and documentation.
  • Standardized list column alignment for consistency: text/date/status columns are left-aligned, while numeric columns are right-aligned.
  • Changed the default color of the Statistics -> System tray icon speed bar to lime green.
  • MiniMule now closes immediately when you disable it in Settings, so you no longer need to hide it manually one last time.
  • Added indentation to the left side of the status bar.
  • Added a dedicated eD2K Links... menu entry while keeping Copy eD2K Links as an optional separate shortcut.
  • Centralized build settings to make project configuration more consistent and easier to maintain.
  • Renamed the main project and executable to eMuleAI and moved the solution files to the repository root.

v1.2

  • Fixed an issue where obfuscated server logins could require multiple attempts even on fully obfuscation-capable server lists.
  • Fixed the “Shared eD2K | Kad” column in the Files window.
  • Fixed an issue where the download list didn’t refresh immediately after applying a category filter.
  • Fixed a crash caused the Download Clients list.
  • Fixed an issue where the upload speedometer could show non‑zero activity even when no active uploads were occurring.
  • Fixed right alignment of the Remaining column in the Download list.
  • Fixed some Spanish and Galician localizations (PR by PepinoGz and Aokromes).
  • Updated eD2K link dialog title

v1.1

  • Added the "Ratio" and "Session Ratio" columns to the Upload, Queue, and Files lists.
  • Fixed the "Enter an integer between 1 and 2147483647." validation error that could appear only in certain languages (e.g., Chinese/Korean) when leaving the eMule AI options page.

v1.0

Initial public release. See below sections for details.

New features

QUIC NAT-T Transport

QUIC is now the primary NAT Traversal data protocol for compatible peers. Direct capability negotiation selects QUIC when available and automatically falls back to uTP for compatibility.


Docker Support for Windows, Linux, and macOS

Use the official emuleai/emuleai image with the release launcher package and shared configuration file. Xpra provides a separate desktop window while noVNC provides browser access.


Upload Settings

A dedicated settings group controls high-bandwidth slot targets, elastic overflow, slow and inactive slot recycling, low-ratio queue assistance, session transfer and time limits, and adaptive download write buffering.


Network Binding and IP Guard

Bind P2P sockets to an adapter or local address. IP Guard can block network activity until the binding and optional public IP allowlist are verified, including runtime changes.


Startup, Exit, and Bulk Operation Overlays

Progress overlays and list status boxes make parallel startup, safe shutdown, large reloads, and bulk add or delete operations visible without blocking the interface.


Shared File Startup Cache

sharedcache.dat accelerates large shared-folder scans, remembers verified path metadata, and reduces repeated duplicate checks while remaining disposable and automatically rebuildable.


Search Limits and Last Request Column

New eD2K and Kad result, request, and lifetime controls limit oversized searches. Files -> All Shared Files adds a sortable Last Request column.


Native Firewall and Port Randomization

eMule AI can maintain Windows Firewall listen-port rules and select new listen ports from a configured range at startup.


Notification Modes

Notifications can use a tray balloon, Windows toast notification, or the custom eMule AI popup.


Majority Filename Controls

Automatic rename decisions can be restricted to new downloads and require both a configurable agreement percentage and minimum vote count.


Protection Panel

A dedicated Options page that centralizes safety/anti-leecher controls with clear explanations, timed punishments, and friend exemptions. Choose actions (ban, score reduce, log only) per detection category to keep the swarm clean with minimal false positives.


Dark Mode

A full dark modern theme for windows, tabs, menus, list headers, and progress bars. It preserves readability, supports hover/pressed states, and can be toggled without restarting.


Fast and Fluid Lists

Provides a smoother experience in heavy lists (Files, Downloads, Search, Clients) with lower memory usage and faster responsiveness, smooth scrolling and quick updates even with hundreds of thousands of rows.


NAT Traversal & Extended Source Exchange

LowID <-> LowID now works through two distinct NAT-T paths. Kad Buddy path (classic): Kad rendezvous flow where uploader side needs a Kad buddy. eServer Buddy path (new in eMule AI): same-server relay between LowID peers using OP_ESERVER_BUDDY/RELAY packets. This eServer Buddy mechanism is a client-side eMule AI feature and does not require server NAT extension support (no dependency on Lugdunum NAT opcodes). If the target is not connected yet, the buddy can try classic OP_CALLBACKREQUEST and finish relay after target reconnect + ACK. External UDP port discovery, hole-punch retries, QUIC negotiation, and uTP fallback retries improve success under difficult NAT conditions. Extended Source Exchange further improves source discovery and transfer stability with richer peer metadata.


IPv6 Support

End-to-end IPv6 handling for peers, friends, and sockets alongside IPv4; addresses display and copy correctly across dialogs and tooltips.


Spam/Blacklist System

A Spam Rating column (0-100), a customizable spam threshold, logging of rating results, and a Blacklist Panel with "recheck now" combine to surface quality results and hide junk.


Client History

Lightweight history of clients you met (with retention control) to enable once-per-client automation like first time shared files queries.


Threaded Shared Files Reload

Refreshing shared files runs in a worker thread and updates the UI progressively, avoiding stalls while scanning disks.


Shared Files Watcher

Background watcher keeps the Shared view in sync with filesystem changes without manual reloads.


Automatically Share Subdirectories

When enabled, subfolders under your shared roots are included automatically, both existing and newly created ones.


Download Validator

Before adding a file, checks duplicates/near-duplicates across downloads/history/shared and can warn, reject, or auto-blacklist by your preference.


Built-In Language Resources (116 Languages)

Language support is embedded, so external language DLL files are not required. Supported language codes (116): en, af, am, ar, ast, az, be, bg, bn, bs, ca, ca-VAL, ceb, co, cs, cy, da, de, el, eo, es, es-AR, et, eu, fa, fi, fr, fy, ga, gd, gl, gu, ha, haw, he, hi, hmw, hr, ht, hu, hy, id, ig, is, it, iw, ja, jw, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt, lv, mg, mi, mk, ml, mn, mr, ms, mt, my, nb, ne, nl, nn, no, ny, or, pa, pl, ps, pt, pt-BR, ro, ru, rw, sd, si, sk, sl, sm, sn, so, sq, sr, st, su, sv, sw, ta, te, tg, th, tk, tl, tr, tt, ug, uk, ur, uz, vi, xh, yi, yo, zh-CN, zh-TW, zu.


Connection Checker

One-click background connectivity test with clear start/stop log lines; helps diagnose DNS/routing hiccups without interrupting transfers.


Emulate Clients & Communities

Optional compatibility/emulation toggles for certain clients/communities to improve interoperability and prioritization.


New Toolbar Buttons

Quick actions for Save State, Reload Config (no restart), and threaded Backup. Numbered Preview buttons (1-10) launch your chosen preview apps directly; right-click can jump to the next previewable file.


Read PeerGuardian Lists Automatically

At startup, all *.p2p files in the config folder are merged into the active IP filter, just drop lists in and they apply.


Kad Search Limit Option

You can limit how many answers a Kad keyword search collects before auto-stopping.


Search / Transfer Window Filters

Fast, on-view filters to narrow lists to what you care about (for example, active/paused).


Friend / User Hash / ID Type / Client Version Columns

New columns in client lists show Friend status, User Hash, ID Type (High/LowID), and Client Version for quick grouping and sorting.


IP:Port Column

Shows each peer's current endpoint in a sortable column.


See Own Credits

Displays how your credit ratio appears to the remote side for clearer give-and-take diagnostics.


Cancel Download from Context Menus

Right-click in Search/Download/Shared lists to cancel downloads; an option lets you cancel without marking as "canceled" in history.


Remote Client's Shared Files - Status Columns

New columns indicate query status, last queried time, and number of files received for a client's shared list.


Client Note

Attach a short note to any client; optionally show it in the tab title when viewing that client's files.


Copy List Text with CTRL+C / CTRL+X

Copy selected list rows as neat plain text for pasting into notes/spreadsheets.


Clean Up Search Results

A command to quickly purge obsolete/blacklisted items from active search tabs.


Disable "Find As You Type" Option

Turn off type-to-search in heavy lists to avoid accidental scans.


Don't Mark As Canceled (Menu Action)

Cancel a download without adding it to the "canceled" history.


Friend Link Recognition

Understands ed2k "friend" links from clipboard to add friends quickly.


Source Cache

Temporarily caches discovered sources so paused/resumed files can reuse them without re-querying.


IP Geolocation (Country/City & Flags)

Shows country (and city when known) and a flag icon for peers/servers; can be disabled or limited to country only.


Client Version in Tooltips

Download-list tooltips include full client software/version lines.


Webservices Enhancements

Wide-character support and a "filename_untouched" placeholder in webservices.dat; multi-selection webservice actions.


SpeedMeter

Built-in live up/down graphs in the Connection page and main window for a lightweight visual of throughput.


Auto Query Remote Client's Shared Files (First Connect)

Optionally auto-query a client's shared files after first connection, paced by configurable per-period limits.


Save Application State (Button)

One-click save of list layouts, column orders, and preferences for easy layout "bookmarks".


Set Executable Directory as Default (First-Run Behavior)

If no choice exists yet, uses the app's folder as the base location for a portable-style setup.


Migration Wizard

Adds a built-in Migration Wizard that can run automatically on first launch after language selection or be scheduled later from Tools > Migration Wizard. It helps restore supported legacy eMule configuration files into eMule AI with directory detection, copy results, and clear follow-up guidance.


Don't Filter Private IPs Option

Allow local/private addresses even when an IP filter is active, useful on home/lab networks.

Improvements

Long Path Support

File operations (hash/preview/move/backup) work reliably beyond classic 260-char Windows limits by using long-path-safe APIs and formats.


Virtual-List Performance & List Engine

Compact backing stores, batched refresh, selection/scroll restore, and combined/heap sorting make giant lists smooth and responsive.


Search Results Load Faster

Only the active tab refreshes immediately; others update counters without full redraws. Virtualized storage accelerates inserts and sorting.


Safer, Faster Part-File Writing

File allocation, metadata flushing, and buffer moves occur inside the writer thread under scoped locks, with periodic disk-space checks, reducing contention and stutters.


Faster Pause/Stop/Remove/Complete & Sorting

Bulk operations coalesce UI work, and large lists use a single combined sort pass for steady ordering during heavy updates.


Reconnect & Notify After IP Change (Kad/eD2k)

On public IP changes, Kad reconnects gracefully; peers are informed and sources re-asked to minimize stalls.


Safe Configuration File Saving

Writes sensitive data to a temp file and atomically replaces the original, keeping files intact if something fails mid-write.


Search Parameter Restoration & Tab Titles

Complex Boolean expressions are preserved and appear as tab titles; restored searches match your original filters and fields.


KAD Bootstrap UX

Autocomplete/history for IP:port and URL fields, Enter-to-bootstrap, Delete to remove suggestions; remembers your last choice.


IP Filter Improvements

Static IP filter file, separate whitelist, better loader/merger behavior, and corrected save logic (no truncation).


GeoLite2 Clarity/Performance

Efficient flag handling and optional long vs. short country names; single-click enable/disable.


Auto-Refreshing Network Info

Keeps ports/IDs/Kad status current while open, with tidy formatting and consistent refresh.


Owner-Draw Polish (Dark Mode)

Menus/tabs get theme-aware drawing, clear submenu indicators, and crisp text rendering.


UI Tweaks & Multisort

Cleaner menus, better icons/spacing, and improved multi-level sorting for predictable results.


Better Passive Source Finding & UDP Reask Handling

Gentler retry logic and more realistic counters reduce misleading stats and improve source discovery.


Spread Requests & Timers

Request bursts are smoothed and reask timers clarified to keep queues fresh without spamming.


Extended Clean Up (Memory Footprint)

Idle clients and stale entries are cleaned more aggressively to keep long sessions lean.


Publish File List Faster

More compact server-publish packets and fewer unnecessary sorts make "publish to server" snappier.


Merge Search Results

Compatible results are merged while respecting spam heuristics to reduce duplicates and clutter.


Windows 11 Detection

Accurate OS detection helps choose safe defaults/paths on modern systems.


Faster Loading Part Files At Startup

Defers redraws during initial load to reduce repaint cycles and speed up UI bring-up.


Better WINE Desktop Integration

Opens files/links via GNOME/KDE helpers and translates paths properly under WINE.


Webservice Selection for Multiple Items

Apply web actions to multiple selections at once for faster lookups.


Don't Save Part Files on Every Server Reconnect

Skips redundant disk writes on reconnects, trimming stutter on large libraries.


Touch Default-Apps File Only When Needed

Checks the preview-apps map only when opening the menu to avoid periodic disk I/O.


Save/Load Path for Known Files

Stores full paths with known files for accurate restoration and display.


DST Tolerance for known.met

Accepts small timestamp shifts due to daylight saving, preventing needless re-hashing.


Advanced Preferences Page

Collects power-user toggles (Search/Server/File handling, etc.) with concise on-screen explanations.


Right-Click "Preview Next"

Quickly step through previewable items from the toolbar without changing selection.


Move/Resize Search Filter Box

Cleaner header layout reduces accidental clicks while preserving functionality.


Use File Type Tag Only If Needed

Search entries derive type from filename first, falling back to the tag only when necessary for accuracy.


Thread Names in Release Builds

Improves crash-report readability without impacting performance.


Optimization: Debug Trace Hygiene

Suppresses noisy traces by default and clarifies "missing icon resource" diagnostics for easier skin/theme troubleshooting.


Repeat Server List

Automatically loops the server list on failures to improve connection reliability.


SafeHash Behavior

Waits for full initialization before auto-connect and stops hashing immediately on exit for faster, cleaner shutdowns.


Save Search File Type

Remembers your preferred search category (Any/Audio/Video, etc.) between sessions.


Prevent Default Double-Click on Toolbar

Avoids accidental command executions from toolbar double-clicks.


Set Category Only If Changed

Skips redundant saves/re-sorts when a category remains the same.


Connection Parameters Tuned for Modern Hardware & Networks

Connection parameters and related defaults were optimized to better match today's hardware and network conditions, improving balance, responsiveness, and overall transfer behavior.

Bug fixes

"Encountered an improper argument" Crashes While Scrolling

Guards progress-bar drawing to avoid invalid GDI calls during fast scrolling in the Download list.


AICH Hashset Save

Waits properly for internal locks and stops hashing on exit to eliminate "Failed to save HashSet" after hashing.


Stored Searches File Corruption

Loads stored searches early to prevent creation of empty placeholder files at startup.


Race on Write Completion

Skips late completions for just-deleted files to avoid a rare crash during heavy cleanup/shutdown.


Sockets Leak on "Too Many Connections"

Releases sockets correctly when entering the "too many connections" state under load.


Null Current-File Guard

Prevents crashes by safely refusing source requests when the current file pointer is missing.


"View Shared Files" Folder Persistence

Restores the last used folder for that mode in stored searches.


Preview Backup Eligibility

No longer requires previewability checks; relies on free-space threshold to avoid false negatives.


UPnP/ATLTRACE Format Mismatch

Fixes a debug-build crash due to a wrong trace format string.


IP Filter: Save Truncation

Writes complete addresses without truncation when saving filter files.


IP Filter: 128-bit Range Merge Boundary

Keeps boundaries correct when merging ranges by comparing with computed "end+1".


"Wrong Connecting" Log

Logs "Connecting ..." only when a connection is actually pending.


Delete Completed Downloads Crash

Guards against null dereferences when removing multiple finished items.


Part-File Gap Handling

Removes empty gaps immediately and clamps boundaries correctly; progress/availability remain accurate.


Hashing Progress Denominator

Percentages use the actual hashed size as denominator to avoid misleading jumps and rare divide-by-zero.


MediaInfo Exception Handling

Clears buffers and closes gracefully when media details cannot be read instead of throwing.


Shared Files Sorting

Locale-aware, case-insensitive sort by "File Type" behaves predictably with neat sub-sorting.


Menu/GDI Leaks

Deletes custom brushes, detaches/destroys header image lists, and tightens ownership to close small GDI leaks.


RemoveAnchor vs ASSERT

Removes invalid anchors safely during layout changes to eliminate resize assertions.


Null CString Pointer

Defensive checks prevent crashes when an error string is unexpectedly null.


OP_MULTIPACKETANSWER_EXT2

Fixes extended multi-packet response handling for better peer compatibility.


ntohl Not Needed

Removes unnecessary byte-order conversions that could mislead logging/handling.


Splash Screen vs Clipboard Prompt

Ensures the ED2K clipboard prompt isn't hidden behind the splash screen on startup.


Delete Duplicate Search Results

Removes duplicates reliably without orphaning children; child items are also deleted correctly.


Skip Freed Items in Menus

Ignores just-deleted downloads when building context-menu state to prevent rare crashes.


Auto-Promote to 64-bit Tag

Promotes values exceeding 32-bit safely, preventing corrupted metadata and parsing errors.


Kademlia Fast-Refresh Logic

More conservative logic reduces stalls and prevents missed updates.


Always Log Assert to File (Stability)

ASSERTs are logged to file rather than popping intrusive dialogs in enabled mode, aiding diagnostics without interrupting transfers.


Wrong Percentage Sign in Log

Literal "%" characters in log messages print correctly (no accidental format parsing).


Media Parsing with Long Paths

Opens long-path files safely when reading metadata to avoid failures in deep directory trees.

Documentation

Access the official eMule help resources for setup guidance, feature explanations, and practical usage information.

Open the eMule help page

For official reference material and user guidance, visit the eMule Help page.

Community

Join the eMule forum

For community discussion, user tips, and broader ecosystem conversation, visit the eMule Forum.

Report an issue

The most helpful reports include a clear reproduction path, the exact build you used, and diagnostic files when available.

Open the GitHub issue tracker

To report a bug, document a reproducible problem, or suggest an improvement, please use the eMule AI GitHub Issues page.


What to include in a good report

  • The exact eMule AI version or release name.
  • Your Windows version and whether you are using x86 or x64 build.
  • Clear step-by-step instructions that reproduce the problem.
  • What you expected to happen and what actually happened instead.
  • Relevant screenshots, log excerpts, or test files if they help explain the issue.

Some problems can be understood from a normal description and a screenshot, but crashes, unexpected assertions, and difficult network issues usually need stronger diagnostics. The three sections below explain the most useful reporting methods for those cases.

General advice: try to keep the reproduction small and focused. A short test with clean logs and matching files from the same run is usually much more useful than a very large mixed report from a long session.

Verbose logs for diagnostics

If the issue does not crash the client but still needs deeper analysis, verbose logs are usually the best starting point. They are especially helpful for connection behavior, NAT-T and uTP issues, unexpected state changes, retries, queue logic, and similar problems that are hard to explain with screenshots alone.


How to enable the most detailed logging

  1. Delete or move any older files from the local logs folder first, so the new logs are easier to identify.
  2. Open Options > Extended.
  3. Enable Verbose.
  4. Set Log Level to 5. This is the highest and most detailed log level.
  5. Enable Log NAT traversal events if the problem is related to connectivity, NAT-T, or uTP.
  6. Keep the feature you are testing enabled while reproducing the problem. For example, if you are reporting a NAT-T or uTP issue, make sure Enable uTP & NAT Traversal (NAT-T) remains enabled during the test.
  7. Reproduce the problem with the simplest possible test case you can find.
  8. After the test, compress the newly created files from the logs folder and attach them to the GitHub issue, or upload them to a file host if they are too large for GitHub.
Tip: if possible, reproduce the issue with one focused test case instead of a long general session. Short, clean verbose logs are much easier to analyze.

Crash reports and dump files

If eMule AI crashes, shows an invalid argument message, or closes unexpectedly, please attach a crash dump whenever possible. A dump usually lets the developers identify the failing function much faster than a screenshot or Event Viewer entry alone.

Note: A normal Release build is enough to create a crash dump. You do not need a special Debug build for reporting crashes.

Built-in crash dump method

  1. Open Options > eMule AI > Advanced Preferences.
  2. Enable Create crash dump.
  3. Close eMule AI completely and start it again.
  4. Reproduce the crash.
  5. If a dialog asks whether to create a diagnostic file, click Yes.
  6. Open the local config folder of your eMule AI installation and attach the newest .dmp file to the GitHub issue.
Important: The dump is typically written to the local config folder, not necessarily the main program folder.

Fallback method with ProcDump

If no dump is created by the built-in method, you can use ProcDump from Microsoft Sysinternals as a fallback.

procdump.exe -accepteula -ma -e -t -w eMuleAI.exe C:\Dumps

After running that command, start eMule AI normally, reproduce the crash, and then attach the newest dump file from C:\Dumps.


Before you attach the dump

  • Compress the dump with ZIP or 7z if it is large.
  • If GitHub does not accept the file because of its size, upload it to a file host and share the download link in the issue.
  • Include the exact crash message, the last action you performed, and whether the problem is reproducible.

Network, NAT-T, and uTP issue reports

If your problem looks network-related, for example sources stay at Unknown, many sources end up as Too many connections, NAT-T or uTP works only on some networks, or transfers improve after disabling Enable uTP & NAT Traversal (NAT-T), please include a deeper report than a normal bug description.

Why this matters: for this class of issue, screenshots alone are usually not enough. The most useful reports combine a simple reproduction path, full verbose logs, and a short packet capture taken during the same test session.

What to include in a network-related report

  • The exact eMule AI version or release name.
  • Your Windows version and whether you are using the x86 or x64 build.
  • Your TCP port, UDP port, whether UPnP is enabled, and whether you are using manual port forwarding.
  • Your current network setup, for example direct connection, home router, VPN, virtual machine, or mobile hotspot.
  • A short description of what you expected and what happened instead.
  • The smallest reliable reproduction case you can find, ideally one file with many sources.
  • Whether the problem changes when Enable uTP & NAT Traversal (NAT-T) is disabled.
  • Whether the same test behaves differently on another network, for example when you connect through your phone's hotspot instead of your usual router.

Capture the network side with Wireshark

Wireshark is a free network analysis tool. It helps show whether the expected UDP and uTP packets are actually reaching your PC during the failing test. You can download it here: https://www.wireshark.org/download.html.

  1. Download and install Wireshark.
  2. Open Wireshark and start capturing on the network adapter your PC is actively using, usually Ethernet or Wi-Fi.
  3. In the filter box, enter a filter for the UDP port used by eMule AI. Example: udp.port == 4672. Replace 4672 with your actual UDP port.
  4. Start the capture before reproducing the problem.
  5. Reproduce the issue in eMule AI while the verbose logging options from the section above are enabled.
  6. Let the capture run for about 30 to 60 seconds while the problem is actively happening.
  7. Stop the capture and save it as a .pcapng file.
  8. Compress the .pcapng file and attach it to the same GitHub issue together with the matching verbose logs from the same test session.
Important: the packet capture and the verbose logs should come from the same test run whenever possible. That makes it much easier to compare what happened on the network side with what eMule AI reported internally at the same moment.

Before you submit the report

  • Compress large logs and packet captures with ZIP or 7z.
  • If GitHub rejects the files because of their size, upload them to a trusted file host and share the download links in the issue.
  • Please mention if the problem disappears on another network, after changing the UDP port, or after disabling NAT-T manually.
  • Remember that packet captures can contain network metadata such as IP addresses, so review them before sharing if needed.

Compiling the Source Code

Build Environment

Built with Visual Studio 2026 v18.8.1, using the latest MSVC and MSVC Build Tools available at the time.

Python 3.7 or newer must also be installed and available in PATH, because the build runs srchybrid/translations/ai_translator.py for translation map validation and generated header output.

Libraries

Building eMule AI requires downloading and compiling additional third-party libraries that are not bundled with the distribution. The required dependencies are listed in the table below. Please note that some entries use official release versions, while others reference a specific commit and branch.

Download and place each library’s source code one directory level above the eMule AI source tree, then compile it. Check the project files for the expected folder names, or adjust the paths to match your layout.

Library Version / Commit Source
cryptopp#4775a16@mastergithub.com/weidai11/cryptopp
gmp6.3.0gmplib.org
gnutls3.8.13gitlab.com/gnutls/gnutls
libmaxminddb1.13.3github.com/maxmind/libmaxminddb
libutp#490874c@post-3.4-transmissiongithub.com/transmission/libutp
mbedtls4.0.0github.com/Mbed-TLS/mbedtls
MediaInfoLib26.05github.com/MediaArea/MediaInfoLib
miniupnpc2.3.10github.com/miniupnp/miniupnp
nettle4.0gitlab.com/gnutls/nettle
ngtcp21.23.0github.com/ngtcp2/ngtcp2
ResizableLib#bebab50@mastergithub.com/ppescher/resizablelib
ZenLib0.4.41github.com/MediaArea/ZenLib
zlib1.3.2github.com/madler/zlib

Acknowledgements

Many thanks to everyone who contributed to eMule over the years. Without their work, eMule AI would not have been possible.

Developers: Merkur, John aka. Unknown1, Ornis, Bluecow, Tecxx, Pach2, Juanjo, Dirus, Barry, zz, Some Support

Modders: David Xanatos, Stulle, XMan, netfinity, WiZaRd, leuk_he, enkeyDev, SLUGFILLER, SiRoB, khaos, fox88, Enig123, TAHO, Pretender, Mighty Knife, Ottavio84, Dolphin, sFrQlXeRt, evcz, cyrex2001, zz_fly, Slaham, Spike, shadow2004, gomez82, JvA, Pawcio, lovelace, MoNKi, Avi3k, Commander, emulEspaña, Maella, VQB, J.C.Conner

Testers: fangguihua1995, QICKV8, lzk87, Heliotropo, Havokdan, Andrey23, mistressadmin, enone, AnneDane, edelkas, Aokromes, superlent, tchara, OConnell, potes31, lapollarecord, tictoc9, arturx, Sony, Monk, Myxin, Mr Ozon, Daan, Elandal, Frozen_North, kayfam, Khandurian, Masta2002, mrLabr, Nesi-San, SeveredCross, Skynetman