For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

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

npm install -g @eesel/cli
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

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

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:

Chatting with your agent

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.

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), 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.

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:

See Claude Code & MCP clients.

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

How do I install the eesel CLI?

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.

Do I need an eesel account to use the CLI?

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.

Do I need the CLI?

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.

Can I use the eesel CLI in CI or a script?

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.

Can Claude Code, Cursor or Codex use the eesel CLI?

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.

Can I approve held actions from the CLI?

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.

Can I use eesel from Claude or ChatGPT instead of a terminal?

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 and Use eesel from ChatGPT.

Is it the same agent as the dashboard?

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

Last updated