Nubo

the nubo cli

Your fleet, in the terminal.
One static binary.

Sign in with GitHub, then list every Project, Space, Frame, volume, and agent from a script, or open the full-screen TUI to tail logs and watch metrics live. Same fleet you see in the dashboard, a keystroke away.

read-only v1 · macos & linux · amd64 / arm64

one command

Install in under a minute.

$ curl -fsSL https://dl.withnubo.com/nubo-cli/install.sh | bash

macos & linux · amd64 / arm64 · no background daemon

  • Pin a release

    Lock to an exact version, or change where the binary lands.

    $ NUBO_VERSION=v0.1.0 \
      NUBO_INSTALL_DIR=~/.local/bin \
      curl -fsSL …/install.sh | bash
  • From source

    Already have a Rust toolchain? Build it yourself.

    $ cargo install --path .

sign in once

GitHub, then you're in.

nubo login opens your browser, signs you in with GitHub, and stores a scoped access token with 0600 permissions. On a CI runner, pipe a Personal Access Token in over stdin instead.

  • browser Sign in with GitHub. The token is minted and saved for you.
  • headless nubo login --token-stdin reads a token from stdin for CI.
  • scoped Revoke or rotate the token from your dashboard, anytime.
terminal ~/acme
$ nubo login
→ opening your browser to sign in with github…
✓ signed in as [email protected]
✓ token saved to ~/.config/nubo/credentials.json

$ nubo whoami
[email protected]  ·  plan: cloud  ·  shuttle.withnubo.com

scriptable

Every list, one command.

Each resource has an ls that prints a clean table. Add --json to get the raw API response back, ready to pipe into jq or a CI step.

  • nubo projects ls
  • nubo spaces ls --project <id>
  • nubo frames ls --project <id> --space <id>
  • nubo volumes ls --project <id>
  • nubo agents ls
  • nubo whoami
terminal ~/acme
$ nubo frames ls --project acme --space web
NAME      KIND     STATUS     ADDRESS
api       app      running    acme-api.nubo.onl
web       app      running    acme-web.nubo.onl
worker    app      building   -
cache     redis    running    -

$ nubo projects ls --json | jq -r '.[].name'
acme
internal-tools
playground

interactive

Or just run nubo.

With no arguments, the CLI opens a full-screen, greyscale TUI. Drill from Projects into Spaces into Frames, open a Frame for a tabbed view, and tail logs or watch seven days of metrics without leaving the keyboard.

nubo · acme / web / frames [email protected] · shuttle.withnubo.com
name kind status
api app running
web app running
worker app building
cache redis running
api overview logs metrics 7-day
cpu 0.3 / 1.0 vCPU
mem 412 / 512 MB
net 1.8 GB / day

keys

  • ↑ ↓ / j k Move or scroll
  • enter / l Open
  • esc / h Back
  • tab Switch view
  • 1 2 3 Overview · Logs · Metrics
  • f Follow logs
  • g / G Top · bottom
  • r Refresh
  • / Filter
  • ? Help
  • q Quit

configuration

Flag, env, or stored credentials.

Every setting resolves in the same order: an explicit flag wins, then the environment variable, then whatever nubo login saved. Point it at a self-hosted API with --api-url.

API URL --api-url NUBO_API_URL https://shuttle.withnubo.com
Token --token NUBO_TOKEN stored credentials
Output --json none tables

v1 is read-only

Built to browse.
Built to grow.

Today the CLI reads: it lists, opens, tails, and watches, and never changes anything. The auth, API client, and TUI shell are built to extend, and writes are next.

on the way

  • Deploys from the terminal
  • Environment variables
  • Exec into a Frame
  • Build logs
  • Shell completions

stop reading

Got an idea?
Ship it tonight.

Sign up with GitHub, pick a repo, and we'll take it from there. Seven days on the house, no card and no sales call required.