<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Integration on AIBussin — AI applications, systems and books</title>
		<link>https://aibussin.com/categories/integration/</link>
		<description>Recent content in Integration on AIBussin — AI applications, systems and books</description>
		<generator>Hugo</generator>
		<language>en-US</language>
		
		
		
		
			<lastBuildDate>Fri, 02 Oct 2026 09:00:00 +0100</lastBuildDate>
		
			<atom:link href="https://aibussin.com/categories/integration/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>MCP Servers</title>
				<link>https://aibussin.com/books/pi/21-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/21-chapter/</guid>
				<description>&lt;p&gt;The &lt;code&gt;guard&lt;/code&gt; extension intercepts &lt;code&gt;write&lt;/code&gt; and &lt;code&gt;edit&lt;/code&gt;. It blocks those calls as intended. Then someone on the team installs a Jira MCP server, and the model closes a ticket through &lt;code&gt;mcp__jira__transition_issue&lt;/code&gt; without that guard blocking the call. The MCP call has a different tool name, so a guard limited to &lt;code&gt;write&lt;/code&gt; and &lt;code&gt;edit&lt;/code&gt; does not match it.&lt;/p&gt;&#xA;&lt;p&gt;It was not consulted because the guard never claimed that path was its responsibility — and, more importantly, because whether it &lt;em&gt;is&lt;/em&gt; covered turns out to be a real question with a documented answer. This chapter is about registering MCP servers, controlling how their tools reach the model, and the one thing a permission extension can and cannot learn from them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Interface Is Not the Agent</title>
				<link>https://aibussin.com/books/pi/31-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/31-chapter/</guid>
				<description>&lt;p&gt;You have spent thirty chapters mostly in a terminal, and it is easy to come away&#xA;thinking the terminal is Pi. It is not. The terminal is one way to drive the agent,&#xA;alongside print mode, JSON, RPC and the SDK. Switching interfaces preserves the&#xA;underlying agent architecture, but can change how work is submitted, what a person&#xA;can approve, and how results and failures are reported.&lt;/p&gt;&#xA;&lt;p&gt;That is a claim about architecture, and this part of the book ends by testing it.&#xA;Chapters 32 to 35 take the interfaces one at a time. This chapter states what they&#xA;share, shows that the sharing is real, and names the one place where an interface&#xA;does leak into what an extension is allowed to assume.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Headless Pi</title>
				<link>https://aibussin.com/books/pi/32-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/32-chapter/</guid>
				<description>&lt;p&gt;A CI job needs to run a review over a diff. A pre-commit hook needs to summarise what just changed. Neither has a person, and neither wants a terminal.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;pi&lt;/code&gt; already handles this, and the handling is almost entirely documented in one place: &lt;code&gt;cli-integration.md&lt;/code&gt;. But the interesting question is not &amp;ldquo;how do I print the answer&amp;rdquo; — it is &lt;strong&gt;what is different when the agent has no person attached&lt;/strong&gt;, because most of what you built in the previous twenty-nine chapters assumed one.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The JSON Event Stream</title>
				<link>https://aibussin.com/books/pi/33-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/33-chapter/</guid>
				<description>&lt;p&gt;You piped &lt;code&gt;pi --mode json&lt;/code&gt; into a log and now you have four thousand lines and a question: which ones are the answer?&lt;/p&gt;&#xA;&lt;p&gt;The JSON event stream is the reference for the agent-session events that JSON and RPC mode share. It is a &lt;em&gt;wire format&lt;/em&gt;, with deliberate differences from in-process SDK events; RPC also has command responses and protocol-specific events that JSON mode does not. If you build on the stream without understanding those differences, your reconstruction can drift. This chapter takes the JSON stream apart: the framing, the event vocabulary, and the rule that governs message reconstruction.&lt;/p&gt;</description>
			</item>
			<item>
				<title>SDK Sessions</title>
				<link>https://aibussin.com/books/pi/34-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/34-chapter/</guid>
				<description>&lt;p&gt;Your integration is written in TypeScript. It parses JSONL records and reconstructs streamed messages. If you use RPC, it also correlates command responses with requests. Much of that protocol handling exists because you chose to communicate with Pi across a subprocess boundary.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;@earendil-works/pi-coding-agent&lt;/code&gt; embeds Pi directly, and &lt;code&gt;sdk.md&lt;/code&gt; opens with the recommendation in its first two lines: use the SDK for in-process TypeScript integration; for a language-independent or isolated subprocess, use CLI integration instead. This chapter is about what the boundary buys you back and what it charges.&lt;/p&gt;</description>
			</item>
			<item>
				<title>RPC</title>
				<link>https://aibussin.com/books/pi/35-chapter/</link>
				<pubDate>Fri, 02 Oct 2026 09:00:00 +0100</pubDate>
				<guid>https://aibussin.com/books/pi/35-chapter/</guid>
				<description>&lt;p&gt;You want to drive Pi from an editor plugin, from a Python service, or from an IDE — without reimplementing the TypeScript SDK in another language or running Pi inside your host process. A subprocess gives the host a separate failure and lifecycle boundary. It does not sandbox the agent: Pi and its tools can still reach whatever files, credentials, and services the child process is permitted to access.&lt;/p&gt;&#xA;&lt;p&gt;RPC is the fourth interface in this progression and the one that keeps the isolation. This chapter is about the protocol: what flows in each direction, how you correlate, and the subprotocol that almost nobody realises exists.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
