> 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 runs your AI agent from a terminal. Install with npx, sign in once, then connect apps, add knowledge, set up automations and approve actions.

The eesel CLI puts your teammate in your terminal. Chat with it, set up a website chat bubble, connect your helpdesk, upload knowledge, wire up automations, and approve held actions, 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. Every command prints JSON, so an AI coding agent (Claude Code, Cursor, Codex) can run your whole setup for you.

## Installing

Nothing to install. With Node.js 18.17 or newer:

```bash
npx @eesel/cli init chat-bubble --site https://your-site.com
```

That works with no account: it creates a free anonymous workspace that lasts 7 days and `eesel login` later keeps it. See [Pricing](/pricing/overview.md) for the trial you get once you sign in. If you'd rather type `eesel` than `npx @eesel/cli`, either of these puts an `eesel` command on your PATH:

```bash
npm install -g @eesel/cli
```

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

The rest of this page writes `eesel ...`; `npx @eesel/cli ...` is the same thing.

## Logging in

```bash
eesel login      # opens your browser once; credentials are stored locally
eesel whoami     # who you're signed in as, and which workspace
eesel logout     # forget the stored credentials
```

You don't have to log in first. `eesel init` with no stored login creates an anonymous workspace and stores its credentials, so the setup commands work straight away; `eesel login` afterwards signs you in (or up) and makes that workspace yours, keeping everything in it. An anonymous workspace has $5 of usage and lasts 7 days; a claimed one gets the normal free trial and dashboard access. If your account already has a workspace, the login tells you and leaves both alone.

The link `eesel login` prints lasts five minutes. It opens the eesel sign-in page. Type your email; it then asks for an emailed code, your password, or a Google sign-in, whichever your account uses, and shows an Authorize button for the CLI. A browser with no eesel session is fine; that's the normal first run. Add `--no-browser` on a machine with no browser and open the link elsewhere.

Credentials land in `~/.config/eesel/credentials.json`, readable only by you. To point the CLI at a workspace without a browser (CI, a server), set `EESEL_API_URL` and `EESEL_API_TOKEN` instead; they take precedence over the stored login.

## The five-minute setup

```bash
eesel init chat-bubble --site https://your-site.com   # no account needed
eesel login                                            # keep the workspace
```

