Secfoo - Everyone's a security professional.
Secfoo turns any AI coding agent into a disciplined security reviewer — same standards, same report, every run. Context-based security architectural assessment orchestrator: pick skills, targets, and an agent CLI to run them.
Website · Getting Started · CLI Reference · Documentation
Pick one or more security activities (see the catalog below), point them at a target (a public GitHub URL, a local directory, plus optional Confluence links for extra context), choose which coding-agent CLI runs them (Claude Code, Cursor, Antigravity, Gemini CLI, or Codex CLI), and browse every assessment ever run, across every project, in a local web dashboard.
This repository is the open-source CLI and local dashboard. secfoo's enterprise portal (multi-tenant cloud sync, admin console) is closed-source and lives in a separate private repository —
secfoo cloud loginconnects this CLI to it, but nothing about the portal itself is in this repo.
Quick Start
Requires Python 3.10+ for pip install — or skip Python entirely with
npm, a standalone binary, or Docker (see Install below).
pip install secfoo
secfoo run --skill security-architecture-review --agent claude
You'll need an agent CLI already installed and authenticated — Claude
Code, Cursor, Antigravity, Gemini CLI, or Codex CLI (--agent claude|agent|agy|gemini|codex)
— or just a model API key with the built-in api agent (below).
On a real terminal, that first run prompts for a project name and
application ID, then browse every result in the dashboard:
secfoo run --skill sast --skill threat-modeling \
--target https://github.com/org/repo --agent claude
secfoo serve
No agent CLI? Use an API key
The built-in api agent is a LangGraph workflow that sends the target's
source to OpenAI, Anthropic or Gemini through LiteLLM — no coding-agent
CLI needed, which suits CI. Keys are read from the environment only and
never stored:
pip install "secfoo[api]"
export OPENAI_API_KEY=... # or ANTHROPIC_API_KEY / GEMINI_API_KEY
export SECFOO_API_MODEL=openai/gpt-4.1-mini # optional; any LiteLLM model id
secfoo run --skill sast --agent api --target https://github.com/org/repo
It suits small and medium repositories: the whole target has to fit in one
request, and larger ones are rejected with a message suggesting --exclude.
Tracking AI spend
Every run records tokens and cost where the agent reports them (api,
claude; gemini reports tokens only). See it per run in secfoo run,
secfoo list and the dashboard, or summarised:
secfoo cost # by agent
secfoo cost --by skill --since 2026-09-01
secfoo cost --project checkout
Secfoo also includes a built-in LangGraph agent whose model calls are routed through LiteLLM. Configure the provider key and model in the environment; credentials are never stored in the repository:
$env:OPENAI_API_KEY = "your-key"
$env:SECFOO_MODEL = "openai/gpt-4o-mini"
secfoo run --skill security-architecture-review --agent secfoo
LiteLLM-reported spend is stored per run and can be reviewed from the dashboard or queried from the CLI:
secfoo cost
secfoo cost --project "Checkout Service"
See Getting Started or the CLI reference for more.
What can you do with secfoo?
- Review architecture and threat-model a system against secure design principles, STRIDE/LINDDUN, and CSA CCM v4 domain conformance
- Find code and dependency vulnerabilities — SAST and SCA reachability triage, tracked as an Open/Closed Findings register across rescans, not just a one-off report
- Catch exposed credentials across source, config, git history, and linked Confluence pages
- Review LLM prompts and agent tool definitions for injection and over-permissioning risk
- Track third-party/vendor risk with AI-BOM inventories and a dedicated third-party review workflow
- Run it in CI, non-interactively, with the same commands you'd use locally
- Browse every assessment across every project in a local dashboard, or sync to your org's enterprise portal
Why secfoo?
- Agent-native, not another parser: a skill is a structured prompt, not a bespoke rules engine — secfoo hands your existing coding-agent CLI a brief and a target and lets it actually read the code, the way a human reviewer would.
- Local-first:
secfoo serveand every run stay on your machine unless you explicitly connectsecfoo cloud loginto your org's portal. - One case file per system: assessments consolidate repeat runs under the same application ID instead of fragmenting into a new record every rescan.
- Concurrent by default: multiple
--skillflags run at the same time, not one after another. - Bring your own agent: Claude Code, Cursor, Antigravity, Gemini CLI, or Codex CLI — pick whichever you already use and trust.
- Open source CLI: MIT licensed.
Activity catalog
| Activity | Skill ID |
|---|---|
| Security Architecture Review | security-architecture-review |
| Threat Modeling | threat-modeling |
| SAST — Static Code Analysis | sast |
| SCA — Reachability & Upgrade Triage | sca-reachability |
| Secret Scanning — Code, Confluence & Docs | secret-scanning |
| Prompt Review | prompt-review |
| Deployment Readiness | deployment-readiness |
| Responsible AI Compliance | responsible-ai-compliance |
Run one, or several together — multiple --skill flags execute
concurrently against the same target. Each has its own report shape and
program-level dashboard; see docs/REFERENCE.md for
what each one actually produces, plus assessments, configuration, and
install/distribution details.
Install
pip install secfoo # PyPI, needs Python 3.10+
npm install -g @rakfortltd/secfoo # npm, no Python needed
docker run --rm ghcr.io/rakfortltd/secfoo --help
Also available via a universal install script (macOS/Linux/Windows) and
as standalone platform binaries — see
docs/REFERENCE.md#install for every channel.
Developing on this repo instead? pip install -e ".[dev]".
Learn More
- docs/REFERENCE.md — full activity catalog, dashboards, assessments, configuration, distribution
- Getting Started
- Full Documentation
- CLI Reference
- Running an assessment
- Excluding paths from a scan
- Rendering architecture diagrams
- Connecting agent CLIs (MCP)
- Editions & pricing
Contributing
We welcome contributions — see CONTRIBUTING.md to get started, and CODE_OF_CONDUCT.md for community expectations. Found a security issue? See SECURITY.md instead of opening a public issue.
Metadata
Release files for secfoo 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| secfoo-0.3.0.tar.gz | 161.9 kB | Without provenance | Details for secfoo-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| secfoo-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for secfoo-0.3.0-py3-none-any.whl |
Total release size: 388.8 kB
Release files / secfoo-0.3.0.tar.gz
| Download URL | secfoo-0.3.0.tar.gz |
|---|---|
| Size | 161.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a24bcc765e239227afaf3c9345a0d312fb009bc7bc55ea042b1649c4853eb88c
|
|
BLAKE2b-256 checksum How to use checksums |
dd0dc2e19cf6c9fc8fd02d9223301a14d251c710d00ccc3200415cd6a14504d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / secfoo-0.3.0-py3-none-any.whl
| Download URL | secfoo-0.3.0-py3-none-any.whl |
|---|---|
| Size | 226.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
72c26f5963b906759268f769e9c3cc510e195d2aa13d1ceb561ddb8713402e14
|
|
BLAKE2b-256 checksum How to use checksums |
ccdde01772200329d46de2f55885bcbd95ebf893e8f11250f24e7572f3e79507
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Security for secfoo 0.3.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.