Skip to main content

appsec — an application-security agent (greenfield AgentCulture sibling).

Project description

appsec

The App Security toolbelt — a stateful CLI that guides an AI agent or a human through a rigorous, resumable vulnerability hunt. It scopes the target by project type, language, and surface; hands back a prioritized checklist of what to look for and where; and records every finding and decision to a local append-only JSONL log so the hunt can pause, resume, and be audited.

appsec is a guide and state-keeper, not a scanner or exploit engine — it does not run payloads or replace semgrep/trivy/CodeQL. Its output is guidance, checklist state, and recorded findings.

Install

uv sync

The hunt loop

uv run appsec learn                      # get into the app-sec frame of mind
uv run appsec learn --scaffold web_api   # emit a portable template + a SKILL.md kit

# Scope the target — derives a prioritized checklist keyed to the KB:
uv run appsec scope \
  --project-type backend --language python \
  --surface internet-facing --use-case "payments API" --targeted-system acme-api

uv run appsec status                     # read-only: coverage + recommended next item
uv run appsec finding add \
  --location app/db.py:42 --class "A03:2021-Injection / CWE-89" \
  --severity High --evidence "string-formatted SQL" --item web-sql-injection

uv run appsec report --out appsec-report.md   # export findings + coverage
uv run appsec resume                     # come back tomorrow: exact open/checked/finding state

Every verb takes --json for agent-mode (deterministic, machine-parseable on stdout; diagnostics on stderr). State lives under .appsec/hunt.jsonl in the current repo.

Knowledge base

v1 covers two target domains, grounded in the OWASP Top 10 (2021) with canonical CWE ids and a Low/Medium/High/Critical severity scale:

  • web app + API/backend — the OWASP Top 10 classes.
  • CLI / library — path traversal, command injection, unsafe deserialization, supply-chain/dependency exposure, privilege boundaries.

The mapping from scope dimensions to vulnerability classes lives in declarative YAML under appsec/knowledge/, so coverage grows by editing data, not code. Cloud/IaC/container (#18) and LLM-app/agent-surface (#19) coverage are tracked follow-ups.

Test / lint

uv run pytest -n auto
uv run flake8 --config=.flake8 appsec/ tests/
uv run black appsec/ tests/ && uv run isort appsec/ tests/

Docs

The design trail lives in docs/specs/ (the converged spec) and docs/plans/ (the buildable plan), both produced with the /think/spec-to-plan skills.

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

appsec-0.4.0.tar.gz (191.4 kB view details)

Uploaded Source

Built Distribution

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

appsec-0.4.0-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file appsec-0.4.0.tar.gz.

File metadata

  • Download URL: appsec-0.4.0.tar.gz
  • Upload date:
  • Size: 191.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for appsec-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a1315e6c0870cffc53853a0bf6231dafd450d3e0f9d9edc8db501e2a1be3713b
MD5 32e76943f4660115cb2ba8ca89c3e6de
BLAKE2b-256 04300be5a652f53d5c5d0a55dccb34534a251953ec1a26a492459142a7123d39

See more details on using hashes here.

File details

Details for the file appsec-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: appsec-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 48.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for appsec-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0b2fe8fc15d1deb9b7400fdb622996c58d0767d2ca2c2cbb8ff4fb0e4a3a7ef
MD5 5e08137aecf91e36b54a0a4869f341a9
BLAKE2b-256 c161dcaf71fe7739555aa77fea7f2dc9822682bc204169f3ec25916ca9ed5040

See more details on using hashes here.

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