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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1315e6c0870cffc53853a0bf6231dafd450d3e0f9d9edc8db501e2a1be3713b
|
|
| MD5 |
32e76943f4660115cb2ba8ca89c3e6de
|
|
| BLAKE2b-256 |
04300be5a652f53d5c5d0a55dccb34534a251953ec1a26a492459142a7123d39
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0b2fe8fc15d1deb9b7400fdb622996c58d0767d2ca2c2cbb8ff4fb0e4a3a7ef
|
|
| MD5 |
5e08137aecf91e36b54a0a4869f341a9
|
|
| BLAKE2b-256 |
c161dcaf71fe7739555aa77fea7f2dc9822682bc204169f3ec25916ca9ed5040
|