1bit.MONSTERDocs GitHub ↗

Network Topology

This page exists because issue #1 linked to it before it was written. It describes how the pieces talk to each other at runtime.

Components

Every server on this list is the same single binary (build/1bit), dispatched by subcommand (1bit zaya, 1bit unified, 1bit jarvis, ...). There is no separate daemon process or router binary — the old Python daemon/npu-gpu-cpud.py proxy was replaced by the native engine and has been removed from the repo. In production, each model gets its own systemd unit running 1bit zaya (or 1bit unified) on its own port:

 client (OpenAI-compatible)
        │  POST /v1/chat/completions
        ▼
 ┌───────────────────────────────────────────────────────────┐
 │ one or more `1bit` processes, each a systemd unit          │
 │  zaya-npu.service    → 1bit zaya    :8088 (FLM/NPU)        │
 │  zaya-qwen06.service → 1bit zaya    :8089 (NPU2)           │
 │  zaya-gpu8b.service  → 1bit zaya    :8090 (HIP 1BP)        │
 │  jarvis.service      → 1bit jarvis  :8081 (voice loop, UI) │
 │  flm-whisper.service → FLM whisper  :8496 (STT for Jarvis) │
 └───────────────────────────┬─────────────────────────────────┘
             │ each unit picks its own backend at startup
   ┌─────────┼───────────────┬───────────────┐
   ▼         ▼               ▼               ▼
  NPU       GPU             CPU        HIP 1BP (ternary)
 (XDNA2)  (ROCm/Vulkan)   (fallback)   (engine/npu, engine/gpu)

Ports above match the current production fleet on the reference Strix Halo box (see docs/journey.md UPDATE 33); a single-model dev setup only needs one of these, e.g. ./build/1bit unified on its default port.

Ports & endpoints

Endpoint Default Purpose
/v1/chat/completions 127.0.0.1:8088 OpenAI-compatible chat API
/v1/models 127.0.0.1:8088 list available models
/health 127.0.0.1:8088 liveness check

By default each server binds to loopback only (127.0.0.1). Expose it on a LAN only behind a reverse proxy you control; there is no built-in auth (JARVIS's WS voice endpoint is the exception — it supports a bearer token, see docs/mobile/RUNBOOK.md).

Backend selection

Each 1bit zaya / 1bit unified process picks a backend (NPU/GPU/CPU) per request or at startup, per its --strategy/model config — see tools/unified_router.cpp (run via 1bit router) and docs/guides/architecture.md. There is no separate unified-router.py — it was rewritten in C++ and folded into the single binary.

See also