Skip to main content

Description

Linting and Static Latest tag Latest release PyPI version fury.io Documentation

A set of utility tools for DevOps, built around a dependency-free core that is exposed through several optional surfaces: a CLI, an MCP server, agent tools, a Claude Code plugin, a TUI, and a Qt UI.

Two things it does today:

  • Azure DevOps, made scriptable and agent-friendly — work items, builds, repositories and pull requests over plain REST, on cloud and on-prem alike, with clean JSON on stdout and a human confirmation in front of every write.
  • Kubernetes manifest sanitizing — mask every Secret value so a manifest can be pasted into a ticket, a chat, or an LLM prompt.

Requires Python 3.12+.

📖 Full documentation: https://carneirofc.github.io/devops-utils/

Install

Recommended — no install at all. With uv, uvx fetches the package and the extra you name into a cached, throwaway environment per invocation:

uvx --from "devops-utils[azure]" devops-utils azdo list --project MyProject --mine
uvx --from "devops-utils[mcp]" devops-utils-mcp          # MCP server
uvx --from "devops-utils[all]" devops-utils --help       # every surface

The extra is not optional: azdo needs [azure], the MCP server needs [mcp], and [all] covers everything. Or install it the usual way:

pip install "devops-utils[all]"        # or [azure] / [mcp] / [tui] / [qt]
uv tool install "devops-utils[all]"    # isolated, always on PATH

Details, the full extras table, and Azure DevOps credential setup: Install and configure.

A quick taste

# Mask every Secret value in a Kubernetes manifest, print to stdout
devops-utils sanitize manifest.yml -o -

# What's assigned to me and still open?
devops-utils azdo list --project MyProject --mine --state Active

# Why did the last build on main fail?
devops-utils azdo builds --project MyProject --branch main --result failed --top 1
devops-utils azdo timeline 1234 --project MyProject

# File a bug under an Epic, linked to the offending commit
devops-utils azdo create --project MyProject --type Bug --parent 1400 \
  --title "Checkout times out at 30s" --tag payments
devops-utils azdo link 42 --kind commit --project MyProject --repo MyRepo --value 0a1b2c3d

# Create a whole Feature/Story/Task tree from one plan file
devops-utils azdo apply plan.yml --dry-run

# Install the bundled agent skills and Claude Code subagents
devops-utils setup all

Azure DevOps access is configured entirely through environment variables (AZURE_DEVOPS_ORG_URL, AZURE_DEVOPS_TOKEN, …) — no credentials are ever read from the machine.

Documentation

Guide What's in it
Install and configure Extras, uvx, cloud + on-prem credential setup
Azure DevOps from the command line Cookbook: finding work, changing work, diagnosing pipelines, repo search, jq recipes
Bulk work items with a plan file azdo apply — hierarchies, links and comments in one reviewed batch
Sanitize Kubernetes manifests Masking Secrets, and what to do with the result
Wire it into an AI agent setup, MCP server, bundled skills and subagents, the Claude Code plugin, issue-tracker config
Reference Every parameter, link kind, field name and API detail
API reference Generated from the source

Use as a Claude Code plugin

The bundled skills and read-only Azure DevOps subagents also ship as a Claude Code plugin, namespaced as devops-utils:*:

/plugin marketplace add carneirofc/devops-utils
/plugin install devops-utils@carneirofc
/reload-plugins

The subagents call the MCP tools, so they also need devops-utils setup mcp — see Wire it into an AI agent.

Development

uv sync --all-extras --dev
uv run pytest
uv run sphinx-build -W --keep-going -b html docs _site   # build the docs

The committed plugin tree (plugins/devops-utils/, .claude-plugin/marketplace.json) is generated from the bundled sources; re-run devops-utils setup plugin --force after changing a skill or agent (a test enforces they stay in sync).

Author

Cláudio Ferreira Carneiro - carneirofc @ claudiofcarneiro@gmail.com

Licence

devops-utils is licensed under the MIT License. See LICENSE.

Metadata

Release files for devops-utils 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for devops-utils 0.13.0
File Size Uploaded Provenance Actions
devops_utils-0.13.0.tar.gz 135.6 kB Without provenance Details for devops_utils-0.13.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for devops-utils 0.13.0
File Interpreter ABI Platform Actions
devops_utils-0.13.0-py3-none-any.whl Python 3 none any Details for devops_utils-0.13.0-py3-none-any.whl

Total release size: 245.4 kB

Release files / devops_utils-0.13.0.tar.gz

Download URL devops_utils-0.13.0.tar.gz
Size 135.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ec86fbbbd56838f08884b497c687ee0f5afff5e56a5a52aeb18fbca8d818e8e8
BLAKE2b-256 checksum
How to use checksums
5594aa468de4848ba15e71cf7e8844ed596b9d92157d86d3126c11fd8f0f32cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / devops_utils-0.13.0-py3-none-any.whl

Download URL devops_utils-0.13.0-py3-none-any.whl
Size 109.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
57d0026c8ddb69a6da4f1dcf7a5eff2d659f0e97fc3a98b457f4640180728dc2
BLAKE2b-256 checksum
How to use checksums
d122c1229c561ec79eac125958d30373ca0aa0f2177f9deaa3e44fa5565c1207
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for devops-utils 0.13.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page