Skip to main content

Personal LLM deployments made simple.

Project description

LLM-Launchpad

Spin up LLM endpoints on Modal for local and personal use

LLM Launchpad header

  • Deploy any open-source models from the Hugging Face model hub.
  • OpenAI-compatible endpoints via llama.cpp (preferred) and vLLM backends.
  • Direct integration with OpenCode.

Prerequisites

  • uv for Python, environment, and CLI tool management (install with curl -LsSf https://astral.sh/uv/install.sh | sh)
  • Modal account
  • Hugging Face account
  • Optional: OpenCode (install with curl -fsSL https://opencode.ai/install | bash)

Quickstart

Get up and running in four steps:

  1. Install the CLI so llm-launchpad is available in your shell:

    uv tool install llm-launchpad
    llm-launchpad --help
    
  2. Authenticate Modal:

    modal setup
    
  3. Authenticate Hugging Face:

    huggingface-cli login
    
  4. Launch the TUI:

    llm-launchpad
    

Why a TUI?

Setting up LLM endpoints usually means juggling model names, container images, GPU choices, warmup checks, logs, and endpoint details across several commands. The TUI keeps that flow in one place.

From the TUI you can:

  • Launch any open-source model on the Hugging Face model hub without memorizing Modal or backend-specific commands
  • Manage multiple deployed instances and inspect their status
  • Integrate the final OpenAI-compatible base URL and model ID into your workflows like OpenCode after deployment.

Headless CLI examples

The TUI is the recommended path for interactive use, but the same workflows are available from the command line for scripts and repeatable operations.

Deploy a vLLM endpoint and wait until it is ready:

llm-launchpad deploy \
  --backend vllm \
  --model-name Qwen/Qwen3-4B \
  --instance-name qwen3 \
  --do-warmup

Switch a llama.cpp instance to a Hugging Face GGUF model, redeploy it, and warm it up:

llm-launchpad switch \
  --backend llamacpp \
  --repo-id unsloth/Qwen3-4B-GGUF \
  --quant '*Q4_K_M.gguf' \
  --instance-name qwen3

Inspect and manage deployed apps:

llm-launchpad list
llm-launchpad status --backend llamacpp --instance-name qwen3
llm-launchpad logs --backend llamacpp --instance-name qwen3
llm-launchpad stop --backend llamacpp --instance-name qwen3 --yes

Sync existing Launchpad deployments into OpenCode without changing files first:

llm-launchpad opencode sync --dry-run

Storage and cleanup

Downloaded model weights are cached in the Modal huggingface-cache volume so repeated deploys can start faster. Use the TUI Storage screen to refresh the cache inventory, predownload a model, or delete selected cached weights when they are no longer needed.

Stopping an app and deleting cached weights are separate operations: llm-launchpad stop stops a deployed Modal app, while the Storage screen manages cached model files. If storage size looks stale after a deployment or delete, refresh the Storage screen to reload the Modal volume snapshot.

Costs and scaledown

GPU costs are controlled by the Modal resources selected for each deployment and by how long containers stay warm. LLM-Launchpad defaults the scaledown window to 1800 seconds, and you can change it in the Settings screen or with SCALEDOWN_WINDOW before deploying.

For predictable costs:

  • Stop apps you no longer need with llm-launchpad stop.
  • Prefer smaller GPU layouts for quick tests before moving to larger models.
  • Use the warmup command only when you actually need the endpoint ready immediately.
  • Treat displayed cost estimates as guidance and confirm current pricing in Modal for production workloads.

OpenCode integration

LLM-Launchpad automatically detects local installation of OpenCode and will set up your OpenCode config with the final OpenAI-compatible base URL and model ID after deployment.

Troubleshooting

  • Modal CLI not found: reinstall or upgrade the package, then confirm modal --help works in the same shell.
  • Modal authentication missing: run modal setup.
  • Hugging Face download errors: run huggingface-cli login and verify the model license or gated-repo access in your Hugging Face account.
  • Warmup stays queued: Modal may still be scheduling the requested GPU. Try a smaller GPU configuration or wait for capacity.
  • Endpoint status fails after deploy: inspect llm-launchpad logs --backend <backend> --instance-name <name> for backend startup errors.
  • SSH copy or selection feels wrong in the TUI: start with llm-launchpad tui --no-mouse to let the terminal handle native text selection.

Development setup

If you are working from a clone and want the command available directly while editing the source:

git clone https://github.com/ThomasRochefortB/llm-launchpad.git
cd llm-launchpad
uv tool install --editable .
llm-launchpad --help

If you need the full project environment for tests or local development workflows:

uv sync
uv run pytest

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

llm_launchpad-1.1.0.tar.gz (200.1 kB view details)

Uploaded Source

Built Distribution

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

llm_launchpad-1.1.0-py3-none-any.whl (152.5 kB view details)

Uploaded Python 3

File details

Details for the file llm_launchpad-1.1.0.tar.gz.

File metadata

  • Download URL: llm_launchpad-1.1.0.tar.gz
  • Upload date:
  • Size: 200.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.4

File hashes

Hashes for llm_launchpad-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b5268055757b5502e2e25d9c068ca1b0baf37484b226d971eb3012be4d988fab
MD5 aba90d0066574d3eab6e132e0c747975
BLAKE2b-256 dc03d1ed1293798c86b33aef1ac173f8355527723c6be8bfa204722d9f73acd8

See more details on using hashes here.

File details

Details for the file llm_launchpad-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llm_launchpad-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df0f138d82b1fd5e208642cdffad2ad9028cca25dde3099c0a1295f8fc9addfe
MD5 f0a2ce10f5165717c2d7935cff90b4e5
BLAKE2b-256 ad9425c456b8cf226d52568112dcfcd94bde91256d0b07352712d881993ee041

See more details on using hashes here.

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