> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nebyoulous.space/llms.txt
> Use this file to discover all available pages before exploring further.

# CLI overview

> Install nebyoulous, sign in, and learn the conventions every command shares.

The `nebyoulous` CLI covers the parts of the workflow that live on your disk:
inspecting camera cards, managing integration sets, and syncing frames. It
also runs an [MCP server over stdio](/mcp/local).

## Install

The CLI needs Node.js and npm. Releases are built and tested on Node 22. Each
`cli-v<version>` GitHub release has an npm tarball. The repository is private
for now, so use the GitHub CLI to download the latest one:

```bash theme={null}
TAG=$(gh release list -R deweyjose/lumigraph --json tagName \
  --jq '[.[].tagName | select(startswith("cli-v"))][0]')
gh release download "$TAG" -R deweyjose/lumigraph -p 'nebyoulous-cli-*.tgz'
npm install -g ./nebyoulous-cli-*.tgz
nebyoulous --version
```

To upgrade, run the same commands again. Read the release notes first: they
call out breaking changes, such as 0.0.6 needing a fresh `nebyoulous login`.

> [!NOTE]
>
> Tokens go in the OS keychain through `keytar`. macOS and Windows work out of
> the box. On Linux, install `libsecret` (`sudo apt install libsecret-1-0` on
> Debian and Ubuntu).

## Sign in

```bash theme={null}
nebyoulous login
```

**1. The CLI prints a code and opens your browser**

It opens the approval page on `www.nebyoulous.space` and shows a short
code.

**2. You approve it in the web app**

Sign in if needed, check that the code matches, and approve.

**3. The CLI stores the session**

The CLI saves an access token and a refresh token in the keychain and
refreshes them as you use it.

| Flag | Use it for |
| - | - |
| `--no-browser` | SSH sessions and containers. The CLI prints the URL for you to open anywhere. |
| `--client-name <name>` | The name shown on the approval page, for example `"Observatory Pi"`. |
| `--web-url <url>` | Approving through another web deployment, such as a preview branch. |

Check the session with `nebyoulous whoami`. `nebyoulous logout` revokes the
refresh token and clears the keychain entries.

## Conventions

* **Topics use a colon.** Write `integration-sets:list`, not
  `integration-sets list`, and don't put `--` before a subcommand.
* **`--json` for scripts.** Commands that print results accept `--json` and
  write machine-readable output to stdout.
* **Destructive commands confirm.** `integration-sets:delete`,
  `:delete-folder`, and `:delete-assets` ask you to type a confirmation phrase.
  Pass `--yes` to skip it in scripts.
* **IDs or titles.** Most commands take an integration-set UUID. `sync --to-cloud` also accepts an exact title.

## Environment variables

| Variable | Default | Purpose |
| - | - | - |
| `NEBYOULOUS_API_URL` | `https://api.nebyoulous.space` | The API the CLI talks to. |
| `NEBYOULOUS_WEB_URL` | `https://www.nebyoulous.space` (`http://localhost:3000` for a local API) | The web app used for login approval. |
| `NEBYOULOUS_STATE_DIR` | `~/.nebyoulous/state` | Where sync manifests go when the source folder is read-only. |

The CLI keeps one session at a time. Signing in against another API replaces
your production session.

## Commands

| Command | What it does |
| - | - |
| `login`, `whoami`, `logout` | Manage your session. |
| `devices` | List mounted volumes that look like camera media. |
| `scan <path>` | Summarize a folder and peek at FITS headers. Read-only. |
| `integration-sets:*` | List, create, inspect, and delete sets and their files. |
| `sync` | Upload a folder to a set, or mirror it to a local folder. See [Sync frames](/cli/sync). |
| `mcp:serve` | Run the [stdio MCP server](/mcp/local). |

Every flag for every command is in the [command reference](/cli/commands).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.