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

# Your first session

> Guided setup, a first task, approving a write, and undoing it.

## Start seri

```sh theme={null}
seri
```

seri opens a full-screen session and stays open. A finished turn returns you to the input box,
ready for another task, until you type `/exit` or press Ctrl-D.

## Guided setup

On a real terminal with no provider key configured anywhere, seri opens setup instead of the
input box. There are two ways through it.

**Bring your own key.** Pick a provider, paste its key, then pick a model. The model step is not
optional, because a key with no model does not leave seri in a runnable state. `/setup` gets you
back here later to add, replace or remove a key.

**Sign in to a hosted account.** `/signup` creates a seri account and `/login` signs in, after
which you manage no keys at all. A hosted account defaults to `openai/gpt-oss-120b` through
OpenRouter.

Setting a provider's environment variable before you launch skips setup entirely, so
`GROQ_API_KEY=… seri` goes straight to the input box. [Providers and
models](/get-started/models) covers all six providers and the three ways to pay for them.

## Give it a task

Type what you want done and press Enter.

```text theme={null}
Add a --json flag to the report command and cover it with a test.
```

You can start typing while seri is still starting up. What you type on the splash is queued and
submitted once the session is ready.

While a turn runs, the session shows elapsed time and token count live, and a panel for any
subagent the model dispatched.

## The permission gate

Every tool call passes a gate before it runs. `/mode` cycles the three settings, and Shift-Tab
does the same thing without typing.

| Mode           | What it allows                                                           |
| -------------- | ------------------------------------------------------------------------ |
| `approve-each` | every write and every command asks you first. This is the default.       |
| `auto`         | writes and commands run without asking                                   |
| `read-only`    | reads, greps and globs. It cannot write a file or run a command, at all. |

`/mode` takes no argument. It cycles `read-only` to `approve-each` to `auto` and back around, so
from the default one press gets you to `auto` and the next to `read-only`. There is no
`/mode auto`.

In `read-only`, a task that needs to write reports the block rather than failing, and the run
still exits successfully.

When a prompt offers to remember your answer, "always" is scoped to that one tool **and to the
project you are in**. For `write_file` and `edit` it persists across sessions. `/permissions`
shows what you have granted for this project and revokes it.
[Permissions](/guides/permissions) covers the whole model.

## Undo what it did

seri records your worktree into a shadow git repository as it works, independent of your own
branch, so undoing its work never touches your commit history.

| Command          | Acts on          | Does                                                        |
| ---------------- | ---------------- | ----------------------------------------------------------- |
| `/undo [n]`      | your files       | step the worktree back `n` file states                      |
| `/restore <sha>` | your files       | put back a specific checkpoint by sha                       |
| `/rewind [n]`    | the conversation | drop the last `n` turns and leave every file byte-identical |

`n` does not mean the same thing to both. `/undo` counts distinct file states, so three writes in
one turn are three steps. `/rewind` counts points in the conversation, so the same turn is one
step.

<Warning>
  `write_file` is always snapshotted first. A `bash` or `powershell` command is snapshotted only
  when it looks destructive, so a change made by a command seri does not recognise is folded into
  the next snapshot rather than reversible on its own. [Checkpoints and
  undo](/guides/checkpoints) has the exact rule.
</Warning>

## Stopping a turn

The first Ctrl-C cancels the turn that is running and leaves the session resumable. A second one
is fatal. Pressed while nothing is running, Ctrl-C is fatal immediately, because there is no turn
for it to cancel.

`/exit` and Ctrl-D at the input box both end the session. If a turn is in flight, either one
cancels it and waits for it to unwind before exiting, so a tool mid-write is never orphaned.
Either way you get the same token and cost summary, accumulated across every turn the session
ran.

## Where to go next

<CardGroup cols={2}>
  <Card title="Permissions" icon="shield" href="/guides/permissions">
    Modes, remembered approvals, and what counts as a write.
  </Card>

  <Card title="Check your code after a write" icon="circle-check" href="/guides/verify">
    Feed your own check command's diagnostics back to the model.
  </Card>

  <Card title="Subagents" icon="sitemap" href="/guides/subagents">
    Delegate part of a task to its own context window.
  </Card>

  <Card title="Slash commands" icon="list" href="/reference/commands">
    Every command in one table.
  </Card>
</CardGroup>
