---
title: CLI
description: The crow command-line tool for publishing, sharing and listing apps from a terminal. Install it from npm or run it with npx.
---

# CLI

`crow` is a thin client for the same API the MCP server and the dashboard use. It's published to npm as `crow-nest` and needs Node 20 or newer.

```bash
npx crow-nest login        # run it without installing
npm i -g crow-nest         # or install it; the command is then `crow`
```

`crow --version` prints the version. About once a day, after a command finishes, the CLI checks npm and prints one line if a newer version exists. It stays quiet with `--json`, when `CI` is set, or when `CROW_NO_UPDATE_CHECK=1`.

Set `CROW_API` to point the CLI at another API, for staging or local development (the default is `https://api.crow-nest.com`).

## Commands

| Command | What it does |
| --- | --- |
| `crow login` | Signs you in: prints a code and opens `crow-nest.com/device` to approve it. The token is kept in your system's keychain |
| `crow publish [dir]` | Builds and publishes the project in `dir` (default: the current folder). The first publish asks for a name and visibility and writes `.crow.json` with the app's ID |
| `crow share <app> [--public \| --link \| --org \| --private] [--add email] [--remove email]` | Changes who can open an app |
| `crow ls` | Lists your apps |
| `crow open <app>` | Opens the app's address in your browser |
| `crow whoami` | Prints which account you are signed in as (name, email, and company if you are in one) |
| `crow logout` | Removes the stored token |

## Building

`crow publish` works with projects, not just folders. It recognizes Vite, React, Next.js, Astro, SvelteKit, Nuxt and Remix, runs the project's build on your machine, checks the output will work on Crow Nest, and publishes it. Nothing is ever built on Crow Nest's servers. A plain folder of web files is published as is.

## .crow.json

After the first publish, `.crow.json` in your project holds the app's ID, so later `crow publish` runs update the same app. Commit it if your team publishes the same app; delete it to publish as a new app.
