I remember we had 2 people recording, maybe we can have the raw recording and/or the summary here?
Definitely. I hopped on an airplane almost right after our call for the Telehash and Texas Energy and Mining Summit, but weâre done this afternoon, and I should get to it tonight.
Generated by AI from the meeting recording.
Mujina Dev Call #2â2026-05-18 1700 UTC
Attendees: Ryan (host), Johnny9, Gary, Jayr, Skot, Tyler, David. Referenced but absent: Jeff (author of the YAML config PR), Schnitzel.
Summary
Meeting format
- Adopt Garyâs suggested flow: walk GitHub discussions first, then issues, then PRs. Share screen when thereâs something specific to refer to.
- Cap calls at 1h30 (Davidâs suggestion; these run on a weekday).
Config file and persistence design
Triggered by Jeffâs open YAML config PR. Ryan flagged that this needs a design conversation before more code lands.
- Most changes made via the API should persist across restartsâin practice âconfig, by definition, is something you persistâ (Johnny9). Skotâs NVM-overheat example: derated settings have to survive a power cycle so the box doesnât come back up at its old unsafe state.
- Two layers proposed:
- User-managed config: hand-edited, comments, ordering preserved, never clobbered by the daemon.
- Process-managed config: machine-readable, lives at a default location, freely rewritten by the daemon. The cascade/merge layer that overrides defaults.
- Schema must distinguish defaults from user overrides so software updates can move defaults without trampling user values (Johnny9).
- Hardware config and application config feel like different things (Gary, Skot). Hardware config (which boards, which I2C devices, which fans) is mostly static and schematic-level; application config (pools, API, log levels) is the runtime-mutable stuff.
- Dynamic discovery wherever possible (USB hotplug, board EEPROMs, AMLogic control-board self-detect, S19 hashboard layout); static config only for the genuinely non-discoverable (fan presence, I2C addresses, power-supply wiring).
- Jayrâs per-device case: two nominally identical Bitaxes, one runs hot. Want a way to fingerprint a specific device and override its config without touching the driver defaults.
- Open question Ryan flagged: when a user passes an explicit startup config file via a CLI flag, where do API-driven changes get persisted? Gary floated an explicit âexport current configâ command rather than auto-writing.
Hardware-in-the-loop testing and safety
- Ryan wants integration tests on real hardware soonâalready hesitant to make some changes for fear of breaking functionality.
- Open-source-friendly self-hosted runners are awkward: random PRs shouldnât be able to flash arbitrary firmware onto someoneâs house hardware.
- Johnny9: start simpleâa GitHub workflow gated on maintainer approval before it runs on hardware. Forces end-to-end tests to get written; infrastructure can grow later.
- David described his employerâs lab setup: many duplicates per miner model, Jenkins-managed scripts, perpetual perf/efficiency tests focused on releases. Hardware failures during normal QA are rare; happen mostly when modifying auto-tuning or sleep logic.
- Direction settled on: a standardized downloadable test suite anyone with hardware can run and publish results from (Skotâs framing). Defer a central orchestrator until clearly needed.
- Skot cautioned against an âofficial Mujina labâ carrying centralized responsibility for validating safety across all devices.
- Bitaxes are the safe starter target (âbetter to melt one of thoseâ than a 3kW S21).
- Jayr suggested a ProtonDB-style community reporting site for hardware compatibility once the project supports more miners.
Community ports and the âvibe-codedâ workflow
- Tyler started a forum thread for tips/tricks on porting Mujina to other minersâmeant for non-developers driving experiments via AI agents (Schnitzel, Skotâs S19 work).
- Skot wants a âhacker kitâ / getting-started guide covering the pre-Mujina problems too: removing proprietary firmware, getting around Secure Boot, loading arbitrary software onto control boards.
- Two distinct problems to keep separate in docs: (1) get arbitrary software running on the control board, (2) add Mujina support for that board.
- Ryanâs framing: this is perhaps a new open-source workflow for 2026âvibe-coded prototypes do research, then maintainers turn those vibes into production-quality merges. Skotâs corollary: keep Mujina modular so prototypes can drop in without rewriting the core.
- Any porting docs must lead with safety warnings (fire, hardware destruction).
Bitaxe Bonanza USB identification
Johnny9 is finishing the Intel-ASIC PR and needs to distinguish Bitaxe from Bitaxe Bonanza on the wire.
- VID/PID allocation isnât really under the projectâs controlâthe string descriptors are.
- Skot: key on hardware version number, the way ESP miner does (601 / 602 ⌠1002 for Bonanza).
- Both agreed bitaxe-raw on Bitaxe vs. on Ember One are different enough to stay separate firmwares.
- The Bitaxe naming inside Mujina currently assumes Gamma and is too narrow; needs to get more specific.
- Decision: change the USB product string to encode the hardware version (e.g., âBitaxe 1002â) for Bonanza, then iterate.
Adjacent
- Davidâs company released their internal firmware orchestration / miner-management app as open source on their GitHub. They plan to add native Mujina support in the next few weeksâitâll pull hash rate, uptime, temps, etc. via the Mujina API.
Action items
- Ryanâwrite up the config design in a GitHub discussion and leave concrete feedback on Jeffâs YAML config PR, so the next round has something specific to argue around.
- Ryanâfile a âgood first issueâ for porting USB hot-plug discovery to Windows (works on Linux and macOS today).
- Ryanâcreate open, contributor-friendly issues as they come to mind; donât batch.
- Ryan / everyoneâtreat safety warnings as the lede of any porting / on-other-hardware documentation.
- Skotâpost porting tips and tricks to Tylerâs forum thread.
- Johnny9âupdate the Bitaxe Bonanza PR to set the USB product string to the hardware version (e.g., âBitaxe 1002â), then move it out of draft.
- Openâstart drafting a standardized downloadable test suite anyone with hardware can run and publish results from; tests live in the Mujina source repo (Johnny9 / Skot direction).
Full transcript:
dev-call-2.clean.txt (65.1 KB)
Quick follow-up: one of my action items was to write up my vision of the config design specifics so weâd have something concrete to review instead of hashing it out in the abstract.
Thatâs done. It grew into a full set of requirements for Mujinaâs configuration system and REST API, written up as MIP-0001 (the first Mujina Improvement Proposal, a new lightweight design-doc convention in the spirit of Bitcoinâs BIPs and Nostrâs NIPs).
Thereâs a short intro thread on GitHub Discussions:
And the MIP itself is open as a pull request, which is where review and comments should happen:
Iâd really value everyoneâs feedback! Please read it and poke holes; comments, suggestions, and patches welcome on the PR.