Developer workstation security and hygiene sweeps -- secrets, deps, gitignore, SSH keys, AI editor configs, cargo publish CI, and more
Project description
devguard
devguard scans your developer workspace for security and hygiene issues. It runs a set of sweeps -- automated checks across local repos, SSH keys, dependencies, and more -- and reports findings in one pass.
$ devguard sweep
local_dev: 142 repos scanned, 0 findings
public_github_secrets: 18 repos scanned, 0 findings
local_dirty_worktree_secrets: 47 repos scanned, 0 findings
gitignore_audit: 3 repos with gaps (1 public)
dependency_audit: 12 vulns across 5 repos (2 critical)
ssh_key_audit: 1 weak key, 2 stale GitHub keys
ai_editor_config_audit: 47 repos checked, 2 errors
Quick start
Requires Python >= 3.11.
pip install devguard
devguard doctor # check prerequisites (trufflehog, cargo-audit, etc.)
devguard sweep # run all enabled sweeps
No spec file is required. Without one, devguard uses built-in defaults. Create devguard.spec.yaml to customize which sweeps run and their parameters.
Sweeps
Security
| Sweep | Description |
|---|---|
public_github_secrets |
Scan public GitHub repos for committed secrets (TruffleHog). |
dependency_audit |
Check repos for known vulnerabilities in dependencies (npm audit, pip-audit, cargo-audit). |
ssh_key_audit |
Audit local SSH keys for weak algorithms, short key lengths, and stale GitHub deploy keys. |
local_dirty_worktree_secrets |
Scan uncommitted changes in local repos for secrets before they reach a commit. |
Hygiene
| Sweep | Description |
|---|---|
gitignore_audit |
Find repos missing .gitignore or lacking expected ignore patterns for their language. |
ai_editor_config_audit |
Check AI editor configs (Cursor rules, Claude settings) for consistency across repos. |
cargo_publish_audit |
Verify Rust crates have publish CI, correct metadata, and no publish blockers. |
publish_audit |
Audit PyPI and npm repos for correct CI publish pipelines, OIDC trusted publishing, and version/license consistency. |
Analysis
| Sweep | Description |
|---|---|
project_flaudit |
LLM-driven audit (OpenRouter/Gemini): README drift, test gaps, rule violations. |
Workspace
| Sweep | Description |
|---|---|
local_dev |
Scan local repos for accidentally committed large files, binaries, and dev artifacts. |
Configuration
Copy devguard.spec.example.yaml to devguard.spec.yaml and edit to taste. The spec file controls which sweeps are enabled, their parameters, and output paths.
Most sweeps work with zero configuration. Sweeps that need external access:
public_github_secrets: requiresGITHUB_TOKEN(for GitHub API).project_flaudit: requiresOPENROUTER_API_KEY.ssh_key_auditwithcheck_github: true: requiresGITHUB_TOKEN.dependency_audit: requires audit tools installed (npm,pip-audit,cargo-audit).
Environment variables can be set in .env or exported in your shell.
Pre-commit hooks
devguard ships .pre-commit-hooks.yaml with three hooks: devguard-gitignore, devguard-ai-config, and devguard-secrets. Add to your .pre-commit-config.yaml:
- repo: https://github.com/arclabs561/devguard
rev: main
hooks:
- id: devguard-gitignore
- id: devguard-secrets
Library usage
Sweep modules can be imported directly for scripting or integration:
from devguard.sweeps.ssh_key_audit import audit_ssh_keys
from devguard.sweeps.dependency_audit import audit_dependencies
Development
pip install -e ".[dev]" # editable install for development
pytest
ruff check .
mypy devguard/
License
MIT
Legacy: Service monitoring (npm, Vercel, Fly.io, GitHub)
devguard originally provided unified monitoring for npm packages, GitHub repositories, and Fly.io/Vercel deployments. This functionality still exists but is secondary to the sweep system.
Monitored services
- npm packages for security vulnerabilities
- GitHub repositories for Dependabot security alerts
- Fly.io deployments for health status
- Vercel deployments for deployment status
- Container/Dockerfile security best practices
- Secret scanning (TruffleHog or regex fallback)
- AWS IAM security posture for satellite nodes
- AWS Cost monitoring with budget alerts
- API usage/credits for LLM providers (OpenRouter, Anthropic, OpenAI, Perplexity, Groq)
- Firecrawl API credit usage
- Tavily API usage tracking
- Tailscale mesh network health
- Domain/SSL certificate expiry
- Docker Swarm cluster health
- Red team security testing for deployment endpoints
- Web dashboard for real-time monitoring
- MCP server for AI agent integration
Legacy commands
devguard check # run monitoring checks
devguard check --watch # continuous monitoring
devguard mcp # start MCP server
devguard dashboard # start web dashboard
devguard discover # auto-discover resources to monitor
devguard config # show current configuration
devguard auth gh # authenticate with GitHub
devguard auth-status # show auth status for all services
Legacy configuration
Set environment variables in .env:
GITHUB_TOKEN=your_github_token
VERCEL_TOKEN=your_vercel_token
FLY_API_TOKEN=your_fly_token
SNYK_TOKEN=your_snyk_token
GITHUB_ORG=your_org_name
NPM_PACKAGES_TO_MONITOR=package1,package2
GITHUB_REPOS_TO_MONITOR=owner/repo1,owner/repo2
FLY_APPS_TO_MONITOR=app1,app2
VERCEL_PROJECTS_TO_MONITOR=project1,project2
DASHBOARD_ENABLED=false
DASHBOARD_HOST=0.0.0.0
DASHBOARD_PORT=8080
DASHBOARD_API_KEY=your_secure_key
Architecture (legacy)
- devguard: Main orchestrator managing checkers and reports
- BaseChecker: Abstract base class for all checkers
- Reporter: Output formatting, webhooks, email delivery
- Checkers: NpmChecker, GitHubChecker, VercelChecker, FlyChecker, ContainerChecker, SecretChecker, AWSIAMChecker, RedTeamChecker
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devguard-0.2.3.tar.gz.
File metadata
- Download URL: devguard-0.2.3.tar.gz
- Upload date:
- Size: 277.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2c3c39c4ca3c106cd3be17384ad698ee5e97aac151f918c83ad7ce9d56d1324
|
|
| MD5 |
14b02223c8b2e62420e38bae0c3277ea
|
|
| BLAKE2b-256 |
1d3e72da20ab46d0acfdcb69d268c7c1a8219ae54d012b5fffeb5f2fe81de496
|
Provenance
The following attestation bundles were made for devguard-0.2.3.tar.gz:
Publisher:
publish.yml on arclabs561/devguard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devguard-0.2.3.tar.gz -
Subject digest:
e2c3c39c4ca3c106cd3be17384ad698ee5e97aac151f918c83ad7ce9d56d1324 - Sigstore transparency entry: 1154801899
- Sigstore integration time:
-
Permalink:
arclabs561/devguard@4cf73dc03a9ce9e68ff8dc3d8c022f994cfd1b61 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/arclabs561
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4cf73dc03a9ce9e68ff8dc3d8c022f994cfd1b61 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devguard-0.2.3-py3-none-any.whl.
File metadata
- Download URL: devguard-0.2.3-py3-none-any.whl
- Upload date:
- Size: 177.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38bfc1a615ff0f8cbec55bc1a6dd7207752467051068abf018732940ac27c3e0
|
|
| MD5 |
88d644efe25b9b9a876fd9d5e7d199fa
|
|
| BLAKE2b-256 |
461861876505325684d878ac31aba07998726fb165f2bdd0769ebb670cd8e8ad
|
Provenance
The following attestation bundles were made for devguard-0.2.3-py3-none-any.whl:
Publisher:
publish.yml on arclabs561/devguard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devguard-0.2.3-py3-none-any.whl -
Subject digest:
38bfc1a615ff0f8cbec55bc1a6dd7207752467051068abf018732940ac27c3e0 - Sigstore transparency entry: 1154801902
- Sigstore integration time:
-
Permalink:
arclabs561/devguard@4cf73dc03a9ce9e68ff8dc3d8c022f994cfd1b61 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/arclabs561
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4cf73dc03a9ce9e68ff8dc3d8c022f994cfd1b61 -
Trigger Event:
push
-
Statement type: