Skip to main content

llmport-cli

PyPI version Python 3.12+ License

The single entry point to deploy, configure, and manage the llm.port platform — an open-source LLM gateway that routes, secures, and observes traffic across local runtimes and remote providers.

pip install llmport-cli        # or: uv tool install llmport-cli
llmport doctor                 # verify prerequisites
llmport deploy /opt/llmport    # full production deployment

Features

  • One-command production deploy — pre-flight checks, .env generation, image builds, database migrations, and service startup.
  • Auto-tuning — detects host CPU / RAM and computes optimal worker counts, DB pool sizes, and queue channel pools.
  • Module management — enable / disable optional services (PII redaction, Auth, Mailer, Docling OCR) via Docker Compose profiles.
  • GPU auto-detection — discovers NVIDIA (CUDA), AMD (ROCm), and Intel GPUs; selects the correct vLLM container image automatically.
  • Developer workflow — clone all repos, install deps, run infra + migrations, and generate a VS Code workspace in one command.
  • Rich terminal UI — tables, progress bars, and themed output powered by Rich. Interactive TUI wizard via Textual.
  • Command abbreviation — type llmport st instead of llmport status.

Requirements

Dependency Minimum
Python 3.12
Docker Engine 24.0
Docker Compose v2
Git 2.x

Installation

From PyPI

pip install llmport-cli

# or with uv
uv tool install llmport-cli

From source

git clone https://github.com/llm-port/llm-port-cli.git
cd llm-port-cli
uv sync                   # install deps + editable entry point
uv run llmport --help

Verify

llmport version
llmport doctor

Quick start

Production deployment

# Full deploy — pre-flight, env gen, build, migrate, start
llmport deploy /opt/llmport

# Enable optional modules
llmport deploy /opt/llmport --modules pii,auth

# Skip image builds (pull only)
llmport deploy /opt/llmport --no-build

# Provision node-agent on this host during deploy
llmport deploy /opt/llmport --local-node

# Provision node-agent on remote host over SSH
llmport deploy /opt/llmport --local-node --local-node-host ubuntu@10.0.0.12

Day-to-day operations

llmport up                          # start all services
llmport up --build llm-port-api     # rebuild a single service
llmport down                        # stop all services
llmport down --volumes              # stop + remove volumes
llmport status                      # service table
llmport logs -f                     # tail all logs
llmport logs -f llm-port-backend    # tail one service

Modules

llmport module list                 # show available modules
llmport module enable pii auth      # enable modules
llmport module disable docling      # disable a module

Configuration

llmport config show                 # print current config
llmport config set dev.branch main  # update a value (dot-notation)
llmport config edit                 # open in $EDITOR
llmport config path                 # print config file location

Auto-tuning

llmport tune                        # detect resources, write .env
llmport tune --profile prod         # production-grade sizing
llmport tune --dry-run              # preview without writing

Admin utilities

llmport admin reset-password --email admin@localhost

Developer workflow

# Bootstrap everything — clone repos, install deps, start infra,
# run migrations, generate VS Code workspace
llmport dev init ~/projects/llm-port
llmport dev init ~/projects/llm-port --ssh        # SSH cloning
llmport dev init ~/projects/llm-port --overwrite   # force pull

# Start / stop / status
llmport dev up
llmport dev up --backend-only
llmport dev up --local-node
llmport dev up --local-node --local-node-host ubuntu@10.0.0.12
llmport dev down
llmport dev status

# Check dev prerequisites (optionally auto-install missing tools)
llmport dev doctor
llmport dev doctor --install --yes

--local-node installs a systemd unit by default and requires sudo on Linux. Use --local-node-no-sudo to skip privileged systemd setup.


Command reference

