> ## 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.

# Launching seri

> The flags that start a session, and the exit codes a session ends with.

```text theme={null}
seri [flags]
```

seri has one entry point. Running it opens a full-screen terminal session, and everything you do
with seri happens inside that session as a slash command. There are no subcommands. `/login`,
`/config`, `/permissions` and `/usage` are session commands rather than shell verbs.

## Flags

| Flag                             | Does                                                                        |
| -------------------------------- | --------------------------------------------------------------------------- |
| `-h`, `--help`                   | print usage and exit                                                        |
| `-v`, `--version`                | print the version and exit                                                  |
| `--continue`                     | open the most recent session instead of a new one                           |
| `--resume <id>`                  | open that session by id                                                     |
| `--max-turns <n>`                | per-task turn budget. Defaults to 500. `/max-turns` changes it mid-session. |
| `--profile <name>`               | use an isolated config, memory and session root                             |
| `--dangerously-skip-permissions` | run every tool with no approval prompt                                      |
| `--`                             | end flag parsing                                                            |

Flags work in any position. Everything after `--` is treated as text rather than as flags, which
is the documented escape when you need to pass something flag-shaped.

<Warning>
  `--dangerously-skip-permissions` turns off the approval prompt for the whole run. It is for
  attended, high-trust work. Cycling to `auto` with `/mode` inside the session is the same idea,
  with a keystroke to get back out of it.
</Warning>

## While it starts

seri shows a splash while it loads the model catalog and prepares the session. You can start
typing your first task there. What you type is queued and submitted once the session is ready, so
a slow catalog fetch never costs you the thought you were mid-way through.

## Exit codes

| Code | Meaning                                   |
| ---- | ----------------------------------------- |
| `0`  | the turn finished                         |
| `1`  | the turn did not finish                   |
| `2`  | a bad invocation, such as an unknown flag |

The line between `0` and `1` is whether the run accomplished anything, not whether anything was
printed.

* A turn that ends with no tool call exits `0`, unless every write it attempted was declined and
  nothing ran, which exits `1`.
* A `read-only` block is not a failure. It still exits `0`.
* The turn budget running out, and repeated denials, both exit `1`.
* Cancelling with Ctrl-C ends the turn as aborted rather than as an error, and leaves the session
  resumable.
* Quitting with `/exit` or Ctrl-D while a turn is in flight exits `1`, because the turn did not
  finish.

## Sessions

Every session is a file on disk. `--continue` opens the most recent one and `--resume <id>` opens
a specific one, both with the conversation intact.

`/clear` inside a session starts a new one rather than deleting the old one, so a session you
cleared is still reachable with `--resume`.

<Note>
  The checkpoint store keeps the 20 most recently touched sessions per project. An old session's
  conversation stays on disk indefinitely, but the checkpoint history behind its `/undo` and
  `/rewind` can be pruned once 20 newer sessions exist in the same project.
</Note>

## Profiles

`--profile <name>` swaps the whole profile root. Config, keys, sessions, checkpoints, memory,
agents, skills, rules, MCP servers and hooks all come from `~/.seri/<name>/` instead of
`~/.seri/`, and a named profile never falls back to the default root. `SERI_PROFILE` sets the
same thing, and the flag wins over it.

`/profile new <name>` creates one from inside a session. See
[Profiles](/guides/profiles) for what a profile is good for.
