<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://malach-it.github.io/documentation.boruta/blog</id>
    <title>boruta Blog</title>
    <updated>2026-09-11T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://malach-it.github.io/documentation.boruta/blog"/>
    <subtitle>boruta Blog</subtitle>
    <icon>https://malach-it.github.io/documentation.boruta/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Boruta 0.12.0 release]]></title>
        <id>https://malach-it.github.io/documentation.boruta/blog/boruta-0-12-0</id>
        <link href="https://malach-it.github.io/documentation.boruta/blog/boruta-0-12-0"/>
        <updated>2026-09-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Boruta 0.12.0 introduces context-aware request noise detection, a YAML administration CLI, expanded token operations, and tighter OAuth client authentication. It also brings a substantial usability pass to the administration interface.]]></summary>
        <content type="html"><![CDATA[<p>Boruta 0.12.0 introduces context-aware request noise detection, a YAML administration CLI, expanded token operations, and tighter OAuth client authentication. It also brings a substantial usability pass to the administration interface.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>Open beta</div><div class="admonitionContent_S0QG"><p>Boruta is currently in an open beta phase. While it is mostly stable and parts of the project have undergone security assessments, it remains a work in progress. We encourage you to test Boruta in your own context and share feedback: production readiness depends on real-world use to uncover bugs and improve usability. Please also review the <a href="https://github.com/malach-it/boruta-server/blob/master/GENERAL_TERMS_AND_CONDITIONS.md" target="_blank" rel="noopener noreferrer">General Terms and Conditions</a>.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="context-aware-noise-detection-with-phi">Context-aware noise detection with Phi<a href="#context-aware-noise-detection-with-phi" class="hash-link" aria-label="Direct link to Context-aware noise detection with Phi" title="Direct link to Context-aware noise detection with Phi">​</a></h2><p>The gateway can now train a native Phi model from OpenAPI request contexts. The model combines degree-one terms with sparse degree-two interactions to learn which requests belong together, instead of evaluating every request in isolation.</p><p>Phi prediction can use a bounded, recency-decayed memory of earlier requests. This makes it possible to classify a request as contextual noise even when the request would be legal on its own. Unmatched paths are evaluated across the entire gateway, while root-path requests remain valid for every HTTP method.</p><p>Upstreams can train and apply noise cancellation from transient OpenAPI uploads. Only the resulting Phi binary needs to be stored after training.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="better-token-operations">Better token operations<a href="#better-token-operations" class="hash-link" aria-label="Direct link to Better token operations" title="Direct link to Better token operations">​</a></h2><p>The token dashboard is now a more complete operational view. It adds:</p><ul><li>issuance charts and filtering;</li><li>full-text search;</li><li>token-chain details and claim inspection; and</li><li>revocation controls.</li></ul><p>For safer administration, token API responses no longer expose token values or other reusable secrets. The dashboard and API now default to tokens issued since the beginning of the current hour, keeping the initial result set focused and manageable.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="administration-from-the-command-line">Administration from the command line<a href="#administration-from-the-command-line" class="hash-link" aria-label="Direct link to Administration from the command line" title="Direct link to Administration from the command line">​</a></h2><p>The <code>boruta</code> and <code>boruta_admin</code> releases now include <code>bin/boruta-cli</code>, a YAML-oriented interface for administration resources. It authenticates using <code>BORUTA_ADMIN_OAUTH_CLIENT_ID</code> and <code>BORUTA_ADMIN_OAUTH_CLIENT_SECRET</code>.</p><div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">boruta-cli &lt;resource&gt; &lt;action&gt; [resource-id] [response-filter ...] [-- action-parameter ...]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>For example:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">bin/boruta-cli role index</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bin/boruta-cli client show CLIENT_ID </span><span class="token function" style="color:#d73a49">id</span><span class="token plain"> name</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bin/boruta-cli upstream update UPSTREAM_ID -- scheme:https port:443</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">bin/boruta-cli logs index request_id status label -- events_only:true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Arguments before <code>--</code> filter the YAML response. Parameters after <code>--</code> are sent to the administration controller using <code>key:value</code> syntax, with colon-separated paths for nested maps and arrays.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="oauth-and-client-security">OAuth and client security<a href="#oauth-and-client-security" class="hash-link" aria-label="Direct link to OAuth and client security" title="Direct link to OAuth and client security">​</a></h2><p>This release tightens several client authentication boundaries:</p><ul><li>DID public clients are validated against their issuer, registered redirect URIs, and supported grant types.</li><li>Client credentials, agent credentials, and introspection require secret authentication, including for public clients.</li><li>Decentralized public-client grants may proceed without a secret only when the client is non-confidential and bound to the issuer.</li><li>New OAuth clients are confidential by default, with the corresponding database migration included in the release.</li><li>OAuth revocation requests now record their subject in logs.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="administration-experience">Administration experience<a href="#administration-experience" class="hash-link" aria-label="Direct link to Administration experience" title="Direct link to Administration experience">​</a></h2><p>The administration interface gains selectable Boruta, Gruvbox, and Nord themes. Sidebar sections now follow the operator's authorized scopes and stay expanded across nested dashboard routes. Resource activity refreshes correctly during navigation, upstream links are fixed, and form fields wrap properly on mobile screens.</p><p>The release also removes the redundant <code>roles:manage:all</code> scope from new installations and administration scope requests, and clarifies credential-presentation template actions.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="before-upgrading">Before upgrading<a href="#before-upgrading" class="hash-link" aria-label="Direct link to Before upgrading" title="Direct link to Before upgrading">​</a></h2><p>Boruta remains in beta during the <code>0.x</code> series, so releases may include breaking changes. When moving to 0.12.0:</p><ol><li>Run the included database migrations, particularly the migration that makes OAuth clients confidential by default.</li><li>For public clients used in decentralized identity flows, register the flow's redirect URI, enable the required grant types (<code>preauthorized_code</code> for credential issuance and/or <code>vp_token</code> for credential presentation), and set <strong>Confidential</strong> to false.</li><li>Review automation using client credentials, agent credentials, or introspection and ensure it supplies client authentication.</li><li>Remove dependencies on <code>roles:manage:all</code> in newly provisioned administration clients.</li><li>Set <code>DISABLE_FILE_LOGGING=true</code> if the deployment should emit logs only to the console.</li></ol><p>See the <a href="https://github.com/malach-it/boruta-server" target="_blank" rel="noopener noreferrer">Boruta server repository</a> and the <a href="https://github.com/malach-it/boruta-server/blob/master/CHANGELOG.md#0120---2026-09-11" target="_blank" rel="noopener noreferrer">complete changelog</a> for the full release details.</p>]]></content>
        <author>
            <name>Codex</name>
            <uri>https://developers.openai.com/codex/</uri>
        </author>
        <category label="release" term="release"/>
        <category label="boruta" term="boruta"/>
        <category label="security" term="security"/>
        <category label="gateway" term="gateway"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Welcome to boruta blog]]></title>
        <id>https://malach-it.github.io/documentation.boruta/blog/welcome</id>
        <link href="https://malach-it.github.io/documentation.boruta/blog/welcome"/>
        <updated>2026-07-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Welcome to boruta blog.]]></summary>
        <content type="html"><![CDATA[<p>Welcome to boruta blog.</p><p>This space will share product updates, implementation notes, and identity management guidance for teams building with boruta.</p>]]></content>
        <author>
            <name>Pascal Knoth</name>
            <uri>https://io.malach.it</uri>
        </author>
        <category label="boruta" term="boruta"/>
    </entry>
</feed>