Project Info
Inspiration
Every company now runs on dozens of SaaS and AI vendors — and before adopting each one, someone has to vet its security posture: collect SOC 2 / ISO reports, read the DPA, check for breaches, map controls to frameworks, fill out a 100–300 question security questionnaire, and then keep watching for changes. At mid-market and AI-first companies there is no GRC analyst to do this, so it lands on an engineer or ops lead buried in spreadsheets and email. Reviews take weeks, block deals, and go stale the day they finish. AI vendors make it worse. AI tools, autonomous agents and MCP servers are the fastest-growing — and riskiest — vendor class, and traditional third-party risk management (TPRM) has no playbook for prompt injection, tool permissions, data retention/training, or autonomous actions. We built Argus to be the vendor-risk department these teams never had.
What it does
You add a vendor by uploading its compliance pack or pasting its trust-center link. Then a crew of nine specialized AI agents runs autonomously and live: Intake — profiles and tiers the vendor by data sensitivity, system access and type (SaaS / AI agent / MCP). Discovery — ingests evidence, handling the reality that ~90% of trust-center docs are gated behind request-access + NDA; runs live web research via Bright Data. Compliance — maps evidence to controls across SOC 2, ISO 27001, GDPR, HIPAA, PCI DSS, NIST CSF and ISO 42001 (AI governance), citing the exact artifact behind every result. Questionnaire — auto-completes SIG Lite and CAIQ with cited evidence, flagging unbacked self-attestation. AI-Vendor Risk — a first-class module for prompt-injection exposure, tool/action permissions, retention/training use and autonomous actions. Risk Scoring — computes an explainable inherent + residual score with a driver-level breakdown. Negotiation — routes access requests and NDAs to a human Approver (never auto-signs) and falls back to a vendor "Trust Passport" invite. Monitoring — arms continuous watch (CVEs, breaches, cert expiry, GitHub leaks, subprocessor changes) and re-scores on change. Executive — writes a board-ready decision: approve / approve-with-conditions / block. Everything renders in a polished portfolio + per-vendor dashboard with a live agent-activity feed, a real-time residual-risk trend graph, and control coverage front-and-center. Every assessment also enriches a shared, cross-org Trust Passport — so the Nth assessment of a common vendor is instant and higher-confidence.
How we built it
Backend: Python + FastAPI, SQLAlchemy (multi-tenant, SQLite by default, Postgres-ready), with an SSE-friendly activity feed. Frontend: Next.js (App Router) + React + TypeScript — a dark security dashboard. Reasoning: model-flexible via a single provider switch — OpenAI GPT-5.6 or Google Gemini — with structured (JSON) outputs, and deterministic heuristics so the whole product still runs and demos fully offline. Tools: Bright Data (vendored from the open-source Studio1HQ/tprm-agent) for discovery/web-unlocking, plus a real PDF/text evidence parser that detects document type and extracts dates, opinions and citation snippets. Built with OpenAI Codex + GPT-5.6: we used Codex to pressure-test the idea against the competitive landscape, refactor the upstream linear Discovery → Access → Action pipeline into an orchestrated multi-agent crew, and accelerate the schema, the nine agents, the compliance/scoring engines, the FastAPI routers + SSE feed, and the entire dashboard UI.
Challenges we ran into
The trust-center reality: most SOC 2 / pen-test reports are gated behind NDA. We modeled document access-state as first-class (public / requested / nda_pending / parsed / expired) and route NDAs to a human Approver instead of pretending the evidence is available. Explainability: a risk score no one trusts is useless, so every score ships with a driver-level breakdown and every control result cites the exact artifact and snippet. Honest evidence parsing: real uploaded SOC 2 packs are messy (full reports + bridge letters). We had to judge a vendor's SOC 2 posture across all artifacts using the strongest one, rather than letting one weak document override a valid Type II — and stop treating an "unknown" opinion as a qualified one. Offline reliability: for a live demo we couldn't depend on external APIs, so every agent has a deterministic fallback and a curated vendor knowledge base.
Accomplishments we're proud of
A coherent, runnable product — not a proof-of-concept: one input → a live crew → a polished portfolio and per-vendor dashboards. First-class AI-vendor risk (prompt injection, tool permissions, retention, autonomous actions) mapped toward ISO 42001 — a lens no incumbent treats as core. A Trust Passport network effect: shared, evidence-cited vendor profiles that compound with every assessment. Model flexibility (OpenAI or Gemini) behind one env switch, with graceful offline behavior.
What we learned
Vendor risk is fundamentally a context + network problem, and it's newly automatable end-to-end by agents — not just answer-drafting. The hardest part of "autonomy" is being honest about uncertainty (gated docs, unverifiable claims, stale evidence) rather than fabricating confidence. An orchestrated crew of small, single-purpose agents is easier to reason about, debug and make explainable than one monolithic prompt.
What's next
for Argus More frameworks and audit-ready exports (SSO, evidence bundles). A vendor-side Trust Passport so vendors can publish once and be assessed everywhere. Deeper continuous monitoring (real CVE/breach/dark-web feeds) and automatic re-scoring. Growing the AI-vendor risk corpus into the reference layer for the AI vendor economy.
Argus — Autonomous Third-Party Risk Management
The all-seeing guardian. Say "Assess Stripe" and a crew of specialized agents autonomously ingests evidence, maps compliance, scores explainable residual risk, and produces a board-ready decision — then monitors the vendor forever.
Argus is a multi-tenant TPRM platform built for mid-market and AI-first companies that have no dedicated GRC/security-analyst team. It turns vendor risk work — normally weeks of spreadsheets and email chasing — into an autonomous workflow.
What makes it different
- Real accounts & workspaces. Sign up to create a company workspace (or use the demo account); every org's vendors and evidence are tenant-isolated, and every workspace API endpoint is bearer-token authenticated and role-gated.
- Real evidence ingestion. Upload SOC 2 / ISO / DPA files (PDF or text) — Argus parses them, detects the type, extracts issue/validity dates and the audit opinion, and cites the exact artifact behind every control result.
- Evidence-based control mapping. Each control is rated Compliant / Partially
compliant / No evidence / Gated (NDA pending) / Expired / N/A with a citation and
observation — the model real compliance agents (Vanta, CISO Assistant) use, plus
gated/expiredas Argus differentiators. Claims without evidence = non-compliant. - Live agent-crew flow. A visible orchestration diagram lights up pending → active → done as the nine agents work, plus a streaming activity feed.
- Real-time continuous monitoring. A live residual-risk trend graph (auto-refreshing) tracks how a vendor's risk moves across assessments and monitoring signals.
- An autonomous department, not a copilot. Nine specialized agents operate like a real TPRM team (Intake, Discovery, Compliance, Questionnaire, AI-Vendor Risk, Risk Scoring, Negotiation, Monitoring, Executive).
- First-class AI-vendor risk. A dedicated module for AI tools / agents / MCP servers — prompt injection, tool permissions, data retention/training, autonomous actions — mapping toward ISO 42001. No incumbent treats this as core.
- Solves the trust-center reality. ~90% of trust centers gate SOC 2 / pen tests behind request-access + NDA. Argus ingests public content automatically, then routes NDAs to a human Approver (never auto-signs), and falls back to a Trust Passport vendor invite.
- Trust Passport network effect. Every assessment enriches a shared, cross-org vendor profile, so the Nth assessment is instant and higher-confidence.
- Model-flexible & offline-safe. Switch reasoning between OpenAI GPT-5.6 and Google Gemini with one env var; with no keys, deterministic heuristics keep the whole product running and demoable.
Tech stack
- Backend: Python 3.12 · FastAPI · SQLAlchemy (SQLite by default, Postgres-ready) ·
multi-tenant model · SSE activity feed · a real PDF/text evidence parser (
pypdf). - Frontend: Next.js (App Router) · React · TypeScript — a dark security dashboard with the portfolio view, per-vendor deep-dive, live crew flow, real-time monitoring graph, and Trust Passport network.
- Reasoning (switchable): OpenAI GPT-5.6 or Google Gemini, using structured
(JSON) outputs, behind a single
complete_json()abstraction with offline fallbacks. - Tools: Bright Data — async Discover API for adverse-media discovery and the
Web Unlocker for trust-center fetching (vendored from
Studio1HQ/tprm-agent).
Architecture & diagrams
Interactive versions of all diagrams (with PNG/SVG export) live in
diagrams.html— open it in a browser.
1. System architecture
Client dashboard → FastAPI backend → orchestrated crew → switchable LLM reasoning, tools, and a multi-tenant database.
flowchart TB
subgraph CLIENT["Client"]
UI["Next.js + React Dashboard<br/>Portfolio · Vendor · Activity · Passport"]
end
subgraph BACKEND["FastAPI Backend"]
R["Routers<br/>auth · vendors · assessments · dashboard"]
O["Orchestrator"]
AG["9-Agent Crew"]
SVC["Services<br/>Scoring · Compliance · Evidence"]
end
subgraph REASON["Reasoning — switchable"]
OA["OpenAI GPT-5.6"]
GEM["Google Gemini"]
end
subgraph TOOLS["Tools"]
BD["Bright Data<br/>Discover · Web Unlocker"]
EV["PDF / Text<br/>Evidence Parser"]
end
DB[("SQLAlchemy DB<br/>SQLite / Postgres")]
UI -->|"REST + SSE"| R
R --> O --> AG
AG --> SVC
AG -->|"structured JSON"| OA
AG -->|"structured JSON"| GEM
AG --> BD
SVC --> EV
SVC --> DB
R --> DB
2. Autonomous agent-crew orchestration
The Orchestrator plans and dispatches nine specialized agents — like a real TPRM department — from one input to a board-ready decision.
flowchart TD
Start(["Add vendor<br/>upload docs OR trust-center link"]) --> ORCH{{"Orchestrator<br/>plan and dispatch"}}
ORCH --> A1["1 · Intake<br/>profile and tier"]
A1 --> A2["2 · Discovery<br/>evidence + web research"]
A2 --> A3["3 · Compliance<br/>control mapping"]
A2 --> A4["4 · Questionnaire<br/>SIG Lite / CAIQ"]
A2 --> A5["5 · AI-Vendor Risk<br/>toward ISO 42001"]
A3 --> A6["6 · Risk Scoring<br/>inherent + residual"]
A4 --> A6
A5 --> A6
A2 -. "gated / missing docs" .-> A7["7 · Negotiation<br/>access · NDA · invite"]
A6 --> A8["8 · Monitoring<br/>continuous watch"]
A6 --> A9["9 · Executive<br/>decision"]
A9 --> OUT(["Approve · Conditions · Block"])
A8 --> PASS[("Trust Passport")]
A9 --> PASS
3. Assessment sequence (live)
One request kicks off a background crew that streams its work over SSE while persisting explainable results.
sequenceDiagram
autonumber
participant U as User
participant API as FastAPI
participant O as Orchestrator
participant C as Agent Crew
participant L as LLM (GPT-5.6 / Gemini)
participant DB as Database
U->>API: POST /vendors (link or upload)
API->>DB: create vendor + queued assessment
API-->>U: assessment_id
API->>O: run_assessment (background)
loop each agent in crew
O->>C: run(ctx, emit)
C->>L: structured JSON reasoning
L-->>C: profile / findings / summary
C->>DB: append activity (SSE)
end
O->>DB: persist scores, controls, decision
U->>API: GET /assessments/{id}/stream
API-->>U: live activity + final decision
4. Explainable scoring model
Inherent exposure is mitigated by verified controls and questionnaire assurance, and aggravated by findings and live signals — every score ships with driver-level explanations.
flowchart LR
DS["Data sensitivity"] --> INH(("Inherent<br/>Risk"))
SA["System access"] --> INH
VT["Vendor type<br/>SaaS / AI / MCP"] --> INH
INH --> RES(("Residual<br/>Risk"))
COV["Control coverage"] -->|"reduces"| RES
QA["Questionnaire assurance"] -->|"reduces"| RES
FND["Findings"] -->|"adds risk"| RES
MON["Live monitoring signals"] -->|"adds risk"| RES
RES --> DEC{"Decision"}
DEC --> AP["Approve"]
DEC --> AC["Approve w/ conditions"]
DEC --> BL["Block"]
5. AI-vendor risk lens (ISO 42001)
A first-class risk dimension for AI tools, agents and MCP servers that no traditional TPRM tool treats as core.
flowchart TD
AIV["AI-Vendor Risk<br/>mapping toward ISO 42001"] --> D1["Prompt-injection exposure"]
AIV --> D2["Tool / action permissions"]
AIV --> D3["Data retention and training use"]
AIV --> D4["Autonomous actions"]
AIV --> D5["Model providers and subprocessors"]
D1 --> FIND["AI-risk findings<br/>added to residual risk"]
D2 --> FIND
D3 --> FIND
D4 --> FIND
D5 --> FIND
6. Evidence access-state lifecycle
Argus models the trust-center reality — ~90% of docs are gated — as a first-class state machine, routing NDAs to a human Approver.
stateDiagram-v2
[*] --> public
[*] --> requested
requested --> nda_pending: NDA required
nda_pending --> granted: Approver signs NDA
requested --> granted: access approved
granted --> downloaded
public --> parsed
downloaded --> parsed: parse + cite
parsed --> expired: report ages out
expired --> [*]
parsed --> [*]
7. Trust Passport network effect
Every assessment across every org enriches a shared, evidence-cited vendor profile — so the Nth assessment is instant and higher-confidence.
flowchart TB
O1["Org A<br/>assessment"] --> TP[("Trust Passport<br/>shared vendor profile")]
O2["Org B<br/>assessment"] --> TP
O3["Org C<br/>assessment"] --> TP
TP --> E["Richer evidence<br/>+ cross-org confidence"]
E --> O4["New org<br/>instant, higher-confidence assessment"]
O4 -.->|"enriches"| TP
Quickstart
1. Backend (port 8000)
cd backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # optional: set a provider + key (see Configuration)
uvicorn app.main:app --reload --port 8000
Health check: http://127.0.0.1:8000/health · API docs: http://127.0.0.1:8000/docs
The /health endpoint reports the active provider, e.g.:
{ "status": "healthy", "llm_enabled": true, "llm_provider": "gemini",
"llm_model": "gemini-3.5-flash", "bright_data_enabled": false }
2. Frontend (port 3000)
cd frontend
npm install
cp .env.local.example .env.local # points at http://127.0.0.1:8000
npm run dev
Open http://localhost:3000.
Offline mode: leave the keys blank and everything still works — try the built-in examples (Cursor, Stripe, Acme MCP). Add a provider + key to enable live reasoning.
Configuration
All backend settings are environment variables (see backend/.env.example).
Keep real keys only in backend/.env (gitignored) — never in .env.example.
| Variable | Default | Description |
|---|---|---|
ARGUS_LLM_PROVIDER | openai | Reasoning provider switch: openai or gemini. |
OPENAI_API_KEY | — | OpenAI key (used when provider is openai). |
ARGUS_LLM_MODEL | gpt-5.6 | OpenAI model name. |
GEMINI_API_KEY | — | Google AI Studio key (used when provider is gemini; starts with AIza…). |
ARGUS_GEMINI_MODEL | gemini-3.5-flash | Gemini model name. |
BRIGHT_DATA_API_TOKEN | — | Enables live discovery + web unlocking. |
BRIGHT_DATA_UNLOCKER_ZONE | — | Web Unlocker zone (trust-center fetching). |
BRIGHT_DATA_SERP_ZONE | — | Legacy SERP zone (kept for compatibility; Discover API needs only the token). |
DATABASE_URL | sqlite:///./argus.db | SQLAlchemy URL; set a Postgres URL for production. |
ARGUS_PUBLIC_URL | http://localhost:3000 | Base URL for vendor-collaboration invite links. |
ARGUS_CORS_ORIGINS | http://localhost:3000 | Comma-separated allowed browser origins (never * with credentials). |
ARGUS_MAX_UPLOAD_FILES | 10 | Max files per upload request. |
ARGUS_MAX_UPLOAD_BYTES | 15728640 (15 MB) | Max bytes per uploaded file (parsed in memory). |
Switch to Gemini:
ARGUS_LLM_PROVIDER=gemini
GEMINI_API_KEY=AIza... # from https://aistudio.google.com/apikey
ARGUS_GEMINI_MODEL=gemini-3.5-flash
Deployment baseline: every workspace API endpoint requires a bearer token and role. Set
ARGUS_CORS_ORIGINSto the deployed frontend origin, use Postgres, and set explicit upload limits before exposing the service outside a trusted environment.
Demo script (< 3 minutes)
- Sign in — create an account, or click Use demo account (
demo@acme.com/demo1234). - Portfolio is empty. Click Add vendor.
- Cursor via trust-center link (
https://trust.cursor.com/): watch the crew flow light up live. Cursor is SOC 2 Type II certified (verified), so it gets a full, honest assessment — control coverage front and center → approve with conditions driven by the real AI data-flow risk (source code sent to model providers). - Stripe via upload: upload its compliance pack → Argus parses each file and cites it → high coverage → approve. Shows real evidence ingestion end-to-end.
- Acme MCP Connectors (AI/MCP vendor): open the AI Risk tab — prompt-injection exposure, unscoped tool permissions, undisclosed retention, no third-party audit → critical residual risk → BLOCK. The "wow" no competitor demos.
- Upload evidence: on any vendor's Evidence tab, upload a SOC 2 (PDF/text) → Argus re-assesses and the Compliance tab flips controls to Compliant with the cited artifact.
- Monitoring: open the tab to see the real-time residual-risk trend graph and the continuous-monitoring feed (auto-refreshing).
- Agent Activity & Trust Passport: watch the crew work across assessments live, and see each assessment enrich the shared vendor graph.
A full narrated video script is in docs/demo-video-script.md.
Project layout
backend/app/
agents/ # orchestrator + 9 crew agents
compliance/ # framework control catalogs + questionnaires
routers/ # auth, vendors, assessments, dashboard, activity, orgs
tools/ # Bright Data discovery (Discover API) + access (Web Unlocker)
data/ # curated demo vendor knowledge base (offline fallback)
llm.py # provider-switching LLM layer (OpenAI / Gemini)
scoring.py # inherent + residual scoring
evidence.py # PDF/text evidence parser
services.py # serialization + portfolio aggregation
frontend/app/ # Next.js dashboard (portfolio, vendor, activity, passport)
diagrams.html # interactive architecture/flow diagrams (PNG/SVG export)
How we built this with GPT-5.6
- Reasoning at runtime: the intake profiling, AI-risk analysis, and executive
summary agents call an LLM through a single
complete_json()abstraction, with a one-env-var switch between OpenAI GPT-5.6 and Google Gemini, and deterministic fallbacks for offline reliability. - Foundation reuse: the upstream
Studio1HQ/tprm-agentBright Data Discovery/Access tools were vendored and its linearDiscovery → Access → Actionpipeline was refactored into an orchestrated multi-agent crew. - Key design decisions: the trust-center access strategy (never auto-sign NDAs; human Approver + vendor-invite fallback), the tiering + residual-scoring rubric, and the AI-vendor risk dimensions.
See SUBMISSION.md for the submission checklist.
Attribution & license
Built on top of Studio1HQ/tprm-agent
(MIT). The vendored, adapted files (backend/app/tools/discovery.py,
backend/app/tools/access.py, backend/app/config.py) note their origin in-file.
All multi-tenant platform, agent crew, compliance engine, scoring, trust-center
handling, Trust Passport, and UI code is new work created during the hackathon.
MIT License.
Analysis
View
Metric
- 6
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- Google GeminiClaimed
- Node.jsClaimed
9 of 11 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- CursorCommits
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
297 KB
Source files
64
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
k9-007/argus-autonomous-tprm-
73 files · 317 KB · @ 9d3b9d8
Structure
Interface
55 files · 75%Screens, components and styles rendered to the user.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python49%
- TypeScript23%
- HTML12%
- Markdown9%
- CSS8%
- JavaScript0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 14- beautifulsoup4
- fastapi
- google-genai
- httpx
- openai
- pydantic
- pydantic-settings
- pypdf
- python-dotenv
- python-multipart
- requests
- sqlalchemy
- sse-starlette
- uvicorn[standard]
frontend/package.json
npm · 7- next
- react
- react-dom
- +4 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.