{
  "$id": "https://wrok.in/capabilities.json",
  "manifestVersion": 1,
  "updated": "2026-08-07",
  "product": {
    "name": "wrokin",
    "vendor": "BytesBrains",
    "summary": "GitHub App that runs an AI agent team on your repositories — code review, security audit, issue triage, and a deterministic repo-posture audit. BYOK: reviews run on your own LLM API key and your chosen model, per agent.",
    "homepage": "https://wrok.in",
    "install": "https://github.com/apps/wrokin",
    "installDeepLink": "https://github.com/apps/wrokin/installations/new",
    "dashboard": "https://app.wrok.in"
  },
  "humanCheckpoints": [
    "GitHub App install consent and BYOK key custody",
    "payment"
  ],
  "docs": {
    "llmsTxt": "https://wrok.in/llms.txt",
    "integrationManual": "https://wrok.in/agents.md",
    "commandContract": "https://wrok.in/w-commands.md",
    "configSchema": "https://wrok.in/config.schema.json"
  },
  "providers": [
    "anthropic",
    "openai",
    "deepseek",
    "google",
    "mistral",
    "openrouter",
    "moonshot",
    "groq",
    "cruise"
  ],
  "modelChoice": "any model id the customer's key can call, chosen per role",
  "roleStatusLegend": {
    "live": "runs in wrokin's Worker on your BYOK key; configure per repo in the dashboard or .wrokin/config.yml",
    "available": "customer-enableable on a qualifying plan, but runs on YOUR GitHub Actions runner via a workflow a one-click setup PR adds",
    "private-preview": "invite-only; not enableable by customers today — do not plan an integration around it",
    "inactive": "accepted by the config schema but has no registered runner — configuring it has no effect today"
  },
  "roles": [
    {
      "id": "code-review",
      "status": "live",
      "billing": "byok",
      "autoTrigger": ["pull_request"],
      "onDemand": "/w review",
      "posts": "PR comment headed '🤖 wrokin — Code Review' with file:line findings"
    },
    {
      "id": "security-audit",
      "status": "live",
      "billing": "byok",
      "autoTrigger": ["pull_request"],
      "onDemand": "/w security audit",
      "posts": "PR comment headed '🤖 wrokin — Security Audit' with file:line findings"
    },
    {
      "id": "issue-triage",
      "status": "live",
      "billing": "byok",
      "autoTrigger": ["issues"],
      "onDemand": "/w triage",
      "posts": "structured triage comment (labels, priority, duplicate check)"
    },
    {
      "id": "repo-audit",
      "status": "live",
      "billing": "none",
      "deterministic": true,
      "autoTrigger": [],
      "onDemand": "/w audit",
      "posts": "repo-setup posture report",
      "note": "Warden. Deterministic checks, no model call, no API key needed — works from the install alone."
    },
    {
      "id": "project-management",
      "status": "inactive",
      "billing": "byok",
      "autoTrigger": [],
      "onDemand": null,
      "note": "Accepted by the config schema but has no registered runner — configuring it has no effect today."
    },
    {
      "id": "hunter",
      "status": "private-preview",
      "customerEnableable": false,
      "billing": "managed",
      "onDemand": "/w hunter [level]",
      "levels": ["foray", "stakeout", "expedition"],
      "defaultLevel": "stakeout",
      "note": "Proof-by-execution security scanning on wrokin's own model keys. Invite-only; do not plan an integration around it."
    },
    {
      "id": "builder",
      "status": "available",
      "customerEnableable": true,
      "billing": "managed",
      "onDemand": "/w build [level]",
      "levels": ["patch", "feature", "expedition"],
      "defaultLevel": "patch",
      "requiresPlan": ["Pro", "Team", "Business"],
      "enable": "one-click in the dashboard: opens a setup PR adding .github/workflows/wrokin-builder.yml to your repo",
      "note": "Verified issue→PR. Implements an issue and proves the change green on YOUR runner before proposing it: a ready PR when your build and tests pass, a draft marked unproven when they don't, and at `patch` an unproven change is dropped rather than opened. Reasoning runs on wrokin's managed keys and debits agent credits."
    }
  ],
  "triggers": {
    "webhookEvents": ["pull_request", "issues", "issue_comment"],
    "actorGate": ["OWNER", "MEMBER", "COLLABORATOR"],
    "actorGateNote": "Auto and on-demand runs require the PR/issue/comment author to hold one of these associations; anything else is silently ignored, so a third party on a public repo cannot spend the installer's tokens or quota."
  },
  "config": {
    "path": ".wrokin/config.yml",
    "aliases": [".wrokin/config.yaml", ".pi/config.yml"],
    "schema": "https://wrok.in/config.schema.json",
    "semantics": "sparse override of dashboard-stored settings; invalid entries are ignored and the rest of the file still applies (fails open to stored settings)"
  },
  "setupToken": {
    "mint": "human action in the dashboard (checkpoint 1) — POST /api/installations/{id}/setup-token behind the dashboard session",
    "api": "https://api.wrok.in/api/setup/* with Authorization: Bearer wst_…",
    "ttlSeconds": 3600,
    "scope": "keys + role behavior (enabled, provider, modelName, events, paths); identity fields refused",
    "docs": "https://wrok.in/agents.md"
  },
  "plans": [
    { "name": "Free", "monthlyRuns": 150 },
    { "name": "Pro", "monthlyRuns": 1000 },
    { "name": "Team", "monthlyRuns": 3000 },
    { "name": "Business", "monthlyRuns": 20000 }
  ],
  "quotaNotes": "monthlyRuns meters BYOK agent runs, counted once per delivery (a multi-agent run on one PR event is one run). Warden runs count (they are runs; they spend no tokens). A daily cap of max(50, monthlyRuns/10) bounds single-day runaways. Managed Hunter spend is metered separately and never draws down monthlyRuns.",
  "pricing": "https://wrok.in/#pricing",
  "qualityFeedback": {
    "reactions": "👍/👎 on a wrokin review comment is recorded as an agree/disagree verdict against that comment's model when the PR closes; collaborators only",
    "command": "/w wrong [comment-link] <reason> records a false-claim verdict, with the reason — against the linked review comment, or the latest wrokin review comment when no target is given",
    "feeds": "per-provider×model quality metrics",
    "evidence": "https://api.wrok.in/quality"
  },
  "dataHandling": {
    "reviewCall": "the diff and bounded repo context go to the customer's chosen model provider under the customer's own key",
    "telemetry": "wrokin stores finding locations (file/line/severity) and outcomes — not the prose of findings, and not code",
    "details": [
      "https://wrok.in/data-handling.html",
      "https://wrok.in/privacy.html",
      "https://wrok.in/dpa.html"
    ]
  }
}
