<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: OLO Labs</title>
    <description>The latest articles on DEV Community by OLO Labs (olo-labs).</description>
    <link>https://dev.to/olo-labs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15693%2Fd191d118-60d8-4573-bf91-aee399e747c6.png</url>
      <title>DEV Community: OLO Labs</title>
      <link>https://dev.to/olo-labs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olo-labs"/>
    <language>en</language>
    <item>
      <title>Why I built OLO ToolGate: authorization at the AI tool boundary</title>
      <dc:creator>Rahul Nigam</dc:creator>
      <pubDate>Thu, 29 Oct 2026 09:04:53 +0000</pubDate>
      <link>https://dev.to/olo-labs/why-i-built-olo-toolgate-authorization-at-the-ai-tool-boundary-4kkj</link>
      <guid>https://dev.to/olo-labs/why-i-built-olo-toolgate-authorization-at-the-ai-tool-boundary-4kkj</guid>
      <description>&lt;p&gt;AI agents become more consequential when they can act: write files, call APIs, or change systems.&lt;/p&gt;

&lt;p&gt;That raises a question: should this agent be allowed to make this particular tool call, on behalf of this person, right now?&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;OLO ToolGate&lt;/strong&gt; to put that decision at the tool execution boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ToolGate does
&lt;/h2&gt;

&lt;p&gt;ToolGate is an open-source, self-hosted security gateway for AI agents, MCP servers, and tool execution.&lt;/p&gt;

&lt;p&gt;For each governed invocation, it evaluates one of three decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ALLOW:&lt;/strong&gt; proceed under the applicable authority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ASK:&lt;/strong&gt; wait for independent human approval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BLOCK:&lt;/strong&gt; deny the invocation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to connect tool access to identities, explicit grants, delegated scopes, and current policy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enforcement happens at execution
&lt;/h2&gt;

&lt;p&gt;ToolGate separates request routing from authorization.&lt;/p&gt;

&lt;p&gt;The Gateway dispatches the call. The control plane evaluates authorization and issues a single-use permit. The executor must redeem that permit with the control plane before running the call.&lt;/p&gt;

&lt;p&gt;If the control plane is unavailable, protected execution stops. Cached metadata does not authorize offline execution.&lt;/p&gt;

&lt;p&gt;Requests, approvals, decisions, and outcomes are recorded so that an operator can trace what happened and which identities were involved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyc18cvpdfc2lrq8wissf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyc18cvpdfc2lrq8wissf.gif" alt="OLO ToolGate demo showing a tool call, independent approval, execution outcome and audit trail" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ToolGate in action: an ASK policy pauses a tool call for independent approval, followed by execution and an audit trail. Captured from a local development installation with demo configuration; scripted acceptance traffic is labelled.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Working with existing MCP servers
&lt;/h2&gt;

&lt;p&gt;ToolGate can place existing MCP servers behind its policy, approval, and audit flow.&lt;/p&gt;

&lt;p&gt;An operator registers a server, scans its tools, approves which tools to expose, and grants access. Tools start disabled, and a fresh installation grants no runtime access by default.&lt;/p&gt;

&lt;p&gt;ToolGate also supports packaging and distributing custom tools. Java and Python authoring implementations are available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Device enrollment and approval
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vq9dt4nl5ewklazm3d5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vq9dt4nl5ewklazm3d5.gif" alt="OLO ToolGate device flow: enrollment, fingerprint review, approval and connection" width="760" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Follow a device from enrollment and administrator fingerprint review through approval, connection and activity tracking. Device approval alone does not grant tool execution rights.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools, policies and delegated access
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu2e21yyvqg8yf38osn3x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu2e21yyvqg8yf38osn3x.gif" alt="OLO ToolGate tools and access tour: packages, groups, delegation, policies and execution bindings" width="760" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Explore tool packages, agent groups, delegated authority, explicit grants, ALLOW / ASK / BLOCK policies and execution bindings, including access simulation before execution.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Workspace administration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgyelpu5e2nfhrdqi2qdt.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgyelpu5e2nfhrdqi2qdt.gif" alt="OLO ToolGate workspace administration: identities, MCP servers, settings and backups" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tour the workspace console: people and identities, MCP servers, settings, backup and restore, the local vault and version information.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These animations use local development installations and demo configuration. Enabled tools and grants shown are not installation defaults. For individual frames and manual navigation, see the &lt;a href="https://github.com/olo-labs/olo-toolgate/blob/main/docs/media/TOURS.md" rel="noopener noreferrer"&gt;step-by-step screenshot tour&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it locally
&lt;/h2&gt;

