HKUDS/nanobot · error · TuiUnavailableError
the native TUI is not available on Windows ARM64 because…
Error message
the native TUI is not available on Windows ARM64 because Bun FFI is disabled on that platform; use the classic prompt until the upstream runtime supports it
What it means
In _resolve_tui_command, the platform was detected as Windows on ARM64, where the TUI's Bun FFI runtime is disabled upstream, so no native TUI can run. This is an explicit platform-support guard raising TuiUnavailableError instead of silently degrading; use the classic prompt until the upstream runtime supports win32-arm64.
Solutions
- Run `nanobot agent --classic` to use the classic prompt
- Wait for upstream Bun FFI support on Windows ARM64
- Run under x64 emulation if a native TUI is essential
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at nanobot/cli/tui_launcher.py:173 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26).
Data as JSON: /api/errors/fe3c5b550b860f9c.
Report an issue: GitHub.
Appendix: source
Thrown at nanobot/cli/tui_launcher.py:173
def _resolve_tui_command() -> list[str]:
override = os.environ.get("NANOBOT_TUI_BIN", "").strip()
if override:
executable = Path(override).expanduser().resolve(strict=False)
if not executable.is_file():
raise TuiUnavailableError(f"NANOBOT_TUI_BIN does not exist: {executable}")
return [str(executable)]
suffix = ".exe" if os.name == "nt" else ""
system = {"Windows": "win32", "Darwin": "darwin", "Linux": "linux"}.get(
platform.system(),
platform.system().lower(),
)
machine = {"x86_64": "x64", "AMD64": "x64", "aarch64": "arm64"}.get(
platform.machine(),
platform.machine().lower(),
)
if system == "win32" and machine == "arm64":
raise TuiUnavailableError(
"the native TUI is not available on Windows ARM64 because Bun FFI is disabled "
"on that platform; use the classic prompt until the upstream runtime supports it"
)
asset = f"nanobot-tui-{system}-{machine}{suffix}"
source_dir = _source_checkout_tui_dir()
if source_dir is not None:
bun = shutil.which("bun")
if not bun:
raise TuiUnavailableError(
"this source checkout requires Bun to run its matching TUI; "
"install Bun, then run `nanobot agent` again"
)
return _resolve_source_tui_command(source_dir, bun)
packaged = Path(__file__).resolve().parents[1] / "tui" / "bin" / asset
if packaged.is_file():
return [str(packaged)]
View on GitHub (pinned to 42f37dc4c0)