Skip to main content

Crate lightshuttle

Crate lightshuttle 

Source
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 up is the only command developers need to memorize.
  • Export: the same manifest drives docker-compose, Kubernetes, and Helm output via lightshuttle export.
  • Observable: an optional bundled OpenTelemetry collector wires OTEL_* environment variables into every resource automatically.

§Member crates

CratePurpose
lightshuttle_manifestManifest parser and domain model
lightshuttle_runtimeProcess supervisor and Docker adapter
lightshuttle_controlLocal HTTP control plane (restart, ps, logs)
lightshuttle_exportEmit Compose, Kubernetes, or Helm artifacts
lightshuttle_secrets.env file loader and ${env.*} resolver
lightshuttle_otelBundled OpenTelemetry collector integration

§CLI binary

The lightshuttle binary is a thin shim over run. Install it with:

cargo install lightshuttle

Then start your stack:

lightshuttle up

Exit codes

CodeMeaning
0Success
1User error (invalid manifest, validation failure, lifecycle failure)
2Runtime error (Docker unreachable, container failed to start)
130Interrupted (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.