# Use Liya Meeting

Get live answers to questions asked in your meetings, after everyone has been told Liya is listening, with a transcript you control.

Liya Meeting listens to a meeting you are in, writes a transcript and puts an answer card beside each question it hears. It runs on an ordinary console page at `/meeting`, and a **Liya is listening** bar stays on the page for as long as audio flows. Nothing listens until you have recorded consent, and no audio is kept.

> [!PREVIEW]
> Liya Meeting is still being built. Today the voice service is a separate, opt-in image, Recall searches only your own meetings, and the encrypted raw archive is opened from the command line. Expect labels and limits to change.

## Prerequisites

- The voice service is running: the `voice` compose profile, with `TICKETIQ_VOICE_URL` pointing at it. See the **Voice service (Liya Meeting)** section of `DEPLOYMENT.md`, which ships with a self-hosted installation.
- Someone with the `meetings.manage` permission has turned Liya Meeting on for the workspace: `PUT /api/meetings/config` with `{"enabled": true}`. Until then the page says it is off.
- You have `meetings.assist` to run a meeting. `recall.search` lets you search your own meetings, and `archive.read` lets you open a raw archive. `archive.read` is never granted by a wildcard or an owner role; it is given to a person by name.

## Start a meeting

1. Open **Liya Meeting** (`/meeting`).
2. Choose **Copy announcement**, then say it aloud at the start of the meeting or paste it in the meeting chat.
3. Under **Consent rule**, keep **Everyone must agree (all-party)** unless the law where you and every participant are allows one party to consent.
4. Tick **I told every participant that Liya is listening** and, under all-party consent, **Everyone agreed**.
5. Under **How you told them**, say in your own words how you did it, for example "I said it at the start and posted it in the chat".
6. Set the **Title**, the **Voice** Liya answers in and **What to keep** (see below).
7. Choose **Start listening**. Your browser asks for the microphone. To include a call that plays in another tab, tick **Also listen to a browser tab's audio (you choose the tab)** first.

**Start listening** refuses until the consent boxes are ticked, and the consent record is saved before any audio leaves the page.

## During the meeting

- Lines appear under **Transcript** as the voice service commits them.
- A question heard in the meeting gets a card under **Answers**. Type your own question in **Type a question** and press Enter.
- Choose **Elaborate** on a card for the fuller answer.
- Choose **Stop** to end listening. The bar goes, and the page says Liya is no longer listening.

Answers go through the governed path as you: personal data is redacted from the transcript and the question before the model sees them, and the agent's budget is checked first. When the budget is spent the card says so and no model is called.

## What to keep

| Option | What is kept |
| --- | --- |
| Keep the transcript (30 days) | The redacted transcript and the answer cards, deleted after the workspace's retention (30 days by default, at most 90) unless a legal hold applies |
| Keep only that it happened | The meeting, its consent record and the shape of the conversation, without the words |
| Keep nothing | No transcript and no answers: the lines live in the server's memory only until the meeting ends |

Meetings are never distilled into Liya's memory. A person's erasure request also deletes their meetings.

## Search your own meetings

Recall searches the redacted transcripts of meetings you ran, and nobody else's:

```bash
liya recall search "release date" --limit 5
```

The same search is `GET /api/recall/meetings?q=...`, and agents with the person's delegation can use the MCP tools `recall_search` and `recall_get`.

## Open a raw archive

When the workspace keeps an encrypted raw archive and you ticked **Also keep an encrypted raw archive (opened only with another person's approval)**, the meeting's events are sealed with the instance's key, or encrypted to the workspace's age recipient keys, in a hash-chained, signed manifest. Opening one needs `archive.read` and another person's approval, and each approval opens once.

1. Check the archive: `liya archive verify` exits 1 if the chain, a signature or an object does not match.
2. Ask to open a meeting: `liya archive request mtg_0123456789abcdef --reason "Dispute about the agreed date"`. The command prints the approval id.
3. Once someone else approves it, open it: `liya archive open mtg_0123456789abcdef --approval <id>`. For an archive encrypted to age keys, add `--identity FILE` to decrypt on your machine (the identity never leaves it), or `--out FILE` to save it.

## Next steps

- [Command-line reference](/docs/cli/reference)
- [Build agents](/docs/agents)
