README
¶
lo (a.k.a. Liftoff) is a fast, cross-platform CLI designed to remove friction from your development workflow.
Instead of manually navigating folders, installing dependencies, and starting projects one by one, lo lets you launch everything from a single command — instantly.
Features
- Launch any project from your workspace with a single command
- Zero-config runtime detection (Node, Rust, Python, Go, Java)
- Automatic dependency installation
- Launchpads: group multiple projects and start them together
- Watch Mode: monitor your projects resources while its running
- Cross-platform: Linux, macOS, Windows
- Docker Compose support
Installation
Linux / macOS
curl -fsSL https://raw.githubusercontent.com/notliad/liftoff/main/install.sh | bash
Arch Linux (AUR)
You can install lo directly from the AUR using an AUR helper like yay or paru:
yay -S liftoff
or
paru -S liftoff
Windows (PowerShell)
irm https://raw.githubusercontent.com/notliad/liftoff/main/install.ps1 | iex
Build from source (requires Go 1.22+)
bash install.sh --from-local # build from ./cmd/lo
bash install.sh --from-module github.com/notliad/liftoff/cmd/lo@latest
bash install.sh --uninstall
.\install.ps1 -FromLocal
.\install.ps1 -FromModule github.com/notliad/liftoff/cmd/lo@latest
.\install.ps1 -Uninstall
Supported Languages & Frameworks
Node.js / JavaScript / TypeScript
- Detects
package.jsonwithdev,start,docs:dev, orstorybookscripts - Automatically selects package manager via lockfile:
pnpm,bun,npm,yarn - If no lockfile is found, prompts interactively to choose an available package manager
- Framework hints: Next.js, Nuxt, SvelteKit, Astro, NestJS, Remix, Vite+React, Vite+Vue, Vite, React, Vue, Angular, Express, Fastify, Hono
Rust
- Detects
Cargo.toml - Runs with
cargo run - Framework hints: Axum, Actix, Rocket, Tauri, Bevy
Python
- Detects
pyproject.toml,requirements.txt,setup.py,mkdocs.yml - Parses
pyproject.tomlfor smarter detection - Execution strategy:
uv,poetry, orpython(pyon Windows) - Framework hints: FastAPI, Flask, Django, Streamlit, Gradio, MkDocs
Java
- Detects
pom.xml,build.gradle,build.gradle.kts - Maven:
spring-boot:runorexec:java - Gradle:
bootRun,run, orbuild - Framework hints: Spring, Quarkus, Micronaut
Go
- Detects
go.mod - Runs with
go run .orgo run ./cmd/<name> - Framework hints: Gin, Fiber, Echo, Chi, Temporal
Docs & Static Sites
| Tool | Detection |
|---|---|
| Docusaurus | @docusaurus/core dependency |
| VuePress | vuepress / @vuepress/core / vuepress-vite dependency, docs:dev script |
| MkDocs | mkdocs.yml or mkdocs.yaml file; runs via mkdocs serve |
| Storybook | @storybook/* packages or storybook CLI; appears as a separate entry in the project list alongside the main project |
| Docker Compose | docker-compose.yaml, docker-compose.yml, compose.yaml, or compose.yml; appears as a separate entry and runs docker compose up -d --build --remove-orphans |
Usage
lo # select project on list
lo [project-name] # run a project
lo compose # select compose on list
lo compose [name] # run docker compose for a project root
lo --list, -l # list projects
lo --pad, -p [name] # run/create a launchpad
lo --pad --list # list your launchpads
lo --pad --list [name] # list projects of a launchpad
lo --pad --edit [name] # edit your launchpad
lo --watch, -w [name] # run project in watch mode
lo --settings, -s # open settings menu
lo --help, -h # i need somebody :)
lo --version, -v # display version
First run
On first run, lo asks for your projects directories and saves them to:
~/.config/lo/config.yaml
Example value:
dirs:
- /home/you/Projects
launchpads:
my-works:
- api
- web
Recommended shell setup
Make sure ~/.local/bin is in your PATH.
For bash (~/.bashrc):
export PATH="$HOME/.local/bin:$PATH"
For zsh (~/.zshrc):
export PATH="$HOME/.local/bin:$PATH"
Uninstall
rm -f ~/.local/bin/lo
rm -rf ~/.config/lo
Development
Run checks:
bash -n install.sh
go test ./...
go build ./cmd/lo
man ./man/man1/lo.1
License
MIT
Click to show internal directories.
Click to hide internal directories.