Deploy applications to Linode in minutes with simple, declarative templates.
A linode-cli plugin that makes deploying applications as easy as running a single command. Perfect for LLM APIs, chat agents, embeddings servers, web services, and more.
- π― Simple Workflow - Init, customize, deploy. That's it.
- π Ready-to-Use Templates - Pre-configured for common workloads including AI/ML
- π¦ Template System - Use bundled templates or create your own
- π§ Fully Customizable - Override any setting per deployment
- π Multi-Environment - Deploy prod, staging, dev from the same template
- π₯ Health Checks - Automatic health monitoring for your services
- π Status Tracking - See all deployments and their health at a glance
pip install linodecli-build
linode-cli register-plugin linodecli_buildThis plugin uses your existing linode-cli authentication and configuration.
# Clone the repository
git clone https://github.com/linode/linode-cli-build.git
cd linode-cli-build
# Install in editable mode
pip install -e .
# Register the plugin
linode-cli register-plugin linodecli_buildDeploy an LLM API in under 2 minutes:
# 1. Initialize from template
linode-cli build init llm-api --directory my-llm
cd my-llm
# 2. Configure (optional)
nano deploy.yml # Customize region, instance type, etc.
cp .env.example .env # Set your environment variables
# 3. Deploy!
linode-cli build deploy --wait
# 4. Check status
linode-cli build statusThat's it! Your LLM API is now running on Linode with GPU support.
| Command | Description |
|---|---|
linode-cli build templates list |
π List bundled and user templates |
linode-cli build templates show <name> |
π Show template details |
linode-cli build templates scaffold <name> |
βοΈ Create a new template |
linode-cli build templates validate <path> |
β Validate template syntax |
linode-cli build templates install <path> |
πΎ Install local template for reuse |
linode-cli build templates uninstall <name> |
ποΈ Remove installed template |
| Command | Description |
|---|---|
linode-cli build init <template> |
π¬ Initialize a new deployment |
linode-cli build deploy |
π Deploy to Linode |
linode-cli build status |
π Check deployment status |
linode-cli build destroy |
π£ Tear down deployment |
| Command | Description |
|---|---|
linode-cli build tui |
π Launch dashboard (default view) |
linode-cli build tui deploy |
πΊ Monitor deployment progress in real-time |
linode-cli build tui status |
π₯οΈ View live status dashboard |
π¨ Alert!: The TUI is probably very buggy
βΌοΈ Some things may not workβΌοΈ ThanksβΌοΈ
Monitor and manage deployments with the interactive Terminal User Interface:
# Launch the dashboard (shows all deployments)
linode-cli build tui
# Monitor deployment progress with live updates
cd my-project
linode-cli build tui deploy
# View live status dashboard
linode-cli build tui status --app my-app-
π Interactive Dashboard - Central view of all your deployments
- Lists all deployments with real-time status
- Shows instance IDs, regions, and health status
- Navigate with arrow keys, select with Enter
- Auto-discovers deployments via Linode API
- Press
Ito launch the interactive deployment wizard - Auto-refresh every 3 seconds
-
π§ Interactive Wizard - Deploy in minutes without leaving the TUI (New!)
- Select from available templates
- Choose region and instance type
- Configure app name and environment
- Initialize and deploy all in one flow
- Real-time progress updates
-
π¬ Live Deployment Monitor - Watch deployment progress in real-time
- Progress bar with stage tracking
- Live cloud-init output streaming
- Instance details and status
- Elapsed time tracking
-
π Status Dashboard - Monitor your deployed applications
- Real-time instance and container status
- Auto-refresh every 5 seconds
- Health check monitoring
- Recent activity logs
- Quick actions (SSH, Destroy)
| Key | Action |
|---|---|
ββ / j/k |
Navigate deployments |
I |
Initialize new deployment (wizard) |
Enter |
View deployment details |
D |
Destroy selected deployment |
R |
Refresh |
Q / Esc / Ctrl+C |
Exit |
? |
Show help |
The TUI provides a much richer experience compared to the CLI, perfect for visual learners, watching long-running deployments, or keeping an eye on production services.
Note: All CLI commands remain fully supported. The TUI is an optional, complementary interface.
| Template | Description | GPU |
|---|---|---|
| chat-agent | Ollama-based chat agent with Llama 3 | β |
| llm-api | vLLM text generation API (OpenAI-compatible) | β |
| embeddings-python | Sentence-transformers embeddings server | β |
| ml-pipeline | Production ML inference with batching, caching & monitoring | β |
Use the same template for different environments:
# Production
linode-cli build init llm-api --directory prod
cd prod
nano deploy.yml # region: us-east, type: g6-dedicated-16
linode-cli build deploy --wait
# Staging
linode-cli build init llm-api --directory staging
cd staging
nano deploy.yml # region: us-west, type: g6-standard-8
linode-cli build deploy --wait
# Development
linode-cli build init llm-api --directory dev
cd dev
nano deploy.yml # region: us-southeast, type: g6-standard-4
linode-cli build deploy --waitUse AI assistance to scaffold a new template:
# Create template with LLM assistance
linode-cli build templates scaffold my-api --llm-assist
# Answer a few questions, then feed to your LLM:
# "@my-api/llm-instructions.md complete this template"
# Validate
linode-cli build templates validate my-api
# Test locally
linode-cli build init ./my-api --directory test-deploy
cd test-deploy
linode-cli build deploy --wait
# Install for reuse (once you're happy with it)
cd ..
linode-cli build templates install ./my-api
# Now use it like a bundled template
linode-cli build init my-api --directory production
cd production
linode-cli build deployYour installed templates are stored at ~/.config/linode-cli.d/build/templates/ and won't be overwritten during plugin upgrades.
Templates are defined in template.yml files:
name: my-api
display_name: My API
version: 1.0.0
description: |
My awesome AI service
capabilities:
runtime: docker
features:
- gpu-nvidia # NVIDIA GPU support
- docker-optimize # Fast image pulls
deploy:
target: linode
linode:
image: linode/ubuntu22.04
region_default: us-mia
type_default: g6-standard-8
container:
image: myorg/myapi:latest
internal_port: 8000
external_port: 80
health:
type: http
path: /health
port: 8000When you run init, the template is copied to deploy.yml in your deployment directory. You can then customize it for each deployment:
my-deployment/
βββ deploy.yml # Complete deployment config (customize this!)
βββ .env # Your secrets
βββ .env.example # Template
βββ README.md # Usage instructions
Everything you need is in deploy.yml:
- What to deploy: Container image, ports, capabilities
- Where to deploy: Region, instance type, OS image
- How to configure: Environment vars, health checks, startup commands
Customize once, deploy anywhere!
- User Guide - Complete guide to deploying and managing applications
- Template Development - Create and publish your own templates
- Capabilities Reference - Complete guide to all capabilities (GPU, Docker, Redis, BuildWatch, etc.)
We welcome contributions! Here's how you can help:
- Fork this repository
- Create your template in
linodecli_build/templates/your-template/ - Add to
linodecli_build/templates/index.yml - Submit a pull request
Use linode-cli build templates scaffold to help create your template.
Found a bug? Have a feature request? Open an issue!
Documentation PRs are always welcome!