Command-line interface for the Lithora REST API (the agent-grade control plane)
Project description
lithora — the Lithora CLI
The terminal-native, agent-grade control plane for Lithora. Manage teams, projects, issues, automations — and drive the confirmation-gated AI agent — without leaving your shell or your CI pipeline.
Built on the official lithora Python SDK (one shared HTTP core,
nothing vendored). v0.2 — beta.
Install
pipx install lithora-cli # recommended (isolated)
# or
pip install lithora-cli
This installs the lithora command. Requires Python 3.9+. Optional: keyring
(used automatically for OS-keychain token storage; falls back to a 600-mode file).
Quickstart (every command here is real)
# 1. Point at your API (defaults to https://api.lithora.io)
export LITHORA_BASE_URL=http://localhost:8000 # optional, local dev
# 2. Log in (password is prompted securely; token → OS keychain or 600-mode file)
lithora login --email you@example.com
lithora whoami
lithora doctor # diagnose auth/connectivity
# 3. Projects & issues
lithora teams list
lithora projects create --name "Q3 Launch" --team <team_id>
lithora tasks create --title "Wire up billing" --project <project_id> --priority high
lithora tasks list --project <project_id> --status todo
lithora tasks status <task_id> in_progress
# 4. The AI agent — propose → approve in the terminal → apply
lithora ai "break the autosave issue into a parent task and subtasks"
# → renders the plan, asks "Approve? [y]es / [n]o", then applies on approval.
# 5. Automations, GitHub, the work graph
lithora automations list
lithora automations execute <automation_id>
lithora work-items graph --team <team_id>
lithora work-items pr-status <task_id>
The confirmation gate (the keystone)
The agent never writes without your approval. lithora ai "<prompt>" shows the
proposed plan and waits:
ACTION PLAN (requires confirmation)
1. + task: Add autosave to the editor [acme/web#418]
- subtask: Persist drafts to localStorage
- subtask: Debounced autosave on change
Summary: Agent will create 1 task + 3 subtasks
Approve? [y]es / [n]o:
- Interactive:
yapplies it,ndiscards it. - CI / non-interactive: add
--yesto auto-approve, e.g.lithora ai chat "<prompt>" --yes(the plan is still printed first).lithora ai "<prompt>"is shorthand forlithora ai chat, so the flag works on both forms. Without a TTY and without--yes, the CLI refuses to write and exits2— so an unattended run can never silently mutate your workspace. - Overnight digests:
lithora ai pendinglists plans the scheduled triage agent staged; approve one withlithora ai confirm <action_id> --session <sid>.
Output & scripting
lithora tasks list --project P -o json | jq '.tasks[].title' # stable JSON
lithora -o json automations list # machine-readable
--output table(default, colorized on a TTY) ·--output json(stable, for CI) ·--output yaml.- Exit codes:
0ok ·2usage / confirmation-needed ·3auth ·4not-found ·5conflict ·22invalid input ·130interrupted.
Profiles, config & tokens
lithora profile list
lithora --profile work whoami # target a different account/org
lithora token create --name "GitHub CI" --scope tasks:write --expires-in-days 90
lithora token list
lithora token revoke <token_id>
- Config lives in
~/.lithora/config.json(dir700/ file600). The bearer token is stored in your OS keychain when available, else the 600-mode file. - Precedence: flag > env (
LITHORA_TOKEN/LITHORA_BASE_URL/LITHORA_PROFILE) > profile > default. - The password is never accepted as a flag value (argv/history leak). Use the prompt
or
--password-stdinin CI.
CI example (GitHub Actions)
- name: Create a Lithora issue from a failing build
if: failure()
env:
LITHORA_TOKEN: ${{ secrets.LITHORA_PAT }} # a scoped PAT (lithora token create)
run: |
pipx install lithora-cli
lithora tasks create --title "CI failed on ${{ github.sha }}" \
--project "$LITHORA_PROJECT" --priority high -o json
Command map
login · logout · whoami · doctor · --version
teams · projects · tasks · work-items · automations · github · search
ai (chat / pending / confirm / sessions) · token · profile
Run lithora <group> --help for the full surface. See
EXPANSION_PLAN.md for the roadmap.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
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 lithora_cli-0.2.0.tar.gz.
File metadata
- Download URL: lithora_cli-0.2.0.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83feb0cc2910159a8bed888d4eda30930cc527e86796660d45e0dd972dac0b13
|
|
| MD5 |
fbe4af39ba291d1d0bdf6bdf6992fb5d
|
|
| BLAKE2b-256 |
9a5bcbe0be205a7a196154c25208fce68a1496420504dc4b6aba8fc0ea540b87
|
File details
Details for the file lithora_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: lithora_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7054284cb2e2dd1cdb8ebc4a7a6757422166fe4231521e5d1079c196b37eb5fe
|
|
| MD5 |
d37eaa8791c12ec2575e87552aaf5503
|
|
| BLAKE2b-256 |
24ae4ace11a52eb712716ecc991bd54f11c15a28fe86636c9bf40dfba956f85f
|