Skip to main content

CLI for luplo cloud — manage access keys, login, and configure the luplo MCP backend.

Project description

luplo-cloud

CLI (lps) for the hosted luplo cloud. Log in, manage access keys, and wire the luplo MCP server into your editor.

Install

uv tool install luplo luplo-cloud
# or:  pipx install luplo-cloud
# or:  pip install luplo luplo-cloud

Auth model

Two ways the CLI authenticates, used in different scenarios:

Token How obtained Where it lives Used by
OAuth (browser) lps login OS keyring Desktop / interactive
API key (lupk_…) Issued in the web app LUPLO_CLOUD_API_KEY env Servers / CI / IaC

lps mcp-config picks the API key when LUPLO_CLOUD_API_KEY is set, otherwise falls back to the OAuth token in the keyring. API keys are scoped to a single organization (and optionally a subset of projects) at issuance — least privilege by default.

Quickstart — Desktop (interactive)

lps login                                # browser opens, OAuth → tokens → keyring
lps init                                 # pick org + project → writes ./.luplo
lps mcp-config | tee ~/.claude.json      # or paste into Claude Desktop config

lps init creates a .luplo TOML file in the current directory binding it to a cloud project. The file is safe to commit — it contains only the project id and the API base URL, no secrets. Subsequent lp invocations in this directory will read the binding from .luplo.

lps init                                  # full picker
lps init --org <org-id>                   # org locked, project picker
lps init --org <org-id> --project <id>    # non-interactive, bind existing
lps init --org <org-id> --new-project foo # non-interactive, create new
lps init --force                          # overwrite an existing .luplo

Default Claude config locations:

  • macOS Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux Claude Desktop: ~/.config/Claude/claude_desktop_config.json
  • Claude Code: ~/.claude.json (global), or run claude mcp add ... (project)

Quickstart — Server / CI (headless)

No browser, no keyring backend required.

# 1) Issue a key in the web app:
#    https://app.luplo.io/settings/api-keys → "+ New API key"
#    Pick org, scope (all projects or specific), expiry (≤ 365 days).
#    The raw lupk_... is shown ONCE — copy it now.

# 2) Inject the key on the server (e.g. /etc/environment, systemd EnvironmentFile,
#    or your secret manager).
export LUPLO_CLOUD_API_KEY=lupk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# 3) Smoke test.
lps whoami                               # prints email + actor_id

# 4a) Emit a Claude config that uses the key as bearer.
lps mcp-config | tee ~/.claude.json

# 4b) Or wire MCP directly via Claude Code (no config file edit).
claude mcp add --scope user --transport http luplo \
  https://api.luplo.io/mcp \
  --header "Authorization: Bearer $LUPLO_CLOUD_API_KEY"

Configuration

Env var Default Purpose
LUPLO_CLOUD_API_KEY (unset) Headless bearer (lupk_...)
LUPLO_CLOUD_SERVER_URL https://api.luplo.io API base — override for staging
LUPLO_CLOUD_APP_URL https://app.luplo.io Web app base — override for staging

Commands

  • lps login — browser-based OAuth, tokens stored in OS keyring
  • lps logout — revoke the local refresh token + clear keyring
  • lps whoami — print the email and actor_id of the authenticated principal
  • lps init — write a .luplo workspace file in the current directory
  • lps mcp-config — emit a mcpServers JSON entry; bearer is the API key if LUPLO_CLOUD_API_KEY is set, otherwise the OAuth token

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

luplo_cloud-0.4.0.tar.gz (40.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

luplo_cloud-0.4.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file luplo_cloud-0.4.0.tar.gz.

File metadata

  • Download URL: luplo_cloud-0.4.0.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for luplo_cloud-0.4.0.tar.gz
Algorithm Hash digest
SHA256 56ef0cab3fffbba762b3685ee41848bca40590f8a642e35b976954627aa53993
MD5 3d2d74100a737953b30bfd08575ec298
BLAKE2b-256 1906b66e854fe3c0615cbd9f5e87af20420ed5e72ffa229d4b0f465a5a12d77e

See more details on using hashes here.

Provenance

The following attestation bundles were made for luplo_cloud-0.4.0.tar.gz:

Publisher: release.yml on luplo-io/luplo-cloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file luplo_cloud-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: luplo_cloud-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for luplo_cloud-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6095e1c3e39a2f0835f533238db6a708fe287060d070073654745dfbcb24126
MD5 a0cd3b1190d152bd8fdfe56c59b5c6e9
BLAKE2b-256 32e1f3057d9877df8a31481b9a180cdba9d506f70f214089b78afcf0b76e3803

See more details on using hashes here.

Provenance

The following attestation bundles were made for luplo_cloud-0.4.0-py3-none-any.whl:

Publisher: release.yml on luplo-io/luplo-cloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page