Metadata-Version: 2.4
Name: orkestr-cli
Version: 0.4.0
Summary: CLI for the Orkestr deployment platform and sandboxes
Author-email: Orkestr <hello@orkestr.eu>
License-Expression: MIT
Project-URL: Homepage, https://orkestr.eu
Project-URL: Documentation, https://orkestr.eu/docs
Project-URL: Repository, https://github.com/orkestr/cli
Keywords: orkestr,cli,deploy,paas,idp
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
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 :: Software Development :: Build Tools
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: click>=8.1
Requires-Dist: httpx>=0.27
Requires-Dist: rich>=13.0
Requires-Dist: orkestr>=0.4.2

# orkestr-cli

CLI for the [Orkestr](https://orkestr.eu) deployment platform.

## Install

```bash
pip install orkestr-cli
```

## Quick start

```bash
# Authenticate with your API token
orkestr login

# From inside your app's git repo: detect name/repo/branch and create the project
orkestr init

# Build, deploy, and wait for the live URL
orkestr deploy .

# ...or deploy a named project
orkestr deploy my-api

# View logs / check health
orkestr logs my-api
orkestr health my-api
```

`orkestr init` writes a gitignored `.orkestr/config.json` linking the
directory to the project, so `orkestr deploy .` knows what to ship. It needs
an orkestr account and the repo's git provider (GitHub, GitLab, Bitbucket, or
Codeberg) connected to that account.

## Commands

| Command | Description |
|---|---|
| `orkestr login` / `logout` / `whoami` | Auth |
| `orkestr init` | Link the current directory to a new project (interactive) |
| `orkestr projects list\|create\|show\|update\|delete\|analyze` | Manage projects |
| `orkestr projects env-vars\|webhook\|webhook-toggle <project>` | Project env vars + git webhook |
| `orkestr envs list\|create\|update\|delete\|env-vars` | Manage environments |
| `orkestr deploy [project]` | Build + deploy, stream the pipeline, print the live URL (`.` = linked dir; `--detach` to not wait) |
| `orkestr deployments list\|show\|logs\|build-log\|rollback` | Deployment history |
| `orkestr functions list\|show\|create\|update\|deploy\|delete` | Serverless functions |
| `orkestr functions logs\|invoke\|env-vars\|metrics\|rotate-key` | Function ops |
| `orkestr addons list\|add\|show\|delete\|backups\|backup\|download` | Add-ons (Postgres/Redis) |
| `orkestr addons auto-backup\|backup-info\|delete-backup` | Backup config |
| `orkestr logs\|stats\|health <project>` | Runtime container logs / stats / health |
| `orkestr metrics\|app-health\|deployment-stats <project>` | Request metrics, app health, deploy stats |
| `orkestr sleep\|wake <project>` | Manually sleep/wake a container |
| `orkestr domains list\|verify` | Custom domains |
| `orkestr registry list\|scan\|delete` | Docker registry images |
| `orkestr activity` / `orkestr dashboard` | Audit log + summary |
| `orkestr notifications list\|read\|read-all` | Notifications |
| `orkestr tokens list\|create\|delete` | API tokens |
| `orkestr groups list\|show\|create\|delete\|add\|remove` | Project groups (workspaces) |
| `orkestr connections list\|repos\|disconnect` | Git provider OAuth connections |
| `orkestr sbx create\|list\|info\|exec\|shell\|metrics\|pause\|resume\|kill` | Sandboxes - isolated ephemeral Linux VMs |

## Sandboxes (`orkestr sbx`)

The same binary drives [orkestr sandboxes](https://orkestr.eu/sandboxes) -
isolated, ephemeral Linux VMs for running untrusted or agent-generated code.
Your `orkestr login` token drives them too (a default-scoped token, or one
that carries `sandboxes:read` / `sandboxes:write`).

```bash
# create a Python sandbox with restricted egress
orkestr sbx create python-3.12 --network restricted

# run a command, stream its output, inherit its exit code (composes in scripts)
orkestr sbx exec sbx_01H... "python -c 'print(2**10)'"

# park it between turns, then pick it back up
orkestr sbx pause sbx_01H...
orkestr sbx resume sbx_01H...

# live usage, then terminate
orkestr sbx metrics sbx_01H...
orkestr sbx kill sbx_01H...
```

`orkestr sbx exec` exits with the command's own exit code. Add `--json` to any
read command (`list`, `info`, `metrics`, `create`) for machine-readable output.

All commands support `--json` for raw JSON output.

PyPI project page: [pypi.org/project/orkestr-cli](https://pypi.org/project/orkestr-cli/)

## Documentation

Full docs at [orkestr.eu/docs](https://orkestr.eu/docs)
