<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Termorq</title><link>https://termorq-docs.garrardkitchen.com/</link><description>Recent content on Termorq</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://termorq-docs.garrardkitchen.com/index.xml" rel="self" type="application/rss+xml"/><item><title>API connections</title><link>https://termorq-docs.garrardkitchen.com/docs/http/connections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/http/connections/</guid><description>&lt;p&gt;A &lt;strong&gt;connection&lt;/strong&gt; and an &lt;strong&gt;endpoint&lt;/strong&gt; are separate. One connection (base URL and auth) is reused by many endpoints.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@create api&lt;/code&gt; asks for the name, the base URL, and the auth. When Settings has environments or customers, the form asks for those too. A new connection starts on the header choice. Changing only the environment or the customer does not require another test after the current values have already passed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test connection&lt;/strong&gt; sends &lt;code&gt;GET&lt;/code&gt; to the base URL. Any HTTP status, including 401 or 404, enables &lt;strong&gt;Save&lt;/strong&gt;. DNS failure, connection refused, timeout, or a failed token request does not.&lt;/p&gt;</description></item><item><title>Browse and edit</title><link>https://termorq-docs.garrardkitchen.com/docs/library/browse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/library/browse/</guid><description>&lt;p&gt;&lt;strong&gt;Library&lt;/strong&gt; on the rail, &lt;code&gt;@library&lt;/code&gt;, or &lt;strong&gt;Cmd+Shift+L&lt;/strong&gt; (&lt;strong&gt;Ctrl+Shift+L&lt;/strong&gt; on Windows and Linux) lists everything saved: MCP servers, API connections, endpoints, OpenAI connections, and collections.&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/library.png" alt="The Library, with a filter for each kind" loading="lazy"&gt;
 &lt;figcaption&gt;Library. Filter by kind, search by name, then Edit, Duplicate, Export, or Delete. Secrets stay in the OS keychain.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Filter by name or by kind. The counts on the chips are what is on this machine.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Action&lt;/th&gt;
 &lt;th&gt;What it does&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Edit&lt;/td&gt;
 &lt;td&gt;Opens the same editor as &lt;code&gt;@edit name&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Duplicate&lt;/td&gt;
 &lt;td&gt;Makes &lt;code&gt;&amp;lt;name&amp;gt; (copy)&lt;/code&gt;. When the original has a stored secret, the app asks whether the copy should reuse it or start without one&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Export&lt;/td&gt;
 &lt;td&gt;Writes that row’s transfer file. See &lt;a href="https://termorq-docs.garrardkitchen.com/docs/library/share/"&gt;Share a file&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Delete&lt;/td&gt;
 &lt;td&gt;Removes it, with &lt;strong&gt;Undo&lt;/strong&gt; in a toast&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@edit Users API
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@edit List users
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@library&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@edit name&lt;/code&gt; opens the editor for a server, an API, an endpoint, an OpenAI connection, or a collection. A blank secret on edit keeps the stored one.&lt;/p&gt;</description></item><item><title>Commands</title><link>https://termorq-docs.garrardkitchen.com/docs/reference/commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/reference/commands/</guid><description>&lt;p&gt;Some commands depend on the edition compiled into the app or &lt;code&gt;termorq-cli&lt;/code&gt;. See the &lt;a href="https://termorq-docs.garrardkitchen.com/docs/settings/editions/"&gt;Free and Pro feature breakdown&lt;/a&gt;; &lt;code&gt;termorq-cli&lt;/code&gt; has no edition switch.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@&lt;/code&gt; opens the commands palette. Type to filter. Entries from &lt;code&gt;commands.yaml&lt;/code&gt; follow these built-ins. &lt;code&gt;@history&lt;/code&gt; is always available and is not a line in that file.&lt;/p&gt;
&lt;p&gt;The shortcuts dialog lists the same triggers. The shot is the macOS wording.&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/shortcuts.png" alt="The shortcuts dialog open on the @ triggers" loading="lazy"&gt;
 &lt;figcaption&gt;Cmd&amp;#43;/ opens Shortcuts. The @ triggers and the call flags are the same list as this page.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Install and run</title><link>https://termorq-docs.garrardkitchen.com/docs/get-started/install/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/get-started/install/</guid><description>&lt;p&gt;Termorq is a desktop app. Version &lt;strong&gt;0.20.0&lt;/strong&gt; is the &lt;code&gt;version&lt;/code&gt; in &lt;code&gt;src-tauri/tauri.conf.json&lt;/code&gt;. The header, &lt;code&gt;termorq-cli --version&lt;/code&gt;, and &lt;code&gt;package.json&lt;/code&gt; read that same value.&lt;/p&gt;
