boardfarmdevs · EasyMesh labs · the map · 30 September 2026

Where everything lives

Nine repositories, two core components, one EasyMesh system. Every piece, the directory it lives in, and how it fits together.

RDK EasyMesh lab

meta-cmf-bananapi-vcpe

  • RDK-B images: the gateway and the extendersrecipes-ccsp/ · recipes-*/ · conf/
  • Controller and agent patchesrecipes-ccsp/unified-wifi-mesh/ · hal/ · ieee1905/
  • The optimizergen/optimizer/ → easymesh-optimizer
  • The live room: its launcher, manifests, bindingsgen/demo/ (the room service: gen/optimizer/)
  • The lab VM, with or without EMOSAgen/vm/lxd/build.sh
  • The RF mediumgen/medium/ → easymesh-medium
  • The room suite · docsgen/tests/ · doc/easymesh/
Optimizer lab · RDK
Core 1

The RF medium

easymesh-medium

  • wmediumd and its 36 patcheswmediumd/
  • The hwsim radios (11 patches)hwsim/
  • The room language and compilerconfigurator/wmdcfg/
  • The rooms, standard · wired · with podsconfigurator/worlds · worlds-wired · worlds-pods/
  • The 3D room viewerconfigurator/worlds/viewer/
  • Console NG: the medium, liveobserver/
Both labs, one medium

prplMesh lab

prplmesh-lab

  • prplMesh 6.0 build and patchespatches/prplmesh/ · manifests/
  • The optimizeroptimizer/ → easymesh-optimizer
  • The live room: its launcher, manifests, bindingsdemo/ (the room service: optimizer/)
  • The controller dashboardcontroller-ui/ · topology-adapter/
  • The lab VM and its radiosdeploy/lxd-vm/build.sh · scripts/radio-lab.sh
  • The RF mediummedium/ → easymesh-medium
  • Tests · docstests/ · docs/ · reference/
Optimizer lab · prplMesh

Room builder

easymesh-room-builder

  • Draw rooms, walls, agents and client walksroom-builder · roombuilder/
  • Designs and the room librarydesigns/ · roombuilder/library/
  • Writes the medium's room languagewmdcfg world-layout + mobility
Design rooms
The live room of the RDK lab with the EMOSA option: native agents, two OpenSync pods and twenty clients walking a floor plan, the client convergence banner showing converged
One lab, live: a room from easymesh-medium, RDK's controller and agents, two unchanged OpenSync pods through EMOSA, and the optimizer steering twenty clients.

OpenSync lab

opensync-lab

  • The mv3 router imagebuild-mvx.sh · meta-mvx/
  • The OpenSync 6.6.1 pod imagebuild-pod.sh · pod/
  • local-noc: the pods' own cloudlocal-noc/
  • The lab VMsetup-vm.sh · deploy-mvx.sh · guest/
The pods

Physical lab

easymesh-lab

  • A Python 1905 / EasyMesh controllercontroller.py · protocol.py · wsc.py
  • The teaching panelpanel/
  • Its own small optimizeroptimizer.py
  • Experiments, telemetry, speed testsexperiments.py · client_telemetry.py · speed_server.py
  • The VM and USB handoverdeploy/lxd-vm/build_vm.py
Real hardware
Core 2

EMOSA

emosa-lab

  • The specification and designspec/README.md · spec/design.md
  • Conformance vectors (19 sets)spec/conformance/ · schemas/
  • The Python referencesrc/emosa/
  • The C implementation and its barc/ · c/QUALITY.md
  • The lab in a box, the vector generatorlab/src/emosa_lab/
  • Adapter kit and lab driversdeploy/adapter · deploy/rdk-lab · deploy/opensync-lab
OpenSync ⇄ EasyMesh

The workspace

easymesh-labs

  • Pins every project and imagemanifest.json · pin · sync
  • The plan and its statusdocs/project/alignment-plan.md
  • The six lab configurations and hostsdocs/reference/lab-configurations.md
  • The site and these posterssite/ · site/posters/
  • Shared Pages tooling, the docs checkpages/
Start here

The optimizer and its room service

easymesh-optimizer

  • The policy: margin, hold, dwell, cooldown, loadoptimizer/policy.py · load_policy.py · state.py
  • Each stack, read and drivenstacks.py · observer.py · candidates.py (RDK) · prplmesh.py (prplMesh)
  • Steer one client, verify the outcomeactuator.py · verifier.py
  • The room service: the live room, port 8891room_service/ · room_service/lab.py (each stack)
  • Journal, replay, offline simulationrecorder.py · simulator.py
  • Scenarios, the experiment matrix, manualsscenarios/ · configs/ · docs/
Both labs, one optimizer

Where does it live?

PieceCodeRuns in
The optimizereasymesh-optimizer, pinned as meta-cmf gen/optimizer/ and prplmesh-lab optimizer/ · easymesh-lab optimizer.pyeach lab VM, inside the room service
The live roomeasymesh-optimizer room_service/; each lab's rooms in meta-cmf gen/demo/ · prplmesh-lab demo/each lab VM, port 8891
Rooms and viewereasymesh-medium configurator/compiled into wmediumd; viewer in the browser
wmediumd, radioseasymesh-medium wmediumd/ · hwsim/each lab VM's kernel and medium
The controllerRDK unified-wifi-mesh (meta-cmf recipes) · prplMesh 6.0 (prplmesh-lab patches)the gateway / controller container
EMOSAemosa-lab src/emosa/ · c/the emosa container, next to the controller
OpenSync podsopensync-lab pod/pod containers; image pinned in manifest.json
Room buildereasymesh-room-builderyour browser, no lab needed

How the pieces fit

  1. A room is drawn: in the medium's rooms, or in the room builder.
  2. wmdcfg compiles it into the RF of every radio pair.
  3. wmediumd delivers each frame between the hwsim radios.
  4. The agents and a hundred clients, in containers, associate.
  5. The controller (RDK or prplMesh) measures them.
  6. The optimizer decides and steers through the controller.
  7. The live room shows it; the room suite checks it.
  8. EMOSA brings unchanged OpenSync pods into step 4, as EasyMesh agents.

One copy or two?

  • The RF mediumoneone repository since 30 September; both labs pin it
  • EMOSAoneone repository; C and Python share one specification and its vectors
  • The optimizeroneone repository since 30 September, both labs pin it; the physical lab keeps its small teaching one
  • The room serviceonein easymesh-optimizer with the optimizer since 30 September; each lab keeps its rooms

Kept in easymesh-labs site/posters/: update it when a component moves.