Metadata-Version: 2.4
Name: nebula-cli
Version: 1.3.0
Summary: Nebula Cloud command line client and adaptive computer/server cockpit.
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.3.0

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.

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.3.0 is officially published only for Debian and Ubuntu on amd64. Wheels, RPMs, macOS packages, Windows packages, and arm64 packages are not part of the 1.3.0 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 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.
