Chainsaw serves five personas, each with a different mental model.
Match the user's utterance to a persona BEFORE picking a mode —
mis-routing wastes the user's time (and, in the transcript that
prompted this page, turned a five-minute setup into four turns
of dead-end help).
End-user developer
In their head: "I want `pip install` / `npm install` to go through Chainsaw."
They'll say: "set up chainsaw for python," "do it for me," "install chainsaw in this repo"
Success looks like: A working pip.conf / .npmrc / settings.xml / ~/.docker/config.json.
AppSec
In their head: "I author the rules that block bad packages."
They'll say: "draft a CVSS policy," "why was this CVE allowed?"
Success looks like: A policy proposal submitted for human approval.
DevSecOps / Platform
In their head: "I plumb the proxy into fleets and CI runners."
They'll say: "mint a CI service token," "add proxy to GitHub Actions"
Success looks like: CI runners + developer machines resolving packages via Chainsaw.
Enterprise IT / Governance
In their head: "Show me evidence — I report, I don't author."
They'll say: "export SBOM," "pull yesterday's audit log"
Success looks like: A CycloneDX SBOM or audit CSV in hand.
Agent-as-persona
In their head: "I'm headless — no browser, no cookies, no Turnstile widget I can solve."
They'll say: (no user utterance — this is the agent's own mental model)
Success looks like: Fetched mcp.json, completed device-code flow, connected MCP, called chainsaw_introduce.