> For the complete documentation index, see [llms.txt](https://docs.eesel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eesel.ai/apis-and-developer-resources/cli.md).

# The eesel CLI

The eesel CLI puts your teammate in your terminal. Chat with it, manage agents, read and write files, wire up automations, and pull task data, all without opening the dashboard.

It's the same agent either way. Anything you set up in the CLI shows up in the dashboard, and the other way round.

## Installing

```bash
curl -fsSL https://dashboard.eesel.ai/eesel-cli/install | sh
```

Needs Python 3.8 or newer and `curl`. It installs to `~/.local/bin`, and warns you if that isn't on your `PATH`.

To pin a specific version:

```bash
curl -fsSL https://dashboard.eesel.ai/eesel-cli/install | sh -s -- --version v0.5.0
```

## Logging in

```bash
eesel login      # opens your browser to authenticate
eesel whoami     # who you're signed in as, and which workspace
eesel logout     # clear stored credentials
```

## Chatting with your agent

```bash
eesel new                        # start a new session
eesel chat "how do I reset a password?"   # send one message
eesel chat                       # no message opens the interactive prompt
```

There's no saved "current agent". Scope each command to the agent you want, in whichever way suits you:

```bash
eesel chat "..." --agent 3f8a1c     # a flag
EESEL_AGENT=3f8a1c eesel chat "..." # an environment variable
eesel agents 3f8a1c tasks list      # or as a path
```

If your workspace only has one agent, it's used automatically. On a terminal with several, you'll be asked which one. In a script, name one.

### The interactive prompt

Run `eesel chat` with no message and you get a prompt with history and line editing. Slash commands:

| Command      | What it does                                     |
| ------------ | ------------------------------------------------ |
| `/new`       | Start a new session                              |
| `/sessions`  | List your sessions                               |
| `/agents`    | List your agents                                 |
| `/show`      | Print this session's history                     |
| `/tasks`     | List recent workspace tasks, across all channels |
| `/task <id>` | Print one task's transcript                      |
| `/help`      | List these commands                              |
| `/quit`      | Exit                                             |

### Sessions

Sessions persist, so you can pick a conversation back up.

```bash
eesel sessions list
eesel sessions use <session_id>
eesel sessions show            # defaults to the active session
eesel sessions remove <session_id>
```

## Managing agents

```bash
eesel agents list
eesel agents show <agent_id>
eesel agents show <agent_id> --instructions   # just the instructions, pipeable
eesel agents create --name "Support agent"
eesel agents set <agent_id> --name "New name"
eesel agents remove <agent_id>
```

## Knowledge and files

```bash
eesel files list --agent <agent_id>
eesel files show <key>
eesel files add --title "Returns policy" --content-file ./returns.md
eesel files export --file-key <key> --format md -o ./out.md
eesel files remove <key>
```

You can also control which files an agent can reach:

```bash
eesel files acl show <agent_id>
eesel files acl set <agent_id> --prefix policies/
```

{% hint style="warning" %}
`files acl set` **replaces** the agent's list rather than adding to it. Pass every prefix you want it to keep.
{% endhint %}

## Integrations and actions

```bash
eesel integrations list
eesel integrations available
eesel integrations show <integration>
eesel integrations connect <integration>
eesel integrations sync <integration>
eesel integrations sync-status <integration>
eesel integrations remove <integration>
```

Actions live under each integration:

```bash
eesel integrations <integration> actions list
eesel integrations <integration> actions enable <action>
eesel integrations <integration> actions disable <action>
eesel integrations <integration> actions set <action> ...
```

## Automations and schedules

```bash
eesel automations triggers list
eesel automations triggers registry        # every trigger available to you
eesel automations triggers add ...
eesel automations triggers remove <id>

eesel automations schedules list
eesel automations schedules add ...
eesel automations schedules fire <id>      # run one now
eesel automations schedules remove <id>
```

See [Automations and Schedules](/automations-and-schedules/automations-and-schedules.md) for what these do.

## Skills

```bash
eesel skills list
eesel skills list --available    # what you could install
eesel skills show <skill>
eesel skills add <skill>
eesel skills set <skill> ...     # merges into the existing config
eesel skills remove <skill>
```

See [Skills](/skills/skills.md).

## Tasks and analytics

```bash
eesel tasks list --agent <agent_id> --limit 50
eesel tasks count
eesel tasks show <task_id>
eesel tasks analytics
eesel tasks export               # CSV, emailed to you when it's ready
```

## MCP servers

Connect external MCP servers, and get a token for pointing an MCP client at eesel.

```bash
eesel mcp list
eesel mcp add ...
eesel mcp enable <server>
eesel mcp disable <server>
eesel mcp token         # workspace token for an MCP client's Authorization header
eesel mcp remove <server>
```

## Workspace, billing and notifications

```bash
eesel workspace show
eesel workspace members
eesel workspace set name "New name"
eesel workspace set billing-limit 500

eesel billing show          # also: show usage | show license | show mode
eesel billing list invoices
eesel billing list spend

eesel settings notifications show
eesel settings notifications enable
eesel settings notifications disable
```

Billing commands are read-only. See [Pricing](/pricing/overview.md).

## Scripting

| Flag             | What it does                                                             |
| ---------------- | ------------------------------------------------------------------------ |
| `--json`         | Machine-readable output. Lists stream as NDJSON when piped               |
| `--fields a,b,c` | With `--json`, keep only these keys                                      |
| `--plain`        | Tab-separated output on the commands that support it, like `agents list` |
| `--dry-run`      | Print the request that would be sent, without sending it                 |

`eesel schema` prints the whole command surface as JSON, including flags and endpoints, which is handy for generating wrappers or checking what a version supports.

Environment variables: `EESEL_AGENT` to scope a command to an agent, `EESEL_SESSION` to pin a session, and `EESEL_OUTPUT=json` instead of passing `--json` every time.

## Where your data lives

```
~/.config/eesel/credentials.json     your login
~/.config/eesel/sessions/            one file per session
~/.config/eesel/current.json         which session is active
```

Credentials are written so only your user can read them.

## Commands that have moved

If you've used an older version, a few things have changed. The CLI tells you what to use instead, but for reference:

| Old                          | Now                                                                                                                         |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `eesel agents use <id>`      | Gone. There's no saved active agent, so scope each command with `--agent`, `EESEL_AGENT`, or the `eesel agents <id> …` path |
| `eesel agents unset`         | Gone, for the same reason                                                                                                   |
| `eesel documents …`          | `eesel files …`                                                                                                             |
| `eesel triggers …`           | `eesel automations triggers …`                                                                                              |
| `eesel schedules …`          | `eesel automations schedules …`                                                                                             |
| `eesel sessions delete`      | `eesel sessions remove`                                                                                                     |
| `eesel tools …`              | `eesel integrations <integration> actions …`                                                                                |
| `eesel instructions <agent>` | `eesel agents <id> show --instructions`                                                                                     |

## Common questions

<details>

<summary>Do I need the CLI?</summary>

No. Everything the CLI does can be done in the dashboard. It's for people who'd rather work in a terminal, and for scripting things you'd otherwise do by hand.

</details>

<details>

<summary>Can I use it in CI or a script?</summary>

Yes. Use `--json` for parseable output, scope commands with `EESEL_AGENT` or `--agent` rather than relying on any saved state, and `--dry-run` to check a command before it runs for real.

</details>

<details>

<summary>Is it the same agent as the dashboard?</summary>

Yes, exactly the same. The CLI is another way in, not a separate copy. Changes made either way apply everywhere your agent works.

</details>

## Related

* [Network Access](/apis-and-developer-resources/network-access.md) to let your agent reach your own APIs
* [Custom Skills](/skills/custom-skills.md) for building your own workflows
* [Automations and Schedules](/automations-and-schedules/automations-and-schedules.md) for triggers and schedules
* The CLI source is on [GitHub](https://github.com/eeselapp/eesel-cli)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.eesel.ai/apis-and-developer-resources/cli.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
