lsh

command module
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2026 License: BSD-3-Clause, MIT Imports: 2 Imported by: 0

README

lsh

lsh is the Latitude.sh command-line interface (CLI) that will help you make it easier to retrieve any data from your team or perform any action you need.

Installation

MacOS / Linux / WSL

Installing the latest version

Homebrew
brew install latitudesh/tools/lsh
Installation Script
curl -fsSL https://cli.latitude.sh/install.sh | sh
Windows is not supported yet

From Github

Visit the releases page and select any version you want to download.

Getting Started

Log in into Latitude.sh. An API Key is required.

lsh login <API_KEY>

The CLI automatically detects when you use sudo and loads your credentials from your user directory.

List your servers

lsh servers list

Commands

The list of the available commands is available here.

Examples

See more examples here.

List a server with a specific hostname:


lsh servers list --hostname <HOSTNAME>

Create a server with Ubuntu 24:


lsh servers create --operating_system ubuntu_24_04_x64_lts --project <PROJECT_ID_OR_SLUG> --site <LOCATION> --hostname <HOSTNAME> --plan <PLAN>

List all GPU plans:


lsh plans list --gpu true

Check plan availability per location (one row per plan × location, with stock_level):

lsh plans stock

Show only locations that currently have stock:

lsh plans stock --in_stock

Filter by region, GPU, or hardware spec and export as CSV:

lsh plans stock --region "United States" --in_stock -o csv > us_plans.csv

Combine filters for scripting with jq (use -o json when piping — the default table is meant for humans):

lsh plans stock --gpu --ram_gte 64 -o json | jq '.[] | {plan: .plan_slug, loc: .location, stock: .stock_level}'

List volumes:


lsh volume list --project <PROJECT_ID>

Mount volume to a server (requires sudo, auto-installs nvme-cli and connects):

# First, login as normal user
lsh login <API_KEY>

# Then mount with sudo (automatically uses your credentials)
sudo lsh volume mount --id vol_abc123

Why sudo is required:

  • Installs nvme-cli package if not present
  • Loads NVMe kernel modules (nvme_tcp)
  • Writes to /etc/nvme/hostnqn
  • Runs privileged nvme connect commands

Important:

  • Login as a normal user (without sudo): lsh login <API_KEY>
  • The CLI automatically finds your credentials when you run commands with sudo
  • Volume mount needs sudo for nvme-cli installation and NVMe operations

Output formats & automation

Every list command can render its results in different formats, so the output is easy to consume from scripts, CI pipelines and AI agents. See lsh help output-formats for the full guide.

lsh servers list -o table            # human-readable table (default)
lsh servers list -o json             # JSON
lsh servers list -o yaml             # YAML
lsh servers list -o csv              # CSV (header + one row per item)
lsh servers list --json              # shortcut for -o json

Filter the structured output with a JMESPath expression via --query (works with json/yaml/csv):

lsh servers list --query "[?status=='on'].id" -o json

Control pagination on large listings:

lsh servers list --page-size 50      # items per API page
lsh servers list --max-items 100     # stop after N items (0 = no limit)
lsh servers list --no-paginate       # first page only; next page printed to stderr
Environment variables
Variable Purpose
LSH_OUTPUT Default output format (table/json/yaml/csv). Precedence: --output flag > LSH_OUTPUT > config file > default.
LSH_CLASSIC_OUTPUT Set to true to force the legacy plain-ASCII table. An explicit -o json/yaml/csv still wins over it.
LATITUDESH_TOKEN API token; bypasses any stored profile (see lsh help authentication).
LSH_PROFILE Use the named profile for the command.
LSH_PROJECT Pre-fill --project so list commands don't prompt.

Troubleshooting

Uninstalling

If you encounter any problems when installing the CLI with the installation script, you can use the command below to uninstall the CLI.

curl -sSL  https://raw.githubusercontent.com/latitudesh/cli/main/uninstall.sh | bash
Sudo Authentication Issues

If sudo lsh volume mount says "API key not found":

# Make sure you've logged in as your normal user (not with sudo)
lsh login <API_KEY>

# Then try mount again
sudo lsh volume mount --id <VOLUME_ID>

The CLI automatically detects your username via the SUDO_USER environment variable and loads your config.

Docs

For more information, see the documentation.

Provide feedback and contribute

  • Open an issue for questions, feedback, bug reports or feature requests.

  • We welcome pull requests for bug fixes, new features, and improvements to the examples.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
lsh
Package to configure options that should be acessible througout all commands
Package to configure options that should be acessible througout all commands
projectsshkeys
Package projectsshkeys implements the project-scoped SSH key commands (`lsh projects ssh-keys`).
Package projectsshkeys implements the project-scoped SSH key commands (`lsh projects ssh-keys`).
projectuserdata
Package projectuserdata implements the project-scoped user data commands (`lsh projects user-data`).
Package projectuserdata implements the project-scoped user data commands (`lsh projects user-data`).
servers
Package servers holds the SDK-backed server subcommands added for PD-6075: power actions, rescue mode and lock/unlock access.
Package servers holds the SDK-backed server subcommands added for PD-6075: power actions, rescue mode and lock/unlock access.
internal
authclient
Package authclient is a minimal HTTP client for the CLI session and profile endpoints that lsh uses during login/logout.
Package authclient is a minimal HTTP client for the CLI session and profile endpoints that lsh uses during login/logout.
browser
Package browser opens a URL in the user's default browser, with a hook so tests can substitute the real implementation.
Package browser opens a URL in the user's default browser, with a hook so tests can substitute the real implementation.
config
Package config loads and persists the lsh config file with support for multiple profiles (one per team), env var overrides, and a migration path from the previous single-token format.
Package config loads and persists the lsh config file with support for multiple profiles (one per team), env var overrides, and a migration path from the previous single-token format.
pagination
Package pagination centralizes the list-pagination controls shared by every `list` command: the --page-size, --max-items and --no-paginate flags.
Package pagination centralizes the list-pagination controls shared by every `list` command: the --page-size, --max-items and --no-paginate flags.
tui
util
Package util holds small cross-cutting helpers shared by the command layer and the prompt/auth subpackages.
Package util holds small cross-cutting helpers shared by the command layer and the prompt/auth subpackages.
wait
Package wait provides reusable polling infrastructure shared by the `--wait` flag (block until a resource reaches a target state) and the `events list --follow` stream.
Package wait provides reusable polling infrastructure shared by the `--wait` flag (block until a resource reaches a target state) and the `events list --follow` stream.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL