Repository navigation
Hyperloom v1.0.0b1
Hyperloom v1.0.0b1
Highlights
Measurement integrity: what counts as a gain
Candidates are launched with current_best's recipe, but the grading anchor and the configuration it was measured on could still drift apart, so a regression against the established recipe read as a win. The anchor and its configuration are now inseparable, resolved in one place and carried together through execution. Alongside that, four fail-soft paths were silently dropping a validated configuration rather than failing loudly, Explore was discarding the baseline accuracy it had been graded against, and warm replay mis-quoted JSON arguments so a replayed recipe did not reconstruct the run it recorded.
vLLM roofline runs no longer launch an unbounded torch profiler
The profile path injects --profiler-config.delay_iterations/max_iterations into EXTRA_VLLM_ARGS, but three later steps could each drop them: a candidate carrying args_mode="replace" overwrote the whole flag string, extra_envs could override it outright, and remove_args strips flags by name — taking --profiler-config.ignore_frontend with them. vLLM reads a missing max_iterations as "profile until stop_profile", so the worker accumulated every profiler event in host anonymous memory — measured at 60 MiB/s with the production option set — until the cgroup OOM-killer took the engine or worker out mid-roofline, at 107–137 GiB RSS. Because args_mode is sticky on current_best, one such KEEP turned every later roofline in that session into an OOM candidate.
materialize_config_with_envs now re-asserts the profiler flags as the LAST write to EXTRA_VLLM_ARGS, restoring only what went missing and warning about exactly which flags. The re-assertion checks flag VALUES, not just names, for the two that decide whether the capture is bounded at all: max_iterations has to parse as a positive integer within the computed cap (vLLM reads 0 as "no limit"), and ignore_frontend has to be true. A name-only check accepted --profiler-config.max_iterations 0 and then logged that it had bounded the profiler — worse than not guarding, since the warning sends the next investigation the wrong way. Scope: vLLM only; the equivalent SGLang exposure is called out in a comment at that write site.
One path for every LLM call
Every LLM call now routes through an agent runtime or the single-shot entry point, so provider selection, credentials, and telemetry stop being re-implemented per call site. The Codex Coordinator receives the transport and vocabulary its role already assumed, which is what an OpenAI-only deployment needs to reach Forge at all. DeepSeek is treated as a dual-protocol gateway rather than a provider of its own, SAFE_API_KEY is gone in favour of sourcing keys from the OPENAI_* / ANTHROPIC_* variables, the critic can authenticate through Claude CLI OAuth, and the defaults move to claude-opus-5 and gpt-5.6-sol.
Remote Recipe knowledge now uses KB Store
Remote mode reads one identity-addressed best record for T0 Explore config/env replay and publishes one final CLOSE session with verified artifacts. Local Recipe storage and non-Recipe GBrain integrations are unchanged; agent section staging is an interface surface and is not yet wired by the kernel backends. The kernel-agent gets its own KB record, written per round and replayed at PRELUDE.
--no-eval turns the accuracy eval off for a whole run
Setting RUN_EVAL=false by hand leaves the baseline with no accuracy reference, which the baseline guard rejects, so the run stopped before it optimized anything. The flag makes that an explicit session-wide choice instead: the baseline anchors on throughput rather than halting on the missing reference, and every candidate lands on the existing baseline_accuracy == 0 path that already degrades to a throughput-only KEEP. A measured regression still blocks.
The choice is session state (shared_state.eval_disabled), not just a parsed arg, so it also reaches the lanes that template their own benchmark config: the framework-agent bench, eval-origin enablement, the multi-node lm_eval preflight install, and the GEAK GEMM shape capture. It persists across --resume, and is refused with a warning once the session has anchored an accuracy, because every KEEP up to that point was graded against it. Default-off is byte-for-byte the previous behaviour. Runs made with the flag are not accuracy-validated.
Enablement dispatch evidence reaches the specialist again
The Coordinator computes the source lines near the offending site — and, on a weight-init failure, the checkpoint's per-layer weight inventory — plus a ranked list of bridging PR refs. Since the mandate stopped being passed as free-text notes, none of it was delivered: the mandate was re-rendered downstream from a bare request, so the agent was told to find a bridge while the candidates already discovered for it were withheld. Both now travel as structured enablement_source_context / enablement_candidate_refs params and are folded into the §1b mandate at the point of use.
Kernel work: source resolution, fusion, and the ladder
Forge runtime targeting and E2E integration are hardened, GEMM tuning now covers the shapes the workload actually runs, and runtime-JIT deployment works for AITER sources installed from the split wheel. Sentinel strings no longer short-circuit source resolution, Forge validation is aligned with mean-case speedup, and the TraceLens idle gate honours graph under-recording instead of reading a partially recorded capture as an idle GPU. A Triton kernel can now be rewritten into FlyDSL and integrated as a framework patch. Cumulative gain survives a fusion step, GEAK runs under the optimizer's own Python, and an LLM outage during forge-fusion is reported as a retryable infrastructure failure rather than being recorded as "fusion found nothing" — a single gateway blip used to mark fusion done for the rest of the session.
Packaging hygiene
Test trees are no longer shipped in the wheel, a dead package-data glob is dropped, and a packaging CI job now checks the built artifact rather than trusting the tree to have been clean.
What's included
Kernel / Forge
- Harden Forge runtime targeting and E2E integration - #1098
- Tune the GEMM shapes the workload actually runs - #1099
- Runtime-JIT deployment for installed AITER sources - #1102
- Stop sentinel strings from short-circuiting source resolution - #1107
- Align Forge validation with mean-case speedup - #1108
- Route FLUX.2 and count cross-attention Q/O projections - #1115
- Honor graph under-recording in the TraceLens idle gate - #1121
- Preserve cumulative gain after fusion - #1124
- Rewrite a Triton kernel into FlyDSL and integrate it as a framework patch - #1128
- Stop claiming an analytic diffusion ceiling for custom; retire hunyuan_image3 - #1136
- Run GEAK with the optimizer Python - #1159
- Stop an LLM outage from retiring fusion for the session - #1109
Measurement integrity
- Make the grading anchor and the config it was measured on inseparable - #1091
- Keep the torch-profiler bounds a replacing candidate wiped - #1103
- Stop four fail-soft paths from silently dropping validated configuration - #1139
- Preserve baseline accuracy in Explore - #1151
- Fix warm-replay JSON argument quoting - #1127
LLM routing, credentials, and models
- Route every LLM call through an agent runtime or the single-shot entry point - #1129
- Give the Codex Coordinator the transport and vocabulary its role already had - #1131
- Treat DeepSeek as a dual-protocol gateway, not a provider - #1110
- Remove
SAFE_API_KEY; source keys fromOPENAI_*/ANTHROPIC_*- #1100 - Critic Claude CLI OAuth - #1120
- Default Claude to
claude-opus-5and OpenAI togpt-5.6-sol- #1112
Knowledge base
- Add local and remote knowledge backends - #1094
- Migrate remote recipes to KB Store - #1130
- Give the kernel-agent KB its own record, written per round and replayed at PRELUDE - #1147
- Preserve remote compatibility paths - #1111
Orchestration, enablement, and prompts
- Operator-supplied workload path and a source-rewrite specialist for iterative pipelines - #1080
- Reconnect the failure context chain; objectify enablement state - #1093
- Prompt overhaul: precise, phased, and economic - #1095
- Close the silent failures left by the
framework_agentrename - #1122
Evaluation
Telemetry
- Emit Explore spend telemetry and report failed LLM calls - #1101
Packaging, documentation, and release
- Stop shipping test trees, drop a dead package-data glob, add packaging CI - #1096
- Documentation clean-up for a crisp user experience - #1104
- Update recommended images to
rocm/hyperloom(SGLang 0.5.16 / vLLM 0.24.0) - #1133 - Cover enterprise LLM gateway setup; fix
.envdropping gateway auth headers - #1134 (closes #1119) - Cut 1.0.0b1 and install it from PyPI - #1148
Requirements
(unchanged from v1.0.0a3) ROCm platform with a supported AMD Instinct GPU (MI355X / MI325X / MI300X; MI308X detection); Docker with AMD ROCm support, Kubernetes with AMD GPU nodes, or the supported bare-metal setup; Cursor IDE with Remote SSH; an Anthropic API key or compatible Anthropic gateway, or an OpenAI-compatible gateway; tmux, jq, Node.js >= 18, and Claude CLI.
The alpha wheels are published on PyPI, so the documented install no longer names a GitHub release asset URL. The version pin is required: a pre-release is skipped by the resolver unless it is asked for by name.
python3 -m pip install "hyperloom-inference_optimizer==1.0.0b1" --target .Beta notice
v1.0.0b1 is a beta release. Beta signals that the surface is frozen: configuration surfaces, orchestration policies, and installation workflows are not expected to change further before v1.0.0.