Command Description
llmport version Print CLI, Python, Docker, and Compose versions
llmport doctor Run system health checks (OS, RAM, disk, Docker, GPU, ports)
llmport deploy [DIR] Full production deployment with pre-flight checks
llmport deploy [DIR] --local-node Deploy + provision node-agent (local or SSH host)
llmport up [SERVICES...] Start services (supports --build, --pull)
llmport down Stop and remove containers (--volumes, --all)
llmport status Show service state, health, and ports (--json)
llmport logs [SERVICES...] Stream logs (-f, -n, --timestamps)
llmport config show|set|edit|path|init Manage YAML configuration
llmport module list|enable|disable Toggle optional platform modules
llmport tune Auto-tune worker and pool settings (--profile, --dry-run)
llmport admin reset-password Reset a user password directly in the database
llmport dev init [DIR] Bootstrap full developer workspace
llmport dev up Start backend, worker, and frontend dev servers
llmport dev up --local-node Start dev services and provision node-agent
llmport dev down Stop all dev processes
llmport dev status Show repo branches, infra, and dev processes
llmport dev doctor Check dev prerequisites (--install)

Project structure

llm_port_cli/
├── pyproject.toml
├── src/
│   └── llmport/
│       ├── cli.py                 # Click root group + AliasedGroup
│       ├── commands/
│       │   ├── version.py         # version
│       │   ├── doctor.py          # doctor
│       │   ├── deploy.py          # deploy
│       │   ├── up.py              # up
│       │   ├── down.py            # down
│       │   ├── status.py          # status
│       │   ├── logs_cmd.py        # logs
│       │   ├── config.py          # config group
│       │   ├── module.py          # module group
│       │   ├── tune.py            # tune
│       │   ├── admin.py           # admin group
│       │   └── dev/               # developer workflow
│       │       ├── dev_init.py
│       │       ├── dev_up.py
│       │       ├── dev_status.py
│       │       └── dev_doctor.py
│       ├── core/                  # shared utilities
│       │   ├── compose.py         # Docker Compose wrapper
│       │   ├── detect.py          # OS / GPU / port detection
│       │   ├── settings.py        # YAML config (~/.config/llmport/)
│       │   ├── api_client.py      # Backend REST client (httpx)
│       │   ├── bootstrap.py       # First-admin bootstrap
│       │   ├── env_gen.py         # .env generation (Jinja2)
│       │   ├── git.py             # Git clone / checkout helpers
│       │   ├── install.py         # Cross-platform tool installer
│       │   ├── registry.py        # Central metadata registry
│       │   ├── sysinfo.py         # Resource detection + tuning
│       │   └── console.py         # Rich themed output
│       ├── tui/                   # Textual TUI wizard
│       └── templates/             # Jinja2 .env templates
└── tests/

License

Apache License 2.0 — see LICENSE for details.

Part of the llm.port project.

Release files for llmport-cli 0.2.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llmport-cli 0.2.8
File Size Uploaded
llmport_cli-0.2.8.tar.gz 92.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llmport-cli 0.2.8
File Interpreter ABI Platform
llmport_cli-0.2.8-py3-none-any.whl Python 3 none any Details

Total release size: 207.2 kB

Release files / llmport_cli-0.2.8.tar.gz

Download URL llmport_cli-0.2.8.tar.gz
Size 92.3 kB
Tags Source
SHA-256 checksum
How to use checksums
db85e5171bc6c5f3f50a19dc33755c9bf01a65d540b4409b1d066526c3a3570c
BLAKE2b-256 checksum
How to use checksums
e6c8f7b5913f8b2f390e11072868bed31145448563451e17870e75d5335c8534
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / llmport_cli-0.2.8-py3-none-any.whl

Download URL llmport_cli-0.2.8-py3-none-any.whl
Size 114.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb71ca68f5bc234ff2b02a1ff4dccf016f5d6251c279d806f197a83ab11048c7
BLAKE2b-256 checksum
How to use checksums
9a80028b4b88d88cb2ec97c1d4c285129d8d00079d769d42a3d0d89402e01408
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.9

2 release files

This release

0.2.8 This release

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page