Skip to main content
With mocli, you can manage your mogenius clusters, browse Kubernetes resources, stream logs, and set up port-forwarding — all from your terminal. The CLI includes an interactive Terminal UI (TUI) that provides k9s-style navigation without requiring a local kubeconfig. Authentication is handled through the mogenius platform, giving you secure access to any connected cluster from anywhere.

Installation

Mac, Linux

Use homebrew to install mocli:
brew tap mogenius/mocli
brew install mocli
On Linux with a headless machine, mocli requires a browser for the initial login. After the first login, your session persists locally.

Windows

scoop bucket add mocli https://github.com/mogenius/homebrew-mocli
scoop install mocli

Getting Started

You need a mogenius account to use mocli. If you don’t have one yet, sign up here.

Login

Run the following command to authenticate. Your browser will open automatically to complete the login:
mocli login
Your session is stored locally, so you only need to log in once per machine.

Terminal UI

Launch the interactive TUI to browse and manage your resources:
mocli
The TUI provides a visual interface for navigating your mogenius organization, clusters, and Kubernetes resources. All keybindings are displayed at the bottom of each screen. The TUI follows a hierarchical navigation pattern: Organization → Cluster → Namespace → Resources
KeyAction
Arrow keysMove up/down
EnterSelect / drill down
EscGo back
qQuit
/Filter list
:Command mode (switch resource types)

Browsing Resources

Once you select a namespace, you’ll see a list of Pods by default. Use command mode (:) to switch between resource types:
  • :pods or :po — Pods
  • :deployments or :deploy — Deployments
  • :services or :svc — Services
  • :statefulsets or :sts — StatefulSets
  • :daemonsets or :ds — DaemonSets
  • :jobs — Jobs
  • :cronjobs or :cj — CronJobs
  • :configmaps or :cm — ConfigMaps
  • :secrets — Secrets
  • :ingresses or :ing — Ingresses
The TUI also supports custom resources (CRDs) — type the resource name in command mode to browse any resource type available in your cluster.

Viewing Logs

Select a Pod and press Enter to view its logs in real-time. If the Pod has multiple containers, you’ll be prompted to select one.
KeyAction
PgUp / PgDnScroll through logs
sToggle autoscroll
wToggle word wrap
EscReturn to resource list

Port Forwarding

From the logs view or resource list, press t to create a port-forward tunnel to the selected Pod. Enter the port mapping (e.g., 8080:80) and the tunnel will be established. Active tunnels persist while the TUI is running. Press Esc from the port-forward view to return to browsing while keeping tunnels open.

Shell Access

Select a Pod and press x to open an interactive shell session in the container. If the Pod has multiple containers, you’ll be prompted to select one. The shell session is tunnelled through the mogenius platform — no local kubeconfig or direct cluster access required.

CLI Commands

In addition to the TUI, mocli provides kubectl-style CLI commands for scripting and automation.

Context Management

Before using resource commands, set up your context to specify which organization, cluster, and namespace to target:
# Interactive setup — select org, cluster, and default namespace
mocli config use-context

# Non-interactive setup
mocli config use-context --org acme --cluster prod -n acme-staging

# Show current context
mocli config current-context

# List available organizations and clusters
mocli config list
The context is stored locally and used by all resource commands. You can override it per-command with --org, --cluster, or -n flags.

Listing and Getting Resources

# List all pods in a namespace
mocli get pods -n acme-staging

# Get a specific resource
mocli get deployment my-app -n acme-staging

# Output as YAML or JSON
mocli get configmap my-config -n acme-staging -o yaml
mocli get secret db-credentials -n acme-staging -o json

# Wide output with additional columns
mocli get pods -n acme-staging -o wide

# List cluster-scoped resources
mocli get crd
mocli get namespaces
mocli list is an alias for mocli get when listing all resources of a kind:
mocli list pods -n acme-staging
mocli list cronjobs -n acme-staging

Creating Resources

Create resources from manifest files or directly via CLI:
# Create from a YAML manifest (supports multi-document files)
mocli create -f manifest.yaml -n acme-staging