&lt;p&gt;The repository includes a Docker Compose quickstart for a local, single-node evaluation.&lt;/p&gt;

&lt;p&gt;You’ll need Git, Docker, and Docker Compose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/olo-labs/olo-toolgate.git
&lt;span class="nb"&gt;cd &lt;/span&gt;olo-toolgate/deploy/compose/QuickStart
sh manage.sh deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\manage.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;deploy&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After deployment, open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8080/console/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The quickstart creates separate administrator and reviewer accounts. Follow the repository’s first-login instructions to retrieve the generated credentials, then the first-tool walkthrough to enroll a device, grant access, and execute a governed call.&lt;/p&gt;

&lt;p&gt;The default quickstart image uses a mutable development tag. For a repeatable evaluation, follow the README instructions to select a versioned image or digest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the beta stands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ToolGate is in beta.&lt;/strong&gt; The current limitations matter when evaluating it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool Host container and network isolation are unfinished.&lt;/li&gt;
&lt;li&gt;Durable result retry is not implemented.&lt;/li&gt;
&lt;li&gt;Protected execution requires a live control plane.&lt;/li&gt;
&lt;li&gt;Nested and dynamic groups are unsupported.&lt;/li&gt;
&lt;li&gt;The quickstart has no high-availability guarantee.&lt;/li&gt;
&lt;li&gt;TypeScript and .NET authoring APIs remain specifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository documents the security model, threat model, and deployment considerations. A successful local demonstration does not establish production readiness.&lt;/p&gt;

&lt;h2&gt;
  
  
  About OLO and contributing
&lt;/h2&gt;

&lt;p&gt;OLO stands for &lt;strong&gt;Open LLM Orchestration&lt;/strong&gt;. ToolGate is its first and only current product; other projects are in early development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OLO Orgs will maintain the open-source work&lt;/strong&gt;, and I contribute on weekends. ToolGate is licensed under &lt;strong&gt;Apache-2.0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’d welcome feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether the trust boundaries and authorization model are clear.&lt;/li&gt;
&lt;li&gt;Where approval workflows become difficult in real agent deployments.&lt;/li&gt;
&lt;li&gt;What makes the local setup confusing or incomplete.&lt;/li&gt;
&lt;li&gt;Which MCP integrations would make evaluation more useful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Documentation improvements, tests, examples, and bug reports are welcome. Please discuss larger changes in GitHub issues first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Found a bug or run into an issue?&lt;/strong&gt; Please &lt;a href="https://github.com/olo-labs/olo-toolgate/issues" rel="noopener noreferrer"&gt;log a defect in GitHub Issues&lt;/a&gt;. Include steps to reproduce, your ToolGate version and environment, expected versus actual behavior, and relevant logs with secrets removed. For security vulnerabilities, please follow the repository’s &lt;a href="https://github.com/olo-labs/olo-toolgate/blob/main/SECURITY.md" rel="noopener noreferrer"&gt;security reporting policy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you found this article useful, please give it a like on DEV and consider &lt;a href="https://github.com/olo-labs/olo-toolgate" rel="noopener noreferrer"&gt;starring OLO ToolGate on GitHub&lt;/a&gt;. It helps others discover the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/olo-labs/olo-toolgate" rel="noopener noreferrer"&gt;Explore OLO ToolGate, the quickstart, and demos&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>opensource</category>
      <category>security</category>
    </item>
  </channel>
</rss>
