Metadata-Version: 2.4
Name: nebula-cli
Version: 1.5.1
Summary: Nebula Cloud command center and reliable computer/server agent.
Project-URL: Homepage, https://nebulacoder.com
Project-URL: Documentation, https://docs.nebulacoder.com/cli
Project-URL: Issues, https://nebulacoder.com/contact
Author: Nebula Coder
License: MIT
License-File: LICENSE
Keywords: cloud,nebula,systems,terminal,textual,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.10
Requires-Dist: backports-tarfile<2,>=1.2
Requires-Dist: cryptography<50,>=42
Requires-Dist: httpx<1,>=0.26
Requires-Dist: importlib-metadata<9,>=7
Requires-Dist: keyring<27,>=24
Requires-Dist: platformdirs<5,>=3.6
Requires-Dist: psutil<8,>=6.1
Requires-Dist: rich<16,>=13.9
Requires-Dist: textual<8,>=2.1
Requires-Dist: websockets<16,>=13
Provides-Extra: dev
Requires-Dist: build<2,>=1.2; extra == 'dev'
Requires-Dist: pytest-asyncio<2,>=0.24; extra == 'dev'
Requires-Dist: pytest<10,>=8.3; extra == 'dev'
Requires-Dist: respx<1,>=0.22; extra == 'dev'
Requires-Dist: ruff<1,>=0.9; extra == 'dev'
Provides-Extra: packaging
Requires-Dist: pyinstaller<7,>=6.11; extra == 'packaging'
Description-Content-Type: text/markdown

# Nebula CLI 1.5.1

Nebula CLI connects a Debian or Ubuntu amd64 computer or server to Nebula Cloud. It provides an adaptive Textual dashboard, scriptable JSON commands, local diagnostics, device enrollment, project sync, Storage access, and Computers & Servers telemetry.

## Install

Download the installer before running it with root privileges:

```bash
curl -fsSL https://nebulacoder.com/cli/install.sh -o /tmp/nebula-cli-install.sh
sudo bash /tmp/nebula-cli-install.sh
```

The installer prefers Nebula’s fingerprint-pinned repository at `https://packages.nebulacoder.com/apt`. Until offline-signed repository metadata is published, it downloads the immutable amd64 bootstrap package and verifies its exact SHA-256 checksum before installing it.

The Debian package is named `nebula-cli`. Ubuntu also ships an unrelated VPN
package named `nebula`; both projects use `/usr/bin/nebula`. The Nebula CLI
package declares that conflict before unpacking, so remove the VPN package
first if APT reports it is installed. Nebula CLI never overwrites files owned
by the other package.

Update with:

```bash
sudo apt update && sudo apt install nebula-cli
```

Running the installer again performs the same idempotent update flow. `nebula update` prints this APT command; historical wheel flags remain parseable but never invoke pipx.

Nebula CLI 1.5.1 targets Debian and Ubuntu on amd64 and arm64. Each package
must be built on its matching architecture before the signed APT release can
be published. Wheels, RPMs, macOS packages, and Windows packages are not part
of the 1.5.1 release contract.

## First run and login

```bash
nebula
nebula login
nebula system enroll --name studio-pc --device-type computer
nebula whoami
nebula doctor
```

First run requires a device name and Computer or Server type. Theme, Cloud login, and enrollment are optional. Credentials use the operating-system keyring; mode-0600 file storage is an explicit fallback.

## Development

```bash
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
.venv/bin/ruff check src tests
.venv/bin/pytest
```

Build the official Debian artifact on an amd64 or arm64 host:

```bash
./packaging/build-deb.sh
```

From the repository root, prepare deterministic unsigned APT metadata:

```bash
npm run cli:apt:prepare
```

The offline owner then signs `dists/stable/Release`, returning:

- `nebula-archive-keyring.gpg`
- `dists/stable/InRelease`
- `dists/stable/Release.gpg`

Set the exact 40-character public-key fingerprint in `nebula.manifest.json` before publication. Never place the private archive key in this repository, the APT tree, or an immutable application release.

`npm run qa:cli-release-trust` uses disposable test keys only. The production publishability gate verifies the owner key, both signatures, all repository hashes, and the Debian control metadata.
