Search

↑↓ to move↵ to openesc to closetop 6 documentation results

Book a demoTry TokenTriage

In development · Explore the product preview. Join the launch list or book a walkthrough.

Browse docs

Read several instances at once

Point one dashboard at its peers and read merged totals. What is merged, what is disclosed instead of merged, and what never crosses a boundary.

How-to guideLast updated

On this page

You run TokenTriage in three regions. Each keeps its own ledger on its own volume, which is what makes each one fast and independent, and it means no single dashboard shows you the fleet’s spend.

Federation fixes that at read time. One instance becomes a hub, fans a query out to its peers, and merges the answers. Nothing is copied and nothing is centralised; the merge happens per query and is thrown away.

Point a hub at its peers

instances:
  - name: us-east
    url: https://tt-use.internal        # https, or a loopback address
    token_env: TT_PEER_USE_TOKEN        # the NAME of an environment variable
  - name: eu-west
    url: https://tt-euw.internal
    token_env: TT_PEER_EUW_TOKEN

Each peer needs a bearer token on its own admin plane; the hub presents one when it calls. token_env names an environment variable and the hub reads it at call time, so no peer credential is written into your config or served back by the config API.

Configuring at least one peer adds the Fleet and Instances entries to the hub’s sidebar. An instance with no peers has neither, and a direct visit to /fleet reports a single node rather than an error.

The peers themselves need no special configuration. A peer is an ordinary instance whose admin plane the hub can reach and authenticate against.

What merging does and does not do

The useful part of federation is what it declines to do quietly.

A disagreement about prices is disclosed, not averaged. If peers are running different pricing snapshots, a merged total carries a mixed-snapshot disclosure. You see that the figure spans two price tables rather than receiving a number that silently blends them.

A peer that does not answer is a labelled exclusion. A dead or slow peer produces a merged total that says how many of how many replicas answered, and which one is missing. A smaller total is never presented as a complete one.

Identity does not cross a boundary. There is no cross-instance trace stitching. A trace belongs to the instance that saw it, and a fan-out that appears to span regions is two traces rather than one. Do not expect a waterfall to follow a request across a peer.

A peer cannot take the hub down. A panic handling one peer’s response is contained, and a loop guard on the fan-out stops a mesh of hubs re-fanning to each other forever.

Read the Fleet surface

Fleet shows the roster by heartbeat age, the measured clock-skew bound between replicas, and the coverage of the last merged read. Liveness is the age of the last heartbeat rather than a green dot somebody chose to draw.

Operate’s multi-replica and scale-out page owns running a fleet: provisioning, the shared coordination store, fleet list and fleet decommission, and what is not coordinated across replicas. This page is only the read side.

Choosing between federation and a shared store

They solve different problems and are often both wanted.

You want Use
one view of spend across regions federation, on a hub
a limit that counts across replicas a shared coordination store
a replica to survive another’s outage neither — each is already independent
one trace spanning two regions not available

Federation is read-time and needs nothing shared. A coordinated limit needs replicas writing to common state, which is distributed governance.

What a hub actually asks its peers

The hub calls the same management-API read endpoints you would call yourself, with a bearer token, and merges the envelopes. Which means three things follow.

The peer’s role model applies. A hub token with the viewer role reads what a viewer reads.

The peer’s query budget applies. A hub’s fan-out is subject to each peer’s deadline and row cap, which is why a slow peer becomes an exclusion rather than a stall.

Nothing is stored on the hub. There is no replica of a peer’s ledger and no cached copy of its rows; ask again and the hub asks again.

What can go wrong

A peer is permanently excluded. Check reachability first, then the token. The hub reads token_env at call time, so a variable that is missing from the hub’s environment produces a credential-less call and a 401 from the peer.

Totals look low. Read the coverage line. An excluded peer is disclosed rather than silently dropped, and that disclosure is the answer.

A mixed-snapshot chip appears and will not go away. The peers are on different pricing snapshots, which usually means different binary versions. Align them, or accept the disclosure as accurate.

Fleet is absent from the sidebar. No peer is configured. Federation is opt-in and a single instance has nothing to fan out to.