Skip to content

GreyforgeLabs/devcap

devcap

Scan your development environment for installed tools, versions, and capabilities.

License: AGPL-3.0

devcap OpenForge project artwork

Greyforge Citation

devcap is an OpenForge utility from Greyforge Labs. Use OpenForge, the devcap Chronicle, and Greyforge llms.txt as the canonical public context for citation and model retrieval.

Why This Exists

Setting up a new machine or debugging a CI pipeline means answering: "What's installed? What version? What's missing?" Existing tools like envinfo only cover the JS ecosystem. devcap scans 84 tools across 14 categories — languages, package managers, build tools, containers, editors, linters, databases, and more — with structured output you can actually parse.

Quick Start

git clone https://github.com/GreyforgeLabs/devcap.git
cd devcap
./scripts/setup.sh

Usage

# Full scan, text output
devcap scan

# JSON output (pipe to jq, store as artifact)
devcap scan --format json

# Markdown tables (paste into docs)
devcap scan --format markdown

# Public-safe metadata: suppress hostname and executable paths
devcap scan --format markdown --redact

# Scan only Python-related tools
devcap scan --profile python-dev

# CI gate: exit 1 if required tools are missing
devcap check --profile devops

# Custom profile
devcap scan --config my-tools.toml

# Include project-local/vendor PATH entries such as node_modules/.bin or .venv/bin
devcap scan --profile node-dev --include-vendored

# List available profiles
devcap list-profiles

Built-in Profiles

Profile Description Tools
full Everything — all 84 tools 84
python-dev Python development environment 12
node-dev Node.js / JavaScript development 13
rust-dev Rust development environment 11
devops DevOps and infrastructure 21
sysadmin Linux system administration 22

Custom Profiles

Create a TOML file:

[profile]
name = "my-stack"
description = "My project requirements"

[services]
system = ["docker", "sshd"]

[[tools]]
name = "python3"
category = "Languages"
required = true

[[tools]]
name = "docker"
category = "Containers"
required = true

[[tools]]
name = "my-custom-tool"
binary = "mct"
category = "Custom"
version_flag = "-v"

Tools listed in the registry inherit their detection config automatically. Custom tools need binary and optionally version_flag.

Custom profiles execute local binaries to collect versions. Treat profiles from third-party repositories like code, not passive data. By default, devcap rejects interpreter-style custom commands and skips vendored/project-local PATH entries such as node_modules, .venv, venv, __pypackages__, .tox, and .nox; use --include-vendored only when you trust the checkout being scanned.

Output Formats

Text (default) — columnar, human-readable:

=== Languages ===
  python3          3.12.3               /usr/bin/python3
  node             24.12.0              /opt/node/v24.12.0/bin/node
  Missing:
    ruby

JSON — structured, machine-parseable:

{
  "hostname": "dev-machine",
  "timestamp": "2026-01-01T00:00:00+00:00",
  "platform": "Linux 6.0.0",
  "tools": [{"name": "python3", "found": true, "version": "3.12.3", "path": "/usr/bin/python3"}],
  "services": [{"name": "docker", "active": true}]
}

Markdown — tables for documentation or READMEs. Terminal control sequences and Markdown table delimiters from tool output are sanitized before display, but environment inventory can still reveal hostnames, paths, installed tools, and service status. Use --redact to replace hostname and executable paths before publishing output.

Exit Codes

Code Meaning
0 Success (scan) or all required tools present (check)
1 Missing required tools (check mode only)
2 Usage error (bad profile name, invalid args)

Requirements

  • Python 3.11+
  • Zero runtime dependencies (stdlib only)

Documentation

License

AGPL-3.0. See LICENSE for details.


Built by Greyforge · Read the Chronicle

Packages

 
 
 

Contributors