Skip to main content

CLI to discover, fetch, and run reusable automation workflows from remote plugin packs.

Project description

LazyOps

Turn your scattered scripts into reusable, searchable, and shareable workflows.

Why LazyOps?

Every engineer has a folder full of scripts:

cleanup.sh
restart-pods.py
rotate_logs.sh
debug-nginx.sh
fix-permissions.sh

After a few months:

  • You forget they exist.
  • You can't remember their arguments.
  • They're undocumented.
  • They only work on your machine.
  • Your teammates rewrite the same automation.

LazyOps solves this by adding a lightweight workflow layer on top of existing scripts.

No rewrites. No proprietary language. Just structure.

Features

  • 🚀 Run scripts as named workflows (lazyops run pack/plugin)
  • 📦 Install workflow packs (aws, kubernetes, security, …) from a remote catalog
  • 🔍 Search and list workflows across installed packs
  • 🐍 Support multiple runtimes (Bash, Python, Node.js, executables)
  • 📝 Interactive picker when you run lazyops run with no arguments
  • ✅ Manifest validation before execution
  • 🔖 Pin catalog version by git branch or tag (source.ref)
  • 🤝 Workflows live in a separate repo — share and version them independently

Architecture

LazyOps is a CLI-only installer. Workflows are fetched at runtime from a separate plugins repo:

Repo Role
LazyOps CLI, config, fetch & run
lazyops-plugins Workflow catalog (packs + plugins)

Each pack is a bundle (e.g. aws, kubernetes). Each plugin is one workflow folder under that pack. The git branch or tag on the plugins repo is the catalog version.

lazyops-plugins/
└── plugins/
    └── aws/
        ├── pack.yaml
        └── addpatchclasstag/
            ├── workflow.yaml
            ├── script.sh
            └── README.md

Run a workflow:

lazyops run aws/addpatchclasstag

LazyOps fetches the plugin at your configured source.ref, validates the manifest, and executes the script.

Installation

From PyPI (recommended)

The PyPI package is lazyops-cli (the name lazyops is taken by another project). The command is still lazyops:

pipx install lazyops-cli
lazyops --help

Requires Python 3.10+ and git (used to fetch workflows at runtime).

From source (development)

LazyOps runs from a project-local virtual environment (.venv). Do not install with system pip.

git clone https://github.com/MridulTi/LazyOps.git
cd LazyOps
bash setup.sh
source ~/.zshrc   # or ~/.bashrc — loads the lazyops alias
lazyops --help    # works from any directory

setup.sh adds a global shell alias pointing at the repo wrapper (which always uses .venv):

alias lazyops='/path/to/LazyOps/lazyops'
export LAZYOPS_ROOT='/path/to/LazyOps'

You can also run from the repo without the alias:

./lazyops --help
source .venv/bin/activate

Quick start

Point LazyOps at the plugins catalog, enable packs, and run workflows:

# 1. Configure the plugins source (branch = version)
lazyops source init https://github.com/MridulTi/lazyops-plugins.git --ref v1.0.0

# 2. Enable packs you need
lazyops pack add aws
lazyops pack add kubernetes

# 3. Discover and run
lazyops list
lazyops search patch
lazyops run aws/addpatchclasstag
lazyops run                    # interactive: pick pack → pick plugin → confirm

# 4. Upgrade catalog version
lazyops source update --ref v1.2.0

For local development against a checkout of lazyops-plugins:

lazyops source init file:///path/to/lazyops-plugins --ref main

Config is stored at ~/.lazyops/config.yaml:

source:
  url: https://github.com/MridulTi/lazyops-plugins.git
  ref: v1.0.0
  path_prefix: plugins
packs:
  - aws
  - kubernetes
cmdb:
  url: https://cmdb.paytmpayments.com

Commands

Command Purpose
lazyops source init <url> [--ref] Set plugins repo URL and version
lazyops source show Show current source config
lazyops source update --ref <ref> Bump catalog version
lazyops pack add <pack> Enable a pack
lazyops pack list List installed packs
lazyops pack list <pack> List plugins in a pack
lazyops pack remove <pack> Disable a pack
lazyops run <pack>/<plugin> [args...] Fetch and run a workflow
lazyops run Interactive workflow picker
lazyops list List workflows in installed packs
lazyops search <query> Search by name, id, or description
lazyops aws trace <domain> Trace domain → ALB → backend EC2 IPs (CMDB + AWS)

AWS trace

Requires the aws pack (lazyops pack add aws). On VPN, CMDB defaults to https://cmdb.paytmpayments.com (override with --cmdb-url or cmdb.url in ~/.lazyops/config.yaml).

lazyops aws trace seller.example.com
lazyops aws trace seller.example.com --cmdb-url https://cmdb.paytmpayments.com
lazyops aws trace seller.example.com --source aws --region ap-south-1

Bundled plugin for local dev: plugins/aws/trace/. Copy to lazyops-plugins at plugins/aws/trace/ for remote catalog releases.

Example manifest

id: addpatchclasstag

name: "Add Patch Class Tag"

description: "Add patch class tags to instances. Required env: AWS_REGION or REGION."

runtime: bash

entrypoint: script.sh

pack: aws

version: 1.0.0

inputs:
  - name: instance_id
    required: true

Philosophy

Scripts should remain scripts.

LazyOps does not replace your automation. It makes it easier to organize, discover, document, and reuse — with a shared catalog your whole team can install and pin to a version.

Roadmap

  • Workflow specification
  • Remote plugin catalog (source + packs)
  • Fetch and run workflows from git
  • Interactive CLI
  • Search and list
  • Input validation
  • Plugin runtimes
  • Optional web dashboard

Contributing

Contributions are welcome.

You can help by:

  • Adding workflows to lazyops-plugins
  • Improving CLI documentation
  • Supporting additional runtimes
  • Reporting bugs
  • Suggesting new features

License

MIT License

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

lazyops_cli-1.1.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

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

lazyops_cli-1.1.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lazyops_cli-1.1.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lazyops_cli-1.1.0.tar.gz
Algorithm Hash digest
SHA256 0566d79014f6d63e1e436036d4aabeb5779b9c6128bb8f35eede581a701e5036
MD5 57d978da2626b44fa8945517d7ed18f6
BLAKE2b-256 27ca05650952a0250e9287d74dbe6455db98c20585cf3b4aab743480be9f0ee1

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyops_cli-1.1.0.tar.gz:

Publisher: publish.yml on MridulTi/LazyOps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: lazyops_cli-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lazyops_cli-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfff3819bbbe8922a86c333b1515092f66608bb631f4a5d343633d12ba203b5c
MD5 4661b12f4e874dc60adb70fc575d705b
BLAKE2b-256 14f5aee97b4939484d59f28fc1dcf7ac1bfa7f95e1eb48b3533e1112a8ff26e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for lazyops_cli-1.1.0-py3-none-any.whl:

Publisher: publish.yml on MridulTi/LazyOps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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