Spud Link

Spud Hub links Tater nodes with a native Tater protocol.

Spud Hub lets one full Tater install become the main model and tool server for paired Spudlets and Little Spud clients. Pairing uses a QR code or manual sync code, then each linked device receives a saved node token for native Tater API calls.

QR pairing Manual code Native Tater API Spudlet Little Spud
Little Spud app

Chat with your Tater from iPhone and iPad.

Little Spud pairs to Spud Hub with a QR code, keeps home and away Tater URLs, streams tool progress, shows returned images and media, and uses the Hub's voice settings for STT, TTS, notifications, and follow-up mic behavior.

iPhone + iPad QR pairing Home / away URLs No Little Spud cloud
Roles

One Hub can power full Tater nodes and lightweight clients.

Spud Link has explicit roles so the Hub knows whether the paired device needs raw model calls or full Hydra chat with tools, media, voice, and progress events.

ServerGPU/model host

Spud Hub

The main Tater install. It owns the configured local or remote model stack, Hydra, Verbas, People records, history, TTS/STT settings, and linked-node management.

Full TaterBorrowed model power

Spudlet

A full Tater node that pairs to the Hub. In Spudlet mode its Base model becomes Spudlet via Spud Hub, so LLM calls route through the Hub instead of local model settings.

Light clientHydra chat

Little Spud

A lightweight chat client that sends user name and device name to the Hub, then receives native Tater chat events, tool notices, artifacts, TTS/STT behavior, and follow-up mic decisions.

Pairing flow

QR code or manual sync code

The Hub creates a temporary pairing code and encodes the connection details into a Tater Spud Link QR payload. Clients can scan it or paste the manual code with the Hub URL.

  • The QR payload includes the Hub URL, pair URL, temporary pairing code, allowed roles, Hub name, and expiration time.
  • A camera-capable client can scan the QR code. Clients without a camera can paste the manual pairing code and Tater URL.
  • When pairing succeeds, the Hub returns a node token. Future requests use that token through Authorization: Bearer and X-Spudlink-Token.
  • The Hub stores only token hashes for linked nodes and never shows the node token back after pairing.
Linked devices

Hub-side visibility and revoke

Spud Hub keeps a live list of linked nodes so operators can see what is connected and remove access when needed.

  • Linked-node rows include role, node/device name, remote network information, last activity, and sanitized activity details.
  • Little Spud clients pass user and device information so history can be scoped like little_spud:user:device and mapped later in People.
  • The revoke button removes a node from the Hub. The client must pair again to regain access.
  • Heartbeat calls let the Hub show connection/activity state even when the client is not actively chatting.
Native protocol

Spud Link is not the OpenAI-compatible API.

Spud Link uses Tater-native endpoints because Tater needs more than plain chat completions: tool progress, generated media, active-run status, TTS, STT, follow-up mic decisions, identity, and linked-device telemetry.

EndpointUsed byWhat it does
POST /api/spudlink/pairing-codeHub WebUICreates a temporary pairing code plus QR payload for Spudlets and Little Spuds.
POST /api/spudlink/pairClientsExchanges the pairing code for a linked node record and node token.
POST /api/spudlink/heartbeatClientsUpdates device presence, role, metadata, and current activity on the Hub.
POST /api/spudlink/v1/tater/llmSpudletsRuns native raw model calls on the Hub for a paired full Tater node.
POST /api/spudlink/v1/tater/chatLittle SpudStreams Hydra chat events, tool notices, final text, artifacts, and follow-up decisions.
GET /api/spudlink/v1/historyLittle SpudFetches scoped chat history and active-run state for reconnects.
POST /api/spudlink/v1/tts/speechLittle SpudUses the Hub's configured TTS voice to synthesize reply audio.
WS /api/spudlink/v1/stt/streamLittle SpudStreams microphone audio to server-side STT with VAD-style turn ending.
GET /api/spudlink/v1/files/{file_id}Little SpudServes generated images, videos, audio, and other returned artifacts to the paired client.
Spudlet model routing

A full Tater can use the Hub model stack.

When a Tater install is switched to Spudlet mode and paired with a Hub, the Base model dropdown shows Spudlet via Spud Hub.

  • Hydra and normal LLM calls resolve to the Hub's native /api/spudlink/v1/tater/llm endpoint.
  • The Spudlet ignores its internal local LLM rows for Base model routing while paired in Spudlet mode.
  • The Hub still decides which actual model provider runs the call: llama.cpp, Transformers, MLX Engine, or an external provider configured on the Hub.
  • This keeps a lighter machine useful as a full Tater UI/node while the stronger Hub handles GPU and model work.
Little Spud experience

Native chat with Tater-specific events

Little Spud is designed as a lightweight client for phones, tablets, laptops, and future apps. It does not need to run Tater locally.

  • Tool-call messages are streamed as soon as a tool starts, before the final answer.
  • Generated images and media return as artifacts, so the client can display the file and then animate the reply text below it.
  • TTS can use the Hub's configured voice, and STT can stream microphone audio to the Hub for transcription.
  • If the Hub decides the assistant should keep listening, it tells Little Spud to reopen the mic after the reply text and TTS playback finish.
Network notes

Use matching HTTP/HTTPS paths for browser clients.

LANHTTP

Local network pairing

For LAN testing, the QR payload can use the Hub's local HTTP URL such as http://tater.local:8501 or an IP address. Browser private-network rules can still require the Hub to allow CORS for Spud Link routes.

RemoteHTTPS

Reverse proxy and remote use

If Little Spud is opened over HTTPS, the Hub URL should also be HTTPS. Put the Hub behind the same public HTTPS route or configure Public / LAN URL so QR payloads point at the reachable address.