{
    "version" : "https://jsonfeed.org/version/1.1",
    "title" : "EONYX Guide",
    "description": "Field notes on EONYX — a terminal-first AI agent that runs operations over MCP.",
    "home_page_url" : "https://eonyx.tech/guide/",
    "feed_url" : "https://eonyx.tech/guide/index.feed",
    "icon" : "https://eonyx.tech/apple-touch-icon.png",
    "favicon" : "https://eonyx.tech/favicon.ico",
    "author" : {
        "name" : "EONYX",
        "avatar": "https://eonyx.tech/images/avatar-author.svg"
    },
    "items" : [
    {
        "title" : "Installing EONYX: build, run, and configure",
        "date_published" : "2026-07-03T00:00:00+03:00",
        "date_modified" : "2026-07-03T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-setup/",
        "url" : "https://eonyx.tech/guide/eonyx-setup/",
        "summary": "EONYX is a terminal AI agent for working with code, written in Go.\nIt connects straight to any OpenAI-compatible API.\nOpenAI, OpenRouter, DeepSeek, Moonshot.\nOr a local Ollama, llama.cpp or LM Studio server.\nNo telemetry, no OAuth.\nOne process, one binary.\n",
        "content_html" : "\u003cp\u003e\u003cstrong\u003eEONYX\u003c/strong\u003e is a terminal AI agent for working with code, written in \u003ca href=\"https://go.dev\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eGo\u003c/a\u003e.\u003cbr\u003e\nIt connects straight to any OpenAI-compatible API.\u003cbr\u003e\n\u003ca href=\"https://openai.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOpenAI\u003c/a\u003e, \u003ca href=\"https://openrouter.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOpenRouter\u003c/a\u003e, \u003ca href=\"https://www.deepseek.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDeepSeek\u003c/a\u003e, \u003ca href=\"https://www.moonshot.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eMoonshot\u003c/a\u003e.\u003cbr\u003e\nOr a local \u003ca href=\"https://ollama.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOllama\u003c/a\u003e, \u003ca href=\"https://github.com/ggml-org/llama.cpp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ellama.cpp\u003c/a\u003e or \u003ca href=\"https://lmstudio.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eLM Studio\u003c/a\u003e server.\u003cbr\u003e\nNo telemetry, no OAuth.\u003cbr\u003e\nOne process, one binary.\u003c/p\u003e\n\u003ch2 id=\"-requirements-and-installation\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-requirements-and-installation\" class=\"header-mark\"\u003e\u003c/a\u003e7 📦 Requirements and installation\u003c/h2\u003e\u003ch3 id=\"what-you-need\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#what-you-need\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 What you need\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ca href=\"https://go.dev/dl/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eGo 1.26+\u003c/a\u003e\u003c/strong\u003e to build from source. A prebuilt binary needs nothing.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAn API key\u003c/strong\u003e for any OpenAI-compatible provider. A local model server needs no key at all.\u003c/li\u003e\n\u003cli\u003eA terminal: \u003ca href=\"https://aka.ms/terminal\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eWindows Terminal\u003c/a\u003e, \u003ca href=\"https://learn.microsoft.com/en-us/powershell/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePowerShell\u003c/a\u003e, any Linux shell, macOS Terminal.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eA licence.\u003c/strong\u003e One key binds one machine, and it is verified at every startup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"installation-options\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#installation-options\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 Installation options\u003c/h3\u003e\u003ctab-container default-tab=\"0\" class=\"tw:block tw:my-5\" role=\"tablist\"\u003e\u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-27\"\u003eFrom source\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-28\"\u003ePrebuilt binary\u003c/button\u003e\r\n  \n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-27\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-28\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egit clone https://github.com/eonyx-core/eonyx\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e eonyx\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake build        \u003cspan class=\"c1\"\u003e# builds bin/eonyx with the version from the git tag\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eOr install into \u003ccode\u003e$GOPATH/bin\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-29\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake install\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe version is baked in at build time from \u003ccode\u003egit describe --tags\u003c/code\u003e.\u003cbr\u003e\nNothing is hardcoded in the code:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-30\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx --version\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-28\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003ca href=\"https://goreleaser.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eGoReleaser\u003c/a\u003e builds a release on every \u003ccode\u003ev*\u003c/code\u003e tag.\u003cbr\u003e\nGrab the archive for your platform from the \u003ca href=\"https://github.com/eonyx-core/eonyx/releases/latest\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eReleases\u003c/a\u003e page and put the binary on your \u003ccode\u003ePATH\u003c/code\u003e.\u003cbr\u003e\nLinux, macOS and Windows are covered.\r\n    \r\n\u003c/div\u003e\r\n\n\u003c/tab-container\u003e\r\n\n\u003ch3 id=\"first-run\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#first-run\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 First run\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-21\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e my-project\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe interactive TUI opens.\u003cbr\u003e\nWith no config at any level, EONYX writes a working \u003ccode\u003eeonyx.json\u003c/code\u003e into the global directory itself.\u003cbr\u003e\nIt ships two DeepSeek models and one local Ollama one.\u003cbr\u003e\nAll that is left is the key:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-22\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eexport\u003c/span\u003e \u003cspan class=\"nv\"\u003eDEEPSEEK_API_KEY\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003esk-...   \u003cspan class=\"c1\"\u003e# or your own provider, see below\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eHeadless mode for scripts and CI\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cp\u003e\u003ccode\u003erun\u003c/code\u003e does the task without the TUI and exits:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-29\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;describe what this repository does\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -m deepseek-v4-pro --yolo \u003cspan class=\"s2\"\u003e\u0026#34;fix the failing test\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eIt works in a pipe too.\u003cbr\u003e\nThe argument beats stdin, so when piping do not repeat the prompt as an argument.\u003cbr\u003e\nOtherwise stdin is ignored:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-30\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e{\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;explain the error:\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e cat error.log\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"o\"\u003e}\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e eonyx run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe answer streams to \u003cstrong\u003estdout\u003c/strong\u003e.\u003cbr\u003e\nTool activity and token stats go to \u003cstrong\u003estderr\u003c/strong\u003e.\u003cbr\u003e\nSo redirecting into a file or a pipe is safe.\u003c/p\u003e\n\u003cp\u003eFlags:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--model/-m\u003c/code\u003e — the model\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--session/-s \u0026lt;id\u0026gt;\u003c/code\u003e — continue a specific session\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--continue/-c\u003c/code\u003e — continue the most recent one\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--yolo\u003c/code\u003e — disable tool confirmations\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--json\u003c/code\u003e — events as NDJSON instead of text\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--system-prompt\u003c/code\u003e — replace the system prompt\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eExit codes tell outcomes apart for CI:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e0\u003c/code\u003e — success\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e2\u003c/code\u003e — usage error\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e3\u003c/code\u003e — API error\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e4\u003c/code\u003e — the task finished, but a tool was blocked by the permission gate\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e5\u003c/code\u003e — hit the \u003ccode\u003emax_steps\u003c/code\u003e limit\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e130\u003c/code\u003e — interrupted with Ctrl+C\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"the-remaining-subcommands\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-remaining-subcommands\" class=\"header-mark\"\u003e\u003c/a\u003e7.4 The remaining subcommands\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eCommand\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003einteractive TUI chat\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx run \u0026quot;…\u0026quot;\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eheadless agent run\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx sessions\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003elist of saved sessions\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx info\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003econfiguration, data, and project paths\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx config\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe final (merged) configuration\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eeonyx clean\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eremove its own configuration files\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"keys-and-commands-in-the-tui\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#keys-and-commands-in-the-tui\" class=\"header-mark\"\u003e\u003c/a\u003e7.5 Keys and commands in the TUI\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eKey\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eAction\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEnter\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esend the message\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+J\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eline break in the input field\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e↑ / ↓\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehistory of your messages\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEsc\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003einterrupt the running turn\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ecommand palette (on empty input)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e@\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003efile path autocompletion (Tab inserts)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e?\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehelp (on empty input)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+P\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ecommand palette\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+N\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eswitch model\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+S\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esession manager\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+K\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eskills and MCP servers (on/off)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+O\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eexpand/collapse tool output\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+R\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eexpand/collapse the model\u0026rsquo;s reasoning\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e! \u0026lt;cmd\u0026gt;\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003erun a shell command\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+C\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003equit\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSlash commands: \u003ccode\u003e/new\u003c/code\u003e, \u003ccode\u003e/clear\u003c/code\u003e, \u003ccode\u003e/add [path]\u003c/code\u003e, \u003ccode\u003e/rename \u0026lt;title\u0026gt;\u003c/code\u003e, \u003ccode\u003e/fork\u003c/code\u003e, \u003ccode\u003e/export\u003c/code\u003e, \u003ccode\u003e/yolo\u003c/code\u003e, \u003ccode\u003e/plan\u003c/code\u003e, \u003ccode\u003e/timestamps\u003c/code\u003e, \u003ccode\u003e/model\u003c/code\u003e, \u003ccode\u003e/sessions [query]\u003c/code\u003e, \u003ccode\u003e/help\u003c/code\u003e, \u003ccode\u003e/quit\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eThe \u0026#39;!\u0026#39; command\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eOutput from a \u003ccode\u003e!\u003c/code\u003e command is written into the conversation.\u003cbr\u003e\nThe model then sees what you ran and what changed, such as the directory or an environment variable.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-configuration\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-configuration\" class=\"header-mark\"\u003e\u003c/a\u003e8 🧭 Configuration\u003c/h2\u003e\u003cp\u003eEONYX reads \u003ccode\u003eeonyx.json\u003c/code\u003e from \u003cstrong\u003ethree levels\u003c/strong\u003e and merges them top down.\u003cbr\u003e\nEach level overrides the one before it.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlobal config\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eWindows — \u003ccode\u003e%LOCALAPPDATA%\\eonyx\\eonyx.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eLinux/macOS — \u003ccode\u003e$XDG_CONFIG_HOME/eonyx/eonyx.json\u003c/code\u003e (\u003ccode\u003e~/.config/…\u003c/code\u003e by default)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGlobal data\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eWindows — the same path\u003c/li\u003e\n\u003cli\u003eLinux/macOS — \u003ccode\u003e$XDG_DATA_HOME/eonyx/eonyx.json\u003c/code\u003e (\u003ccode\u003e~/.local/share/…\u003c/code\u003e by default)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProject config\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eeonyx.json\u003c/code\u003e or \u003ccode\u003e.eonyx.json\u003c/code\u003e, found by walking up from the current directory\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWherever the project config is found becomes the \u003cstrong\u003eproject root\u003c/strong\u003e.\u003cbr\u003e\nA service folder \u003ccode\u003e.eonyx\u003c/code\u003e for exports and logs appears inside it.\u003cbr\u003e\n\u003ccode\u003eEONYX_GLOBAL_CONFIG\u003c/code\u003e, \u003ccode\u003eEONYX_GLOBAL_DATA\u003c/code\u003e and \u003ccode\u003eEONYX_CACHE_DIR\u003c/code\u003e override the paths.\u003cbr\u003e\n\u003ccode\u003eeonyx info\u003c/code\u003e and \u003ccode\u003eeonyx config\u003c/code\u003e show what was loaded and from where.\u003c/p\u003e\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eStrict schema\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eThe parser rejects unknown fields, wrong types and malformed JSON.\u003cbr\u003e\nEONYX \u003cstrong\u003erefuses to start\u003c/strong\u003e rather than quietly ignore a typo.\u003cbr\u003e\nAn unknown field is reported with its name and line number.\u003cbr\u003e\nA wrong type or broken JSON gets a generic message.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"a-full-eonyxjson-example\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#a-full-eonyxjson-example\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 A full eonyx.json example\u003c/h3\u003e\u003cp\u003eThis is the default config written on the first run.\u003cbr\u003e\nIt carries every supported top-level key:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-closed show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-23\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;deepseek\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://api.deepseek.com\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$DEEPSEEK_API_KEY\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://localhost:11434/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;models\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek-v4-flash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e1000000\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;input_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.14\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;output_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.28\u003c/span\u003e\u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek-v4-pro\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e1000000\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;input_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.435\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;output_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.87\u003c/span\u003e\u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;qwen2.5-coder\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e32768\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;input_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;output_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;default_model\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek-v4-flash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;max_steps\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e50\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;permissions\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;allowed_tools\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;skills\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;mcp\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;report\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;database_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;system_prompt\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;log_file\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;retry\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch3 id=\"providers-and-models\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#providers-and-models\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Providers and models\u003c/h3\u003e\u003cp\u003eA provider is a way to reach an API.\u003cbr\u003e\nThere is one type so far, \u003ccode\u003e\u0026quot;openai\u0026quot;\u003c/code\u003e, and it covers any OpenAI-compatible endpoint:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-24\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;openrouter\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://openrouter.ai/api/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$OPENROUTER_API_KEY\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003ccode\u003eapi_key\u003c/code\u003e and \u003ccode\u003ebase_url\u003c/code\u003e may reference environment variables such as \u003ccode\u003e$OPENAI_API_KEY\u003c/code\u003e.\u003cbr\u003e\nThey expand after the layers merge, so no secret sits in the file.\u003c/p\u003e\n\u003cp\u003eA model binds an id to a provider:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eField\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eid\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe model name as the API understands it\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eprovider\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea key from the \u003ccode\u003eproviders\u003c/code\u003e block\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003econtext_window\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003econtext size in tokens — \u003cstrong\u003etriggers auto-summarization\u003c/strong\u003e of history\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einput_price\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eprice per 1M input tokens (USD), for the cost counter in the header\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eoutput_price\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eprice per 1M output tokens (USD)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003ccode\u003emax_steps\u003c/code\u003e caps the tool-call rounds inside one turn.\u003cbr\u003e\nThe default is 50.\u003c/p\u003e\n\u003ch3 id=\"permissions\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#permissions\" class=\"header-mark\"\u003e\u003c/a\u003e8.3 Permissions\u003c/h3\u003e\u003cp\u003eThe safe tools are always allowed: \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003egit_status\u003c/code\u003e, \u003ccode\u003egit_diff\u003c/code\u003e, \u003ccode\u003egit_log\u003c/code\u003e, \u003ccode\u003etodo_write\u003c/code\u003e.\u003cbr\u003e\nEverything else needs permission: writing, editing, bash, commits, MCP tools.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-25\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;permissions\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;allowed_tools\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;bash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;sandbox\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eallowed_tools\u003c/code\u003e\u003c/strong\u003e — tools that run without asking.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003esandbox\u003c/code\u003e\u003c/strong\u003e — locks \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003ewrite\u003c/code\u003e, \u003ccode\u003eedit\u003c/code\u003e, \u003ccode\u003emulti_edit\u003c/code\u003e and \u003ccode\u003els\u003c/code\u003e inside the project root. Off by default.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--yolo\u003c/code\u003e\u003c/strong\u003e, or \u003ccode\u003e/yolo\u003c/code\u003e in the TUI — drops the gate for the whole session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe TUI adds an interactive layer on top.\u003cbr\u003e\nA tool outside the allowlist raises an \u003cstrong\u003eAllow once / Allow always (this session) / Deny\u003c/strong\u003e dialog.\u003cbr\u003e\nA denial does not kill the turn: the model gets a tool error and adapts.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003ePlanning mode\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003ccode\u003e/plan\u003c/code\u003e switches on a stricter gate.\u003cbr\u003e\nOnly read tools stay available, so the agent studies the code and proposes a plan.\u003cbr\u003e\nWhen the plan is ready EONYX asks: \u003cstrong\u003eimplement it\u003c/strong\u003e, \u003cstrong\u003eallow edits\u003c/strong\u003e, or \u003cstrong\u003ekeep planning\u003c/strong\u003e.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"hooks\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#hooks\" class=\"header-mark\"\u003e\u003c/a\u003e8.4 Hooks\u003c/h3\u003e\u003cp\u003eHooks are shell commands around tool calls.\u003cbr\u003e\nThe format is tool name → \u003ccode\u003ebefore\u003c/code\u003e / \u003ccode\u003eafter\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-26\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;echo \\\u0026#34;writing: $EONYX_INPUT\\\u0026#34; \u0026gt;\u0026gt; .eonyx/audit.log\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e  \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -l .\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;bash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;[ \\\u0026#34;$EONYX_CWD\\\u0026#34; = \\\u0026#34;$HOME\\\u0026#34; ] \u0026amp;\u0026amp; exit 1 || exit 0\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eRules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ebefore\u003c/code\u003e\u003c/strong\u003e runs first. A non-zero exit code \u003cstrong\u003eblocks\u003c/strong\u003e the call.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eafter\u003c/code\u003e\u003c/strong\u003e runs on success. Its output is appended to the tool result, so the model sees it. An error there does not break the result.\u003c/li\u003e\n\u003cli\u003eContext arrives \u003cstrong\u003ethrough environment variables\u003c/strong\u003e, never substituted into the command text. Injection through the input is impossible.\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_TOOL\u003c/code\u003e — the tool name\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_PHASE\u003c/code\u003e — \u003ccode\u003ebefore\u003c/code\u003e / \u003ccode\u003eafter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_CWD\u003c/code\u003e — the working directory\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_INPUT\u003c/code\u003e — the JSON input\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_RESULT\u003c/code\u003e — the result, only in \u003ccode\u003eafter\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eEach hook gets \u003cstrong\u003e30 seconds\u003c/strong\u003e, in the same shell session the \u003ccode\u003ebash\u003c/code\u003e tool uses.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"other-keys\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#other-keys\" class=\"header-mark\"\u003e\u003c/a\u003e8.5 Other keys\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eKey\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eskills\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eadditional skill directories (see the Skills article)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003emcp\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe list of MCP servers (see the MCP article)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ereport.database_url\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ca href=\"https://www.postgresql.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePostgreSQL\u003c/a\u003e for the read-only reporting tools\u003cbr\u003eempty — the tools are not registered\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003esystem_prompt\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea full replacement for the generated system prompt\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003elog_file\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea log path instead of the standard one; supports \u003ccode\u003e$ENV\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eretry\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003emax_retries\u003c/code\u003e — 3 by default\u003cbr\u003e\u003ccode\u003ebase_delay_ms\u003c/code\u003e — 500, doubles up to 30 s\u003cbr\u003e\u003ccode\u003eresponse_header_timeout_sec\u003c/code\u003e — 60\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eInstallation\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emake build\u003c/code\u003e from source or a binary from GitHub Releases\u003c/li\u003e\n\u003cli\u003echeck: \u003ccode\u003eeonyx --version\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRunning\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eeonyx\u003c/code\u003e — interactive TUI\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eeonyx run \u0026quot;task\u0026quot;\u003c/code\u003e — headless, stdout/stderr separated\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003eeonyx.json\u003c/code\u003e cascade: global → data → project\u003c/li\u003e\n\u003cli\u003estrict schema, \u003ccode\u003e$ENV\u003c/code\u003e references for secrets\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModels\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eany OpenAI-compatible API\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_window\u003c/code\u003e triggers auto-summarization\u003c/li\u003e\n\u003cli\u003eprices — the cost counter in the header\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePermissions\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ereading is always allowed\u003c/li\u003e\n\u003cli\u003eeverything else — via \u003ccode\u003eallowed_tools\u003c/code\u003e, the TUI dialog, \u003ccode\u003e--yolo\u003c/code\u003e, or \u003ccode\u003e/plan\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHooks\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebefore\u003c/code\u003e / \u003ccode\u003eafter\u003c/code\u003e around tools\u003c/li\u003e\n\u003cli\u003econtext through \u003ccode\u003eEONYX_*\u003c/code\u003e variables\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ebefore\u003c/code\u003e can block\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX and MCP: connecting external tools",
        "date_published" : "2026-06-30T00:00:00+03:00",
        "date_modified" : "2026-06-30T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-mcp/",
        "url" : "https://eonyx.tech/guide/eonyx-mcp/",
        "summary": "Model Context Protocol (MCP) is an open standard.\nThrough it an agent reaches external systems: databases, APIs, trackers, anything.\nEONYX ships an MCP client built on the official Go SDK, modelcontextprotocol/go-sdk.\nServers are described in eonyx.json, and their tools appear to the model next to the built-in ones.\n",
        "content_html" : "\u003cp\u003e\u003cstrong\u003eModel Context Protocol (MCP)\u003c/strong\u003e is an open standard.\u003cbr\u003e\nThrough it an agent reaches external systems: databases, APIs, trackers, anything.\u003cbr\u003e\nEONYX ships an MCP client built on the official Go SDK, \u003ccode\u003emodelcontextprotocol/go-sdk\u003c/code\u003e.\u003cbr\u003e\nServers are described in \u003ccode\u003eeonyx.json\u003c/code\u003e, and their tools appear to the model next to the built-in ones.\u003c/p\u003e\n\u003ch2 id=\"-setup\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-setup\" class=\"header-mark\"\u003e\u003c/a\u003e7 🔌 Setup\u003c/h2\u003e\u003ch3 id=\"configuration\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#configuration\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Configuration\u003c/h3\u003e\u003cp\u003eMCP servers live in the \u003ccode\u003emcp\u003c/code\u003e array.\u003cbr\u003e\nThere is no \u0026ldquo;type\u0026rdquo; field.\u003cbr\u003e\nThe transport follows from the fields: a \u003ccode\u003eurl\u003c/code\u003e means HTTP, a \u003ccode\u003ecommand\u003c/code\u003e means stdio.\u003c/p\u003e\n\u003ctab-container default-tab=\"0\" class=\"tw:block tw:my-5\" role=\"tablist\"\u003e\u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-11\"\u003estdio server\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-12\"\u003eHTTP server\u003c/button\u003e\r\n  \n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-11\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eA local process, talking over stdin and stdout:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-31\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;mcp\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;name\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;github\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;command\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;npx\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;args\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;-y\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;@modelcontextprotocol/server-github\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;env\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;GITHUB_TOKEN\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;ghp_...\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003ccode\u003eenv\u003c/code\u003e is layered on top of the current environment for the spawned process.\u003c/p\u003e\n\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-12\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eA remote server over HTTP/SSE:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-32\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;mcp\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;name\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;tracker\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://mcp.example.com/sse\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;headers\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;Authorization\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Bearer $TRACKER_TOKEN\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003ccode\u003eheaders\u003c/code\u003e go with every request.\u003cbr\u003e\nValues may reference environment variables such as \u003ccode\u003e$TRACKER_TOKEN\u003c/code\u003e, so the token stays out of the file.\u003c/p\u003e\n\r\n    \r\n\u003c/div\u003e\r\n\n\u003c/tab-container\u003e\r\n\n\u003cp\u003eServer fields:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eField\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eserver name — becomes the prefix of all its tools\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecommand\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eexecutable of the stdio server\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eargs\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ecommand arguments\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eenv\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eenvironment variables for the server process\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eurl\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eendpoint of the HTTP server (presence of url switches transport)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eheaders\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eheaders for every HTTP request, support \u003ccode\u003e$ENV\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eConnection is best-effort\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eEONYX dials every server at startup.\u003cbr\u003e\n\u003cstrong\u003eA failing server is skipped\u003c/strong\u003e, not fatal.\u003cbr\u003e\nA \u003ccode\u003ewarning: mcp: …\u003c/code\u003e goes to stderr and the launch continues.\u003cbr\u003e\nThe client introduces itself to the server as \u003ccode\u003eeonyx\u003c/code\u003e, with the build version.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"permissions\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#permissions\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 Permissions\u003c/h3\u003e\u003cp\u003eMCP tools are not always-allowed.\u003cbr\u003e\nThe first call raises an \u003cstrong\u003eAllow once / Allow always / Deny\u003c/strong\u003e dialog, like any writing tool.\u003cbr\u003e\nTo stop a trusted tool from asking every time:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;permissions\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;allowed_tools\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;github_search_issues\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;tracker_get_task\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eSecurity\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cp\u003eKeep tokens out of the config text, because the project config is committed.\u003cbr\u003e\nHTTP \u003ccode\u003eheaders\u003c/code\u003e expand \u003ccode\u003e$ENV\u003c/code\u003e references for you.\u003cbr\u003e\nA stdio server\u0026rsquo;s \u003ccode\u003eenv\u003c/code\u003e values are literal, but the process inherits your environment — so keep the secret in a variable instead.\u003c/p\u003e\n\u003cp\u003eAdd \u003cstrong\u003especific\u003c/strong\u003e tools to \u003ccode\u003eallowed_tools\u003c/code\u003e, never the whole set.\u003cbr\u003e\nAn MCP server acts on your behalf.\u003c/p\u003e\n\u003cp\u003eRemember that tool descriptions and results land in the model\u0026rsquo;s context.\u003cbr\u003e\nDo not connect a server you do not trust.\u003c/p\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"when-mcp-is-not-needed\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#when-mcp-is-not-needed\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 When MCP is not needed\u003c/h3\u003e\u003cp\u003eOne common case needs no MCP at all.\u003cbr\u003e\nEONYX has built-in read-only reporting tools for \u003ca href=\"https://www.postgresql.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ePostgreSQL\u003c/a\u003e.\u003cbr\u003e\nJust set the connection string:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-10\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;report\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;database_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$DATABASE_URL\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eLeave it empty and the tools are never registered.\u003cbr\u003e\nThat is the off switch.\u003c/p\u003e\n\u003ch2 id=\"-what-the-model-gets\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-what-the-model-gets\" class=\"header-mark\"\u003e\u003c/a\u003e8 🧠 What the model gets\u003c/h2\u003e\u003ch3 id=\"tools\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#tools\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 Tools\u003c/h3\u003e\u003cp\u003eEvery tool is registered as \u003cstrong\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_\u0026lt;tool\u0026gt;\u003c/code\u003e\u003c/strong\u003e.\u003cbr\u003e\nOn the \u003ccode\u003egithub\u003c/code\u003e server, \u003ccode\u003esearch_issues\u003c/code\u003e becomes \u003ccode\u003egithub_search_issues\u003c/code\u003e.\u003cbr\u003e\nThe argument schema comes from the server untouched.\u003cbr\u003e\nThe result reaches the model as text.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe path of a single call\u003c/strong\u003e\u003c/p\u003e\n\u003cpre class=\"mermaid\"\u003esequenceDiagram\n    participant M as Model\n    participant P as EONYX\n    participant S as MCP server\n    participant E as External system\n    M-\u003e\u003eP: github_search_issues call\n    P-\u003e\u003eS: request over stdio / HTTP\n    S-\u003e\u003eE: call to the API or database\n    E--\u003e\u003eS: data\n    S--\u003e\u003eP: result\n    P--\u003e\u003eM: result as text\r\n\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003eConnecting servers at startup\u003c/strong\u003e\u003c/p\u003e\n\u003cpre class=\"mermaid\"\u003esequenceDiagram\n    participant P as EONYX\n    participant A as github server\n    participant B as tracker server\n    P-\u003e\u003eA: connect at startup\n    A--\u003e\u003eP: tools registered\n    P-\u003e\u003eB: connect at startup\n    B--xP: server unavailable\n    Note over P,B: warning: mcp — skipped\n    Note over P: startup continues without it\r\n\u003c/pre\u003e\u003cp\u003eWorking servers register their tools.\u003cbr\u003e\nA failing one is cut off with a warning.\u003cbr\u003e\nEONYX starts either way.\u003c/p\u003e\n\u003ch3 id=\"resources-and-prompts\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#resources-and-prompts\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Resources and prompts\u003c/h3\u003e\u003cp\u003eEONYX probes the server\u0026rsquo;s capabilities during registration.\u003cbr\u003e\nIf they are declared, these tools appear too:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_list_resources\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003elist the server\u0026rsquo;s resources\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_read_resource\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eread a resource by \u003ccode\u003euri\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_list_prompts\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003elist the prompts\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_get_prompt\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eget a prompt by \u003ccode\u003ename\u003c/code\u003e (+ \u003ccode\u003earguments\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eBinary resources never flood the context.\u003cbr\u003e\nInstead of the content the model sees the marker \u003ccode\u003e(binary resource \u0026lt;uri\u0026gt;, N bytes)\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"managing-servers-on-the-fly\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#managing-servers-on-the-fly\" class=\"header-mark\"\u003e\u003c/a\u003e8.3 Managing servers on the fly\u003c/h3\u003e\u003cp\u003eActive servers show up in the TUI header, in the \u003ccode\u003e» mcp\u003c/code\u003e segment.\u003cbr\u003e\n\u003cstrong\u003eCtrl+K\u003c/strong\u003e opens the capabilities dialog with Skills and MCP tabs.\u003cbr\u003e\nAny server can be switched off and on inside the session.\u003cbr\u003e\nIts tools then disappear from the model and stop being called.\u003cbr\u003e\nNo restart, no config edit.\u003cbr\u003e\nThe \u003ccode\u003e✓\u003c/code\u003e and \u003ccode\u003e✗\u003c/code\u003e marks show the state.\u003c/p\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ethe \u003ccode\u003emcp\u003c/code\u003e array in \u003ccode\u003eeonyx.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecommand\u003c/code\u003e+\u003ccode\u003eargs\u003c/code\u003e+\u003ccode\u003eenv\u003c/code\u003e for stdio, \u003ccode\u003eurl\u003c/code\u003e+\u003ccode\u003eheaders\u003c/code\u003e for HTTP\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNaming\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e\u0026lt;server\u0026gt;_\u0026lt;tool\u0026gt;\u003c/code\u003e for every tool\u003c/li\u003e\n\u003cli\u003eplus resource and prompt tools if the server supports them\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFault tolerance\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ea failing server is skipped with a warning\u003c/li\u003e\n\u003cli\u003eEONYX always starts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eManagement\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCtrl+K\u003c/code\u003e turns servers on and off on the fly\u003c/li\u003e\n\u003cli\u003ethe header shows the active ones\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePermissions\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eMCP tools go through the common gate\u003c/li\u003e\n\u003cli\u003eadd trusted ones to \u003ccode\u003eallowed_tools\u003c/code\u003e by name\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    }
    {
        "title" : "Local models in EONYX: fully offline",
        "date_published" : "2026-06-24T00:00:00+03:00",
        "date_modified" : "2026-06-24T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-local-models/",
        "url" : "https://eonyx.tech/guide/eonyx-local-models/",
        "summary": "EONYX is not tied to the cloud.\nIt speaks to any OpenAI-compatible API.\nPoint it at a local model server and your code never leaves the machine.\nNo model key, no model traffic, no cloud.\n",
        "content_html" : "\u003cp\u003eEONYX is not tied to the cloud.\u003cbr\u003e\nIt speaks to \u003cstrong\u003eany OpenAI-compatible API\u003c/strong\u003e.\u003cbr\u003e\nPoint it at a local model server and your code never leaves the machine.\u003cbr\u003e\nNo model key, no model traffic, no cloud.\u003c/p\u003e\n\u003ch2 id=\"-running-against-a-local-model\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-running-against-a-local-model\" class=\"header-mark\"\u003e\u003c/a\u003e1 🏠 Running against a local model\u003c/h2\u003e\u003ch3 id=\"the-idea\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-idea\" class=\"header-mark\"\u003e\u003c/a\u003e1.1 The idea\u003c/h3\u003e\u003cp\u003eOllama, llama.cpp and LM Studio all expose an endpoint on your machine.\u003cbr\u003e\nThat endpoint is compatible with OpenAI Chat Completions.\u003cbr\u003e\nEONYX treats it as an ordinary provider.\u003cbr\u003e\nOnly two things differ: \u003ccode\u003ebase_url\u003c/code\u003e, and an empty \u003ccode\u003eapi_key\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eWhen you need this\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003eThe code must not leave the perimeter, under an NDA or in a closed network.\u003c/li\u003e\n\u003cli\u003eThe internet connection is unreliable.\u003c/li\u003e\n\u003cli\u003eYou want zero cost and zero risk of a leak.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"local-server\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#local-server\" class=\"header-mark\"\u003e\u003c/a\u003e1.2 Local server\u003c/h3\u003e\u003ctab-container default-tab=\"0\" class=\"tw:block tw:my-5\" role=\"tablist\"\u003e\u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-2\"\u003eOllama\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-3\"\u003ellama.cpp\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-4\"\u003eLM Studio\u003c/button\u003e\r\n  \n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-2\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eStart the model:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-6\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eollama pull qwen2.5-coder\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eollama serve   \u003cspan class=\"c1\"\u003e# endpoint at http://localhost:11434/v1\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eIn \u003ccode\u003eeonyx.json\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-7\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://localhost:11434/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;models\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;qwen2.5-coder\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e32768\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;default_model\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;qwen2.5-coder\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-3\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003e\u003ccode\u003ellama-server\u003c/code\u003e from llama.cpp serves an OpenAI-compatible API:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-8\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ellama-server -m model.gguf --port \u003cspan class=\"m\"\u003e8080\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://localhost:8080/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-4\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eEnable the local server in LM Studio, on the Developer / Local Server tab.\u003cbr\u003e\nIt comes up at \u003ccode\u003ehttp://localhost:1234/v1\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-10\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://localhost:1234/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n    \r\n\u003c/div\u003e\r\n\n\u003c/tab-container\u003e\r\n\n\u003cp\u003eEverything then works as usual.\u003cbr\u003e\n\u003ccode\u003eeonyx\u003c/code\u003e for the TUI, \u003ccode\u003eeonyx run \u0026quot;task\u0026quot;\u003c/code\u003e for a single job.\u003cbr\u003e\nNo key is required: with an empty \u003ccode\u003eapi_key\u003c/code\u003e the \u003ccode\u003eAuthorization\u003c/code\u003e header is not sent.\u003c/p\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eOne call still goes out\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eModel traffic stays on your machine.\u003cbr\u003e\nLicence verification does not.\u003cbr\u003e\nEONYX checks the licence against eonyx.tech at every startup, so the machine needs to reach it to launch the agent.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-in-practice\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-in-practice\" class=\"header-mark\"\u003e\u003c/a\u003e2 🔧 In practice\u003c/h2\u003e\u003ch3 id=\"context-window\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#context-window\" class=\"header-mark\"\u003e\u003c/a\u003e2.1 Context window\u003c/h3\u003e\u003cp\u003eLocal models usually have a \u003cstrong\u003esmall context window\u003c/strong\u003e.\u003cbr\u003e\nOften 8–32K, against a million for a large cloud model.\u003cbr\u003e\nSet the model\u0026rsquo;s real \u003ccode\u003econtext_window\u003c/code\u003e.\u003cbr\u003e\nThat switches on \u003cstrong\u003eauto-summarization\u003c/strong\u003e: at about 80% fill the older turns are compacted, so the conversation never hits the wall.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-1\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;qwen2.5-coder\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;local\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e32768\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eDo not overstate the window\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eSet it larger than the model really holds and summarization starts too late.\u003cbr\u003e\nThe server then rejects the request.\u003cbr\u003e\nTake the number from the model\u0026rsquo;s documentation, or a little less.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"tips\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#tips\" class=\"header-mark\"\u003e\u003c/a\u003e2.2 Tips\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePick a code model.\u003c/strong\u003e Agentic work suits code-oriented models like \u003ccode\u003eqwen2.5-coder\u003c/code\u003e. They follow tool call formats better.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWatch \u003ccode\u003emax_steps\u003c/code\u003e.\u003c/strong\u003e A weak model can loop. The default of 50 keeps a stuck run from burning your time.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGo hybrid.\u003c/strong\u003e Keep a local and a cloud model side by side and switch with \u003ccode\u003eCtrl+N\u003c/code\u003e. Rough work locally, hard problems on the big model.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVerify.\u003c/strong\u003e \u003ccode\u003eeonyx config\u003c/code\u003e shows the provider and \u003ccode\u003ebase_url\u003c/code\u003e that were picked up. The token counter in the TUI header works for local models too, and the cost reads \u003ccode\u003e$0\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e3 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLocal server\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eOllama / llama.cpp / LM Studio — OpenAI-compatible endpoint\u003c/li\u003e\n\u003cli\u003ein EONYX it is a provider with a \u003ccode\u003ebase_url\u003c/code\u003e and an empty \u003ccode\u003eapi_key\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eYour code stays put\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003emodel traffic never goes to the cloud\u003c/li\u003e\n\u003cli\u003eno model key needed\u003c/li\u003e\n\u003cli\u003elicence verification still calls eonyx.tech at startup\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContext window\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eset the real \u003ccode\u003econtext_window\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eenables auto-summarization for small windows\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHybrid\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ekeep a local and a cloud model side by side\u003c/li\u003e\n\u003cli\u003eswitch with \u003ccode\u003eCtrl+N\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX memory: AGENTS.md, sessions and context compaction",
        "date_published" : "2026-06-17T00:00:00+03:00",
        "date_modified" : "2026-06-17T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-memory/",
        "url" : "https://eonyx.tech/guide/eonyx-memory/",
        "summary": "Every turn starts with the model receiving context.\nEONYX builds it from three parts.\nAGENTS.md carries the project\u0026rsquo;s standing instructions.\nSessions hold the full history on disk.\nAuto-summarization compacts the older turns as the window fills.\n",
        "content_html" : "\u003cp\u003eEvery turn starts with the model receiving context.\u003cbr\u003e\nEONYX builds it from three parts.\u003cbr\u003e\n\u003cstrong\u003eAGENTS.md\u003c/strong\u003e carries the project\u0026rsquo;s standing instructions.\u003cbr\u003e\n\u003cstrong\u003eSessions\u003c/strong\u003e hold the full history on disk.\u003cbr\u003e\n\u003cstrong\u003eAuto-summarization\u003c/strong\u003e compacts the older turns as the window fills.\u003c/p\u003e\n\u003ch2 id=\"-agentsmd-project-instructions\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-agentsmd-project-instructions\" class=\"header-mark\"\u003e\u003c/a\u003e7 📌 AGENTS.md: project instructions\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eAGENTS.md\u003c/code\u003e holds the project\u0026rsquo;s rules and context.\u003cbr\u003e\nEONYX finds these files while building the system prompt.\u003cbr\u003e\nIt walks \u003cstrong\u003eup the directory tree\u003c/strong\u003e from the working directory and collects one at every level.\u003c/p\u003e\n\u003ch3 id=\"traversal-rules\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#traversal-rules\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Traversal rules\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003eThe walk stops at the \u003cstrong\u003eproject root\u003c/strong\u003e, the directory holding \u003ccode\u003eeonyx.json\u003c/code\u003e. Or at a directory with \u003ccode\u003e.git\u003c/code\u003e. Or at the filesystem root.\u003c/li\u003e\n\u003cli\u003eFiles attach from the outermost inwards. \u003cstrong\u003eThe nearest one comes last\u003c/strong\u003e, so local rules refine the general ones.\u003c/li\u003e\n\u003cli\u003eEach file enters the system prompt under \u003ccode\u003e# Project context: \u0026lt;relative path\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eKeep general rules at the repository root.\u003cbr\u003e\nKeep specifics next to the code they describe.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-7\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emy-project/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e├── AGENTS.md            ← stack, conventions, prohibitions\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e└── services/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    └── billing/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        └── AGENTS.md    ← specifics of a particular service\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch3 id=\"what-to-write\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#what-to-write\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 What to write\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-closed show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003emarkdown\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-8\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gh\"\u003e# Project: My App\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Stack\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e Go 1.26, PostgreSQL via pgx.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Rules\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e Run \u003cspan class=\"sb\"\u003e`go test ./...`\u003c/span\u003e and \u003cspan class=\"sb\"\u003e`go vet ./...`\u003c/span\u003e before committing.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e Do not refactor what you were not asked to.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gu\"\u003e## Prohibited\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e Do not edit .env directly.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- Never run migrations without confirmation.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eReplacing the prompt entirely\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eThe generated system prompt can be replaced wholesale.\u003cbr\u003e\nUse the \u003ccode\u003esystem_prompt\u003c/code\u003e field in \u003ccode\u003eeonyx.json\u003c/code\u003e, or the \u003ccode\u003e--system-prompt\u003c/code\u003e flag of \u003ccode\u003eeonyx run\u003c/code\u003e.\u003cbr\u003e\nThe flag beats the field, and the field beats generation.\u003cbr\u003e\nIn that case AGENTS.md files are not attached at all.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-conversation-memory\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-conversation-memory\" class=\"header-mark\"\u003e\u003c/a\u003e8 💾 Conversation memory\u003c/h2\u003e\u003ch3 id=\"sessions-on-disk\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#sessions-on-disk\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 Sessions on disk\u003c/h3\u003e\u003cp\u003eEvery conversation is a \u003cstrong\u003esession\u003c/strong\u003e, fully persisted.\u003cbr\u003e\nThe format is JSONL: one message per line, tool calls and results included.\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eFile\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eContents\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003esessions/\u0026lt;id\u0026gt;.jsonl\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003emessages of a single session\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003esessions.json\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eindex: id, title, message counter, dates\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThe store is shared across projects and sits with the global data.\u003cbr\u003e\nOn Windows that is \u003ccode\u003e%LOCALAPPDATA%\\eonyx\\\u003c/code\u003e.\u003cbr\u003e\nOn Linux and macOS it is \u003ccode\u003e$XDG_DATA_HOME/eonyx/\u003c/code\u003e, which defaults to \u003ccode\u003e~/.local/share/eonyx/\u003c/code\u003e.\u003cbr\u003e\nSession ids sort naturally: \u003ccode\u003e20260705T091500-1a2b3c4d\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eWriting is the source of truth.\u003cbr\u003e\nIf a message cannot be saved, the turn aborts rather than running past the disk.\u003cbr\u003e\nEmpty sessions, the ones that never got past the system prompt, are cleaned up on their own.\u003c/p\u003e\n\u003ch3 id=\"working-in-the-tui\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#working-in-the-tui\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Working in the TUI\u003c/h3\u003e\u003cp\u003eEONYX \u003cstrong\u003eresumes the most recent session\u003c/strong\u003e on startup.\u003cbr\u003e\nFrom there:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eAction\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eHow\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSession manager\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+S\u003c/code\u003e or \u003ccode\u003e/sessions\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSearch across sessions\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/sessions \u0026lt;query\u0026gt;\u003c/code\u003e — over titles and message text\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eNew session\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/new\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eClear the context\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/clear\u003c/code\u003e — wipes the history, keeping the id and title\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eRename\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003er\u003c/code\u003e in the session list or \u003ccode\u003e/rename \u0026lt;title\u0026gt;\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eFork\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ef\u003c/code\u003e in the session list or \u003ccode\u003e/fork\u003c/code\u003e — a conversation branch\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eDelete\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ed\u003c/code\u003e in the session list\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eExport to markdown\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/export\u003c/code\u003e → \u003ccode\u003e.eonyx/exports/eonyx-\u0026lt;id\u0026gt;.md\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eNew sessions get plain sequential titles: \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e2\u003c/code\u003e, \u003ccode\u003e3\u003c/code\u003e.\u003cbr\u003e\nThey never change on their own — only an explicit rename touches them.\u003c/p\u003e\n\u003ch3 id=\"working-from-the-console\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#working-from-the-console\" class=\"header-mark\"\u003e\u003c/a\u003e8.3 Working from the console\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx sessions                  \u003cspan class=\"c1\"\u003e# list: id, date, message count, title\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx sessions --search parser  \u003cspan class=\"c1\"\u003e# search over titles and text\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx sessions delete \u0026lt;id\u0026gt;      \u003cspan class=\"c1\"\u003e# delete\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -c \u003cspan class=\"s2\"\u003e\u0026#34;continue\u0026#34;\u003c/span\u003e         \u003cspan class=\"c1\"\u003e# continue the most recent session\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -s \u0026lt;id\u0026gt; \u003cspan class=\"s2\"\u003e\u0026#34;and now…\u0026#34;\u003c/span\u003e    \u003cspan class=\"c1\"\u003e# continue a specific one\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eA fork as a save point\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003ccode\u003eFork\u003c/code\u003e copies the message file into a new session.\u003cbr\u003e\nThe original stays untouched.\u003cbr\u003e\nFork before a risky direction, try it, and fall back if it did not work out.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"auto-summarization\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#auto-summarization\" class=\"header-mark\"\u003e\u003c/a\u003e8.4 Auto-summarization\u003c/h3\u003e\u003cp\u003eSet \u003ccode\u003econtext_window\u003c/code\u003e on a model and EONYX starts tracking the history size.\u003cbr\u003e\nIt estimates about 4 characters per token and shows \u003ccode\u003e{ctx N%}\u003c/code\u003e in the header.\u003cbr\u003e\nAt \u003cstrong\u003e80%\u003c/strong\u003e the indicator lights up, and summarization fires at the same threshold.\u003c/p\u003e\n\u003cp\u003eHow it works:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe last \u003cstrong\u003e3 user turns\u003c/strong\u003e stay verbatim. Everything older goes to the model to be compacted into a running summary: decisions, facts, changed files, open tasks.\u003c/li\u003e\n\u003cli\u003eThe summary is appended to the system prompt under \u003ccode\u003e# Summary of earlier conversation\u003c/code\u003e. The next compaction folds in the previous summary.\u003c/li\u003e\n\u003cli\u003eThe boundary runs \u003cstrong\u003eonly along user messages\u003c/strong\u003e, so a tool call is never split from its result.\u003c/li\u003e\n\u003cli\u003eAll of this is \u003cstrong\u003ein memory only\u003c/strong\u003e. The JSONL on disk keeps the full history, so an export or a reopened session shows the whole conversation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eWithout context_window there is no summarization\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eThe \u003ccode\u003econtext_window\u003c/code\u003e field is the switch for this machinery.\u003cbr\u003e\nLeave it out and the history grows until the API rejects it.\u003cbr\u003e\nPut the model\u0026rsquo;s real window size in \u003ccode\u003eeonyx.json\u003c/code\u003e.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAGENTS.md\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eproject rules; collected up the tree to the project root or \u003ccode\u003e.git\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ethe closest file comes last\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSessions\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eJSONL on disk, shared across all projects\u003c/li\u003e\n\u003cli\u003eresuming (\u003ccode\u003e-c\u003c/code\u003e/\u003ccode\u003e-s\u003c/code\u003e), search, fork (\u003ccode\u003ef\u003c/code\u003e), rename (\u003ccode\u003er\u003c/code\u003e), export (\u003ccode\u003e/export\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003etitles are sequential \u003ccode\u003e1\u003c/code\u003e, \u003ccode\u003e2\u003c/code\u003e, \u003ccode\u003e3\u003c/code\u003e; they change only via an explicit \u003ccode\u003e/rename\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSummarization\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eat 80% of \u003ccode\u003econtext_window\u003c/code\u003e: older turns are compacted into a summary in the system prompt\u003c/li\u003e\n\u003cli\u003ethe disk keeps everything; watch \u003ccode\u003e{ctx N%}\u003c/code\u003e in the header\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX vs Claude Code: an honest comparison",
        "date_published" : "2026-06-15T00:00:00+03:00",
        "date_modified" : "2026-06-15T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-vs-claude-code/",
        "url" : "https://eonyx.tech/guide/eonyx-vs-claude-code/",
        "summary": "EONYX and Claude Code are both terminal AI agents for code.\nThe workflow rhymes: MCP, skills, hooks, subagents, plan mode, sessions.\nThe difference is architecture and freedom.\nClaude Code is bound to the cloud and to Anthropic models.\nEONYX is not.\n",
        "content_html" : "\u003cp\u003e\u003cstrong\u003eEONYX\u003c/strong\u003e and \u003cstrong\u003e\u003ca href=\"https://www.anthropic.com/claude-code\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eClaude Code\u003c/a\u003e\u003c/strong\u003e are both terminal AI agents for code.\u003cbr\u003e\nThe workflow rhymes: \u003ca href=\"https://modelcontextprotocol.io\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eMCP\u003c/a\u003e, skills, hooks, subagents, plan mode, sessions.\u003cbr\u003e\nThe difference is architecture and freedom.\u003cbr\u003e\nClaude Code is bound to the cloud and to \u003ca href=\"https://www.anthropic.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eAnthropic\u003c/a\u003e models.\u003cbr\u003e\nEONYX is not.\u003c/p\u003e\n\u003ch2 id=\"-how-eonyx-is-different\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-how-eonyx-is-different\" class=\"header-mark\"\u003e\u003c/a\u003e7 🔀 How EONYX is different\u003c/h2\u003e\u003cp\u003eFive practical differences.\u003cbr\u003e\nAll of them follow from one decision: no lock-in to a cloud or a vendor.\u003c/p\u003e\n\u003ch3 id=\"model-freedom\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#model-freedom\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Model freedom\u003c/h3\u003e\u003cp\u003eClaude Code runs Claude models only.\u003cbr\u003e\nEONYX connects to \u003cstrong\u003eany OpenAI-compatible API\u003c/strong\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://openai.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOpenAI\u003c/a\u003e, \u003ca href=\"https://openrouter.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOpenRouter\u003c/a\u003e, \u003ca href=\"https://www.deepseek.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eDeepSeek\u003c/a\u003e, \u003ca href=\"https://www.moonshot.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eMoonshot\u003c/a\u003e and other cloud providers.\u003c/li\u003e\n\u003cli\u003eLocal servers: \u003cstrong\u003e\u003ca href=\"https://ollama.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOllama\u003c/a\u003e, \u003ca href=\"https://github.com/ggml-org/llama.cpp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ellama.cpp\u003c/a\u003e, \u003ca href=\"https://lmstudio.ai\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eLM Studio\u003c/a\u003e\u003c/strong\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eA model is one entry in \u003ccode\u003eeonyx.json\u003c/code\u003e.\u003cbr\u003e\nKeep a cheap fast one and a strong expensive one side by side.\u003cbr\u003e\nSwitch with \u003ccode\u003eCtrl+N\u003c/code\u003e.\u003cbr\u003e\nRun the same project against different providers.\u003c/p\u003e\n\u003cp\u003eA new provider is a few lines of config, not a new tool:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;openrouter\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://openrouter.ai/api/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$OPENROUTER_API_KEY\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003cspan class=\"err\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;models\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;qwen/qwen3-coder\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openrouter\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e262144\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eSave the config and restart EONYX.\u003cbr\u003e\nThe model is in the \u003ccode\u003eCtrl+N\u003c/code\u003e list, with the same skills and hooks.\u003cbr\u003e\n\u003ccode\u003eCtrl+N\u003c/code\u003e switches between models already in the config, so a freshly added one needs that restart.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eDon\u0026#39;t like the answer — change the model, not the tool\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eA strong new model appears at another provider.\u003cbr\u003e\nAdd a line to the config and keep working.\u003cbr\u003e\nSame agent, same skills, same hooks.\u003cbr\u003e\nClaude Code keeps you on the Claude lineup.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"local-execution\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#local-execution\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 Local execution\u003c/h3\u003e\u003cp\u003eOllama, llama.cpp and LM Studio are supported.\u003cbr\u003e\nSo EONYX can run \u003cstrong\u003eentirely on a local model\u003c/strong\u003e, without sending your code to anyone\u0026rsquo;s cloud.\u003cbr\u003e\nClaude Code cannot: it always calls the Anthropic API.\u003c/p\u003e\n\u003cp\u003eThis matters when:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe code must not leave the perimeter, under an NDA, a closed network or regulation.\u003c/li\u003e\n\u003cli\u003eThe internet connection is unreliable.\u003c/li\u003e\n\u003cli\u003eYou want zero leak risk, because the data never leaves the machine.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhere your code goes in each case.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEONYX: your choice\u003c/strong\u003e\u003c/p\u003e\n\u003cpre class=\"mermaid\"\u003esequenceDiagram\n    participant U as Your code\n    participant P as EONYX CLI\n    participant L as Local model\n    participant C as Cloud API\n    U-\u003e\u003eP: sources, configs, secrets\n    alt by default\n        P-\u003e\u003eL: processed in place\n        L--\u003e\u003eP: response\n        Note over P,L: data does not leave the machine\n    else only if you choose so\n        P-\u003e\u003eC: goes to the cloud\n        C--\u003e\u003eP: response\n    end\n    P--\u003e\u003eU: result\r\n\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003eClaude Code: always the cloud\u003c/strong\u003e\u003c/p\u003e\n\u003cpre class=\"mermaid\"\u003esequenceDiagram\n    participant U as Your code\n    participant CC as Claude Code\n    participant A as api.anthropic.com\n    U-\u003e\u003eCC: sources, configs, secrets\n    CC-\u003e\u003eA: always goes to the cloud\n    A--\u003e\u003eCC: response\n    CC--\u003e\u003eU: result\n    Note over CC,A: no choice\r\n\u003c/pre\u003e\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eOne call still leaves the machine\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eYour code and the model traffic stay put.\u003cbr\u003e\nThe licence does not.\u003cbr\u003e\nEONYX verifies it against eonyx.tech at every startup, so the machine has to reach that one host.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"a-single-binary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#a-single-binary\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 A single binary\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eInstallation\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eEONYX — a single static binary (\u003ca href=\"https://go.dev\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eGo\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClaude Code — \u003ca href=\"https://www.npmjs.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003enpm\u003c/a\u003e (\u003ca href=\"https://nodejs.org\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eNode.js\u003c/a\u003e 18+) or an installer\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuthorization\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eEONYX — the provider\u0026rsquo;s API key, and none at all for a local model\u003c/li\u003e\n\u003cli\u003eClaude Code — OAuth (Claude Pro/Max) or \u003ccode\u003eANTHROPIC_API_KEY\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRuntime\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eEONYX — nothing extra, one process\u003c/li\u003e\n\u003cli\u003eClaude Code — Node.js\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEONYX is \u003cstrong\u003eone process, with no telemetry and no OAuth\u003c/strong\u003e.\u003cbr\u003e\nDownload the binary, set a key or point it at a local model, and work.\u003cbr\u003e\nNothing to log into.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFrom zero to the first prompt\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-10\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# EONYX\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 1. download the binary from the Releases page and put it in PATH\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eexport\u003c/span\u003e \u003cspan class=\"nv\"\u003eDEEPSEEK_API_KEY\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003esk-...   \u003cspan class=\"c1\"\u003e# 2. a key — or a local model with no key\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx                             \u003cspan class=\"c1\"\u003e# 3. done, the TUI is open\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-11\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# Claude Code\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 1. install Node.js 18+\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enpm install -g @anthropic-ai/claude-code   \u003cspan class=\"c1\"\u003e# 2. install the package\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eclaude                                      \u003cspan class=\"c1\"\u003e# 3. OAuth login in the browser…\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 4. …a Pro/Max subscription or ANTHROPIC_API_KEY\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# 5. only now — the first prompt\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003cstrong\u003e3 steps against 5.\u003c/strong\u003e\u003cbr\u003e\nAnd not one of the EONYX steps needs a browser, an account or a runtime.\u003c/p\u003e\n\u003ch3 id=\"shell-in-the-process\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#shell-in-the-process\" class=\"header-mark\"\u003e\u003c/a\u003e7.4 Shell in the process\u003c/h3\u003e\u003cp\u003eThe \u003ccode\u003ebash\u003c/code\u003e tool runs on the built-in \u003ca href=\"https://github.com/mvdan/sh\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003ccode\u003emvdan.cc/sh\u003c/code\u003e\u003c/a\u003e interpreter.\u003cbr\u003e\n\u003cstrong\u003eNo system bash is needed.\u003c/strong\u003e\u003cbr\u003e\nThe same command behaves the same on Linux, macOS and \u003cstrong\u003eWindows without WSL\u003c/strong\u003e.\u003cbr\u003e\nThe working directory and the environment survive between calls.\u003cbr\u003e\nA short list of dangerous commands is blocked at policy level: \u003ccode\u003eshutdown\u003c/code\u003e, \u003ccode\u003ereboot\u003c/code\u003e, \u003ccode\u003emkfs\u003c/code\u003e and friends.\u003c/p\u003e\n\u003ch3 id=\"control-over-cost\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#control-over-cost\" class=\"header-mark\"\u003e\u003c/a\u003e7.5 Control over cost\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eYour own key, or a free local model.\u003c/strong\u003e DeepSeek costs pennies. A local model costs nothing. No product subscription required.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTransparent spend.\u003c/strong\u003e The TUI header shows input and output tokens, cached tokens and a dollar estimate as the session runs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eYour own limits.\u003c/strong\u003e \u003ccode\u003emax_steps\u003c/code\u003e, \u003ccode\u003econtext_window\u003c/code\u003e and \u003ccode\u003eretry\u003c/code\u003e are tuned to your budget and your model.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat a month of work costs.\u003cbr\u003e\nThe Claude Pro subscription is the public price.\u003cbr\u003e\nThe API spend is an example and depends on the load.\u003c/p\u003e\n\u003cdiv class=\"echarts\" id=\"id-12\" data-option=\"{\u0026#34;color\u0026#34;:[\u0026#34;#00ff41\u0026#34;],\u0026#34;series\u0026#34;:[{\u0026#34;barWidth\u0026#34;:\u0026#34;45%\u0026#34;,\u0026#34;data\u0026#34;:[0,3,20],\u0026#34;type\u0026#34;:\u0026#34;bar\u0026#34;}],\u0026#34;tooltip\u0026#34;:{},\u0026#34;xAxis\u0026#34;:{\u0026#34;axisLabel\u0026#34;:{\u0026#34;interval\u0026#34;:0},\u0026#34;data\u0026#34;:[\u0026#34;Local model\u0026#34;,\u0026#34;DeepSeek via API (example)\u0026#34;,\u0026#34;Claude Pro subscription\u0026#34;],\u0026#34;type\u0026#34;:\u0026#34;category\u0026#34;},\u0026#34;yAxis\u0026#34;:{\u0026#34;name\u0026#34;:\u0026#34;$ / month\u0026#34;,\u0026#34;type\u0026#34;:\u0026#34;value\u0026#34;}}\" style=\"width: 100%; height: 18rem;\"\u003e\u003c/div\u003e\n\u003ch2 id=\"-the-honest-picture\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-the-honest-picture\" class=\"header-mark\"\u003e\u003c/a\u003e8 ⚖️ The honest picture\u003c/h2\u003e\u003ch3 id=\"what-you-do-not-lose\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#what-you-do-not-lose\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 What you do not lose\u003c/h3\u003e\u003cp\u003eEONYX is not a stripped-down clone.\u003cbr\u003e\nThe familiar toolset is all there:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMCP client\u003c/strong\u003e over stdio and HTTP, with resources and prompts.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAgent Skills\u003c/strong\u003e in \u003ccode\u003eSKILL.md\u003c/code\u003e, with progressive disclosure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHooks\u003c/strong\u003e around tools, \u003ccode\u003ebefore\u003c/code\u003e and \u003ccode\u003eafter\u003c/code\u003e, context through \u003ccode\u003eEONYX_*\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSubagents\u003c/strong\u003e via the \u003ccode\u003etask\u003c/code\u003e tool, in an isolated context.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSessions\u003c/strong\u003e in JSONL, with resume, fork and search.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePermissions\u003c/strong\u003e and \u003cstrong\u003eplan mode\u003c/strong\u003e, read-only until you approve the plan.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuto-summarization\u003c/strong\u003e as the context window fills.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAGENTS.md\u003c/strong\u003e for standing project instructions across the tree.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSame workflow.\u003cbr\u003e\nNo provider lock-in.\u003c/p\u003e\n\u003ch3 id=\"where-claude-code-is-stronger\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#where-claude-code-is-stronger\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Where Claude Code is stronger\u003c/h3\u003e\u003cp\u003eTo keep this honest:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eClaude models.\u003c/strong\u003e Opus and Sonnet are top-tier for code, and at Anthropic they come tuned for Claude Code out of the box.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEcosystem and polish.\u003c/strong\u003e An official product: desktop and IDE apps, a web version, background tasks, support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZero provider setup.\u003c/strong\u003e Log in with a subscription and it works. No config to touch.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eEONYX wins elsewhere: \u003cstrong\u003efreedom, locality, no lock-in\u003c/strong\u003e.\u003cbr\u003e\nWant Claude models specifically and the smoothest official experience? Claude Code fits better.\u003cbr\u003e\nWant one local binary, any provider including offline models, and full control over data and cost? Take EONYX.\u003c/p\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003ch3 id=\"comparison-table\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#comparison-table\" class=\"header-mark\"\u003e\u003c/a\u003e9.1 Comparison table\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eCapability\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eEONYX\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eClaude Code\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eModels\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003eany OpenAI-compatible API\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eClaude only\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eLocal model\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003eyes: Ollama, llama.cpp, LM Studio\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eno, cloud only\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eInstallation\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003ea single binary (Go)\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNode.js 18+ / installer\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eAuthorization\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003ea key, or no key at all\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eOAuth / Anthropic key\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eTelemetry\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003eno\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eShell\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003ebuilt-in (\u003ccode\u003emvdan/sh\u003c/code\u003e)\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esystem\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMCP\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSkills\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eHooks\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSubagents\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003ePlan mode\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eSessions\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003ePermissions\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eyes\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eCost\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cmark\u003eyour own key / local for free\u003c/mark\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esubscription / Anthropic API\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eModel freedom\u003c/strong\u003e — any OpenAI-compatible provider and local models.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLocal execution\u003c/strong\u003e — your code never leaves the machine.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eA single binary\u003c/strong\u003e — Go, no Node, no OAuth, no telemetry.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eShell in the process\u003c/strong\u003e — \u003ccode\u003emvdan/sh\u003c/code\u003e, works on Windows without WSL.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCost control\u003c/strong\u003e — your own key or free local models, spend is visible in the header.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNothing lost\u003c/strong\u003e — MCP, skills, hooks, subagents, sessions, plan mode and permissions are all there.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX skills: how Agent Skills and SKILL.md work",
        "date_published" : "2026-06-11T00:00:00+03:00",
        "date_modified" : "2026-06-11T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-skills/",
        "url" : "https://eonyx.tech/guide/eonyx-skills/",
        "summary": "A skill is a folder with a SKILL.md inside.\nIt is an instruction the agent loads when the task calls for it.\nPackage a repetitive procedure once: a code review, a deploy checklist, a report format.\nIt then costs no context until it is actually needed.\n",
        "content_html" : "\u003cp\u003eA \u003cstrong\u003eskill\u003c/strong\u003e is a folder with a \u003ccode\u003eSKILL.md\u003c/code\u003e inside.\u003cbr\u003e\nIt is an instruction the agent loads when the task calls for it.\u003cbr\u003e\nPackage a repetitive procedure once: a code review, a deploy checklist, a report format.\u003cbr\u003e\nIt then costs no context until it is actually needed.\u003c/p\u003e\n\u003ch2 id=\"-how-a-skill-works\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-how-a-skill-works\" class=\"header-mark\"\u003e\u003c/a\u003e7 🧩 How a skill works\u003c/h2\u003e\u003ch3 id=\"progressive-disclosure\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#progressive-disclosure\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Progressive disclosure\u003c/h3\u003e\u003cp\u003eOnly the \u003cstrong\u003ename and description\u003c/strong\u003e reach the system prompt.\u003cbr\u003e\nThey form a short catalogue under \u003ccode\u003e## Available Skills\u003c/code\u003e.\u003cbr\u003e\nThe full text arrives only when the model calls \u003ccode\u003eload_skill\u003c/code\u003e itself:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-13\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e## Available Skills\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- **review**: Check the diff for bugs and style before committing\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- **deploy**: Production rollout checklist\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e→ the model decides the task is about a review\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e→ calls load_skill {\u0026#34;name\u0026#34;: \u0026#34;review\u0026#34;}\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e→ receives the full text of SKILL.md\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eSo a dozen skills cost a couple of hundred tokens instead of tens of thousands.\u003cbr\u003e\nThe model decides when to load one.\u003cbr\u003e\nThat is why the \u003ccode\u003edescription\u003c/code\u003e field decides everything.\u003c/p\u003e\n\u003ch3 id=\"the-structure-of-a-skill\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-structure-of-a-skill\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 The structure of a skill\u003c/h3\u003e\u003cp\u003eA skill is a subdirectory holding a \u003ccode\u003eSKILL.md\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-14\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eskills/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e└── review/\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    └── SKILL.md\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe file opens with frontmatter between \u003ccode\u003e---\u003c/code\u003e, then the body:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-closed show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003emarkdown\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-15\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ename: review\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edescription: Check the diff for bugs, style, and tests before committing. Use it for phrases like \u0026#34;review\u0026#34;, \u0026#34;check my changes\u0026#34;, \u0026#34;before I commit\u0026#34;.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etags: [git, quality]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gh\"\u003e# Reviewing changes\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e1.\u003c/span\u003e Look at the diff: \u003cspan class=\"sb\"\u003e`git_diff`\u003c/span\u003e, with staged=true if needed.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e2.\u003c/span\u003e Go through every changed file: logic, mistakes, stray edits.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e3.\u003c/span\u003e Verify that the tests were run: \u003cspan class=\"sb\"\u003e`go test ./...`\u003c/span\u003e.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e4. Structure the answer like this: critical → nice to have → nitpicks.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eFrontmatter fields:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eField\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eRequired\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eno\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe skill name; defaults to the directory name\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003edescription\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003edesirable\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe model uses it to decide whether to load the skill\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003etags\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eno\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea list of labels, shown in the catalog\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eFrontmatter is YAML, \u003ccode\u003ekey: value\u003c/code\u003e.\u003cbr\u003e\nA JSON object works too.\u003cbr\u003e\nWithout a \u003ccode\u003edescription\u003c/code\u003e the catalogue shows \u003ccode\u003eNo description provided\u003c/code\u003e, and the model will almost never load that skill.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eHow to write a description\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eThe description is a trigger.\u003cbr\u003e\nSay \u003cstrong\u003ewhat the skill does\u003c/strong\u003e and \u003cstrong\u003ewhen to apply it\u003c/strong\u003e.\u003cbr\u003e\nInclude the words you actually use: \u0026ldquo;use it when asked to prepare a release, roll out, deploy\u0026rdquo;.\u003cbr\u003e\nA vague \u0026ldquo;useful deployment tips\u0026rdquo; will not fire.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"skill-examples\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#skill-examples\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 Skill examples\u003c/h3\u003e\u003ctab-container default-tab=\"0\" class=\"tw:block tw:my-5\" role=\"tablist\"\u003e\u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-17\"\u003eDeploy checklist\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-18\"\u003eCommit style\u003c/button\u003e\r\n  \n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-17\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cdiv class=\"code-block highlight is-closed show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003emarkdown\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-33\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ename: deploy\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edescription: Production rollout checklist. Use it when asked to deploy, roll out, or prepare a release.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etags: [ops]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gh\"\u003e# Deploy\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e1.\u003c/span\u003e \u003cspan class=\"sb\"\u003e`git_status`\u003c/span\u003e — the working tree is clean, the branch is main.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e2.\u003c/span\u003e \u003cspan class=\"sb\"\u003e`go test ./...`\u003c/span\u003e and \u003cspan class=\"sb\"\u003e`go vet ./...`\u003c/span\u003e — green.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e3.\u003c/span\u003e Build the tag: the version from \u003cspan class=\"sb\"\u003e`git describe --tags`\u003c/span\u003e + an increment.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e4. NEVER push a tag without confirmation from the user.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-18\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cdiv class=\"code-block highlight is-closed show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003emarkdown\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-34\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ename: commits\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edescription: The rules for writing commit messages in this project. Use it before any git_commit.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003etags: [git]\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"gh\"\u003e# Commits\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e Subject: imperative mood, English, up to 60 characters.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e-\u003c/span\u003e No mentions of tools or bots.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e- A body only if the \u0026#34;why\u0026#34; isn\u0026#39;t obvious from the subject.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\r\n    \r\n\u003c/div\u003e\r\n\n\u003c/tab-container\u003e\r\n\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eSkills are data, not code\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003ccode\u003eSKILL.md\u003c/code\u003e is text handed to the model.\u003cbr\u003e\nIt is never executed.\u003cbr\u003e\nIf a skill needs commands, the model runs them through the normal tools, with every permission gate in place.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-discovery-and-management\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-discovery-and-management\" class=\"header-mark\"\u003e\u003c/a\u003e8 🔍 Discovery and management\u003c/h2\u003e\u003ch3 id=\"search-directories\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#search-directories\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 Search directories\u003c/h3\u003e\u003cp\u003eDirectories are scanned in priority order.\u003cbr\u003e\n\u003cstrong\u003eOn a name collision the first match wins.\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003ePriority\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eDirectory\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it is\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;project\u0026gt;/.eonyx/skills\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eproject skills\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e~/.config/eonyx/skills\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003epersonal skills\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e~/.config/agents/skills\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe shared agent skills folder\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eSo a project \u003ccode\u003ereview\u003c/code\u003e overrides your global one.\u003cbr\u003e\nTwo more levers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_SKILLS_DIR\u003c/code\u003e — a list of paths in the OS separator. It \u003cstrong\u003ereplaces\u003c/strong\u003e the whole list.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eskills\u003c/code\u003e array in \u003ccode\u003eeonyx.json\u003c/code\u003e — it \u003cstrong\u003eappends\u003c/strong\u003e after the standard directories:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-16\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;skills\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;/opt/team-skills\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;../shared-skills\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003ccode\u003eeonyx config\u003c/code\u003e shows what was found, in the Skills section.\u003cbr\u003e\nThe TUI header shows the active ones in the \u003ccode\u003e# skills\u003c/code\u003e segment.\u003c/p\u003e\n\u003ch3 id=\"managing-skills-in-a-session\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#managing-skills-in-a-session\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Managing skills in a session\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003eCtrl+K\u003c/strong\u003e opens the capabilities dialog, on the \u003cstrong\u003eSkills\u003c/strong\u003e tab.\u003cbr\u003e\nAny skill flips off and on with \u003ccode\u003e✓\u003c/code\u003e and \u003ccode\u003e✗\u003c/code\u003e.\u003cbr\u003e\nThe toggle rebuilds the catalogue in the system prompt at once and rebinds \u003ccode\u003eload_skill\u003c/code\u003e to the active set.\u003cbr\u003e\nA disabled skill disappears from the model\u0026rsquo;s view and cannot be loaded.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eload_skill\u003c/code\u003e is read-only by nature, but it is not on the always-allowed list.\u003cbr\u003e\nIn the TUI its first call goes through the usual permission dialog.\u003cbr\u003e\nAdd it to \u003ccode\u003eallowed_tools\u003c/code\u003e to skip that.\u003c/p\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eA skill\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ea directory with a \u003ccode\u003eSKILL.md\u003c/code\u003e: frontmatter \u003ccode\u003ename\u003c/code\u003e/\u003ccode\u003edescription\u003c/code\u003e/\u003ccode\u003etags\u003c/code\u003e + the instruction body\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSKILL.md\u003c/code\u003e is not executed — it\u0026rsquo;s data for the model\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProgressive disclosure\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ethe prompt holds only the catalog of names and descriptions\u003c/li\u003e\n\u003cli\u003ethe model gets the full text through \u003ccode\u003eload_skill\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDiscovery\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ethe project\u0026rsquo;s \u003ccode\u003e.eonyx/skills\u003c/code\u003e → \u003ccode\u003e~/.config/eonyx/skills\u003c/code\u003e → \u003ccode\u003e~/.config/agents/skills\u003c/code\u003e; the first match by name wins\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEONYX_SKILLS_DIR\u003c/code\u003e replaces the list, the \u003ccode\u003eskills\u003c/code\u003e config key extends it\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eManagement\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCtrl+K\u003c/code\u003e → the Skills tab: on/off on the fly\u003c/li\u003e\n\u003cli\u003eactive skills are visible in the header\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThe key field\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edescription\u003c/code\u003e: what the skill does and when to apply it, in the user\u0026rsquo;s own words\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "Configuring providers and models in EONYX",
        "date_published" : "2026-06-07T00:00:00+03:00",
        "date_modified" : "2026-06-07T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-providers/",
        "url" : "https://eonyx.tech/guide/eonyx-providers/",
        "summary": "EONYX talks to any OpenAI-compatible API.\nA provider is the way to reach a backend.\nA model binds an id to a provider.\nHere is how to connect one, hide the secrets and set price, window and retries.\n",
        "content_html" : "\u003cp\u003eEONYX talks to \u003cstrong\u003eany OpenAI-compatible API\u003c/strong\u003e.\u003cbr\u003e\nA provider is the way to reach a backend.\u003cbr\u003e\nA model binds an id to a provider.\u003cbr\u003e\nHere is how to connect one, hide the secrets and set price, window and retries.\u003c/p\u003e\n\u003ch2 id=\"-providers-and-models\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-providers-and-models\" class=\"header-mark\"\u003e\u003c/a\u003e7 🔧 Providers and models\u003c/h2\u003e\u003ch3 id=\"provider\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#provider\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Provider\u003c/h3\u003e\u003cp\u003eThere is one type so far: \u003ccode\u003e\u0026quot;openai\u0026quot;\u003c/code\u003e.\u003cbr\u003e\nIt covers any OpenAI-compatible endpoint.\u003cbr\u003e\n\u003ccode\u003ebase_url\u003c/code\u003e is required.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-11\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;providers\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e     \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://api.openai.com/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e     \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$OPENAI_API_KEY\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;openrouter\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://openrouter.ai/api/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$OPENROUTER_API_KEY\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;deepseek\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e   \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://api.deepseek.com\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e       \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$DEEPSEEK_API_KEY\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;moonshot\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e   \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;type\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;base_url\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;https://api.moonshot.cn/v1\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e     \u003cspan class=\"nt\"\u003e\u0026#34;api_key\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;$MOONSHOT_API_KEY\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eSecrets go through environment variables\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003ccode\u003eapi_key\u003c/code\u003e and \u003ccode\u003ebase_url\u003c/code\u003e may reference variables such as \u003ccode\u003e$OPENAI_API_KEY\u003c/code\u003e.\u003cbr\u003e\nThey are expanded \u003cstrong\u003eafter\u003c/strong\u003e the config layers merge.\u003cbr\u003e\nSo the key never lands in a committed file.\u003cbr\u003e\nThe same holds for \u003ccode\u003ereport.database_url\u003c/code\u003e and MCP headers.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"model\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#model\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 Model\u003c/h3\u003e\u003cp\u003eA model links an id, as the API understands it, to a provider:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-12\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;models\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gpt-5\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e            \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;openai\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e     \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e400000\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;input_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e1.25\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;output_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e10\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;id\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek-v4-pro\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;provider\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e   \u003cspan class=\"nt\"\u003e\u0026#34;context_window\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e1000000\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;input_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.435\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;output_price\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mf\"\u003e0.87\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"err\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;default_model\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;deepseek-v4-pro\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eField\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePurpose\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eid\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe model name at the provider\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eprovider\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea key from the \u003ccode\u003eproviders\u003c/code\u003e block\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003econtext_window\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ewindow size in tokens — \u003cstrong\u003eenables history auto-summarization\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einput_price\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eprice per 1M input tokens (USD) — for the cost counter\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eoutput_price\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eprice per 1M output tokens (USD)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003ePrices only feed the cost indicator in the TUI header.\u003cbr\u003e\nThey change no behaviour.\u003cbr\u003e\n\u003ccode\u003econtext_window\u003c/code\u003e matters more: without it there is no auto-summarization.\u003c/p\u003e\n\u003ch3 id=\"switching-the-model-on-the-fly\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#switching-the-model-on-the-fly\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 Switching the model on the fly\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003eIn the TUI, press \u003ccode\u003eCtrl+N\u003c/code\u003e or type \u003ccode\u003e/model\u003c/code\u003e. The configured models are listed, the current one marked.\u003c/li\u003e\n\u003cli\u003eHeadless, pass \u003ccode\u003e-m/--model\u003c/code\u003e:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-13\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -m deepseek-v4-pro \u003cspan class=\"s2\"\u003e\u0026#34;fix the failing test\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eKeeping several models around pays off.\u003cbr\u003e\nA cheap fast one for rough work.\u003cbr\u003e\nA strong one for the hard problems.\u003c/p\u003e\n\u003ch2 id=\"-reliability-and-verification\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-reliability-and-verification\" class=\"header-mark\"\u003e\u003c/a\u003e8 🛡️ Reliability and verification\u003c/h2\u003e\u003ch3 id=\"retries-and-timeouts\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#retries-and-timeouts\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 Retries and timeouts\u003c/h3\u003e\u003cp\u003eThe \u003ccode\u003eretry\u003c/code\u003e block controls transient failures and the wait for the first response:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-14\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;retry\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;max_retries\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e3\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;base_delay_ms\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e500\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;response_header_timeout_sec\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e60\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eField\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eDefault\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eMeaning\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003emax_retries\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eextra attempts on 429/5xx and transport errors (0 disables them)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ebase_delay_ms\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e500\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe first backoff step; it doubles, capped at 30s; honors \u003ccode\u003eRetry-After\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eresponse_header_timeout_sec\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e60\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehow long to wait for the first response header before streaming starts\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eThere is deliberately no global \u003ccode\u003eClient.Timeout\u003c/code\u003e.\u003cbr\u003e\nA long token stream must never be cut off by a clock.\u003c/p\u003e\n\u003ch3 id=\"checking-the-configuration\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#checking-the-configuration\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Checking the configuration\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-15\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx config   \u003cspan class=\"c1\"\u003e# providers (keys hidden), models, default, limits\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx info     \u003cspan class=\"c1\"\u003e# where the config, data, cache and project root live\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eStrict schema\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eThe config is parsed strictly.\u003cbr\u003e\nAn unknown field, a wrong type or broken JSON is \u003cstrong\u003efatal\u003c/strong\u003e at startup.\u003cbr\u003e\nFor an unknown field you get its name and line number.\u003cbr\u003e\nEONYX would rather not start than quietly swallow a typo.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eProvider\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003etype: \u0026quot;openai\u0026quot;\u003c/code\u003e + \u003ccode\u003ebase_url\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ecovers OpenAI, OpenRouter, DeepSeek, Moonshot and local servers\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSecrets\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003evia \u003ccode\u003e$ENV\u003c/code\u003e references in \u003ccode\u003eapi_key\u003c/code\u003e/\u003ccode\u003ebase_url\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eexpanded after merging\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModel\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eid\u003c/code\u003e + \u003ccode\u003eprovider\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_window\u003c/code\u003e enables summarization, prices drive the cost counter\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSwitching\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCtrl+N\u003c/code\u003e / \u003ccode\u003e/model\u003c/code\u003e in the TUI or \u003ccode\u003e-m\u003c/code\u003e in headless mode\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eretry\u003c/code\u003e\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003emax_retries\u003c/code\u003e (3), \u003ccode\u003ebase_delay_ms\u003c/code\u003e (500), \u003ccode\u003eresponse_header_timeout_sec\u003c/code\u003e (60)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "How EONYX Works: The Agent Architecture from the Inside",
        "date_published" : "2026-06-06T00:00:00+03:00",
        "date_modified" : "2026-06-06T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-architecture/",
        "url" : "https://eonyx.tech/guide/eonyx-architecture/",
        "summary": "EONYX is written in Go.\nIt builds into a single static binary.\nInside sits a small set of packages around one central abstraction.\nHere is how it fits together.\n",
        "content_html" : "\u003cp\u003eEONYX is written in Go.\u003cbr\u003e\nIt builds into a single static binary.\u003cbr\u003e\nInside sits a small set of packages around one central abstraction.\u003cbr\u003e\nHere is how it fits together.\u003c/p\u003e\n\u003ch2 id=\"-the-agent-core\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-the-agent-core\" class=\"header-mark\"\u003e\u003c/a\u003e7 🧠 The agent core\u003c/h2\u003e\u003cp\u003eOne interface, and a loop around it.\u003c/p\u003e\n\u003ch3 id=\"dependency-flow\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#dependency-flow\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Dependency flow\u003c/h3\u003e\u003cp\u003e\u003ccode\u003ecmd\u003c/code\u003e → (\u003ccode\u003etui\u003c/code\u003e | \u003ccode\u003eagent\u003c/code\u003e) → (\u003ccode\u003eprovider\u003c/code\u003e → \u003ccode\u003ellm\u003c/code\u003e) + \u003ccode\u003etools\u003c/code\u003e + \u003ccode\u003esession\u003c/code\u003e + \u003ccode\u003epermission\u003c/code\u003e + \u003ccode\u003eprompt\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default command brings up \u003ccode\u003etui\u003c/code\u003e.\u003cbr\u003e\nThe \u003ccode\u003erun\u003c/code\u003e subcommand drives the same \u003ccode\u003eagent\u003c/code\u003e headless.\u003cbr\u003e\nEverything below \u003ccode\u003ellm.Provider\u003c/code\u003e is hidden behind that interface.\u003c/p\u003e\n\u003ch3 id=\"one-abstraction-llmprovider\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#one-abstraction-llmprovider\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 One abstraction: llm.Provider\u003c/h3\u003e\u003cp\u003e\u003ccode\u003einternal/llm\u003c/code\u003e holds the core and no concrete backends.\u003cbr\u003e\nA provider has \u003cstrong\u003eone method\u003c/strong\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ego\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-3\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nf\"\u003eStream\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003ectx\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eMessage\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[]\u003c/span\u003e\u003cspan class=\"nx\"\u003eTool\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"o\"\u003e\u0026lt;-\u003c/span\u003e\u003cspan class=\"kd\"\u003echan\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"nx\"\u003eEvent\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kt\"\u003eerror\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003e\u003ccode\u003eEvent\u003c/code\u003e is a closed sum type.\u003cbr\u003e\n\u003ccode\u003eEventTextDelta\u003c/code\u003e, \u003ccode\u003eEventReasoningDelta\u003c/code\u003e, \u003ccode\u003eEventToolCall\u003c/code\u003e, \u003ccode\u003eEventUsage\u003c/code\u003e, \u003ccode\u003eEventDone\u003c/code\u003e, \u003ccode\u003eEventError\u003c/code\u003e.\u003cbr\u003e\nAll traffic with the model collapses into a stream of events.\u003cbr\u003e\nSo adding a backend means implementing one interface.\u003c/p\u003e\n\u003cp\u003eThe only implementation is \u003ccode\u003einternal/llm/openai\u003c/code\u003e.\u003cbr\u003e\nIt is an OpenAI-compatible client on \u003ccode\u003enet/http\u003c/code\u003e and SSE, with no vendor SDKs.\u003cbr\u003e\n\u003ccode\u003einternal/provider.For(...)\u003c/code\u003e is the single place that maps a model onto a provider.\u003c/p\u003e\n\u003ch3 id=\"the-agent-loop\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-agent-loop\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 The agent loop\u003c/h3\u003e\u003cp\u003e\u003ccode\u003einternal/agent\u003c/code\u003e is the loop.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eSend\u003c/code\u003e records the user message.\u003cbr\u003e\nThen it repeats: stream the response, execute tool calls, feed results back.\u003cbr\u003e\nIt stops when the model calls no more tools.\u003cbr\u003e\nThe ceiling is \u003ccode\u003emaxSteps\u003c/code\u003e, 50 by default.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eOptions\u003c/code\u003e configures it:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eHistory\u003c/code\u003e — seed or resume.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePersist\u003c/code\u003e — write every message. An error \u003cstrong\u003eaborts\u003c/strong\u003e the turn, because the store is the source of truth.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eAuthorize\u003c/code\u003e — the permission gate. A denial becomes an error result and does not kill the turn.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEvents\u003c/code\u003e — streaming callbacks.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eContextTokens\u003c/code\u003e — enables auto-summarization.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eConsecutive read-only calls run \u003cstrong\u003ein parallel\u003c/strong\u003e: \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, git statuses.\u003cbr\u003e\nResults always come back in the original order.\u003c/p\u003e\n\u003ch2 id=\"-tools-and-the-build\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-tools-and-the-build\" class=\"header-mark\"\u003e\u003c/a\u003e8 🧰 Tools and the build\u003c/h2\u003e\u003ch3 id=\"tools\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#tools\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 Tools\u003c/h3\u003e\u003cp\u003e\u003ccode\u003einternal/tools\u003c/code\u003e is the registry, plus \u003ccode\u003eDefaultSet(...)\u003c/code\u003e.\u003cbr\u003e\nIt registers the 15 standard tools: read, write, edit, multi_edit, ls, picker, glob, grep, bash, fetch, git_status, git_diff, git_log, git_commit, todo_write.\u003c/p\u003e\n\u003cp\u003eA tool\u0026rsquo;s declaration is what the model sees.\u003cbr\u003e\nIts \u003ccode\u003eHandler\u003c/code\u003e is what actually runs.\u003cbr\u003e\nThey are separate on purpose.\u003cbr\u003e\nWith the sandbox on, file tools are wrapped in \u003ccode\u003esandboxed(...)\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003einternal/shell\u003c/code\u003e runs bash-like scripts \u003cstrong\u003ein-process\u003c/strong\u003e via \u003ccode\u003emvdan.cc/sh/v3\u003c/code\u003e.\u003cbr\u003e\nThat is why \u003ccode\u003ebash\u003c/code\u003e works everywhere without a system shell.\u003c/p\u003e\n\u003ch3 id=\"the-remaining-packages\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-remaining-packages\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 The remaining packages\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003ePackage\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eRole\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/session\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eStore\u003c/code\u003e with a JSONL implementation (\u003ccode\u003esessions/\u0026lt;id\u0026gt;.jsonl\u003c/code\u003e + index)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/prompt\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esystem prompt assembly and \u003ccode\u003eAGENTS.md\u003c/code\u003e lookup up the tree\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/agent/summarize.go\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esummarization once ~0.8·\u003ccode\u003econtext_window\u003c/code\u003e is filled (in memory)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/permission\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003estatic permission policy\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/tui\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003einteractive chat on Bubble Tea / Bubbles / Lipgloss\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/subagent\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe \u003ccode\u003etask\u003c/code\u003e tool — a child agent with a read-only tool set\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/skills\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003elocal Agent Skills (\u003ccode\u003eSKILL.md\u003c/code\u003e, progressive disclosure)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/mcp\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMCP client (stdio + http) on the official Go SDK\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/hooks\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eshell hooks around tools\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003einternal/version\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esingle source of the build version\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"build-and-version\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#build-and-version\" class=\"header-mark\"\u003e\u003c/a\u003e8.3 Build and version\u003c/h3\u003e\u003cp\u003eThe version is a git tag and is hardcoded nowhere.\u003cbr\u003e\n\u003ccode\u003emake build\u003c/code\u003e bakes \u003ccode\u003egit describe --tags --always --dirty\u003c/code\u003e into the binary.\u003cbr\u003e\n\u003ccode\u003eeonyx --version\u003c/code\u003e prints it.\u003cbr\u003e\nA release is a \u003ccode\u003ev*\u003c/code\u003e tag push.\u003cbr\u003e\nGoReleaser then builds Linux, macOS and Windows in GitHub Actions.\u003c/p\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eDependencies are deliberately modest\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eModule \u003ccode\u003egithub.com/eonyx-core/eonyx\u003c/code\u003e, Go 1.26.\u003cbr\u003e\nEverything is pure Go, with no vendor LLM SDKs.\u003cbr\u003e\ncobra, doublestar, \u003ccode\u003emvdan/sh\u003c/code\u003e, \u003ccode\u003egolang.org/x/net\u003c/code\u003e, the official \u003ccode\u003emodelcontextprotocol/go-sdk\u003c/code\u003e, \u003ccode\u003ealecthomas/chroma\u003c/code\u003e for highlighting.\u003cbr\u003e\nPlus the Charm libraries — bubbletea, bubbles, lipgloss — purely as a UI toolkit.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eOne abstraction\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ellm.Provider.Stream(...)\u003c/code\u003e → a stream of \u003ccode\u003eEvent\u003c/code\u003e; a backend = one implementation\u003c/li\u003e\n\u003cli\u003ethe only provider is an OpenAI-compatible client on \u003ccode\u003enet/http\u003c/code\u003e + SSE, no vendor SDKs\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThe agent loop\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003estream → tools → results, up to \u003ccode\u003emaxSteps\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003econsecutive read-only calls run in parallel\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTools\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e15 standard ones via \u003ccode\u003eDefaultSet\u003c/code\u003e, sandbox for file tools\u003c/li\u003e\n\u003cli\u003ein-process shell via \u003ccode\u003emvdan/sh\u003c/code\u003e, no system bash\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ea single binary, Go 1.26\u003c/li\u003e\n\u003cli\u003eversion from a git tag, releases via GoReleaser\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX Hooks: Automation Around Tool Calls",
        "date_published" : "2026-06-03T00:00:00+03:00",
        "date_modified" : "2026-06-03T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-hooks/",
        "url" : "https://eonyx.tech/guide/eonyx-hooks/",
        "summary": "Hooks are shell commands that run around a tool call.\nOne before it, one after it.\nThey bolt on formatting, auditing and guardrails without touching the agent\u0026rsquo;s code.\n",
        "content_html" : "\u003cp\u003e\u003cstrong\u003eHooks\u003c/strong\u003e are shell commands that run \u003cstrong\u003earound a tool call\u003c/strong\u003e.\u003cbr\u003e\nOne before it, one after it.\u003cbr\u003e\nThey bolt on formatting, auditing and guardrails without touching the agent\u0026rsquo;s code.\u003c/p\u003e\n\u003ch2 id=\"-how-hooks-work\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-how-hooks-work\" class=\"header-mark\"\u003e\u003c/a\u003e7 ⚙️ How hooks work\u003c/h2\u003e\u003ch3 id=\"format\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#format\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 Format\u003c/h3\u003e\u003cp\u003eHooks live in \u003ccode\u003eeonyx.json\u003c/code\u003e.\u003cbr\u003e\nThe key is the \u003cstrong\u003etool name\u003c/strong\u003e.\u003cbr\u003e\nThe value is \u003ccode\u003ebefore\u003c/code\u003e, \u003ccode\u003eafter\u003c/code\u003e, or both.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;echo \\\u0026#34;writing: $EONYX_INPUT\\\u0026#34; \u0026gt;\u0026gt; .eonyx/audit.log\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e  \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -l .\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -l .\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eNo events.\u003cbr\u003e\nNo matchers.\u003cbr\u003e\nEverything hangs off the tool name: \u003ccode\u003ewrite\u003c/code\u003e, \u003ccode\u003eedit\u003c/code\u003e, \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003egit_commit\u003c/code\u003e, MCP tools and the rest.\u003c/p\u003e\n\u003ch3 id=\"the-before-and-after-phases\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-before-and-after-phases\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 The before and after phases\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003ePhase\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhen\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eEffect\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ebefore\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ebefore the tool\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea non-zero exit code \u003cstrong\u003eblocks\u003c/strong\u003e the tool; the error goes to the model\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eafter\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eafter a successful call\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe output (stdout and stderr) is \u003cstrong\u003eappended\u003c/strong\u003e to the tool result (the model sees it)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cul\u003e\n\u003cli\u003eAn empty or missing hook does nothing.\u003c/li\u003e\n\u003cli\u003eAn error in an \u003ccode\u003eafter\u003c/code\u003e hook does not break the result. It is kept with a \u003ccode\u003e(hook after \u0026lt;tool\u0026gt; failed: …)\u003c/code\u003e note.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eafter\u003c/code\u003e does not run if the tool itself failed.\u003c/li\u003e\n\u003cli\u003eEvery hook runs in the shared shell session, with a \u003cstrong\u003e30 second\u003c/strong\u003e timeout.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003ebefore can forbid things\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eA non-zero exit blocks the tool.\u003cbr\u003e\nThat makes \u003ccode\u003ebefore\u003c/code\u003e a guardrail.\u003cbr\u003e\nForbid \u003ccode\u003egit_commit\u003c/code\u003e when tests have not run.\u003cbr\u003e\nOr forbid \u003ccode\u003ebash\u003c/code\u003e in a dangerous directory.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"context-through-variables\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#context-through-variables\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 Context through variables\u003c/h3\u003e\u003cp\u003eData reaches the hook \u003cstrong\u003ethrough environment variables\u003c/strong\u003e.\u003cbr\u003e\nNothing is substituted into the command text.\u003cbr\u003e\nSo the input or the result cannot break your command, and injection is impossible.\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eVariable\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it holds\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEONYX_TOOL\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003etool name\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEONYX_PHASE\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ebefore\u003c/code\u003e or \u003ccode\u003eafter\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEONYX_CWD\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe shell\u0026rsquo;s current working directory\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEONYX_INPUT\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe tool\u0026rsquo;s raw JSON input\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEONYX_RESULT\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe tool result (only in \u003ccode\u003eafter\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"-recipes\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-recipes\" class=\"header-mark\"\u003e\u003c/a\u003e8 🍳 Recipes\u003c/h2\u003e\u003ctab-container default-tab=\"0\" class=\"tw:block tw:my-5\" role=\"tablist\"\u003e\u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-10\"\u003eAuto-format\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-11\"\u003eAudit log\u003c/button\u003e\r\n  \u003cbutton class=\"tab-button tw:cursor-pointer tw:transition tw:ease-in-out tw:duration-200 tw:rounded-lg tw:bg-transparent tw:px-4 tw:py-2 tw:mr-1.5 tw:mb-1.5 tw:text-sm tw:font-medium tw:text-fgColor-secondary tw:hover:text-fgColor-default tw:hover:bg-bgColor-secondary tw:aria-selected:bg-bgColor-accent-muted tw:aria-selected:text-fgColor-link tw:aria-selected:font-semibold\" type=\"button\" role=\"tab\" id=\"tab-id-12\"\u003eGuardrail\u003c/button\u003e\r\n  \n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-10\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eFormat the code after every edit:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-35\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -w .\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e  \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -w .\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;multi_edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -w .\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-11\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eLog every shell command:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-36\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;bash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;echo \\\u0026#34;[$(date -Is)] $EONYX_INPUT\\\u0026#34; \u0026gt;\u0026gt; .eonyx/bash-audit.log\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n    \r\n\u003c/div\u003e\r\n\n\r\n\r\n\r\n\r\n\u003cdiv\r\n    role=\"tabpanel\"\r\n    aria-labelledby=\"tab-id-12\"\r\n    class=\"\r\n    tw:mt-2\r\n    tw:p-5\r\n    tw:rounded-xl\r\n    tw:border\r\n    tw:border-borderColor-default\r\n    tw:leading-relaxed\r\n    \"\u003e\r\n    \r\n        \u003cp\u003eNo commits until the tests are green:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-37\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;git_commit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;go test ./... \u0026gt;/dev/null 2\u0026gt;\u0026amp;1 || { echo \u0026#39;tests failing\u0026#39;; exit 1; }\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe non-zero exit blocks the commit.\u003cbr\u003e\nThe message goes to the model.\u003c/p\u003e\n\r\n    \r\n\u003c/div\u003e\r\n\n\u003c/tab-container\u003e\r\n\n\u003cdiv class=\"details admonition warning open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"/\u003e\u003c/svg\u003e\u003c/span\u003eHooks are your code\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eHooks run in the shared shell session, the same one the \u003ccode\u003ebash\u003c/code\u003e tool uses.\u003cbr\u003e\nThey run with your privileges.\u003cbr\u003e\nWrite them as carefully as any other script.\u003cbr\u003e\nKeep them fast, under the 30s limit, and idempotent.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFormat\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ethe key is the tool name, the value is \u003ccode\u003ebefore\u003c/code\u003e/\u003ccode\u003eafter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eno events and no matchers\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePhases\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebefore\u003c/code\u003e blocks the tool with a non-zero exit code\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eafter\u003c/code\u003e appends its output to the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContext\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003epassed through \u003ccode\u003eEONYX_*\u003c/code\u003e variables\u003c/li\u003e\n\u003cli\u003eno substitution into the text — injection is impossible\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimits\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e30s timeout, shared shell session\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eafter\u003c/code\u003e errors do not break the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRecipes\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eauto-format, audit log, blocking commits without tests\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX permissions and security: control over every action",
        "date_published" : "2026-05-26T00:00:00+03:00",
        "date_modified" : "2026-05-26T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-security/",
        "url" : "https://eonyx.tech/guide/eonyx-security/",
        "summary": "An agent reads code, edits it and runs commands.\nSo it has to stay inside explicit permissions.\nEONYX stacks several layers: a static gateway, a file sandbox, plan mode and a hard block on dangerous commands.\n",
        "content_html" : "\u003cp\u003eAn agent reads code, edits it and runs commands.\u003cbr\u003e\nSo it has to stay \u003cstrong\u003einside explicit permissions\u003c/strong\u003e.\u003cbr\u003e\nEONYX stacks several layers: a static gateway, a file sandbox, plan mode and a hard block on dangerous commands.\u003c/p\u003e\n\u003ch2 id=\"-the-permission-gateway\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-the-permission-gateway\" class=\"header-mark\"\u003e\u003c/a\u003e1 🚦 The permission gateway\u003c/h2\u003e\u003ch3 id=\"static-policy\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#static-policy\" class=\"header-mark\"\u003e\u003c/a\u003e1.1 Static policy\u003c/h3\u003e\u003cp\u003eTools split in two.\u003cbr\u003e\n\u003cstrong\u003eAlways allowed\u003c/strong\u003e are the read-only ones.\u003cbr\u003e\n\u003cstrong\u003eRequiring permission\u003c/strong\u003e are writes, commands, commits and MCP tools.\u003c/p\u003e\n\u003cp\u003eNo questions asked for \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003egit_status\u003c/code\u003e, \u003ccode\u003egit_diff\u003c/code\u003e, \u003ccode\u003egit_log\u003c/code\u003e, \u003ccode\u003etodo_write\u003c/code\u003e.\u003cbr\u003e\nEverything else meets the gateway:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-1\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;permissions\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;allowed_tools\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;bash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e],\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;sandbox\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eallowed_tools\u003c/code\u003e\u003c/strong\u003e — tools that run without confirmation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003esandbox\u003c/code\u003e\u003c/strong\u003e — locks the file tools inside the project root. More below.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--yolo\u003c/code\u003e\u003c/strong\u003e, or \u003ccode\u003e/yolo\u003c/code\u003e in the TUI — allows everything for this session.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIf a tool is not allowed and \u003ccode\u003e--yolo\u003c/code\u003e is off, the policy denies it: \u003cem\u003e\u0026ldquo;permission denied for tool …: re-run with \u0026ndash;yolo or add … to permissions.allowed_tools\u0026rdquo;\u003c/em\u003e.\u003c/p\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eA denial does not break the flow\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eA blocked tool comes back to the model as an \u003cstrong\u003eerror result\u003c/strong\u003e, not a crash.\u003cbr\u003e\nThe model sees the denial and adapts, usually by proposing another route.\u003cbr\u003e\nThe conversation stays consistent.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"the-interactive-layer-in-the-tui\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-interactive-layer-in-the-tui\" class=\"header-mark\"\u003e\u003c/a\u003e1.2 The interactive layer in the TUI\u003c/h3\u003e\u003cp\u003eInteractive mode adds a dialog on top of the static policy.\u003cbr\u003e\nWhen the policy refuses a tool, EONYX asks:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eAllow once\u003c/strong\u003e — this one time.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAllow always (this session)\u003c/strong\u003e — until the session ends.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDeny\u003c/strong\u003e — reject it. Esc means deny.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u0026ldquo;Allow always\u0026rdquo; remembers the tool for the session, so it stops asking.\u003c/p\u003e\n\u003ch3 id=\"plan-mode\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#plan-mode\" class=\"header-mark\"\u003e\u003c/a\u003e1.3 Plan mode\u003c/h3\u003e\u003cp\u003e\u003ccode\u003e/plan\u003c/code\u003e is a stricter think-first gate.\u003cbr\u003e\nWhile it is on, only read-only tools run: \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003epicker\u003c/code\u003e, \u003ccode\u003egit_status\u003c/code\u003e, \u003ccode\u003egit_diff\u003c/code\u003e, \u003ccode\u003egit_log\u003c/code\u003e, \u003ccode\u003efetch\u003c/code\u003e, \u003ccode\u003etask\u003c/code\u003e, \u003ccode\u003etodo_write\u003c/code\u003e.\u003cbr\u003e\nAnything that writes or executes is blocked, \u003cstrong\u003eregardless\u003c/strong\u003e of \u003ccode\u003eallowed_tools\u003c/code\u003e and \u003ccode\u003e--yolo\u003c/code\u003e:\u003c/p\u003e\n\u003cblockquote\u003e\r\n  \u003cp\u003eplan mode is on: \u0026ldquo;…\u0026rdquo; is blocked until you approve the plan — run /plan to exit plan mode and enable edits\u003c/p\u003e\n\r\n\u003c/blockquote\u003e\u003cp\u003eWhen the plan is ready a dialog appears: \u003cstrong\u003eimplement\u003c/strong\u003e, \u003cstrong\u003eallow edits\u003c/strong\u003e, or \u003cstrong\u003ekeep planning\u003c/strong\u003e.\u003cbr\u003e\nHandy when you want the agent to study the code and propose a plan before touching anything.\u003c/p\u003e\n\u003ch2 id=\"-boundaries-and-guardrails\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-boundaries-and-guardrails\" class=\"header-mark\"\u003e\u003c/a\u003e2 🧱 Boundaries and guardrails\u003c/h2\u003e\u003ch3 id=\"the-file-sandbox\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-file-sandbox\" class=\"header-mark\"\u003e\u003c/a\u003e2.1 The file sandbox\u003c/h3\u003e\u003cp\u003e\u003ccode\u003epermissions.sandbox: true\u003c/code\u003e locks \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003ewrite\u003c/code\u003e, \u003ccode\u003eedit\u003c/code\u003e, \u003ccode\u003emulti_edit\u003c/code\u003e and \u003ccode\u003els\u003c/code\u003e inside the \u003cstrong\u003eproject root\u003c/strong\u003e.\u003cbr\u003e\nThat is the directory holding \u003ccode\u003eeonyx.json\u003c/code\u003e, or the working directory if there is none.\u003cbr\u003e\nA path outside it is refused:\u003c/p\u003e\n\u003cblockquote\u003e\r\n  \u003cp\u003epath \u0026ldquo;…\u0026rdquo; is outside the project sandbox (…); set permissions.sandbox to false to allow paths outside the project\u003c/p\u003e\n\r\n\u003c/blockquote\u003e\u003cp\u003eThe sandbox is \u003cstrong\u003eoff\u003c/strong\u003e by default.\u003cbr\u003e\nTurn it on for an untrusted task, or when you want a guarantee that nothing outside the project is touched.\u003cbr\u003e\nTools with no path argument are unaffected: \u003ccode\u003ebash\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003efetch\u003c/code\u003e and the git tools.\u003c/p\u003e\n\u003ch3 id=\"blocking-dangerous-commands\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#blocking-dangerous-commands\" class=\"header-mark\"\u003e\u003c/a\u003e2.2 Blocking dangerous commands\u003c/h3\u003e\u003cp\u003eBelow the gateway sits one more, coarser layer.\u003cbr\u003e\nThe built-in shell, \u003ccode\u003emvdan/sh\u003c/code\u003e, hard-blocks a small set of commands at policy level.\u003cbr\u003e\nNot even \u003ccode\u003e--yolo\u003c/code\u003e unlocks them:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-2\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eshutdown · reboot · halt · poweroff · mkfs · init\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eAn attempt returns \u003cem\u003e\u0026ldquo;command \u0026ldquo;…\u0026rdquo; is blocked by shell policy\u0026rdquo;\u003c/em\u003e.\u003cbr\u003e\nThis is insurance against catastrophe, not real isolation.\u003c/p\u003e\n\u003ch3 id=\"hooks\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#hooks\" class=\"header-mark\"\u003e\u003c/a\u003e2.3 Hooks\u003c/h3\u003e\u003cp\u003e\u003cstrong\u003ePre-hooks\u003c/strong\u003e add control of your own.\u003cbr\u003e\nA \u003ccode\u003ebefore\u003c/code\u003e hook with a non-zero exit code \u003cstrong\u003eblocks\u003c/strong\u003e the tool.\u003cbr\u003e\nFor example, forbid \u003ccode\u003ebash\u003c/code\u003e when the working directory is your home:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-3\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;bash\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;before\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;[ \\\u0026#34;$EONYX_CWD\\\u0026#34; = \\\u0026#34;$HOME\\\u0026#34; ] \u0026amp;\u0026amp; exit 1 || exit 0\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThere is a whole article on hooks.\u003c/p\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e3 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePermission gateway\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003ereading is always allowed (\u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, the git status tools, \u003ccode\u003etodo_write\u003c/code\u003e); everything else goes through the gateway\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eallowed_tools\u003c/code\u003e allows without questions, \u003ccode\u003e--yolo\u003c/code\u003e removes the gateway for the session\u003c/li\u003e\n\u003cli\u003ethe TUI asks allow once / always / deny; a denial does not break the flow\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePlan mode\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e/plan\u003c/code\u003e — read-only until you approve the plan\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBoundaries and guardrails\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esandbox\u003c/code\u003e locks the file tools inside the project root\u003c/li\u003e\n\u003cli\u003ethe coarse shell block: \u003ccode\u003eshutdown\u003c/code\u003e/\u003ccode\u003ereboot\u003c/code\u003e/\u003ccode\u003emkfs\u003c/code\u003e… not even with \u003ccode\u003e--yolo\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003epre-hooks can block a tool with their exit code\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "A Complete Guide to the EONYX Interactive TUI",
        "date_published" : "2026-05-24T00:00:00+03:00",
        "date_modified" : "2026-05-24T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-tui/",
        "url" : "https://eonyx.tech/guide/eonyx-tui/",
        "summary": "The main way to work with EONYX is the terminal interface.\nStreaming answers, a command palette, pickers and dialogs.\nHere is everything worth knowing to move fast.\n",
        "content_html" : "\u003cp\u003eThe main way to work with EONYX is the terminal interface.\u003cbr\u003e\nStreaming answers, a command palette, pickers and dialogs.\u003cbr\u003e\nHere is everything worth knowing to move fast.\u003c/p\u003e\n\u003ch2 id=\"-keyboard-and-commands\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-keyboard-and-commands\" class=\"header-mark\"\u003e\u003c/a\u003e9 ⌨️ Keyboard and commands\u003c/h2\u003e\u003ch3 id=\"hotkeys\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#hotkeys\" class=\"header-mark\"\u003e\u003c/a\u003e9.1 Hotkeys\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eKey\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eAction\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEnter\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esend message\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+J\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eline break in the input field\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e↑ / ↓\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehistory of your messages\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eEsc\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003einterrupt the running turn\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e/\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ecommand palette (on empty input)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e@\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003efile path completion (Tab inserts)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e?\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehelp (on empty input)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+P\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ecommand palette\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+N\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eswitch model\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+S\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esession manager\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+K\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eskills and MCP servers (on/off)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+O\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eexpand/collapse tool output\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+R\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eexpand/collapse model reasoning\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eCtrl+C\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003equit\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e! \u0026lt;cmd\u0026gt;\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003erun a shell command\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"command-palette\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#command-palette\" class=\"header-mark\"\u003e\u003c/a\u003e9.2 Command palette\u003c/h3\u003e\u003cp\u003e\u003ccode\u003e/\u003c/code\u003e on empty input, or \u003ccode\u003eCtrl+P\u003c/code\u003e, opens the palette.\u003cbr\u003e\nIt has two tabs and \u003ccode\u003eTab\u003c/code\u003e switches between them.\u003cbr\u003e\nSystem commands: new session, clear context, yolo, plan, timestamps, switch model, sessions, capabilities, quit.\u003cbr\u003e\nWorking ones: attach, check, IP, export.\u003cbr\u003e\nArrows wrap around and \u003ccode\u003eEnter\u003c/code\u003e runs.\u003c/p\u003e\n\u003cp\u003eSlash commands also work typed by hand: \u003ccode\u003e/new\u003c/code\u003e, \u003ccode\u003e/clear\u003c/code\u003e, \u003ccode\u003e/add [path]\u003c/code\u003e, \u003ccode\u003e/rename \u0026lt;title\u0026gt;\u003c/code\u003e, \u003ccode\u003e/fork\u003c/code\u003e, \u003ccode\u003e/export\u003c/code\u003e, \u003ccode\u003e/yolo\u003c/code\u003e, \u003ccode\u003e/plan\u003c/code\u003e, \u003ccode\u003e/timestamps\u003c/code\u003e, \u003ccode\u003e/model\u003c/code\u003e, \u003ccode\u003e/sessions [query]\u003c/code\u003e, \u003ccode\u003e/help\u003c/code\u003e, \u003ccode\u003e/quit\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"pickers-and-completion\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#pickers-and-completion\" class=\"header-mark\"\u003e\u003c/a\u003e9.3 Pickers and completion\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eModel.\u003c/strong\u003e \u003ccode\u003eCtrl+N\u003c/code\u003e or \u003ccode\u003e/model\u003c/code\u003e lists the configured models, with the current one marked.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSessions.\u003c/strong\u003e \u003ccode\u003eCtrl+S\u003c/code\u003e or \u003ccode\u003e/sessions\u003c/code\u003e opens the list. \u003ccode\u003er\u003c/code\u003e renames, \u003ccode\u003ef\u003c/code\u003e forks, \u003ccode\u003ed\u003c/code\u003e deletes. \u003ccode\u003e/sessions \u0026lt;query\u0026gt;\u003c/code\u003e searches titles and text.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFiles.\u003c/strong\u003e Type \u003ccode\u003e@\u003c/code\u003e and start a path. A candidate menu appears, directories first, and \u003ccode\u003eTab\u003c/code\u003e inserts. That is the quick way to attach files to a message.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"-what-is-on-screen\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-what-is-on-screen\" class=\"header-mark\"\u003e\u003c/a\u003e10 🖥️ What is on screen\u003c/h2\u003e\u003ch3 id=\"header\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#header\" class=\"header-mark\"\u003e\u003c/a\u003e10.1 Header\u003c/h3\u003e\u003cp\u003eThe header carries the working directory, the git branch and the session number or title.\u003cbr\u003e\nThen the mode: \u003ccode\u003eSAFE\u003c/code\u003e, \u003ccode\u003eYOLO\u003c/code\u003e or \u003ccode\u003ePLAN\u003c/code\u003e.\u003cbr\u003e\nThen the model and the counters: \u003ccode\u003einput↑ output↓\u003c/code\u003e, cached tokens, session time, cost \u003ccode\u003e$…\u003c/code\u003e.\u003cbr\u003e\nAnd the \u003cstrong\u003econtext indicator\u003c/strong\u003e, \u003ccode\u003e{ctx N%}\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eWatch {ctx N%}\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003ccode\u003e{ctx N%}\u003c/code\u003e is how full the context window is.\u003cbr\u003e\nAt \u003cstrong\u003e80%\u003c/strong\u003e it lights up, and auto-summarization of the older turns starts at the same point.\u003cbr\u003e\nA high percentage is fine.\u003cbr\u003e\nEONYX compacts the history on its own.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"skills-and-mcp\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#skills-and-mcp\" class=\"header-mark\"\u003e\u003c/a\u003e10.2 Skills and MCP\u003c/h3\u003e\u003cp\u003e\u003ccode\u003eCtrl+K\u003c/code\u003e opens the capabilities dialog, with \u003cstrong\u003eSkills\u003c/strong\u003e and \u003cstrong\u003eMCP\u003c/strong\u003e tabs.\u003cbr\u003e\nAny skill or server flips off and on with \u003ccode\u003e✓\u003c/code\u003e and \u003ccode\u003e✗\u003c/code\u003e.\u003cbr\u003e\nFor a skill that rebuilds the catalogue in the system prompt.\u003cbr\u003e\nFor MCP it hides the server\u0026rsquo;s tools from the model.\u003cbr\u003e\nThe header shows what is active, in \u003ccode\u003e# skills\u003c/code\u003e and \u003ccode\u003e» mcp\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"output-and-reasoning\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#output-and-reasoning\" class=\"header-mark\"\u003e\u003c/a\u003e10.3 Output and reasoning\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eCtrl+O\u003c/code\u003e\u003c/strong\u003e switches tool output between a short summary and the full text. Long listings and files are collapsed by default so the transcript stays readable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eCtrl+R\u003c/code\u003e\u003c/strong\u003e expands the model\u0026rsquo;s thinking block, on reasoning models. It is collapsed to one line by default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"-actions-from-the-chat\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-actions-from-the-chat\" class=\"header-mark\"\u003e\u003c/a\u003e11 💬 Actions from the chat\u003c/h2\u003e\u003ch3 id=\"shell-in-the-chat\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#shell-in-the-chat\" class=\"header-mark\"\u003e\u003c/a\u003e11.1 Shell in the chat\u003c/h3\u003e\u003cp\u003e\u003ccode\u003e!\u0026lt;command\u0026gt;\u003c/code\u003e runs in the agent\u0026rsquo;s shared shell session.\u003cbr\u003e\nIt \u003cstrong\u003ewrites the command and its output into the conversation\u003c/strong\u003e.\u003cbr\u003e\nSo the model sees what you did and how the state changed, directory and variables included.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-3\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e! go test ./...\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch3 id=\"export-and-fork\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#export-and-fork\" class=\"header-mark\"\u003e\u003c/a\u003e11.2 Export and fork\u003c/h3\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e/export\u003c/code\u003e\u003c/strong\u003e saves the conversation to markdown, at \u003ccode\u003e\u0026lt;project\u0026gt;/.eonyx/exports/eonyx-\u0026lt;id\u0026gt;.md\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e/fork\u003c/code\u003e\u003c/strong\u003e, or \u003ccode\u003ef\u003c/code\u003e in the session list, branches the conversation into a new session and leaves the original alone. A handy save point before a risky direction.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e12 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNavigation\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003epalette \u003ccode\u003e/\u003c/code\u003e or \u003ccode\u003eCtrl+P\u003c/code\u003e; pickers for model (\u003ccode\u003eCtrl+N\u003c/code\u003e), sessions (\u003ccode\u003eCtrl+S\u003c/code\u003e), capabilities (\u003ccode\u003eCtrl+K\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@\u003c/code\u003e — completion and attaching files, \u003ccode\u003eTab\u003c/code\u003e inserts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eScreen\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eheader: path, branch, mode, model, tokens, cost, \u003ccode\u003e{ctx N%}\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCtrl+O\u003c/code\u003e / \u003ccode\u003eCtrl+R\u003c/code\u003e — expand tool output / reasoning\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eActions from the chat\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e!\u0026lt;cmd\u0026gt;\u003c/code\u003e — shell in the chat, recorded into the history\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e/export\u003c/code\u003e, \u003ccode\u003e/fork\u003c/code\u003e — export and branching\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX subagents: delegating work to the task tool",
        "date_published" : "2026-05-23T00:00:00+03:00",
        "date_modified" : "2026-05-23T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-subagents/",
        "url" : "https://eonyx.tech/guide/eonyx-subagents/",
        "summary": "A subagent is a separate instance of the agent.\nEONYX hands it a slice of the work.\nIt runs in its own context window, with a reduced tool set, and returns only the result.\nSo the main conversation stays clean: the research never clutters it.\n",
        "content_html" : "\u003cp\u003eA \u003cstrong\u003esubagent\u003c/strong\u003e is a separate instance of the agent.\u003cbr\u003e\nEONYX hands it a slice of the work.\u003cbr\u003e\nIt runs in its own context window, with a reduced tool set, and returns only the result.\u003cbr\u003e\nSo the main conversation stays clean: the research never clutters it.\u003c/p\u003e\n\u003ch2 id=\"-the-task-tool\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-the-task-tool\" class=\"header-mark\"\u003e\u003c/a\u003e9 🎯 The task tool\u003c/h2\u003e\u003cp\u003eDelegation is one tool: \u003ccode\u003etask\u003c/code\u003e.\u003cbr\u003e\nThe model reaches for it when something has to be dug out of the codebase without bloating the conversation.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-3\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e● task  find every place the Store interface is used\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ⎿ 12 call sites in 4 packages: session/jsonl.go, agent/agent.go, …\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThere is a single argument, \u003ccode\u003edescription\u003c/code\u003e.\u003cbr\u003e\nIt must be self-contained and carry all the context.\u003cbr\u003e\nThe subagent \u003cstrong\u003ecannot ask a clarifying question\u003c/strong\u003e.\u003cbr\u003e\nIt works alone and returns a finished answer.\u003c/p\u003e\n\u003ch3 id=\"what-a-subagent-can-and-cannot-do\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#what-a-subagent-can-and-cannot-do\" class=\"header-mark\"\u003e\u003c/a\u003e9.1 What a subagent can and cannot do\u003c/h3\u003e\u003cp\u003eThe child gets the \u003cstrong\u003eread tools\u003c/strong\u003e only: \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003efetch\u003c/code\u003e.\u003cbr\u003e\nIt cannot write files, run commands, or delegate further.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eContext isolation.\u003c/strong\u003e It reads dozens of files and returns a short summary. The main context stays small.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSafety.\u003c/strong\u003e Read-only, so a delegated task changes nothing.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNo recursion.\u003c/strong\u003e Its tool set has no \u003ccode\u003etask\u003c/code\u003e, so subagents never spawn subagents.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe child inherits the parent\u0026rsquo;s model and \u003ccode\u003emax_steps\u003c/code\u003e.\u003cbr\u003e\nIt gets the same system prompt plus a note about its role: work autonomously, read-only tools, finish with a concise self-contained answer.\u003c/p\u003e\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eWhen this is useful\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eParallel research.\u003c/strong\u003e Hand \u0026ldquo;figure out how authorization works\u0026rdquo; to \u003ccode\u003etask\u003c/code\u003e and keep going on the main line.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBroad searches.\u003c/strong\u003e \u0026ldquo;Find every call of the deprecated API\u0026rdquo; returns a list, not hundreds of lines of context.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eReconnaissance before an edit.\u003c/strong\u003e The subagent collects facts, the main agent acts on them.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch2 id=\"-built-in-tools\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-built-in-tools\" class=\"header-mark\"\u003e\u003c/a\u003e10 🧰 Built-in tools\u003c/h2\u003e\u003cp\u003eBeyond \u003ccode\u003etask\u003c/code\u003e, \u003ccode\u003eload_skill\u003c/code\u003e and the MCP tools, EONYX registers \u003cstrong\u003e15 standard ones\u003c/strong\u003e.\u003cbr\u003e\nRegistration order is the order the model sees them in.\u003c/p\u003e\n\u003ch3 id=\"files\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#files\" class=\"header-mark\"\u003e\u003c/a\u003e10.1 Files\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it does\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eread\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ereads a text file; optionally with a line offset and a limit\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ewrite\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ewrites a file, creating directories and overwriting; \u003ccode\u003edry_run\u003c/code\u003e shows a diff\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eedit\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ereplaces an exact substring; \u003ccode\u003ereplace_all\u003c/code\u003e — every occurrence, \u003ccode\u003edry_run\u003c/code\u003e — a preview\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003emulti_edit\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eseveral replacements in one file atomically: either all of them, or the file is untouched\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003els\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003elists the contents of a directory (directories with a \u003ccode\u003e/\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003epicker\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003enavigation through the project tree — browse and pick paths\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"search\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#search\" class=\"header-mark\"\u003e\u003c/a\u003e10.2 Search\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it does\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003eglob\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003efinds files by a glob pattern (\u003ccode\u003e**\u003c/code\u003e — recursive)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egrep\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esearches contents with a regex, \u003ccode\u003epath:line:text\u003c/code\u003e; skips binaries and \u003ccode\u003e.git\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"execution-and-network\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#execution-and-network\" class=\"header-mark\"\u003e\u003c/a\u003e10.3 Execution and network\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it does\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ebash\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea command in a persistent shell session; the output is stdout+stderr, the exit code is in the text\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003efetch\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003edownloads a web page: HTML → markdown, other text as is, binaries are rejected\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"git\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#git\" class=\"header-mark\"\u003e\u003c/a\u003e10.4 Git\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it does\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egit_status\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe working tree status (\u003ccode\u003egit status --short --branch\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egit_diff\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ethe diff of uncommitted changes (or \u003ccode\u003estaged=true\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egit_log\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003erecent commits, one per line (\u003ccode\u003egit log --oneline\u003c/code\u003e)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egit_commit\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ea commit with a message; \u003ccode\u003eall=true\u003c/code\u003e stages tracked files first\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"organizing-the-work\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#organizing-the-work\" class=\"header-mark\"\u003e\u003c/a\u003e10.5 Organizing the work\u003c/h3\u003e\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eTool\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eWhat it does\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003etodo_write\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ekeeps a task list for multi-step work; the whole list is passed at once\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cdiv class=\"details admonition note open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"/\u003e\u003c/svg\u003e\u003c/span\u003eTool errors are data\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eA tool error comes back to the model as a result with an error flag.\u003cbr\u003e\nIt is never a fatal failure.\u003cbr\u003e\nSo the model sees what went wrong and adapts, for instance by fixing the path and retrying.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"an-in-process-shell\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#an-in-process-shell\" class=\"header-mark\"\u003e\u003c/a\u003e10.6 An in-process shell\u003c/h3\u003e\u003cp\u003e\u003ccode\u003ebash\u003c/code\u003e and the hooks run on the embedded \u003ccode\u003emvdan.cc/sh\u003c/code\u003e interpreter.\u003cbr\u003e\n\u003cstrong\u003eNo system bash is needed.\u003c/strong\u003e\u003cbr\u003e\nEverything is cross-platform, Windows included.\u003cbr\u003e\nOne shell session \u003cstrong\u003ekeeps the working directory and the exported variables\u003c/strong\u003e between calls, so \u003ccode\u003ecd\u003c/code\u003e and \u003ccode\u003eexport\u003c/code\u003e persist.\u003cbr\u003e\nA few dangerous commands are blocked at policy level: \u003ccode\u003eshutdown\u003c/code\u003e, \u003ccode\u003ereboot\u003c/code\u003e, \u003ccode\u003ehalt\u003c/code\u003e, \u003ccode\u003epoweroff\u003c/code\u003e, \u003ccode\u003emkfs\u003c/code\u003e, \u003ccode\u003einit\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"-how-the-agent-loop-works\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-how-the-agent-loop-works\" class=\"header-mark\"\u003e\u003c/a\u003e11 🔄 How the agent loop works\u003c/h2\u003e\u003cp\u003eA single turn is a loop of up to \u003ccode\u003emax_steps\u003c/code\u003e rounds, 50 by default:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eThe user message is recorded.\u003c/li\u003e\n\u003cli\u003eThe model\u0026rsquo;s response streams in, text and tool calls.\u003c/li\u003e\n\u003cli\u003eNo tool calls means this is the final answer, and the turn ends.\u003c/li\u003e\n\u003cli\u003eOtherwise the tools run, the results go back, and the loop repeats.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eA few guarantees along the way:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eParallel reads.\u003c/strong\u003e Consecutive read-only calls run in parallel: \u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003egit_status\u003c/code\u003e, \u003ccode\u003egit_diff\u003c/code\u003e, \u003ccode\u003egit_log\u003c/code\u003e. Everything else is sequential. Results always return in the original order.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThe write is the source of truth.\u003c/strong\u003e Every new message is saved to the session, and a save error aborts the turn.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eA denial does not break the conversation.\u003c/strong\u003e A blocked tool comes back as an error, not a crash.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThe step limit.\u003c/strong\u003e Hitting \u003ccode\u003emax_steps\u003c/code\u003e without a final answer is reported honestly, with an offer to raise the limit. Headless, that is exit code \u003ccode\u003e5\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e12 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etask\u003c/strong\u003e — delegates a research task to a subagent with read-only tools (\u003ccode\u003eread\u003c/code\u003e, \u003ccode\u003els\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003efetch\u003c/code\u003e); returns a condensed result without cluttering the context.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNo recursion\u003c/strong\u003e — the subagent has no \u003ccode\u003etask\u003c/code\u003e, so there will be no nesting; it inherits the parent\u0026rsquo;s model and \u003ccode\u003emax_steps\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e15 tools\u003c/strong\u003e — files (read/write/edit/multi_edit/ls/picker), search (glob/grep), execution (bash/fetch), git (status/diff/log/commit), tasks (todo_write).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAn in-process shell\u003c/strong\u003e — \u003ccode\u003emvdan/sh\u003c/code\u003e, no system bash; keeps cwd/env; blocks shutdown/reboot/mkfs and the like.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eThe loop\u003c/strong\u003e — up to \u003ccode\u003emax_steps\u003c/code\u003e rounds; parallel reads, the write as the source of truth, errors as data.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX Headless Mode: Running the Agent Without the TUI",
        "date_published" : "2026-05-19T00:00:00+03:00",
        "date_modified" : "2026-05-19T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-headless/",
        "url" : "https://eonyx.tech/guide/eonyx-headless/",
        "summary": "EONYX also runs headless: it does the task and exits.\nThat is what scripts, pipes and CI need.\nPredictable output, JSON events, meaningful exit codes.\n",
        "content_html" : "\u003cp\u003eEONYX also runs \u003cstrong\u003eheadless\u003c/strong\u003e: it does the task and exits.\u003cbr\u003e\nThat is what scripts, pipes and CI need.\u003cbr\u003e\nPredictable output, JSON events, meaningful exit codes.\u003c/p\u003e\n\u003ch2 id=\"-running-it\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-running-it\" class=\"header-mark\"\u003e\u003c/a\u003e7 ▶️ Running it\u003c/h2\u003e\u003ch3 id=\"the-run-subcommand\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#the-run-subcommand\" class=\"header-mark\"\u003e\u003c/a\u003e7.1 The run subcommand\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-15\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;describe what this repository does\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -m deepseek-v4-pro --yolo \u003cspan class=\"s2\"\u003e\u0026#34;fix the failing test\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eThe prompt comes from the arguments \u003cstrong\u003eor\u003c/strong\u003e from stdin.\u003cbr\u003e\nThe argument wins.\u003cbr\u003e\nIf it is given, stdin is never read.\u003cbr\u003e\nSo when you pipe, do not repeat the prompt as an argument:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-16\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;explain the error in the log\u0026#34;\u003c/span\u003e                  \u003cspan class=\"c1\"\u003e# prompt from the argument\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e{\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;explain the error:\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e cat error.log\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"o\"\u003e}\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e eonyx run \u003cspan class=\"c1\"\u003e# prompt from stdin\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eFlags: \u003ccode\u003e-m/--model\u003c/code\u003e, \u003ccode\u003e-s/--session \u0026lt;id\u0026gt;\u003c/code\u003e, \u003ccode\u003e-c/--continue\u003c/code\u003e, \u003ccode\u003e--yolo\u003c/code\u003e, \u003ccode\u003e--json\u003c/code\u003e, \u003ccode\u003e--system-prompt\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"stdout-versus-stderr\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#stdout-versus-stderr\" class=\"header-mark\"\u003e\u003c/a\u003e7.2 stdout versus stderr\u003c/h3\u003e\u003cp\u003eIn text mode the streams are separated.\u003cbr\u003e\nThat makes the output easy to pipe.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estdout\u003c/strong\u003e — only the model\u0026rsquo;s final answer, streamed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estderr\u003c/strong\u003e — reasoning, tool activity (\u003ccode\u003e→ name\u003c/code\u003e, \u003ccode\u003e← result\u003c/code\u003e) and the summary line \u003ccode\u003e\\n[tokens: N in, M out] [session: \u0026lt;id\u0026gt;]\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSo redirecting the result is safe:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-17\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;generate a README from the code\u0026#34;\u003c/span\u003e \u0026gt; README.draft.md\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch3 id=\"sessions\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#sessions\" class=\"header-mark\"\u003e\u003c/a\u003e7.3 Sessions\u003c/h3\u003e\u003cp\u003eHeadless runs are saved too.\u003cbr\u003e\nThe conversation can be continued.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-18\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;start refactoring the parser\u0026#34;\u003c/span\u003e   \u003cspan class=\"c1\"\u003e# creates a session\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run -c \u003cspan class=\"s2\"\u003e\u0026#34;now add tests\u0026#34;\u003c/span\u003e               \u003cspan class=\"c1\"\u003e# continues the most recent one\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx sessions                             \u003cspan class=\"c1\"\u003e# list: id, date, message count\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch2 id=\"-for-ci-and-scripts\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-for-ci-and-scripts\" class=\"header-mark\"\u003e\u003c/a\u003e8 🤖 For CI and scripts\u003c/h2\u003e\u003ch3 id=\"json-mode\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#json-mode\" class=\"header-mark\"\u003e\u003c/a\u003e8.1 \u0026ndash;json mode\u003c/h3\u003e\u003cp\u003e\u003ccode\u003e--json\u003c/code\u003e prints \u003cstrong\u003eNDJSON\u003c/strong\u003e to stdout, one JSON record per line.\u003cbr\u003e\nEasy to parse in a pipeline.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-19\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run --json \u003cspan class=\"s2\"\u003e\u0026#34;fix the test\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -c \u003cspan class=\"s1\"\u003e\u0026#39;select(.type==\u0026#34;tool_end\u0026#34;)\u0026#39;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eEvent types: \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ereasoning\u003c/code\u003e, \u003ccode\u003etool_start\u003c/code\u003e (\u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003einput\u003c/code\u003e), \u003ccode\u003etool_end\u003c/code\u003e (\u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003eresult\u003c/code\u003e, \u003ccode\u003eis_error\u003c/code\u003e).\u003cbr\u003e\nThe final \u003ccode\u003eresult\u003c/code\u003e carries \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003einput_tokens\u003c/code\u003e, \u003ccode\u003eoutput_tokens\u003c/code\u003e, \u003ccode\u003ecached_tokens\u003c/code\u003e and \u003ccode\u003esession\u003c/code\u003e.\u003c/p\u003e\n\u003ch3 id=\"exit-codes\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#exit-codes\" class=\"header-mark\"\u003e\u003c/a\u003e8.2 Exit codes\u003c/h3\u003e\u003cp\u003eCI has to tell outcomes apart.\u003cbr\u003e\nSo the codes mean something:\u003c/p\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eCode\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eMeaning\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e0\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003esuccess\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003egeneral error (config, provider, persistence)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eusage error (invalid arguments)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eAPI/model error during streaming\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e4\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003etask finished, but a tool was \u003cstrong\u003eblocked\u003c/strong\u003e by the gate\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003ehit the \u003ccode\u003emax_steps\u003c/code\u003e limit without a final answer\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e130\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003einterrupted (Ctrl-C)\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-20\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run --yolo \u003cspan class=\"s2\"\u003e\u0026#34;run the linter and fix the findings\u0026#34;\u003c/span\u003e \u003cspan class=\"o\"\u003e||\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;exit \u003c/span\u003e\u003cspan class=\"nv\"\u003e$?\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCodes 4 and 5 are not “just an error”\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eCode \u003ccode\u003e4\u003c/code\u003e means the agent wanted to act and had no permission.\u003cbr\u003e\nAdd the tool to \u003ccode\u003eallowed_tools\u003c/code\u003e, or run with \u003ccode\u003e--yolo\u003c/code\u003e.\u003cbr\u003e\nCode \u003ccode\u003e5\u003c/code\u003e means the task did not fit into \u003ccode\u003emax_steps\u003c/code\u003e.\u003cbr\u003e\nRaise the limit in the config.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"a-ci-example\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#a-ci-example\" class=\"header-mark\"\u003e\u003c/a\u003e8.3 A CI example\u003c/h3\u003e\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-21\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e#!/usr/bin/env bash\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eset\u003c/span\u003e -euo pipefail\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eexport\u003c/span\u003e \u003cspan class=\"nv\"\u003eDEEPSEEK_API_KEY\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$CI_LLM_KEY\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run --yolo --json \u003cspan class=\"s2\"\u003e\u0026#34;run go test ./... and fix the failing tests\u0026#34;\u003c/span\u003e \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e|\u003c/span\u003e tee agent.log \u003cspan class=\"se\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -r \u003cspan class=\"s1\"\u003e\u0026#39;select(.type==\u0026#34;result\u0026#34;) | .text\u0026#39;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e9 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRunning it\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eeonyx run \u0026quot;…\u0026quot;\u003c/code\u003e — prompt from the arguments or stdin (pipe)\u003c/li\u003e\n\u003cli\u003eflags \u003ccode\u003e-m\u003c/code\u003e, \u003ccode\u003e--yolo\u003c/code\u003e, \u003ccode\u003e--system-prompt\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003estdout — only the model\u0026rsquo;s final answer\u003c/li\u003e\n\u003cli\u003estderr — tool activity and token stats\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003e--json\u003c/code\u003e\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eNDJSON events: \u003ccode\u003etext\u003c/code\u003e/\u003ccode\u003ereasoning\u003c/code\u003e/\u003ccode\u003etool_start\u003c/code\u003e/\u003ccode\u003etool_end\u003c/code\u003e/\u003ccode\u003eresult\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003econvenient to parse with \u003ccode\u003ejq\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExit codes\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003edistinguish success from an API error (3)\u003c/li\u003e\n\u003cli\u003epermission block (4), \u003ccode\u003emax_steps\u003c/code\u003e limit (5)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSessions\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eheadless runs are saved\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-c\u003c/code\u003e continues the most recent one, \u003ccode\u003e-s \u0026lt;id\u0026gt;\u003c/code\u003e a specific one\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    {
        "title" : "EONYX recipes: practical workflows",
        "date_published" : "2026-05-18T00:00:00+03:00",
        "date_modified" : "2026-05-18T00:00:00+03:00",
        "id" : "https://eonyx.tech/guide/eonyx-recipes/",
        "url" : "https://eonyx.tech/guide/eonyx-recipes/",
        "summary": "Features are nice.\nSeeing them work is better.\nA few practical scenarios: how to phrase the task, and which technique to switch on.\nThe prompts are deliberately plain.\n",
        "content_html" : "\u003cp\u003eFeatures are nice.\u003cbr\u003e\nSeeing them work is better.\u003cbr\u003e\nA few practical scenarios: how to phrase the task, and which technique to switch on.\u003cbr\u003e\nThe prompts are deliberately plain.\u003c/p\u003e\n\u003ch2 id=\"-working-with-code\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-working-with-code\" class=\"header-mark\"\u003e\u003c/a\u003e1 💻 Working with code\u003c/h2\u003e\u003ch3 id=\"understand-unfamiliar-code\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#understand-unfamiliar-code\" class=\"header-mark\"\u003e\u003c/a\u003e1.1 Understand unfamiliar code\u003c/h3\u003e\u003cp\u003eStart in plan mode, so the agent explores before it edits:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-1\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/plan\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003efigure out how authorization works in this repository,\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eand put together a short map: where the entry point is, where sessions are stored\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003ePlan mode allows reading only.\u003cbr\u003e\nThe agent walks the code with \u003ccode\u003egrep\u003c/code\u003e, \u003ccode\u003eread\u003c/code\u003e and \u003ccode\u003eglob\u003c/code\u003e, then proposes a plan or a summary.\u003cbr\u003e\nHeavy exploration is worth delegating, so it does not clutter the context:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-2\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evia task: find every place where the Store interface is called and return a list\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cdiv class=\"details admonition tip open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 352 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eKeep an AGENTS.md\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003eAdd an \u003ccode\u003eAGENTS.md\u003c/code\u003e with the stack and the rules.\u003cbr\u003e\nThe agent picks them up from the first message.\u003cbr\u003e\nThat is a lot less to explain every time.\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\n\u003ch3 id=\"fix-a-failing-test\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#fix-a-failing-test\" class=\"header-mark\"\u003e\u003c/a\u003e1.2 Fix a failing test\u003c/h3\u003e\u003cp\u003eLet the agent run commands and edit files.\u003cbr\u003e\nHeadless with \u003ccode\u003e--yolo\u003c/code\u003e is the shortest path:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-3\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run --yolo \u003cspan class=\"s2\"\u003e\u0026#34;run go test ./... , find the cause of the failure and fix it without touching the public API\u0026#34;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eOr do it in the TUI: allow the tools you need, then ask.\u003cbr\u003e\nShowing the output first helps:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-4\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e! go test ./...\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003efix the failure above with a minimal change\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eA command run through \u003ccode\u003e!\u003c/code\u003e is recorded into the conversation.\u003cbr\u003e\nSo the model sees the real test output.\u003c/p\u003e\n\u003ch3 id=\"refactor-a-module\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#refactor-a-module\" class=\"header-mark\"\u003e\u003c/a\u003e1.3 Refactor a module\u003c/h3\u003e\u003cp\u003eFork the session as a save point, then drive the edits step by step:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003etext\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-5\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/fork\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emove config parsing out of main.go into a separate config package,\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epreserve the behavior, update the imports and run go build ./...\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eIf it goes sideways, return to the original session from the list with \u003ccode\u003eCtrl+S\u003c/code\u003e.\u003cbr\u003e\nAttach formatting as a hook and stop asking for it:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ejson\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-6\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"s2\"\u003e\u0026#34;hooks\u0026#34;\u003c/span\u003e\u003cspan class=\"err\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;edit\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -w .\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e},\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;write\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e \u003cspan class=\"nt\"\u003e\u0026#34;after\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;gofmt -w .\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e \u003cspan class=\"p\"\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch2 id=\"-automating-routine-work\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-automating-routine-work\" class=\"header-mark\"\u003e\u003c/a\u003e2 🔁 Automating routine work\u003c/h2\u003e\u003ch3 id=\"prepare-a-release\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#prepare-a-release\" class=\"header-mark\"\u003e\u003c/a\u003e2.1 Prepare a release\u003c/h3\u003e\u003cp\u003ePut the checklist into a skill once:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003emarkdown\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-7\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ename: release\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edescription: Release checklist. Use when asked to prepare a release, ship it, or cut a tag.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e---\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e1.\u003c/span\u003e git_status — the tree is clean, the branch is main.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003e2.\u003c/span\u003e go test ./... and go vet ./... — green.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e3. Propose the next tag from git describe --tags; do NOT push without confirmation.\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eAfter that \u0026ldquo;prepare a release\u0026rdquo; is enough.\u003cbr\u003e\nThe agent loads the skill and follows the steps.\u003cbr\u003e\nBack the no-push rule with a guardrail hook on \u003ccode\u003ebash\u003c/code\u003e, because that is how the agent runs \u003ccode\u003egit push\u003c/code\u003e.\u003cbr\u003e\nThe \u003ccode\u003egit_commit\u003c/code\u003e tool only commits.\u003c/p\u003e\n\u003ch3 id=\"a-one-off-task-in-a-script\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#a-one-off-task-in-a-script\" class=\"header-mark\"\u003e\u003c/a\u003e2.2 A one-off task in a script\u003c/h3\u003e\u003cp\u003eEONYX drops into a pipe easily.\u003cbr\u003e\nThe result goes to stdout, everything else to stderr.\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-8\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# generate a draft README from the code\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run \u003cspan class=\"s2\"\u003e\u0026#34;write a README for this repository, short and to the point\u0026#34;\u003c/span\u003e \u0026gt; README.draft.md\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# explain an error from the log (the argument takes priority over stdin,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"c1\"\u003e# so the prompt and the log are fed to stdin as a single stream)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e{\u003c/span\u003e \u003cspan class=\"nb\"\u003eecho\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;explain the cause of the error and suggest a fix:\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e cat error.log\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"o\"\u003e}\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e eonyx run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003cp\u003eFor machine parsing, reach for \u003ccode\u003e--json\u003c/code\u003e and \u003ccode\u003ejq\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"code-block highlight is-open show-line-numbers  tw:group tw:my-2\"\u003e\r\n  \u003cdiv class=\"\r\n    \r\n    tw:flex \r\n    tw:flex-row\r\n    tw:flex-1 \r\n    tw:justify-between \r\n    tw:w-full tw:bg-[var(--code-background-color-code-header)]\r\n    \"\u003e      \r\n    \u003cbutton \r\n      class=\"\r\n        code-block-button\r\n        tw:mx-2 \r\n        tw:flex\r\n        tw:flex-row\r\n        tw:flex-1\"\r\n      aria-hidden=\"true\"\u003e\r\n          \u003cspan class=\"tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"tw:select-none tw:my-1! tw:block\"\u003ebash\u003c/span\u003e\r\n      \u003c/button\u003e\r\n\r\n   \u003cdiv class=\"tw:flex\"\u003e\r\n      \u003cbutton \r\n        class=\"\r\n          line-number-button\r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.show-line-numbers]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle line numbers\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n\r\n      \u003cbutton \r\n        class=\"\r\n          wrap-code-button\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:hidden \r\n          tw:group-[.is-open]:block \r\n          tw:group-[.is-wrap]:text-fgColor-link \r\n          tw:print:hidden!\" \r\n        title=\"Toggle code wrap\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n      \r\n      \u003cbutton \r\n        class=\"\r\n          copy-code-button\r\n          tw:select-none\r\n          tw:mx-2 \r\n          tw:hidden\r\n          tw:group-[.is-open]:block\r\n          tw:hover:text-fgColor-link \r\n          tw:print:hidden!\"\r\n        title=\"Copy code\"\u003e\r\n          \u003cspan class=\"copy-icon tw:block\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n          \u003cspan class=\"check-icon tw:hidden\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n      \u003c/button\u003e\r\n        \r\n      \u003cbutton \r\n        class=\"\r\n          tw:select-none \r\n          tw:mx-2 \r\n          tw:block \r\n          tw:group-[.is-open]:hidden \r\n          tw:print:hidden!\" \r\n        disabled\r\n        aria-hidden=\"true\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"/\u003e\u003c/svg\u003e\u003c/button\u003e\r\n    \u003c/div\u003e\r\n  \u003c/div\u003e\r\n  \u003cpre style=\"counter-reset: codeblock;\" class=\"tw:block tw:m-0 tw:p-0\"\u003e\u003ccode \r\n    id=\"codeblock-id-9\" \r\n    class=\"\r\n      chroma \r\n      tw:block! \r\n      tw:p-0\r\n      tw:m-0\r\n      tw:transition-[max-height] \r\n      tw:duration-500 \r\n      tw:ease-in-out \r\n      tw:group-[.is-closed]:max-h-0! \r\n      tw:group-[.is-wrap]:text-wrap\r\n      tw:overflow-y-hidden\r\n      tw:overflow-x-auto\r\n      tw:scrollbar-thin\r\n      \"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eeonyx run --yolo --json \u003cspan class=\"s2\"\u003e\u0026#34;run the linter and fix the warnings\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e jq -r \u003cspan class=\"s1\"\u003e\u0026#39;select(.type==\u0026#34;result\u0026#34;).text\u0026#39;\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\r\n\u003c/div\u003e\r\n\u003ch2 id=\"-summary\" class=\"headerLink\"\u003e\r\n    \u003ca href=\"#-summary\" class=\"header-mark\"\u003e\u003c/a\u003e3 📋 Summary\u003c/h2\u003e\u003cdiv class=\"details admonition abstract open\"\u003e\r\n    \u003cdiv class=\"details-summary admonition-title\"\u003e\r\n        \u003cspan class=\"icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"/\u003e\u003c/svg\u003e\u003c/span\u003eCheat sheet\u003cspan class=\"details-icon\"\u003e\u003csvg class=\"icon\"\n    xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 512\"\u003e\u003c!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --\u003e\u003cpath d=\"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\r\n    \u003c/div\u003e\r\n    \u003cdiv class=\"details-content\"\u003e\r\n        \u003cdiv class=\"admonition-content\"\u003e\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eExploration\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e/plan\u003c/code\u003e — read-only, a safe walk over the code\u003c/li\u003e\n\u003cli\u003edelegate via \u003ccode\u003etask\u003c/code\u003e, keep an \u003ccode\u003eAGENTS.md\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixing\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e--yolo\u003c/code\u003e in headless mode or a \u003ccode\u003e!\u003c/code\u003e command in the TUI\u003c/li\u003e\n\u003cli\u003ethe model sees the real test output\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRefactoring\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e/fork\u003c/code\u003e as a save point\u003c/li\u003e\n\u003cli\u003eauto-formatting via an \u003ccode\u003eafter\u003c/code\u003e hook\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003eput the checklist into a skill\u003c/li\u003e\n\u003cli\u003ethe ban on pushing — a hook on \u003ccode\u003ebash\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eScripts\u003c/strong\u003e\n\u003cul\u003e\n\u003cli\u003estdout = result, stderr = auxiliary output\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--json\u003c/code\u003e + \u003ccode\u003ejq\u003c/code\u003e for machine parsing\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e",
        "language": "en"
    },
    ]
}