# Create a namespace
mocli create namespace acme-staging

# Create a Job with a container image
mocli create job db-migration --image=postgres:15 -n acme-staging

# Create a Job with a custom command
mocli create job db-migration --image=postgres:15 -n acme-staging -- pg_dump -h db

# Create a Job from a CronJob template (trigger a one-off run)
mocli create job --from=cronjob/nightly-backup -n acme-staging

Deleting Resources

# Delete a specific resource (prompts for confirmation)
mocli delete pod my-pod-abc123 -n acme-staging
mocli delete job db-migration -n acme-staging

# Skip confirmation prompt
mocli delete pod my-pod-abc123 -n acme-staging -y

# Delete resources defined in a manifest
mocli delete -f manifest.yaml

Shell Access

Open an interactive shell in a running container:
# Shell into a pod (uses first container if multiple)
mocli shell my-pod -n acme-staging

# Specify a container
mocli shell my-pod -c app -n acme-staging
mocli exec is an alias for mocli shell.

Viewing Logs (CLI)

Stream or fetch logs from pods and jobs:
# View logs from a pod
mocli logs my-pod -n acme-staging

# View logs from a specific container (multi-container pods)
mocli logs my-pod -c app -n acme-staging

# Stream logs in real-time
mocli logs my-pod -f -n acme-staging

# View logs from a Job (automatically finds the pod)
mocli logs job/db-migration -n acme-staging

Waiting for Conditions

Wait for a resource to reach a specific condition — useful in CI/CD pipelines:
# Wait for a Job to complete
mocli wait job/db-migration --for=condition=complete -n acme-staging

# Wait for a Job to complete with timeout
mocli wait job/db-migration --for=condition=complete --timeout=10m -n acme-staging

# Wait for a Pod to be ready
mocli wait pod/my-pod --for=condition=ready -n acme-staging

# Wait for a resource to be deleted
mocli wait pod/my-pod --for=delete -n acme-staging
Supported conditions:
  • condition=complete — Job completed successfully
  • condition=failed — Job failed
  • condition=ready — Pod is ready
  • delete — Resource has been deleted

Authentication

# Browser-based login (interactive)
mocli login

# API key login (for CI/CD pipelines)
mocli login --api-key <api-key>

# Or use environment variable
export MOGENIUS_API_KEY=<api-key>
mocli login --api-key

# Logout
mocli logout
CI/CD Integration: For automated pipelines, create an API key in your mogenius profile settings. The API key is a single opaque token starting with mo_pat:. Set the MOGENIUS_API_KEY environment variable and mocli automatically uses API key authentication.

Cluster Management

# Install the mogenius operator on a cluster
mocli cluster connect

# Version info
mocli version

Connecting a Cluster

You can use the CLI to install the mogenius operator on your Kubernetes cluster:
  1. Run the connect command:
    mocli cluster connect
    
  2. Select an organization
  3. Create a new cluster entry or select an existing one
  4. Confirm to deploy the operator
The operator will be deployed to your cluster via Helm. Verify the connection through the mogenius UI or by running mocli config list to see your available clusters.

Port Forwarding (CLI)

Use the CLI to create secure TCP tunnels to Kubernetes workloads without direct cluster access:
mocli port-forward -n <namespace> -k <kind> -w <workload-name> -p <local>:<remote>
Supported resource kinds: Pod, Service, Deployment, StatefulSet, DaemonSet Examples:
# Forward to a Service
mocli port-forward -n production -k Service -w postgres -p 5432:5432

# Forward to a Deployment
mocli port-forward -n staging -k Deployment -w api-server -p 8080:8080

# Forward to a specific Pod
mocli port-forward -n default -k Pod -w my-pod-abc123 -p 3000:3000
FlagDescription
-n, --namespaceKubernetes namespace (required)
-k, --kindResource kind (required)
-w, --nameWorkload name (required)
-p, --portPort mapping LOCAL:REMOTE (required)
The tunnel remains active while the CLI process runs. Press Ctrl+C to terminate. For detailed usage and options, see Tunnels.