[{"data":1,"prerenderedAt":411},["ShallowReactive",2],{"docs-navigation":3,"docs\u002Fdocs\u002Fquickstart\u002Flocal":194,"docs\u002Fdocs\u002Fquickstart\u002Flocal-surround":406},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,13,35,129,149,154],{"title":10,"path":6,"stem":11,"icon":12},"Overview","docs\u002Findex","i-lucide-house",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":34},"Quickstart","i-lucide-rocket","\u002Fdocs\u002Fquickstart","docs\u002F1.quickstart",[19,24,29],{"title":20,"path":21,"stem":22,"icon":23},"Local","\u002Fdocs\u002Fquickstart\u002Flocal","docs\u002F1.quickstart\u002F1.local","i-lucide-laptop",{"title":25,"path":26,"stem":27,"icon":28},"Self-hosted","\u002Fdocs\u002Fquickstart\u002Fself-hosted","docs\u002F1.quickstart\u002F2.self-hosted","i-lucide-server",{"title":30,"path":31,"stem":32,"icon":33},"Cloud","\u002Fdocs\u002Fquickstart\u002Fcloud","docs\u002F1.quickstart\u002F3.cloud","i-lucide-cloud",false,{"title":36,"path":37,"stem":38,"children":39,"icon":41},"Harnesses","\u002Fdocs\u002Fharnesses","docs\u002F2.harnesses\u002Findex",[40,42,47,51,55,59,63,67,71,76,80,84,89,93,97,101,105,109,113,117,121,125],{"title":36,"path":37,"stem":38,"icon":41},"i-lucide-plug",{"title":43,"path":44,"stem":45,"icon":46},"Claude Code","\u002Fdocs\u002Fharnesses\u002Fclaude-code","docs\u002F2.harnesses\u002F1.claude-code","i-lucide-terminal",{"title":48,"path":49,"stem":50,"icon":46},"Devin","\u002Fdocs\u002Fharnesses\u002Fdevin","docs\u002F2.harnesses\u002F10.devin",{"title":52,"path":53,"stem":54,"icon":46},"Kiro","\u002Fdocs\u002Fharnesses\u002Fkiro","docs\u002F2.harnesses\u002F11.kiro",{"title":56,"path":57,"stem":58,"icon":46},"Cline","\u002Fdocs\u002Fharnesses\u002Fcline","docs\u002F2.harnesses\u002F12.cline",{"title":60,"path":61,"stem":62,"icon":46},"Amp","\u002Fdocs\u002Fharnesses\u002Famp","docs\u002F2.harnesses\u002F13.amp",{"title":64,"path":65,"stem":66,"icon":46},"VS Code","\u002Fdocs\u002Fharnesses\u002Fvscode","docs\u002F2.harnesses\u002F14.vscode",{"title":68,"path":69,"stem":70,"icon":46},"Gemini CLI","\u002Fdocs\u002Fharnesses\u002Fgemini-cli","docs\u002F2.harnesses\u002F15.gemini-cli",{"title":72,"path":73,"stem":74,"icon":75},"OpenClaw","\u002Fdocs\u002Fharnesses\u002Fopenclaw","docs\u002F2.harnesses\u002F16.openclaw","i-lucide-puzzle",{"title":77,"path":78,"stem":79,"icon":75},"Hermes Agent","\u002Fdocs\u002Fharnesses\u002Fhermes","docs\u002F2.harnesses\u002F17.hermes",{"title":81,"path":82,"stem":83,"icon":75},"NanoClaw","\u002Fdocs\u002Fharnesses\u002Fnanoclaw","docs\u002F2.harnesses\u002F18.nanoclaw",{"title":85,"path":86,"stem":87,"icon":88},"skills.sh (`npx skills`)","\u002Fdocs\u002Fharnesses\u002Fskills-sh","docs\u002F2.harnesses\u002F19.skills-sh","i-lucide-store",{"title":90,"path":91,"stem":92,"icon":46},"Codex CLI","\u002Fdocs\u002Fharnesses\u002Fcodex","docs\u002F2.harnesses\u002F2.codex",{"title":94,"path":95,"stem":96,"icon":88},"Claude Code plugin marketplace","\u002Fdocs\u002Fharnesses\u002Fclaude-code-marketplace","docs\u002F2.harnesses\u002F20.claude-code-marketplace",{"title":98,"path":99,"stem":100,"icon":88},"Codex plugin marketplace","\u002Fdocs\u002Fharnesses\u002Fcodex-marketplace","docs\u002F2.harnesses\u002F21.codex-marketplace",{"title":102,"path":103,"stem":104,"icon":46},"Cursor","\u002Fdocs\u002Fharnesses\u002Fcursor","docs\u002F2.harnesses\u002F3.cursor",{"title":106,"path":107,"stem":108,"icon":46},"OpenCode V1","\u002Fdocs\u002Fharnesses\u002Fopencode-v1","docs\u002F2.harnesses\u002F4.opencode-v1",{"title":110,"path":111,"stem":112,"icon":46},"OpenCode 2","\u002Fdocs\u002Fharnesses\u002Fopencode-v2","docs\u002F2.harnesses\u002F5.opencode-v2",{"title":114,"path":115,"stem":116,"icon":46},"Oh My Pi (omp)","\u002Fdocs\u002Fharnesses\u002Fomp","docs\u002F2.harnesses\u002F6.omp",{"title":118,"path":119,"stem":120,"icon":46},"Pi","\u002Fdocs\u002Fharnesses\u002Fpi","docs\u002F2.harnesses\u002F7.pi",{"title":122,"path":123,"stem":124,"icon":46},"Copilot CLI","\u002Fdocs\u002Fharnesses\u002Fcopilot","docs\u002F2.harnesses\u002F8.copilot",{"title":126,"path":127,"stem":128,"icon":46},"Antigravity","\u002Fdocs\u002Fharnesses\u002Fantigravity","docs\u002F2.harnesses\u002F9.antigravity",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":34},"Concepts","i-lucide-lightbulb","\u002Fdocs\u002Fconcepts","docs\u002F3.concepts",[135,140,145],{"title":136,"path":137,"stem":138,"icon":139},"Reports","\u002Fdocs\u002Fconcepts\u002Freports","docs\u002F3.concepts\u002F1.reports","i-lucide-file-text",{"title":141,"path":142,"stem":143,"icon":144},"Triage","\u002Fdocs\u002Fconcepts\u002Ftriage","docs\u002F3.concepts\u002F2.triage","i-lucide-list-checks",{"title":146,"path":147,"stem":148,"icon":41},"Model and harness independence","\u002Fdocs\u002Fconcepts\u002Fmodel-and-harness-independence","docs\u002F3.concepts\u002F3.model-and-harness-independence",{"title":150,"path":151,"stem":152,"icon":153},"Security","\u002Fdocs\u002Fsecurity","docs\u002F4.security","i-lucide-shield-check",{"title":155,"path":156,"stem":157,"children":158,"icon":160},"Reference","\u002Fdocs\u002Freference","docs\u002F5.reference\u002Findex",[159,161,166,171,174,179,184,189],{"title":155,"path":156,"stem":157,"icon":160},"i-lucide-book-open",{"title":162,"path":163,"stem":164,"icon":165},"API","\u002Fdocs\u002Freference\u002Fapi","docs\u002F5.reference\u002F1.api","i-lucide-braces",{"title":167,"path":168,"stem":169,"icon":170},"Operations","\u002Fdocs\u002Freference\u002Foperate","docs\u002F5.reference\u002F2.operate","i-lucide-settings",{"title":150,"path":172,"stem":173,"icon":153},"\u002Fdocs\u002Freference\u002Fsecurity","docs\u002F5.reference\u002F3.security",{"title":175,"path":176,"stem":177,"icon":178},"Session logs","\u002Fdocs\u002Freference\u002Fsessions","docs\u002F5.reference\u002F4.sessions","i-lucide-history",{"title":180,"path":181,"stem":182,"icon":183},"Releases","\u002Fdocs\u002Freference\u002Freleases","docs\u002F5.reference\u002F5.releases","i-lucide-tags",{"title":185,"path":186,"stem":187,"icon":188},"Client installation","\u002Fdocs\u002Freference\u002Fagent-install","docs\u002F5.reference\u002F6.agent-install","i-lucide-download",{"title":190,"path":191,"stem":192,"icon":193},"Stack installation","\u002Fdocs\u002Freference\u002Fagent-install-stack","docs\u002F5.reference\u002F7.agent-install-stack","i-lucide-container",{"id":195,"title":196,"body":197,"description":399,"extension":400,"meta":401,"navigation":402,"path":21,"seo":403,"stem":22,"verified":404,"__hash__":405},"docs\u002Fdocs\u002F1.quickstart\u002F1.local.md","Quickstart, local",{"type":198,"value":199,"toc":392},"minimark",[200,209,214,232,248,251,259,267,271,280,295,302,306,328,332,344,348,359,380,388],[201,202,203,204,208],"p",{},"Local mode keeps reports in a SQLite database under your home directory and makes no reporting network calls. It is the default on a fresh install. If a server is already configured, ",[205,206,207],"code",{},"agentfeedback init"," keeps it.",[210,211,213],"h2",{"id":212},"_1-install-the-binary","1. Install the binary",[201,215,216,217,220,221,224,225,228,229,231],{},"The install script keeps an existing working ",[205,218,219],{},"agentfeedback"," on PATH or in ",[205,222,223],{},"~\u002F.local\u002Fbin",". Otherwise it downloads the release for your OS and architecture, verifies it against the release's ",[205,226,227],{},"SHA256SUMS",", and installs it in ",[205,230,223],{},". The command below checks the script itself against the same sums before running it:",[233,234,239],"pre",{"className":235,"code":236,"language":237,"meta":238,"style":238},"language-sh shiki shiki-themes github-light github-light github-dark","(d=$(mktemp -d) && trap 'rm -rf \"$d\"' EXIT && curl -q -fsSL --proto '=https' --proto-redir '=https' -o \"$d\u002FSHA256SUMS\" https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Freleases\u002Flatest\u002Fdownload\u002FSHA256SUMS && curl -q -fsSL --proto '=https' --proto-redir '=https' -o \"$d\u002Finstall.sh\" https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback\u002Freleases\u002Flatest\u002Fdownload\u002Finstall.sh && grep ' install\\.sh$' \"$d\u002FSHA256SUMS\" >\"$d\u002Finstall.sh.sha256\" && (cd \"$d\" && if command -v sha256sum >\u002Fdev\u002Fnull; then sha256sum -c install.sh.sha256; else shasum -a 256 -c install.sh.sha256; fi) && bash \"$d\u002Finstall.sh\")\n","sh","",[205,240,241],{"__ignoreMap":238},[242,243,246],"span",{"class":244,"line":245},"line",1,[242,247,236],{},[201,249,250],{},"Prefer to let an agent do it? Paste this into your coding agent:",[233,252,257],{"className":253,"code":255,"language":256,"meta":238},[254],"language-text","Install the AgentFeedback client from https:\u002F\u002Fgithub.com\u002FAgentFeedback\u002Fagentfeedback and set it up for this harness.\n","text",[205,258,255],{"__ignoreMap":238},[201,260,261,262,266],{},"The agent follows the ",[263,264,265],"a",{"href":186},"client installation playbook",": one command, one check and one outcome per step, with safety rules for credentials and third-party installers.",[210,268,270],{"id":269},"_2-wire-your-harnesses","2. Wire your harnesses",[233,272,274],{"className":235,"code":273,"language":237,"meta":238,"style":238},"agentfeedback init\n",[205,275,276],{"__ignoreMap":238},[242,277,278],{"class":244,"line":245},[242,279,273],{},[201,281,282,283,286,287,290,291,294],{},"On a fresh install, ",[205,284,285],{},"init"," asks where reports go (Enter for local) and which detected coding-agent harnesses to wire (Enter for all). It installs a skill, instruction rule and hooks where the harness supports them, then runs an end-to-end check. That check submits and processes an ",[205,288,289],{},"install-check"," record, hidden from normal inbox lists. ",[205,292,293],{},"agentfeedback init --yes"," uses the defaults without questions; it does not replace an existing server configuration.",[201,296,297,298,301],{},"Restart your harness as instructed by the command. The ",[263,299,300],{"href":37},"harness guides"," explain what each integration installs and how to confirm the agent can file a report.",[210,303,305],{"id":304},"_3-look-at-the-inbox","3. Look at the inbox",[233,307,309],{"className":235,"code":308,"language":237,"meta":238,"style":238},"agentfeedback ui            # a read-only page on this machine\nagentfeedback list --open   # the reports not yet processed\nagentfeedback stats         # counts by category, harness and repository\n",[205,310,311,316,322],{"__ignoreMap":238},[242,312,313],{"class":244,"line":245},[242,314,315],{},"agentfeedback ui            # a read-only page on this machine\n",[242,317,319],{"class":244,"line":318},2,[242,320,321],{},"agentfeedback list --open   # the reports not yet processed\n",[242,323,325],{"class":244,"line":324},3,[242,326,327],{},"agentfeedback stats         # counts by category, harness and repository\n",[210,329,331],{"id":330},"_4-triage","4. Triage",[201,333,334,335,338,339,343],{},"The optional ",[205,336,337],{},"\u002Fagentfeedback-triage"," skill walks the open reports with you, groups the ones with the same cause, and fixes or records each one. The client installs it with its harness wiring; follow the ",[263,340,342],{"href":341},"\u002Fdocs\u002Freference\u002Fagent-install-stack#step-s6-the-triage-skill","triage installation procedure",".",[210,345,347],{"id":346},"moving-on","Moving on",[201,349,350,351,354,355,358],{},"To report to a server instead, follow the ",[263,352,353],{"href":26},"self-hosted quickstart",". ",[205,356,357],{},"agentfeedback uninstall all"," removes the native harness wiring, not your reports.",[360,361,363,371],"callout",{"color":362},"warning",[201,364,365,366,370],{},"To move the existing local inbox, migrate ",[367,368,369],"strong",{},"before configuring this client for the destination server",", while it still reads the local database. Keep the destination key in a private file and feed it through stdin:",[233,372,374],{"className":235,"code":373,"language":237,"meta":238,"style":238},"agentfeedback migrate --to https:\u002F\u002Fyour-server.example --to-key-from-stdin \u003C \u002Fpath\u002Fto\u002Fprivate-target-key\n",[205,375,376],{"__ignoreMap":238},[242,377,378],{"class":244,"line":245},[242,379,373],{},[201,381,382,383,387],{},"Migration preserves report UIDs and content, but the destination assigns new database IDs. Re-running skips UIDs already present. See ",[263,384,386],{"href":385},"\u002Fdocs\u002Freference\u002Foperate#restore-and-migration","migration"," for conflict handling and filters.",[389,390,391],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":238,"searchDepth":318,"depth":318,"links":393},[394,395,396,397,398],{"id":212,"depth":318,"text":213},{"id":269,"depth":318,"text":270},{"id":304,"depth":318,"text":305},{"id":330,"depth":318,"text":331},{"id":346,"depth":318,"text":347},"One binary, a database on your machine, no server and no key.","md",{},{"title":20,"icon":23},{"title":196,"description":399},null,"aKPn0B6lurQ8MDc2ZylqoePP4ongnhLPtTgkBs-O_fM",[407,409],{"title":10,"path":6,"stem":11,"description":408,"icon":12,"children":-1},"An inbox for feedback from AI coding agents, and three ways to run it.",{"title":25,"path":26,"stem":27,"description":410,"icon":28,"children":-1},"The same binary as a server for a team, one container, one key.",1794388867891]