Skip to content

Install and sign in

Install

bash
npm install -g @parsemend/cli

Node 20 or later. Check it landed:

bash
parsemend --version

The package is public on npm, and the binary it installs is parsemend.

Sign in

bash
parsemend login

The CLI opens a login request and prints two things:

  Open:  https://app.parsemend.com/cli/authorize
  Code:  K7M2-QP4X

Waiting for you to finish signing in…

It also tries to open that URL in your browser, with the code already filled in. That is a convenience, not a requirement — the URL and code are always printed, so an SSH session, a container or a machine with no display can be finished from a phone.

On the page, sign in however you normally do, check the code shown matches the one in your terminal, and approve. The CLI polls every 2 seconds and picks up the token:

Logged in as [email protected].

A login request lives for 15 minutes. After that, run parsemend login again.

No password is ever typed into the terminal. The CLI is not authenticating anybody: it sends you to the web app and collects the token the browser hands back, which is why every sign-in method the app supports — password, two-step, passkey — works here without the CLI knowing about any of them.

The token is scoped to you and labelled with the machine's hostname, so the approval page tells you which laptop is asking.

Signing in from CI

Nobody is present to approve a browser sign-in, so pass a token directly:

bash
parsemend login --token <token>

Sign out

bash
parsemend logout

This revokes the token on the server first, then deletes it locally. Deleting ~/.parsemend/config.json by hand is not signing out — the token stays valid, and a copy of a file nobody thought was a credential keeps working.

One gap worth knowing about: the panel has no screen listing the tokens you have issued. Withdrawing a machine's access means running parsemend logout on that machine, so a laptop you no longer have is a laptop whose token you cannot currently retire from the panel.

Where the token is stored

~/.parsemend/config.json, holding your personal API token in plaintext and, if you configure them, your own provider API keys. The file is written 0600 and its directory 0700, which restricts it on macOS and Linux. Windows has no equivalent here and is out of scope for this version.

Pointing at another deployment

The CLI ships knowing where hosted Parsemend lives — https://api.parsemend.com — so nothing ever asks you for a URL. To point at a self-hosted or staging deployment, set:

bash
export PARSEMEND_API_URL=https://api.parsemend.example.com

The environment variable wins over the saved config, so pointing at a local instance does not mean overwriting and later restoring your real one.

If you use the MCP server, set this in the MCP client's own environment block rather than your shell. The client launches parsemend as a subprocess, and a subprocess inherits the client's environment, not the one your terminal happens to have.

Staying current

bash
parsemend upgrade

That runs npm install -g @parsemend/cli@latest. The running process keeps the old bundle loaded, so it prints the version it started with and asks you to re-check with parsemend --version afterwards rather than reporting a version it cannot observe.

Finding an issue to work on

bash
parsemend issues
postlyra-12  error    3m ago  Undefined property $slug
stayblox-84  warning  2d ago  Timeout talking to the channel manager

2 issues. Run `parsemend fix postlyra-12` to start on one.

The first column is the id every other command and tool takes. Times are coarse on purpose — what matters when picking an issue is whether it is happening now or is a month stale.

FlagEffect
--project <slug>Only this project.
--status <status>Issue status, or all. Default: unresolved.
--limit <n>How many to list. Default 25, maximum 100.
--jsonThe raw rows, for scripting.

postlyra-12 is the form worth remembering, but a numeric id and a full issue URL are both accepted anywhere an issue is named.

Next: connect your agent session.

Parsemend, by MAVA Design