# CLI (/reference/cli)



```sh title="Terminal"
jinion [options]
jinion serve [--port <port>] [--stdio] [--origin <origin>]...
jinion mcp
```

Run it in the folder you want to work in. Without options, it starts a new conversation with the model and account
you used last.

## Flags [#flags]

| Flag                     | Does                                                                           | Example                |
| ------------------------ | ------------------------------------------------------------------------------ | ---------------------- |
| `-c`, `--continue`       | Opens the last conversation in this folder                                     | `jinion -c`            |
| `-m`, `--model <model>`  | Uses this model for the run: an alias such as `opus` or `sonnet`, or a full id | `jinion -m sonnet`     |
| `-e`, `--effort <level>` | Uses this effort for the run: `low`, `medium`, `high`, `xhigh` or `max`        | `jinion -e high`       |
| `--theme <light\|dark>`  | Skips detecting the terminal's background                                      | `jinion --theme light` |
| `--debug`                | Writes a log of the session to `~/.jinion/logs`; prints its path on exit       | `jinion --debug`       |
| `--demo`                 | Plays a scripted session without a model                                       | `jinion --demo`        |
| `--attach`               | Shows the conversations of the `jinion serve` running in this folder           | `jinion --attach`      |
| `-v`, `--version`        | Prints the version                                                             | `jinion -v`            |
| `-h`, `--help`           | Shows the help                                                                 | `jinion -h`            |

`--model` and `--effort` apply to one run. To change the default, use [`/model`](/models-and-accounts) in a session.

## jinion serve [#jinion-serve]

`jinion serve` runs Jinion without a screen, so that other apps can drive it. It takes the same flags as `jinion`,
such as `--demo` or `-m`, and these:

| Flag                | Does                                                                          | Example                              |
| ------------------- | ----------------------------------------------------------------------------- | ------------------------------------ |
| `--port <port>`     | Serves on this port; a free one when left out                                 | `jinion serve --port 4747`           |
| `--stdio`           | Serves the program that started it, over stdin and stdout                     | `jinion serve --stdio`               |
| `--origin <origin>` | Lets in a web page from this origin, such as a desktop app's; repeat for more | `jinion serve --origin app://jinion` |

Without `--stdio`, it serves on `127.0.0.1`, so only your machine reaches it, and it prints the address:

```sh title="Terminal"
$ jinion serve
jinion serves ~/code/shop at ws://127.0.0.1:53942
Clients find its token in ~/.jinion/servers/38262.json, which only you can read. jinion --attach shows it here; ctrl+c stops it.
```

A client needs the token from that file to connect. In the same folder, `jinion --attach` finds it on its own and
shows the conversations the server holds; ctrl+c leaves them running. ctrl+c in `jinion serve` stops it, saving its
conversations as `jinion` does when you quit.

## jinion mcp [#jinion-mcp]

`jinion mcp` gives another agent, such as Codex, Claude Code or Cursor, your team's decisions and the project map, as
an MCP server over stdin and stdout. The agent starts it; you add it once, as
[Codex, Claude Code and Cursor](/other-agents) shows:

```sh title="Terminal"
codex mcp add jinion -- npx -y @jinion/cli mcp
```

## Environment variables [#environment-variables]

| Variable        | Does                           | Default                              |
| --------------- | ------------------------------ | ------------------------------------ |
| `JINION_MODEL`  | Same as `--model`              | Your last `/model` pick, else `opus` |
| `JINION_EFFORT` | Same as `--effort`             | The model's default                  |
| `JINION_THEME`  | Same as `--theme`              | Detected                             |
| `JINION_DEBUG`  | `1` does the same as `--debug` | Off                                  |
| `JINION_HOME`   | Where Jinion keeps its data    | `~/.jinion`                          |

Flags win over environment variables, and both win over the saved choice.

## Examples [#examples]

Start where you left off yesterday:

```sh title="Terminal"
jinion -c
```

A quick question with a fast model:

```sh title="Terminal"
jinion -m haiku
```

Keep data for a separate setup apart, such as a test account:

```sh title="Terminal"
JINION_HOME=~/.jinion-test jinion
```
