Authentication
auth:login & auth:status
Authenticate with a personal access token. Reis stores your credentials locally in ~/.reis/config.yml and validates them against the API. Check your auth status any time with reis auth:status.
Reis (pronounced "ra-ees", Turkish / Arabic for "captain") is the Bahriya CLI. Create projects, deploy containers, manage secrets, and automate your entire infrastructure workflow from a single binary — no browser required.
Reis ships as a single self-contained binary for macOS and Linux, or as a multi-arch Docker image for CI/CD and container-first workflows. No PHP runtime, no interpreters, no package managers — download it, make it executable, and you are ready to go. Install via Homebrew, the shell installer, the Docker image, or download directly from the releases page.
Use Reis interactively with guided prompts that walk you through every option. Pass flags explicitly for scripted workflows. Or define your entire infrastructure in YAML files and apply them declaratively with reis apply -f. All three modes hit the same API and produce the same result.
Set the REIS_TOKENenvironment variable and Reis authenticates automatically — no interactive login required. Use exit code 2 for auth failures so your pipeline can distinguish between credential problems and application errors. Output as JSON or YAML for machine-readable results.
Every resource you manage in the console — organisations, projects, containers, memcached instances, registries, and secrets — is available as a Reis command. Create, list, show, update, and delete resources with the same semantics as the web console and API.
Commands
Reis commands follow a consistent resource:action pattern. Every command supports table, JSON, and YAML output formats.
Authentication
Authenticate with a personal access token. Reis stores your credentials locally in ~/.reis/config.yml and validates them against the API. Check your auth status any time with reis auth:status.
Organisations
List all organisations you belong to and switch your active organisation context. All subsequent commands operate against your selected organisation until you switch again.
Projects
Create projects with interactive region selection or explicit flags. Tail logs across every container in a project with reis project:logs -f— deploy on Bahriya, debug locally.
Containers
Full container lifecycle management. The interactive create flow walks you through image, port, resources, regions, environment variables, secrets, and autoscaling configuration. Tail container logs in real time with reis container:logs -f.
Secrets & Registries
Store encrypted secrets and private registry credentials from the command line. Secret values and registry passwords are prompted securely with hidden input — they never appear in your shell history.
Infrastructure as Code
Define resources in YAML and apply them with reis apply -f. Export existing resources to YAML with reis export. Supports multi-document files with create-or-update semantics.
Getting started
Three installation methods, all producing the same single binary.
$ brew tap bahriya/tap https://1x.ax/bahriya/library/homebrew-tap.git
$ brew install reis
Tap the Bahriya formula and install with two commands. Updates via brew upgrade.
$ curl -sSL https://get.bahriya.cloud/reis | bash
Detects your OS and architecture, downloads the right binary, and installs to /usr/local/bin.
$ docker pull 1x.ax/bahriya/library/reis:latest
$ docker run --rm -e REIS_TOKEN \
1x.ax/bahriya/library/reis:latest auth:status
Public multi-arch image (linux/amd64 and linux/arm64) with reis as the entrypoint. Pin a release with 1x.ax/bahriya/library/reis:<version>. Ideal for CI/CD — git and ca-certificates are pre-installed.
Select your platform, then copy the commands below to download, make executable, and install.
$ curl -Lo reis https://get.bahriya.cloud/reis/releases/latest/reis-darwin-arm64
$ chmod +x reis
$ sudo mv reis /usr/local/bin/reis
$ curl -sSL https://get.bahriya.cloud/reis/uninstall | bash
Removes the binary and ~/.reis config directory. Use --keep-config to preserve your credentials.
$ brew uninstall reis
Removes the Reis binary. Optionally remove ~/.reis manually to clean up credentials.
Infrastructure as code
Define your infrastructure once, apply it anywhere. Reis reads flat YAML files with a kind header and friendly field aliases.
kind: container
project: my-project
name: Web API
handle: web-api
image: ghcr.io/myorg/api:v2.1.0
port: "8080"
cpu: "500"
memory: "512"
healthcheck: /healthz
replicas: "2"
max_replicas: "8"
regions:
- falkenstein-1
- virginia-1
env:
NODE_ENV: production
LOG_LEVEL: info
$ reis apply -f infrastructure.yml
Applying container web-api...
Container "Web API" updated successfully.
$ reis apply -f infrastructure.yml --dry-run
Dry run — no changes will be made.
Would apply container: web-api
project: my-project
$ reis export container web-api \
--project my-project > backup.yml
Multi-document YAML files let you define secrets, registries, and containers in a single file separated by ---. Reis applies them in order with create-or-update semantics.
Observability
Tail container logs in real time without leaving your terminal. Follow a single container or stream every container in a project.
$ reis container:logs web-api -f
Fetching logs for container web-api...
2026-04-26T10:32:01Z INFO [web-api] Server started on :8080
2026-04-26T10:32:05Z INFO [web-api] GET /healthz 200 1ms
2026-04-26T10:32:12Z INFO [web-api] POST /api/orders 201 42ms
2026-04-26T10:32:18Z WARN [web-api] Slow query: 320ms
2026-04-26T10:32:25Z INFO [web-api] GET /api/orders 200 8ms
Use -fto follow — Reis polls every 5 seconds and deduplicates entries so you only see new lines. Adjust the time window with --range and cap results with --limit.
$ reis project:logs my-project -f
Tailing logs for project my-project (3 containers)...
2026-04-26T10:32:01Z INFO [web-api] Server started on :8080
2026-04-26T10:32:02Z INFO [worker] Connected to queue
2026-04-26T10:32:05Z INFO [web-api] POST /api/jobs 201 15ms
2026-04-26T10:32:06Z INFO [worker] Processing job abc-123
2026-04-26T10:32:09Z ERROR [worker] Job abc-123 failed: timeout
2026-04-26T10:32:10Z INFO [scheduler] Retry queued for abc-123
Stream logs from every container in a project, interleaved chronologically. Each line is tagged with the container handle so you can trace requests across services. New containers deployed while tailing are picked up automatically.
Omit flags and Reis walks you through every option with guided prompts, fetching available choices from the API.
Pass flags explicitly and pipe JSON output to jq, yq, or your own tooling for fully automated workflows.
Define infrastructure in YAML, commit it to version control, and apply it from CI/CD for repeatable deployments.
Secrets and passwords use hidden input. Tokens are stored locally. REIS_TOKEN env var keeps credentials out of shell history in CI.
Documentation
For detailed command references, usage examples, YAML spec schemas, and troubleshooting guides, head to the Reis CLI documentation on the Bahriya Hub.
Read the docs on the Hub →Install Reis in seconds and start managing your infrastructure from the command line.