&lt;p&gt;You need &lt;a href="https://nodejs.org/" rel="external" target="_blank"&gt;Node.js&lt;svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path fill="currentColor" d="M14 5c-.552 0-1-.448-1-1s.448-1 1-1h6c.552 0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1v-3.586l-7.293 7.293c-.391.39-1.024.39-1.414 0-.391-.391-.391-1.024 0-1.414l7.293-7.293h-3.586zm-9 2c-.552 0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552 0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1v4.563c0 1.657-1.343 3-3 3h-11c-1.657 0-3-1.343-3-3v-11c0-1.657 1.343-3 3-3h4.563c.552 0 1 .448 1 1s-.448 1-1 1h-4.563z"/&gt;&lt;/svg&gt;&lt;/a&gt; 20 or newer, &lt;a href="https://pnpm.io/" rel="external" target="_blank"&gt;pnpm&lt;svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path fill="currentColor" d="M14 5c-.552 0-1-.448-1-1s.448-1 1-1h6c.552 0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1v-3.586l-7.293 7.293c-.391.39-1.024.39-1.414 0-.391-.391-.391-1.024 0-1.414l7.293-7.293h-3.586zm-9 2c-.552 0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552 0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1v4.563c0 1.657-1.343 3-3 3h-11c-1.657 0-3-1.343-3-3v-11c0-1.657 1.343-3 3-3h4.563c.552 0 1 .448 1 1s-.448 1-1 1h-4.563z"/&gt;&lt;/svg&gt;&lt;/a&gt; 10, and &lt;a href="https://rustup.rs/" rel="external" target="_blank"&gt;Rust&lt;svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path fill="currentColor" d="M14 5c-.552 0-1-.448-1-1s.448-1 1-1h6c.552 0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1v-3.586l-7.293 7.293c-.391.39-1.024.39-1.414 0-.391-.391-.391-1.024 0-1.414l7.293-7.293h-3.586zm-9 2c-.552 0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552 0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1v4.563c0 1.657-1.343 3-3 3h-11c-1.657 0-3-1.343-3-3v-11c0-1.657 1.343-3 3-3h4.563c.552 0 1 .448 1 1s-.448 1-1 1h-4.563z"/&gt;&lt;/svg&gt;&lt;/a&gt; 1.90 or newer (stable). Tauri 2.12 requires that Rust version.&lt;/p&gt;</description></item><item><title>Model connections</title><link>https://termorq-docs.garrardkitchen.com/docs/models/connections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/models/connections/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@create openai
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@openai&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@create openai&lt;/code&gt; asks for a name, a provider, an endpoint, a model or deployment, an API key, and an optional system prompt.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Provider&lt;/th&gt;
 &lt;th&gt;What you fill in&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Azure OpenAI&lt;/td&gt;
 &lt;td&gt;The resource endpoint, the deployment name, and the key. This is the default. Existing connections stay Azure&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OpenAI or compatible&lt;/td&gt;
 &lt;td&gt;A base URL (blank means &lt;code&gt;https://api.openai.com/v1&lt;/code&gt;), a model, and a key sent as a Bearer token. The key is optional for a local server&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ollama, LM Studio, vLLM, and a gateway work as the compatible base URL. Both Azure URL styles are accepted: an endpoint that contains &lt;code&gt;/openai/v1&lt;/code&gt;, and a classic deployment host.&lt;/p&gt;</description></item><item><title>On this machine</title><link>https://termorq-docs.garrardkitchen.com/docs/secrets/on-this-machine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/secrets/on-this-machine/</guid><description>&lt;p&gt;A secret is a value. A name, a &lt;code&gt;{{placeholder}}&lt;/code&gt;, and a vault reference are not. The app stores the value in the OS keychain and keeps the name in the file you might commit.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 field[&amp;#34;A secret field&amp;#34;]:::step
 ref{&amp;#34;akv:// or op://?&amp;#34;}:::gate
 vault[(&amp;#34;Vault&amp;#34;)]:::secret
 chain[(&amp;#34;OS keychain&amp;#34;)]:::store
 sent[&amp;#34;The call&amp;#34;]:::out

 field --&amp;gt; ref
 ref --&amp;gt; vault --&amp;gt; sent
 ref --&amp;gt; chain --&amp;gt; sent

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef secret fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 linkStyle 0 stroke:#5eead4,stroke-width:2.5px
 linkStyle 1,2 stroke:#FFC131,stroke-width:2.5px
 linkStyle 3,4 stroke:#67e8f9,stroke-width:2.5px
&lt;/pre&gt;
&lt;h2 id="the-keychain"&gt;The keychain &lt;a href="#the-keychain" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;API keys, bearer tokens, basic passwords, client secrets, the OpenAI key, the MCP Azure client secret, and stdio env values whose names look like secrets use the OS keychain. The service name is &lt;code&gt;com.garrardkitchen.ai-terminal&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Open, save, status, close</title><link>https://termorq-docs.garrardkitchen.com/docs/workspace/team-folder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/workspace/team-folder/</guid><description>&lt;p&gt;Team workspace is a Pro feature. The &lt;code&gt;@workspace&lt;/code&gt; commands are available in Pro builds; Free builds keep local definitions and collections.&lt;/p&gt;
&lt;p&gt;A team workspace is a folder in a git checkout. The app reads and writes &lt;code&gt;&amp;lt;folder&amp;gt;/.ai-terminal/&lt;/code&gt; and never runs &lt;code&gt;git commit&lt;/code&gt; or &lt;code&gt;git push&lt;/code&gt;.&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@workspace open ~/src/acme-apis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@workspace
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@workspace status
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@workspace save
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@workspace close&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@workspace&lt;/code&gt; with no verb is status. &lt;strong&gt;Settings → Team workspace → Open folder&lt;/strong&gt; is the same open. &lt;code&gt;workspace&lt;/code&gt; in the &lt;code&gt;@&lt;/code&gt; palette opens the same commands.&lt;/p&gt;</description></item><item><title>Preferences</title><link>https://termorq-docs.garrardkitchen.com/docs/settings/preferences/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/settings/preferences/</guid><description>&lt;p&gt;&lt;strong&gt;Settings&lt;/strong&gt; on the rail, or the avatar, opens in the terminal column. The page says &lt;strong&gt;Saved on this machine.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/settings.png" alt="Settings, from updates through the shell and the start folder" loading="lazy"&gt;
 &lt;figcaption&gt;Settings in version 0.20.0. Environments and customers are empty until you add a name, so the header hides those dropdowns.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="primary-email"&gt;Primary email &lt;a href="#primary-email" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;An address stored on this machine loads that Gravatar in place of the initials. If the address is empty, or Gravatar has no photo, the initials stay. The shot above shows &lt;strong&gt;GK&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Run a collection</title><link>https://termorq-docs.garrardkitchen.com/docs/cli/run-a-collection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/cli/run-a-collection/</guid><description>&lt;p&gt;Running collections as runbooks is a Pro feature. Free builds can still list collections with &lt;code&gt;termorq-cli list&lt;/code&gt; and inspect them with &lt;code&gt;termorq-cli show&lt;/code&gt;. The available commands follow the edition compiled into &lt;code&gt;termorq-cli&lt;/code&gt;; the CLI has no edition flag or runtime switch.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;termorq-cli&lt;/code&gt; runs a saved collection without opening Termorq. It uses the same HTTP calls, variables, response checks, and captures as the app. Version 0.20.0 prints &lt;code&gt;termorq-cli 0.20.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The screenshots on this page are the real binary, taken against a sample workspace at &lt;code&gt;/tmp/acme-apis&lt;/code&gt;. That workspace points &lt;strong&gt;Users API&lt;/strong&gt; at &lt;code&gt;mock://users&lt;/code&gt;, the app&amp;rsquo;s offline demo host, so nothing left the machine. A secret named in the prompt is shown as &lt;code&gt;…&lt;/code&gt;. The value never appears in the output.&lt;/p&gt;</description></item><item><title>Servers</title><link>https://termorq-docs.garrardkitchen.com/docs/mcp/servers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/mcp/servers/</guid><description>&lt;p&gt;&lt;code&gt;@create mcp&lt;/code&gt; is one form and three transports.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Transport&lt;/th&gt;
 &lt;th&gt;You provide&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;HTTP&lt;/td&gt;
 &lt;td&gt;The endpoint. No credentials, or an optional OAuth client id for servers that do not register clients&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Azure client credentials&lt;/td&gt;
 &lt;td&gt;Tenant id, client id, client secret, scope&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;stdio&lt;/td&gt;
 &lt;td&gt;Command, arguments, working directory, and env&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;When Settings has environments or customers, the form asks for those too. A new server starts on the header choice. Changing only the environment or the customer does not require another test after the current values have already passed.&lt;/p&gt;</description></item><item><title>The prompt</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/the-prompt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/the-prompt/</guid><description>&lt;p&gt;You type in one place. The first characters decide what runs. The accent caret follows the insertion point as you edit the line.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 line[&amp;#34;The line you type&amp;#34;]:::step
 shell[&amp;#34;Shell&amp;#34;]:::out
 endpoint[&amp;#34;@endpoint&amp;#34;]:::step
 tool[&amp;#34;@tool&amp;#34;]:::store
 skill[&amp;#34;/ skill&amp;#34;]:::gate
 model{&amp;#34;@chat # @agent&amp;#34;}:::gate

 line --&amp;gt; shell
 line --&amp;gt; endpoint
 line --&amp;gt; tool
 line --&amp;gt; skill
 line --&amp;gt; model

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 linkStyle 0,2 stroke:#5eead4,stroke-width:2.5px
 linkStyle 1 stroke:#67e8f9,stroke-width:2.5px
 linkStyle 3,4 stroke:#FFC131,stroke-width:2.5px
&lt;/pre&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;You type&lt;/th&gt;
 &lt;th&gt;What runs&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The tab’s shell. Output streams in. &lt;code&gt;cd&lt;/code&gt; and &lt;code&gt;export&lt;/code&gt; carry to the next line on bash, zsh, sh, and PowerShell&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;@endpoint List users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A saved HTTP call&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;@tool search --query tea&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;An MCP tool on a server connected to this tab&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;/explain how to make tea&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A skill from &lt;code&gt;skills.yaml&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;@chat why was that empty?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The tab’s model, with recent scrollback. It can call this tab’s MCP tools and saved endpoints; you approve each call&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Agent on, then &lt;code&gt;why was that empty?&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The same chat, without typing &lt;code&gt;@chat&lt;/code&gt;. A line that starts with &lt;code&gt;@&lt;/code&gt; still runs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;# find files over 100 MB here&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The model writes one command into the prompt. You press Enter&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;@history&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The history overlay for this tab&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;@&lt;/code&gt; opens the commands palette. &lt;code&gt;/&lt;/code&gt; opens the skills palette. Both filter as you type. In the commands palette, exact and leading name matches appear before other name matches, and all name matches appear before description matches. Built-in &lt;code&gt;@&lt;/code&gt; actions are listed in &lt;a href="https://termorq-docs.garrardkitchen.com/docs/reference/commands/"&gt;Commands&lt;/a&gt;. Entries from &lt;code&gt;commands.yaml&lt;/code&gt; follow them. &lt;code&gt;@history&lt;/code&gt; is always first and is not a YAML entry.&lt;/p&gt;</description></item><item><title>The shelf</title><link>https://termorq-docs.garrardkitchen.com/docs/collections/the-shelf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/collections/the-shelf/</guid><description>&lt;p&gt;Collections are lines you already run: a shell line, an &lt;code&gt;@endpoint&lt;/code&gt; call, or an &lt;code&gt;@tool&lt;/code&gt; call. &lt;strong&gt;Collections&lt;/strong&gt; on the rail, or &lt;strong&gt;Cmd+Shift+B&lt;/strong&gt; (&lt;strong&gt;Ctrl+Shift+B&lt;/strong&gt; on Windows and Linux), opens the shelf in the terminal column and hides the prompt. Press the shortcut again, or Esc, to return.&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/collections.png" alt="The Collections shelf before anything is saved" loading="lazy"&gt;
 &lt;figcaption&gt;Collections in the desktop window. The shelf is empty until you collect a line. This shot is the frontend, so the shell underneath is the browser build.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Ask the model</title><link>https://termorq-docs.garrardkitchen.com/docs/models/ask/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/models/ask/</guid><description>&lt;p&gt;Each of these uses the OpenAI connection selected on the &lt;strong&gt;current tab&lt;/strong&gt;. Nothing is sent when that pill says none.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 you[&amp;#34;You&amp;#34;]:::step
 approve{&amp;#34;You approve?&amp;#34;}:::gate
 model[&amp;#34;The tab&amp;#39;s model&amp;#34;]:::out
 tools[(&amp;#34;MCP tools\nand endpoints&amp;#34;)]:::store
 prompt[&amp;#34;A command\nin the prompt&amp;#34;]:::step

 you --&amp;gt; model
 model --&amp;gt; approve
 approve --&amp;gt; tools
 tools --&amp;gt; model
 model --&amp;gt; prompt

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 linkStyle 0,2,3 stroke:#5eead4,stroke-width:2.5px
 linkStyle 1,4 stroke:#FFC131,stroke-width:2.5px
&lt;/pre&gt;
&lt;h2 id="chat"&gt;@chat &lt;a href="#chat" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;

 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@chat why did that return an empty list?
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@chat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@chat clear&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@chat &amp;lt;question&amp;gt;&lt;/code&gt; sends the question with the newest scrollback, up to about 8,000 characters, secrets masked. The tab remembers the last 20 turns. After each answer you see the tokens in and out and the chat’s running total. They are marked ≈ when the provider does not report usage. &lt;code&gt;@chat&lt;/code&gt; on its own shows the total. &lt;code&gt;@chat clear&lt;/code&gt; starts again.&lt;/p&gt;</description></item><item><title>Auth</title><link>https://termorq-docs.garrardkitchen.com/docs/http/auth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/http/auth/</guid><description>&lt;p&gt;&lt;code&gt;@create api&lt;/code&gt; offers seven auth kinds. The secret fields follow the kind. A blank secret on a later edit keeps the stored one.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Kind&lt;/th&gt;
 &lt;th&gt;What you fill in&lt;/th&gt;
 &lt;th&gt;Where the secret lives&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;None&lt;/td&gt;
 &lt;td&gt;Base URL only&lt;/td&gt;
 &lt;td&gt;Nowhere&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;API key&lt;/td&gt;
 &lt;td&gt;Header name, default &lt;code&gt;X-Api-Key&lt;/code&gt;, and the key&lt;/td&gt;
 &lt;td&gt;Keychain, or a vault reference&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Bearer&lt;/td&gt;
 &lt;td&gt;The token&lt;/td&gt;
 &lt;td&gt;Keychain, or a vault reference&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Basic&lt;/td&gt;
 &lt;td&gt;Username and password&lt;/td&gt;
 &lt;td&gt;Password in the keychain, or a vault reference&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Client credentials&lt;/td&gt;
 &lt;td&gt;Azure tenant id, client id, client secret, scope&lt;/td&gt;
 &lt;td&gt;Client secret in the keychain, or a vault reference&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OAuth (browser)&lt;/td&gt;
 &lt;td&gt;Authorization URL, token URL, client id, optional client secret&lt;/td&gt;
 &lt;td&gt;Tokens in memory. Optional secret in the keychain&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OAuth (device code)&lt;/td&gt;
 &lt;td&gt;Token URL, device URL, client id, optional client secret&lt;/td&gt;
 &lt;td&gt;Tokens in memory. Optional secret in the keychain&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Client credentials are the Azure app-only flow: the app asks Entra for a token with the tenant, the client id, and the secret, then sends that token on the call.&lt;/p&gt;</description></item><item><title>Keyboard</title><link>https://termorq-docs.garrardkitchen.com/docs/reference/keyboard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/reference/keyboard/</guid><description>&lt;p&gt;&lt;strong&gt;Cmd+/&lt;/strong&gt; on macOS, or &lt;strong&gt;Ctrl+/&lt;/strong&gt; on Windows and Linux, opens the shortcuts dialog. Press it again, or Esc, to close. The header hint (&lt;strong&gt;⌘/ help&lt;/strong&gt; or &lt;strong&gt;Ctrl+/ help&lt;/strong&gt;) opens the same dialog.&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/shortcuts.png" alt="Shortcuts, keys on the left and @ triggers on the right" loading="lazy"&gt;
 &lt;figcaption&gt;The dialog in the macOS app. Windows and Linux show Ctrl where this shot shows Cmd, for the shortcuts that the dialog remaps.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The labels below are the macOS ones from that dialog. Where a row says Cmd, Windows and Linux use Ctrl for that shortcut, except &lt;strong&gt;Ctrl+C&lt;/strong&gt;, &lt;strong&gt;Ctrl+Tab&lt;/strong&gt;, &lt;strong&gt;Ctrl+wheel&lt;/strong&gt;, and &lt;strong&gt;Ctrl+0&lt;/strong&gt;, which stay Ctrl on every platform. &lt;strong&gt;Ctrl+Shift+C&lt;/strong&gt; copies inside the interactive terminal. On macOS the normal copy shortcut is &lt;strong&gt;Cmd+C&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>OAuth sign-in</title><link>https://termorq-docs.garrardkitchen.com/docs/mcp/oauth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/mcp/oauth/</guid><description>&lt;p&gt;An HTTP MCP server that answers &lt;strong&gt;401&lt;/strong&gt; is ready for sign-in. You do not fix that in the create form.&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@mcp signin Docs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@mcp signout Docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@mcp signin &amp;lt;server&amp;gt;&lt;/code&gt; finds the authorization server from the &lt;code&gt;WWW-Authenticate&lt;/code&gt; &lt;code&gt;resource_metadata&lt;/code&gt; link (protected resource metadata, RFC 9728), and falls back to the well-known URLs. It then reads &lt;code&gt;/.well-known/oauth-authorization-server&lt;/code&gt; (RFC 8414), then OpenID discovery.&lt;/p&gt;
&lt;p&gt;If the server offers dynamic client registration (RFC 7591), the app registers itself. Otherwise it uses the optional &lt;strong&gt;OAuth client ID&lt;/strong&gt; from the server editor.&lt;/p&gt;</description></item><item><title>Run as a runbook</title><link>https://termorq-docs.garrardkitchen.com/docs/collections/runbooks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/collections/runbooks/</guid><description>&lt;p&gt;&lt;strong&gt;Run as runbook&lt;/strong&gt; on the Collections page runs that collection’s lines in the order shown, in the current tab. Favourites run first, then the rest, which is the same order &lt;code&gt;termorq-cli run&lt;/code&gt; uses.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 shelf[(&amp;#34;Collection&amp;#34;)]:::store
 fav[&amp;#34;Favourites,\nthen the rest&amp;#34;]:::step
 stepn[&amp;#34;Shell, endpoint,\nor tool&amp;#34;]:::out
 looked{&amp;#34;Check&amp;#34;}:::gate
 capture[&amp;#34;Capture\nname = $.path&amp;#34;]:::step
 halt([&amp;#34;Stop&amp;#34;]):::exit

 shelf --&amp;gt; fav --&amp;gt; stepn --&amp;gt; looked
 looked --&amp;gt; capture --&amp;gt; stepn
 looked --&amp;gt; halt

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 classDef exit fill:#9f1239,stroke:#fecdd3,stroke-width:2px,color:#fff1f2
 linkStyle 0,1,2,3,4 stroke:#5eead4,stroke-width:2.5px
 linkStyle 5 stroke:#fb7185,stroke-width:2.5px
&lt;/pre&gt;
&lt;p&gt;The run stops at the first failure:&lt;/p&gt;</description></item><item><title>Secrets and termorq-cli</title><link>https://termorq-docs.garrardkitchen.com/docs/cli/secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/cli/secrets/</guid><description>&lt;p&gt;&lt;code&gt;termorq-cli&lt;/code&gt; will not start a run that needs a secret it cannot find, and it scrubs every secret it does find from the text, JSON, YAML, and JUnit it writes. This page is the CLI. The app&amp;rsquo;s keychain, export files, and workspace guard get their own chapter later.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="where-the-secret-comes-from"&gt;Where the secret comes from &lt;a href="#where-the-secret-comes-from" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;For each connection a step will call, &lt;code&gt;termorq-cli&lt;/code&gt; looks in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The environment variable &lt;code&gt;AIT_SECRET_&amp;lt;CONNECTION_NAME&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The connection&amp;rsquo;s vault reference, &lt;code&gt;akv://…&lt;/code&gt; or &lt;code&gt;op://…&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The app&amp;rsquo;s secret store, when that store can be reached on this machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The variable name is the connection name in upper case, with every other character written as &lt;code&gt;_&lt;/code&gt;. &lt;strong&gt;Users API&lt;/strong&gt; becomes &lt;code&gt;AIT_SECRET_USERS_API&lt;/code&gt;. &lt;strong&gt;gh-prod.v2&lt;/strong&gt; becomes &lt;code&gt;AIT_SECRET_GH_PROD_V2&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Share a file</title><link>https://termorq-docs.garrardkitchen.com/docs/library/share/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/library/share/</guid><description>&lt;p&gt;The Library import menu is the front door. Save dialogs start in Downloads. Files are written with owner-only permissions.&lt;/p&gt;
&lt;p&gt;&lt;figure class="termorq-cli-figure"&gt;
 &lt;img src="https://termorq-docs.garrardkitchen.com/images/app/library-import.png" alt="Import chooses the file kind before the password dialog" loading="lazy"&gt;
 &lt;figcaption&gt;Library → Import. Each kind has its own extension. A backup restores. It does not merge by deleting.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;File&lt;/th&gt;
 &lt;th&gt;Holds&lt;/th&gt;
 &lt;th&gt;Secret&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.aitcol&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Collections, and optionally the endpoints and API connections those lines use, plus chosen MCP servers&lt;/td&gt;
 &lt;td&gt;A bundle that includes secrets is always encrypted. A plain collections file can be encrypted too. The preview flags lines that look like they contain secrets and can mask them&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.aitmcp&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;MCP servers only, including environment and customer ids&lt;/td&gt;
 &lt;td&gt;Always encrypted. Password at least 12 characters, not stored&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.aitapi&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The ticked endpoints and the API connections they use&lt;/td&gt;
 &lt;td&gt;Encrypted, and the secret is inside. OpenAI connections stay behind. Password at least 12 characters, not a common password, not one character repeated&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;.aitbak&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Settings, environments, customers, theme, collections, MCP servers, API connections, endpoints, and OpenAI connections, including secrets&lt;/td&gt;
 &lt;td&gt;Always encrypted&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Older &lt;code&gt;.aitmcp&lt;/code&gt; and &lt;code&gt;.aitapi&lt;/code&gt; files still import. An older file may have no environment id or customer id. The names and colours stay in Settings on this computer.&lt;/p&gt;</description></item><item><title>Shells</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/shells/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/shells/</guid><description>&lt;p&gt;A line that is not an &lt;code&gt;@&lt;/code&gt; command or a &lt;code&gt;/&lt;/code&gt; skill runs in the tab’s shell. One command runs at a time per tab. Output streams in while it runs. &lt;strong&gt;Ctrl+C&lt;/strong&gt; stops that command and everything it started.&lt;/p&gt;
&lt;h2 id="which-shells"&gt;Which shells &lt;a href="#which-shells" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Settings → Shell&lt;/strong&gt; picks the shell for every tab that has not chosen its own, from the ones installed here.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;th&gt;Choices&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS and Linux&lt;/td&gt;
 &lt;td&gt;bash, zsh, fish, sh, PowerShell 7&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows&lt;/td&gt;
 &lt;td&gt;Windows PowerShell, PowerShell 7, Command Prompt, Git Bash, WSL&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Right-click a tab, then &lt;strong&gt;Shell&lt;/strong&gt;, to choose one for that tab, or &lt;strong&gt;Default&lt;/strong&gt; to follow Settings. The header shows the active tab’s shell. &lt;code&gt;@shell&lt;/code&gt; opens that shell as an &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/interactive/"&gt;interactive terminal&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The window</title><link>https://termorq-docs.garrardkitchen.com/docs/get-started/the-window/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/get-started/the-window/</guid><description>&lt;p&gt;The window is one prompt with a rail on the left and a header on top. Everything else, HTTP, MCP, models, and collections, opens in that same column.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 rail[[&amp;#34;Rail&amp;#34;]]:::store
 prompt[&amp;#34;Prompt&amp;#34;]:::step
 shell[&amp;#34;Shell&amp;#34;]:::out
 http[&amp;#34;HTTP&amp;#34;]:::step
 mcp[(&amp;#34;MCP&amp;#34;)]:::store
 model{&amp;#34;Model&amp;#34;}:::gate

 rail --&amp;gt; prompt
 prompt --&amp;gt; shell
 prompt --&amp;gt; http
 prompt --&amp;gt; mcp
 prompt --&amp;gt; model

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef gate fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 linkStyle 0,1,2 stroke:#5eead4,stroke-width:2.5px
 linkStyle 3 stroke:#67e8f9,stroke-width:2.5px
 linkStyle 4 stroke:#FFC131,stroke-width:2.5px
&lt;/pre&gt;
&lt;h2 id="the-rail"&gt;The rail &lt;a href="#the-rail" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The rail is 64 pixels wide. Each button has a label and a tooltip.&lt;/p&gt;</description></item><item><title>Updates</title><link>https://termorq-docs.garrardkitchen.com/docs/settings/updates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/settings/updates/</guid><description>&lt;p&gt;&lt;strong&gt;Settings → Application updates&lt;/strong&gt; is where the check lives. The switch &lt;strong&gt;Check automatically&lt;/strong&gt; is on until you turn it off. &lt;strong&gt;Check for updates&lt;/strong&gt; runs one check now. &lt;strong&gt;Download latest release&lt;/strong&gt; opens &lt;a href="https://github.com/garrardkitchen/ai-terminal/releases" rel="external" target="_blank"&gt;GitHub Releases&lt;svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path fill="currentColor" d="M14 5c-.552 0-1-.448-1-1s.448-1 1-1h6c.552 0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1v-3.586l-7.293 7.293c-.391.39-1.024.39-1.414 0-.391-.391-.391-1.024 0-1.414l7.293-7.293h-3.586zm-9 2c-.552 0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552 0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1v4.563c0 1.657-1.343 3-3 3h-11c-1.657 0-3-1.343-3-3v-11c0-1.657 1.343-3 3-3h4.563c.552 0 1 .448 1 1s-.448 1-1 1h-4.563z"/&gt;&lt;/svg&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Calling an endpoint</title><link>https://termorq-docs.garrardkitchen.com/docs/http/calling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/http/calling/</guid><description>&lt;p&gt;&lt;code&gt;@create endpoint&lt;/code&gt; asks for the connection, the name, the method, and the path. Methods are &lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;PATCH&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;, &lt;code&gt;HEAD&lt;/code&gt;, and &lt;code&gt;OPTIONS&lt;/code&gt;. You can add query defaults, path parameters, and extra headers.&lt;/p&gt;
&lt;p&gt;A &lt;code&gt;{name}&lt;/code&gt; in the path becomes a path parameter with an optional default. Call it with &lt;code&gt;--name value&lt;/code&gt;.&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@create endpoint&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Names may contain spaces. &lt;strong&gt;POST&lt;/strong&gt;, &lt;strong&gt;PUT&lt;/strong&gt;, and &lt;strong&gt;PATCH&lt;/strong&gt; can include a JSON body, sent as &lt;code&gt;application/json&lt;/code&gt;. A blank body sends none. The test shows the status as a coloured pill. &lt;strong&gt;Save&lt;/strong&gt; stays disabled until an HTTP response comes back.&lt;/p&gt;</description></item><item><title>Files</title><link>https://termorq-docs.garrardkitchen.com/docs/reference/files/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/reference/files/</guid><description>&lt;p&gt;Two places hold state. The &lt;strong&gt;data folder&lt;/strong&gt; is this machine. The &lt;strong&gt;workspace folder&lt;/strong&gt; is what you commit.&lt;/p&gt;
&lt;h2 id="data-folder"&gt;Data folder &lt;a href="#data-folder" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;com.garrardkitchen.ai-terminal&lt;/code&gt; under the platform data directory.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;th&gt;Path&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/Library/Application Support/com.garrardkitchen.ai-terminal&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Linux&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$XDG_DATA_HOME&lt;/code&gt; or &lt;code&gt;~/.local/share/com.garrardkitchen.ai-terminal&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;%APPDATA%\com.garrardkitchen.ai-terminal&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;File&lt;/th&gt;
 &lt;th&gt;What it is&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;collections.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The shelf. Older &lt;code&gt;localStorage&lt;/code&gt; data is moved here once&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;command_history.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The last 500 commands and their times&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;api_connections.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;API connections, without secret values&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;api_endpoints.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Endpoints&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;openai_connections.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Model connections, without the key&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mcp_connections.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;MCP servers, without secret values&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;mcp_prefs.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Favourites and related MCP preferences&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;network_settings.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The additional CA certificate setting&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The keychain service is &lt;code&gt;com.garrardkitchen.ai-terminal&lt;/code&gt;. An AES-256-GCM fallback file lives in this folder when the keychain cannot be used. Do not edit it to plant a token.&lt;/p&gt;</description></item><item><title>Free and Pro editions</title><link>https://termorq-docs.garrardkitchen.com/docs/settings/editions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/settings/editions/</guid><description>&lt;p&gt;Termorq has Free and Pro builds. The edition appears beside the application version in the window header. The Free header includes &lt;strong&gt;created by Garrard Kitchen&lt;/strong&gt;; Pro omits this credit. Open &lt;strong&gt;License&lt;/strong&gt; from the left rail to compare plans; the current build is highlighted.&lt;/p&gt;
&lt;p&gt;The root &lt;code&gt;features.yml&lt;/code&gt; manifest is the source of this feature list and the app&amp;rsquo;s feature availability. Every new feature must have an explicit plan assignment there.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;What it includes&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Free&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Pro&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Terminal, tabs and split panes&lt;/td&gt;
 &lt;td&gt;Run shell commands in persistent terminal tabs and split panes.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Saved APIs and endpoints&lt;/td&gt;
 &lt;td&gt;Create, import, call and check saved HTTP endpoints.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MCP connections and tools&lt;/td&gt;
 &lt;td&gt;Connect to MCP servers and inspect or call their tools.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;OpenAI-compatible connections and model features&lt;/td&gt;
 &lt;td&gt;Use model connections, skills, chat, and model-assisted interpretation.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AI Agent tool use&lt;/td&gt;
 &lt;td&gt;Let the model propose API and MCP calls for your approval.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Collections&lt;/td&gt;
 &lt;td&gt;Save, organize, import, and export reusable command lines.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Run collections as runbooks&lt;/td&gt;
 &lt;td&gt;Run saved collection lines in order and capture response values.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Team workspace&lt;/td&gt;
 &lt;td&gt;Share API, MCP, endpoint, and collection definitions through a git folder.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Product support, feature requests and experimental early access&lt;/td&gt;
 &lt;td&gt;Access product support, submit feature requests, and get early access to experimental features.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Web Check monitoring&lt;/td&gt;
 &lt;td&gt;Schedule saved API and MCP checks and inspect their history.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;—&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Application updates and appearance&lt;/td&gt;
 &lt;td&gt;Manage updates, themes, shell preferences, and diagnostics.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Encrypted backup and secret handling&lt;/td&gt;
 &lt;td&gt;Protect local data and move it between installations.&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;td style="text-align: center"&gt;✓&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Source builds default to Free. Set &lt;code&gt;AI_TERMINAL_EDITION=pro&lt;/code&gt; before &lt;code&gt;pnpm tauri dev&lt;/code&gt; or &lt;code&gt;pnpm tauri build&lt;/code&gt; to build Pro. Any value other than &lt;code&gt;free&lt;/code&gt; or &lt;code&gt;pro&lt;/code&gt; stops the build.&lt;/p&gt;</description></item><item><title>Pipelines</title><link>https://termorq-docs.garrardkitchen.com/docs/cli/pipelines/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/cli/pipelines/</guid><description>&lt;p&gt;A pipeline builds &lt;code&gt;termorq-cli&lt;/code&gt;, points it at the checkout with an absolute path, and passes each connection secret in from the forge&amp;rsquo;s secret store. The JUnit document is written to standard output. Warnings stay on standard error, so a skipped step does not corrupt the XML.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 checkout[(&amp;#34;Checkout\n.ai-terminal/&amp;#34;)]:::store
 secrets[(&amp;#34;Forge\nsecret store&amp;#34;)]:::secret
 build[&amp;#34;cargo build\n--bin termorq-cli&amp;#34;]:::step
 run[&amp;#34;termorq-cli run\n--format junit&amp;#34;]:::run
 report([&amp;#34;Publish the XML\neven if the run fails&amp;#34;]):::out

 checkout --&amp;gt; build --&amp;gt; run
 secrets --&amp;gt; run
 run --&amp;gt; report

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef secret fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 classDef run fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#166534,stroke:#86efac,stroke-width:2px,color:#f0fdf4
 linkStyle 0,1 stroke:#5eead4,stroke-width:2.5px
 linkStyle 2 stroke:#FFC131,stroke-width:2.5px
 linkStyle 3 stroke:#86efac,stroke-width:2.5px
&lt;/pre&gt;
&lt;p&gt;The commands below are the same ones in &lt;a href="https://termorq-docs.garrardkitchen.com/docs/cli/run-a-collection/"&gt;Run a collection&lt;/a&gt;. Swap &lt;code&gt;Smoke&lt;/code&gt; and &lt;code&gt;AIT_SECRET_USERS_API&lt;/code&gt; for your collection and connection. Add &lt;code&gt;--allow-shell&lt;/code&gt; only when you have read the shell lines. Add &lt;code&gt;--yes&lt;/code&gt; only when the plan calls a destructive tool.&lt;/p&gt;</description></item><item><title>Sample workspace</title><link>https://termorq-docs.garrardkitchen.com/docs/get-started/sample-workspace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/get-started/sample-workspace/</guid><description>&lt;p&gt;The &lt;a href="https://termorq-docs.garrardkitchen.com/docs/get-started/sample-workspace/#download"&gt;download&lt;/a&gt; is the workspace the &lt;code&gt;termorq-cli&lt;/code&gt; chapter already runs. It contains no token. &lt;code&gt;mock://users&lt;/code&gt; answers on this machine, so the HTTP steps need no network.&lt;/p&gt;
&lt;p&gt;Unpack it, then point &lt;code&gt;termorq-cli&lt;/code&gt; at the folder with an absolute path. A relative &lt;code&gt;.&lt;/code&gt; is rejected.&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;termorq-cli list --workspace ~/src/acme-apis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;termorq-cli show Smoke --workspace ~/src/acme-apis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;termorq-cli check Smoke --workspace ~/src/acme-apis&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;termorq-cli check&lt;/code&gt; exits 2 until you set &lt;code&gt;AIT_SECRET_USERS_API&lt;/code&gt;. The value can be any non-empty string for this demo. The app masks it as &lt;code&gt;••••••••&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Tabs and splits</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/tabs-and-splits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/tabs-and-splits/</guid><description>&lt;p&gt;Each tab is its own session: scrollback, folder, history, MCP servers, and OpenAI connection. Switching tabs leaves a running command where it is.&lt;/p&gt;
&lt;h2 id="add-rename-close"&gt;Add, rename, close &lt;a href="#add-rename-close" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;+&lt;/strong&gt; adds a tab in the start folder. Right-click for &lt;strong&gt;Rename&lt;/strong&gt; and &lt;strong&gt;Change colour&lt;/strong&gt;. Middle-click, &lt;strong&gt;×&lt;/strong&gt;, or &lt;strong&gt;Close&lt;/strong&gt; removes the tab. Closing the last tab resets it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ctrl+Tab&lt;/strong&gt; moves to the next tab. &lt;strong&gt;Ctrl+Shift+Tab&lt;/strong&gt; moves to the previous one. Both wait while a palette or a dialog is open.&lt;/p&gt;</description></item><item><title>Tools, resources, and prompts</title><link>https://termorq-docs.garrardkitchen.com/docs/mcp/tools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/mcp/tools/</guid><description>&lt;h2 id="tool"&gt;@tool &lt;a href="#tool" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;

 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@tool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@tool search
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@tool search --query tea
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@tool echo --message hi
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@tool echo --message=hi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@tool&lt;/code&gt; lists the tools on the servers connected to this tab, favourites first within each server, then A→Z. When more than one server is connected, the list names the server after the description. An empty &lt;code&gt;@tool&lt;/code&gt; with an active connection shows &lt;strong&gt;Disconnect&lt;/strong&gt; on the chip.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@tool name&lt;/code&gt; opens the arguments form when that tool is already connected. If it is not, the scrollback says it was not found and the app looks through the saved servers, stops at the first server that has the tool, connects it, and shows &lt;strong&gt;MCP connected&lt;/strong&gt; with the server name and tool count. It then opens the form, or runs the call when the line already has flags. Servers already connected are checked first.&lt;/p&gt;</description></item><item><title>GraphQL and streams</title><link>https://termorq-docs.garrardkitchen.com/docs/http/graphql-and-streams/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/http/graphql-and-streams/</guid><description>&lt;h2 id="graphql"&gt;GraphQL &lt;a href="#graphql" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Tick &lt;strong&gt;GraphQL&lt;/strong&gt; on an endpoint. Its saved body is the query. The call sends &lt;code&gt;POST&lt;/code&gt; with &lt;code&gt;{&amp;quot;query&amp;quot;, &amp;quot;variables&amp;quot;}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The call’s body, or &lt;code&gt;--body&lt;/code&gt;, is the variables JSON. A blank body sends &lt;code&gt;{}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A non-empty &lt;code&gt;errors&lt;/code&gt; array shows as &lt;strong&gt;Check failed&lt;/strong&gt;, so a check and a runbook treat it as a failure even when the HTTP status is 200.&lt;/p&gt;
&lt;h2 id="server-sent-events"&gt;Server-sent events &lt;a href="#server-sent-events" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;

 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@sse ticks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@sse live events&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;@sse &amp;lt;endpoint&amp;gt;&lt;/code&gt; streams server-sent events. The name completes the same way &lt;code&gt;@endpoint&lt;/code&gt; does: favourites first, then A–Z, Tab cycles, and → accepts the ghost. A name may contain spaces. Extra words after a finished &lt;code&gt;@sse&lt;/code&gt; name are ignored.&lt;/p&gt;</description></item><item><title>Interactive terminal</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/interactive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/interactive/</guid><description>&lt;p&gt;Most lines are non-interactive: the app starts the shell, streams the output, and returns to the prompt. A program that needs a keyboard opens a pseudo-terminal in the tab instead. On Windows that terminal is ConPTY. The screen is drawn with xterm.js.&lt;/p&gt;
&lt;p&gt;These open a terminal on their own:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Editors and pagers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ssh&lt;/code&gt; and &lt;code&gt;sudo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;top&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git commit&lt;/code&gt; without &lt;code&gt;-m&lt;/code&gt;, and &lt;code&gt;git add -p&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker exec -it&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;A REPL started without a script, such as &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;node&lt;/code&gt;, or &lt;code&gt;psql mydb&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;@shell&lt;/code&gt; opens an interactive shell in the tab until you type &lt;code&gt;exit&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>The inspector</title><link>https://termorq-docs.garrardkitchen.com/docs/mcp/inspector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/mcp/inspector/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@mcp inspect Docs&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Inspect&lt;/strong&gt; on a row in &lt;code&gt;@mcp&lt;/code&gt; opens the same dialog. The app connects that server on the current tab first if it needs to.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Section&lt;/th&gt;
 &lt;th&gt;What you see&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Overview&lt;/td&gt;
 &lt;td&gt;Server info, instructions, the capabilities from &lt;code&gt;initialize&lt;/code&gt;, and the negotiated protocol version&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tools&lt;/td&gt;
 &lt;td&gt;Description, pretty-printed input schema, and annotations (read-only, destructive, idempotent, open world). &lt;strong&gt;Call…&lt;/strong&gt; opens the usual tool form and approval flow&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Resources&lt;/td&gt;
 &lt;td&gt;Resources and templates (&lt;code&gt;resources/list&lt;/code&gt;, &lt;code&gt;resources/templates/list&lt;/code&gt;, following &lt;code&gt;nextCursor&lt;/code&gt;). &lt;strong&gt;Read&lt;/strong&gt; shows text, or the size and MIME type of binary contents. A template’s placeholders are filled first&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Prompts&lt;/td&gt;
 &lt;td&gt;Arguments, then &lt;strong&gt;Get&lt;/strong&gt; shows the messages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;JSON-RPC log&lt;/td&gt;
 &lt;td&gt;The last 200 messages sent and received for that server. Memory only. Bodies over 16 KB are cut. Secret-looking fields and the server’s stored secrets are masked. &lt;strong&gt;Copy&lt;/strong&gt; copies the log as text&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Ping&lt;/td&gt;
 &lt;td&gt;Sends &lt;code&gt;ping&lt;/code&gt; and shows the round trip&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A section the server has no capability for shows an empty state.&lt;/p&gt;</description></item><item><title>Web Check</title><link>https://termorq-docs.garrardkitchen.com/docs/cli/web-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/cli/web-check/</guid><description>&lt;p&gt;Web Check is available in Pro builds. Free &lt;code&gt;termorq-cli&lt;/code&gt; binaries do not include the &lt;code&gt;termorq-cli web-check&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;Web Check runs saved API endpoints and MCP tools from a foreground &lt;code&gt;termorq-cli&lt;/code&gt; process. Its local browser interface manages checks and displays SQLite-backed history. The header labels the build edition as &lt;strong&gt;FREE&lt;/strong&gt; or &lt;strong&gt;PRO&lt;/strong&gt;. Closing the browser keeps monitoring running. Ctrl+C or computer sleep interrupts it.&lt;/p&gt;
&lt;p&gt;On Pro builds, use the Windows notification-area menu, the macOS menu-bar menu, or the macOS Dock menu to start or stop Web Check and show its output. The &lt;strong&gt;Show Web Check output&lt;/strong&gt; option includes the local URL and pairing code. Windows Pro NSIS &lt;code&gt;.exe&lt;/code&gt; and Microsoft Store MSIX packages include the matching &lt;code&gt;termorq-cli.exe&lt;/code&gt;; macOS and other builds need &lt;code&gt;termorq-cli&lt;/code&gt; beside the app or on &lt;code&gt;PATH&lt;/code&gt; for &lt;strong&gt;Start Web Check&lt;/strong&gt; to work. If the CLI is missing, the menu still appears and reports that when selected.&lt;/p&gt;</description></item><item><title>History and plain English</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/history/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/history/</guid><description>&lt;h2 id="command-history"&gt;Command history &lt;a href="#command-history" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;↑&lt;/strong&gt; and &lt;strong&gt;↓&lt;/strong&gt; cycle the commands on this tab when no palette is open. The app keeps the last 500 in &lt;code&gt;command_history.json&lt;/code&gt; in the app data folder. Each entry is the command and &lt;code&gt;at&lt;/code&gt;, Unix epoch milliseconds. An older file that was a plain list of strings is migrated on load (&lt;code&gt;at: 0&lt;/code&gt; shows as an unknown time).&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#eceff4"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#eceff4"&gt;{&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; &lt;span style="color:#a3be8c"&gt;&amp;#34;git status&amp;#34;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;,&lt;/span&gt; &lt;span style="color:#81a1c1"&gt;&amp;#34;at&amp;#34;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;:&lt;/span&gt; &lt;span style="color:#b48ead"&gt;1727900000000&lt;/span&gt; &lt;span style="color:#eceff4"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#eceff4"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The active tab’s history is the one &lt;strong&gt;↑&lt;/strong&gt; and &lt;strong&gt;↓&lt;/strong&gt; and &lt;code&gt;@history&lt;/code&gt; use. It is mirrored to that file when commands run.&lt;/p&gt;</description></item><item><title>Import and export</title><link>https://termorq-docs.garrardkitchen.com/docs/http/import-and-export/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/http/import-and-export/</guid><description>&lt;p&gt;Two exports exist. One is a file another API client can open, with secrets replaced by placeholders. The other is an encrypted file for this app, and it can carry the secret.&lt;/p&gt;
&lt;h2 id="openapi-and-postman-with-no-secrets"&gt;OpenAPI and Postman, with no secrets &lt;a href="#openapi-and-postman-with-no-secrets" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In &lt;code&gt;@endpoint&lt;/code&gt;, tick endpoints of one API connection and choose &lt;strong&gt;Export OpenAPI&lt;/strong&gt; or &lt;strong&gt;Export Postman&lt;/strong&gt;. Or type:&lt;/p&gt;


 
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@export openapi Users API
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;@export postman Users API&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;That exports every endpoint on the connection.&lt;/p&gt;</description></item><item><title>Find and export</title><link>https://termorq-docs.garrardkitchen.com/docs/terminal/find-and-export/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/terminal/find-and-export/</guid><description>&lt;h2 id="find-in-the-scrollback"&gt;Find in the scrollback &lt;a href="#find-in-the-scrollback" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Cmd+F&lt;/strong&gt; on macOS, or &lt;strong&gt;Ctrl+F&lt;/strong&gt; on Windows and Linux, opens a search box over the active tab. Every match is highlighted. The current one is filled in the accent colour, with a count such as &lt;strong&gt;3 of 12&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enter&lt;/strong&gt; and &lt;strong&gt;Shift+Enter&lt;/strong&gt;, or the arrows, step through matches and wrap at either end. &lt;strong&gt;Aa&lt;/strong&gt; matches case. Esc closes the box. New output is searched as it arrives.&lt;/p&gt;</description></item><item><title>One Azure path</title><link>https://termorq-docs.garrardkitchen.com/docs/azure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/azure/</guid><description>&lt;p&gt;These four Azure pieces are already in the app. This page is the order to wire them, using the sample collection as the thing the pipeline runs.&lt;/p&gt;
&lt;pre class="mermaid"&gt;flowchart LR
 entra[&amp;#34;Entra\nclient credentials&amp;#34;]:::step
 kv[(&amp;#34;Key Vault\nakv://&amp;#34;)]:::secret
 api[&amp;#34;Users API\nor an MCP server&amp;#34;]:::out
 aoai[&amp;#34;Azure OpenAI\non the tab&amp;#34;]:::store
 ado([&amp;#34;Azure DevOps\ntermorq-cli run&amp;#34;]):::exit

 entra --&amp;gt; api
 kv --&amp;gt; api
 api --&amp;gt; aoai
 api --&amp;gt; ado

 classDef store fill:#134e4a,stroke:#5eead4,stroke-width:2px,color:#f4fbfa
 classDef secret fill:#FFC131,stroke:#b45309,stroke-width:2px,color:#1a1404
 classDef step fill:#0f766e,stroke:#99f6e4,stroke-width:2px,color:#f4fbfa
 classDef out fill:#155e75,stroke:#67e8f9,stroke-width:2px,color:#f4fbfa
 classDef exit fill:#166534,stroke:#86efac,stroke-width:2px,color:#f0fdf4
 linkStyle 0,2 stroke:#5eead4,stroke-width:2.5px
 linkStyle 1 stroke:#FFC131,stroke-width:2.5px
 linkStyle 3 stroke:#86efac,stroke-width:2.5px
&lt;/pre&gt;
&lt;h2 id="1-a-secret-in-key-vault"&gt;1. A secret in Key Vault &lt;a href="#1-a-secret-in-key-vault" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Create the secret in Key Vault. In the app, put the reference in the connection’s secret field:&lt;/p&gt;</description></item><item><title>Guide map</title><link>https://termorq-docs.garrardkitchen.com/docs/guide-map/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://termorq-docs.garrardkitchen.com/docs/guide-map/</guid><description>&lt;p&gt;The sidebar is this list. Each group below is a chapter.&lt;/p&gt;
&lt;h2 id="get-started"&gt;Get started &lt;a href="#get-started" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://termorq-docs.garrardkitchen.com/docs/get-started/install/"&gt;Install and run&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/get-started/the-window/"&gt;the window&lt;/a&gt;, and the &lt;a href="https://termorq-docs.garrardkitchen.com/docs/get-started/sample-workspace/"&gt;sample workspace&lt;/a&gt; you can run offline.&lt;/p&gt;
&lt;h2 id="terminal"&gt;The terminal &lt;a href="#terminal" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/the-prompt/"&gt;The prompt and command search&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/shells/"&gt;shells&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/tabs-and-splits/"&gt;tabs and splits&lt;/a&gt;, the &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/interactive/"&gt;interactive terminal&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/history/"&gt;history&lt;/a&gt;, and &lt;a href="https://termorq-docs.garrardkitchen.com/docs/terminal/find-and-export/"&gt;find and export&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="collections"&gt;Collections and runbooks &lt;a href="#collections" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://termorq-docs.garrardkitchen.com/docs/collections/the-shelf/"&gt;The shelf&lt;/a&gt; and &lt;a href="https://termorq-docs.garrardkitchen.com/docs/collections/runbooks/"&gt;run as a runbook&lt;/a&gt;, including captures, checks, and &lt;code&gt;@diff&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="http"&gt;HTTP APIs &lt;a href="#http" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://termorq-docs.garrardkitchen.com/docs/http/connections/"&gt;Connections&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/http/auth/"&gt;auth&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/http/calling/"&gt;calling&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/http/graphql-and-streams/"&gt;GraphQL and streams&lt;/a&gt;, and &lt;a href="https://termorq-docs.garrardkitchen.com/docs/http/import-and-export/"&gt;import and export&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="mcp"&gt;MCP &lt;a href="#mcp" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://termorq-docs.garrardkitchen.com/docs/mcp/servers/"&gt;Servers&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/mcp/oauth/"&gt;OAuth&lt;/a&gt;, &lt;a href="https://termorq-docs.garrardkitchen.com/docs/mcp/tools/"&gt;tools, resources, and prompts&lt;/a&gt;, and the &lt;a href="https://termorq-docs.garrardkitchen.com/docs/mcp/inspector/"&gt;inspector&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>