`eesel init chat-bubble` picks or creates an agent, adds the chat bubble channel and prints the embed snippet to paste into your site. With a site (`--site`, or the `homepage` field in the repo's `package.json`) the agent also starts reading it, so the bubble answers from your own pages. Plain `eesel init` only picks or creates the agent and connects nothing. Everything is safe to re-run: existing setup is reused, never duplicated.

Then test it without leaving the terminal:

```bash
eesel chat "what does this site do?"
eesel files upload ./refund-policy.pdf
eesel chat "what's our refund policy?"
```

## Chatting with your agent

```bash
eesel chat "how do I reset a password?"   # send one message, stream the reply
eesel chat                                # no message opens the interactive prompt
eesel new --name "refunds"                # start a fresh, named conversation
```

Conversations persist between commands: a plain `eesel chat "..."` keeps talking in the current one. If it returns nothing, that conversation has hit an error; `eesel new` starts a fresh one and the next `eesel chat` works again. `eesel sessions list` shows them, `eesel sessions use <id>` switches, `eesel sessions show` prints one.

In the interactive prompt, `/new`, `/sessions`, `/agents`, `/show` and `/quit` do what they say.

Anything not listed on this page is something you ask the agent for in chat: searching your knowledge, running an analysis, emailing someone, checking back on something tomorrow.

## Setting up and observing

These are the dashboard's buttons, from the terminal. They're free; only chat is billed work.

```bash
eesel status                                   # what's connected, whether its content is downloaded, your plan
eesel integrations                             # everything the agent is wired to
eesel integrations connect website --url https://your-site.com
eesel integrations connect chat-bubble         # add the chat bubble, print the snippet
eesel integrations connect                     # what this workspace can connect, and how
eesel integrations connect <platform>          # Zendesk, Freshdesk, Gorgias, Intercom, Slack, ... (a person approves it in that tool)
eesel integrations sources <platform>          # what that platform's sources hold: help center, macros, tickets
eesel integrations download list               # copy a connected source into eesel knowledge: list, start <platform>, status <platform>
eesel integrations <platform> actions          # every action on that platform, with its approval setting
eesel integrations search <app>                # thousands more connectable apps beyond the list above
eesel integrations api check                   # custom API access: check, link, test
eesel automations                              # what the agent does on its own: list, enable <platform> <key> --instructions "...", disable, create, run <id>
eesel instructions                             # the agent's standing rules: show, insert --at end --text "...", replace
eesel files ls                                 # your files: upload <path>, ls, download <key>
eesel approvals                                # held actions waiting on a human: list, approve <id> [--always], deny <id>
eesel activity                                 # what the agent has been doing, newest first
eesel billing                                  # live billing state, read-only
eesel invite <email>                           # invite a teammate
```

Run any command with `--help` for that command's reference, `eesel --help` for the whole list.

Writes from the CLI, such as an instruction edit, an automation or a file upload, follow the same action permissions as everything else. A write whose action is set to ask a person first is held until someone approves it (see [Actions and approvals](/instructions-and-memory/actions-and-approvals.md)), and a viewer's writes are always held for an editor. `eesel approvals` lists anything held and works on every kind of login, including an anonymous workspace. If `eesel integrations connect` answers that it's waiting for approval, that one may not be listed there, so check `eesel status` instead, and if a person needs the link to approve it in the tool, ask: `eesel chat "give me the connect link for <platform>"`.

## Working with several agents

Commands act as one agent. Pass `--agent <id-or-name>` for one invocation, or set a default with `eesel agents use <agent>`. A one-agent workspace needs neither.

```bash
eesel agents                     # the workspace's agents
eesel agents create "Sales bot"  # a new one
eesel agents use "Sales bot"     # make it the default
```

## Using eesel from Claude Code, Cursor or another MCP client

Every workspace is also an MCP server. One command prints everything a client needs, including a ready-to-paste `claude mcp add` line:

```bash
eesel mcp token
```

See [Claude Code & MCP clients](/apis-and-developer-resources/claude-code-and-mcp-clients.md).

## Scripting

| Flag                   | What it does                                                       |
| ---------------------- | ------------------------------------------------------------------ |
| `--agent <id-or-name>` | Act as this agent for one command                                  |
| `--fields a,b.c`       | Keep only these keys in the output                                 |
| `--dry-run`            | Print the exact server call a write would make, without sending it |
| `--help`               | The full reference for a command                                   |

Output is JSON on purpose: single results are pretty-printed, lists are one object per line. Errors are one JSON line on stderr, `{error, hint, retryable}`; exit code 1 is a usage error, 2 a runtime one. The `hint` says what to run instead, which is what makes the CLI usable by an AI agent without a human reading the docs.

Environment variables: `EESEL_API_URL` and `EESEL_API_TOKEN` configure the CLI without a login (this is how the eesel sandbox and CI drive it), and `EESEL_AGENT_ID` picks the agent there.

## If you installed the CLI before September 2026

The earlier `eesel` command was a standalone Python script. It's retired for customer use; the npm package above replaced it. Check `which eesel` first: if it points at `~/.local/bin/eesel`, that is the old script, and re-running the install line leaves it answering. Delete it, then install from npm and log in again. Verbs it had for skills, tasks and workspace settings are now things you ask the agent for in chat, and the CLI tells you the new spelling if you type an old one.

## FAQ

<details>

<summary>How do I install the eesel CLI?</summary>

You don't have to install anything. With Node.js 18.17 or newer, `npx @eesel/cli <command>` runs it. To type `eesel` instead, run `npm install -g @eesel/cli` or the install script in [Installing](#installing).

</details>

<details>

<summary>Do I need an eesel account to use the CLI?</summary>

No. `eesel init` with no stored login creates a free anonymous workspace, so the setup commands work straight away. Run `eesel login` afterwards to sign in or sign up and keep everything in that workspace.

</details>

<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, for scripting, and for letting an AI coding agent do your setup.

</details>

<details>

<summary>Can I use the eesel CLI in CI or a script?</summary>

Yes. Output is already JSON, scope commands with `--agent` or `EESEL_AGENT_ID` rather than relying on a saved default, and use `--dry-run` to check a write before it runs for real.

</details>

<details>

<summary>Can Claude Code, Cursor or Codex use the eesel CLI?</summary>

Yes. Every command prints JSON, and every error comes with a `hint` that says what to run instead, so an AI coding agent can run your whole setup and read its own results. See [Set up from Claude Code or the terminal](/getting-started/set-up-from-a-coding-agent.md).

</details>

<details>

<summary>Can I approve held actions from the CLI?</summary>

Yes. `eesel approvals` lists anything waiting on a person, `eesel approvals approve <id>` runs it, and `eesel approvals deny <id>` refuses it. It works on every kind of login, including an anonymous workspace.

</details>

<details>

<summary>Can I use eesel from Claude or ChatGPT instead of a terminal?</summary>

Yes. Your workspace is also an MCP server, so Claude, Cursor and other MCP clients can talk to your agent. See [Use eesel from Claude and other AI assistants](/apis-and-developer-resources/use-eesel-from-claude-and-other-assistants.md) and [Use eesel from ChatGPT](/apis-and-developer-resources/use-eesel-from-chatgpt.md).

</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

* [Claude Code & MCP clients](/apis-and-developer-resources/claude-code-and-mcp-clients.md) to use your agent from an MCP client
* [Use eesel from Claude and other AI assistants](/apis-and-developer-resources/use-eesel-from-claude-and-other-assistants.md) and [Use eesel from ChatGPT](/apis-and-developer-resources/use-eesel-from-chatgpt.md)
* [Set up from Claude Code or the terminal](/getting-started/set-up-from-a-coding-agent.md) for a full setup in commands
* [Network Access](/apis-and-developer-resources/network-access.md) to let your agent reach your own APIs
* [Automations and Schedules](/automations-and-schedules/automations-and-schedules.md) for triggers and schedules
* The package on [npm](https://www.npmjs.com/package/@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 following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

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.
