> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kviria.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Echo state

> Your agent holds the conversation state; Kviria stays stateless.

Kviria holds no conversation memory. Every call is complete on its own -
which is what makes it safe to scale, shard, and retry. The conversation
state lives with your agent, and you echo the relevant parts back on
each call:

| Field        | What it is                                                            | When to send it                                                                           |
| ------------ | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `candidates` | The pending set from the last response                                | Whenever a decision returned candidates - echo verbatim, `pendingConfirm` marker included |
| `references` | Previously resolved `{gers, name}` entries, most-recent first (max 5) | Every turn, so "it" / "there" binds                                                       |
| `frame`      | The last street context ("this street")                               | When the user zooms into a street                                                         |
| `anchor`     | The user's current position                                           | Always                                                                                    |

## Why echo instead of memory

* **You own the conversation.** Your agent may hold context Kviria
  should never see; nothing server-side persists between your calls.
* **Retry-safe.** A lost response costs nothing - the state to replay
  the turn is on your side.
* **Portable.** The same conversation can move between your agent
  instances, or a user can resume where they left off, by handing you
  back the state you gave them.

Kviria's answers also carry stable ids (`gers`) for every place - echo
them back by `ref` instead of names whenever you can; a name can be
ambiguous, an id never is.
