A commit adding an `AsyncWorker` helper has landed in nobodywho-ooo/nobodywho. The October 30, 2026 commit d045f340 (#838) is a refactoring that gathers the thread/channel code that the local LLM inference engine NobodyWho had been hand-writing at each integration point into one place. The size of the change is 538 lines added and 324 lines deleted, 862 in total.
NobodyWho is an inference engine that runs GGUF models directly on the device. Before this commit, the model loading function get_model_async, the Godot binding, the uniffi binding, TextToSpeech, and the decision model each used to create their own dedicated thread with std::thread::spawn or WorkerGuard and return the result through a channel. The commit unified those places under the newly added AsyncWorker in nobodywho/core/src/worker.rs (325 lines added). The Godot integration guide (.agents/skills/build-integrations/SKILL.md) was also changed from a manual thread example to an AsyncWorker example, and the decision module changed its dedicated thread structure to a combination of tokio::sync::Mutex and AsyncWorker.
However, the commit contains no performance measurements or compatibility verification results. get_model_async, a public item of the Rust core, and the ModelChannelError and tts_worker_dead error variables were deleted, and the internal structure of DecisionAsync also changed, so anyone working directly with the bindings needs to check what has changed. The release version and license information are not included in this commit record. All that can be said with certainty is that the way threads are managed has been tidied up; whether runtime performance has changed is too early to judge from this record alone.