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

  1. Run `nanobot agent --classic` to use the classic prompt
  2. Wait for upstream Bun FFI support on Windows ARM64
  3. 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)