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 mcp-config | tee ~/.claude.json # or paste into Claude Desktop config
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 runclaude 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 keyringlps logout— revoke the local refresh token + clear keyringlps whoami— print the email and actor_id of the authenticated principallps mcp-config— emit amcpServersJSON entry; bearer is the API key ifLUPLO_CLOUD_API_KEYis 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file luplo_cloud-0.3.0.tar.gz.
File metadata
- Download URL: luplo_cloud-0.3.0.tar.gz
- Upload date:
- Size: 36.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ef29a9a304290808f2d6b52634426dd94c9e1906a0304fd0ee83a12803c4019
|
|
| MD5 |
b3ac20e686dd186a781c002f11eeb987
|
|
| BLAKE2b-256 |
8136e3cf3e5b48ddba94736d140de6bf25bc24a0ecfc162912bf6813983b9495
|
Provenance
The following attestation bundles were made for luplo_cloud-0.3.0.tar.gz:
Publisher:
release.yml on luplo-io/luplo-cloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
luplo_cloud-0.3.0.tar.gz -
Subject digest:
4ef29a9a304290808f2d6b52634426dd94c9e1906a0304fd0ee83a12803c4019 - Sigstore transparency entry: 1392578330
- Sigstore integration time:
-
Permalink:
luplo-io/luplo-cloud@6c357a856a02dad8ad12953f764982758bed8031 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/luplo-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6c357a856a02dad8ad12953f764982758bed8031 -
Trigger Event:
push
-
Statement type:
File details
Details for the file luplo_cloud-0.3.0-py3-none-any.whl.
File metadata
- Download URL: luplo_cloud-0.3.0-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
337ad336a0448fb87491c3464dd7252c1b9d980cd5fc067bf8aee6eb9e683198
|
|
| MD5 |
6529b54a18aeab219ae885cff2d9d3bc
|
|
| BLAKE2b-256 |
d2dd0a7fd6674f343a9e1d8f7825ad8568387b716a292106b9312e2d079db39a
|
Provenance
The following attestation bundles were made for luplo_cloud-0.3.0-py3-none-any.whl:
Publisher:
release.yml on luplo-io/luplo-cloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
luplo_cloud-0.3.0-py3-none-any.whl -
Subject digest:
337ad336a0448fb87491c3464dd7252c1b9d980cd5fc067bf8aee6eb9e683198 - Sigstore transparency entry: 1392578335
- Sigstore integration time:
-
Permalink:
luplo-io/luplo-cloud@6c357a856a02dad8ad12953f764982758bed8031 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/luplo-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6c357a856a02dad8ad12953f764982758bed8031 -
Trigger Event:
push
-
Statement type: