Expand description
LightShuttle - lightweight developer-time orchestrator for polyglot teams.
This crate is the umbrella facade of the LightShuttle ecosystem. It
wires together all member crates and exposes the run entry point that
the lightshuttle binary calls.
§What is LightShuttle?
LightShuttle reads a single YAML manifest (think lightshuttle.yaml) and
launches, supervises, and connects every service your project needs: API
servers, databases, workers, sidecars. It is the developer-time equivalent
of a production orchestrator, designed for teams that work across multiple
languages and runtimes.
Key properties:
- Polyglot: any process or Docker container is a first-class resource.
- Single binary:
lightshuttle upis the only command developers need to memorize. - Export: the same manifest drives
docker-compose, Kubernetes, and Helm output vialightshuttle export. - Observable: an optional bundled OpenTelemetry collector wires
OTEL_*environment variables into every resource automatically.
§Member crates
| Crate | Purpose |
|---|---|
lightshuttle_manifest | Manifest parser and domain model |
lightshuttle_runtime | Process supervisor and Docker adapter |
lightshuttle_control | Local HTTP control plane (restart, ps, logs) |
lightshuttle_export | Emit Compose, Kubernetes, or Helm artifacts |
lightshuttle_secrets | .env file loader and ${env.*} resolver |
lightshuttle_otel | Bundled OpenTelemetry collector integration |
§CLI binary
The lightshuttle binary is a thin shim over run. Install it with:
cargo install lightshuttleThen start your stack:
lightshuttle upExit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | User error (invalid manifest, validation failure, lifecycle failure) |
| 2 | Runtime error (Docker unreachable, container failed to start) |
| 130 | Interrupted (SIGINT / Ctrl+C) |
§Source repository
https://github.com/nubster-opensources/lightshuttle
§Using this crate as a library
This crate is primarily a binary distribution. The only stable public
surface is run, intended for embedders and workspace tooling that needs
access to the clap command tree:
#[tokio::main]
async fn main() -> std::process::ExitCode {
lightshuttle::run().await
}Functions§
- run
- Parse the command line and dispatch to the matching subcommand implementation.