<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introduction on tgs</title><link>https://garenal1v3.github.io/tgs-cli/</link><description>Recent content in Introduction on tgs</description><generator>Hugo</generator><language>en</language><atom:link href="https://garenal1v3.github.io/tgs-cli/index.xml" rel="self" type="application/rss+xml"/><item><title>Installation</title><link>https://garenal1v3.github.io/tgs-cli/getting-started/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/getting-started/installation/</guid><description>&lt;h1 id="installation"&gt;Installation&lt;a class="anchor" href="#installation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;tgs&lt;/code&gt; ships as a single static binary with no runtime dependencies. Pick whichever method fits your platform — the installed command is always &lt;code&gt;tgs&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="homebrew-macos--linux"&gt;Homebrew (macOS &amp;amp; Linux)&lt;a class="anchor" href="#homebrew-macos--linux"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The quickest way on macOS and Linux:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install garenal1v3/tap/tgs-cli&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This installs the &lt;code&gt;tgs&lt;/code&gt; binary and keeps it up to date via &lt;code&gt;brew upgrade&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="prebuilt-binaries"&gt;Prebuilt binaries&lt;a class="anchor" href="#prebuilt-binaries"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Grab a release archive for your platform from the &lt;a href="https://github.com/garenal1v3/tgs-cli/releases"&gt;releases page&lt;/a&gt;. Archives are named &lt;code&gt;tgs-cli_&amp;lt;os&amp;gt;_&amp;lt;arch&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;th&gt;OS&lt;/th&gt;
 &lt;th&gt;Arch&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS (Apple Silicon)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;darwin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS (Intel)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;darwin&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;amd64&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;linux&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;amd64&lt;/code&gt; / &lt;code&gt;arm64&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;windows&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;amd64&lt;/code&gt; / &lt;code&gt;arm64&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="macos--linux"&gt;macOS &amp;amp; Linux&lt;a class="anchor" href="#macos--linux"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Choose your platform: OS = darwin (macOS) or linux; ARCH = arm64 or amd64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;OS&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;darwin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;ARCH&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;arm64
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -L -o tgs.tar.gz &lt;span style="color:#98c379"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#98c379"&gt;&amp;#34;https://github.com/garenal1v3/tgs-cli/releases/latest/download/tgs-cli_&lt;/span&gt;&lt;span style="color:#98c379"&gt;${&lt;/span&gt;&lt;span style="color:#e06c75"&gt;OS&lt;/span&gt;&lt;span style="color:#98c379"&gt;}&lt;/span&gt;&lt;span style="color:#98c379"&gt;_&lt;/span&gt;&lt;span style="color:#98c379"&gt;${&lt;/span&gt;&lt;span style="color:#e06c75"&gt;ARCH&lt;/span&gt;&lt;span style="color:#98c379"&gt;}&lt;/span&gt;&lt;span style="color:#98c379"&gt;.tar.gz&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -xzf tgs.tar.gz tgs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo mv tgs /usr/local/bin/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="windows"&gt;Windows&lt;a class="anchor" href="#windows"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# PowerShell — ARCH = amd64 or arm64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;$Arch&lt;/span&gt; = &lt;span style="color:#98c379"&gt;&amp;#34;amd64&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e5c07b"&gt;Invoke-WebRequest&lt;/span&gt; `
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;-Uri&lt;/span&gt; &lt;span style="color:#98c379"&gt;&amp;#34;https://github.com/garenal1v3/tgs-cli/releases/latest/download/tgs-cli_windows_&lt;/span&gt;&lt;span style="color:#e06c75"&gt;$Arch&lt;/span&gt;&lt;span style="color:#98c379"&gt;.zip&amp;#34;&lt;/span&gt; `
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e06c75"&gt;-OutFile&lt;/span&gt; &lt;span style="color:#e06c75"&gt;tgs&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;zip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e5c07b"&gt;Expand-Archive&lt;/span&gt; &lt;span style="color:#e06c75"&gt;tgs&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;zip&lt;/span&gt; &lt;span style="color:#e06c75"&gt;-DestinationPath&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Move tgs.exe into a directory on your PATH, then:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.\&lt;span style="color:#e06c75"&gt;tgs&lt;/span&gt;.&lt;span style="color:#e06c75"&gt;exe&lt;/span&gt; &lt;span style="color:#e06c75"&gt;version&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="build-from-source"&gt;Build from source&lt;a class="anchor" href="#build-from-source"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Requires Go 1.26 or newer:&lt;/p&gt;</description></item><item><title>Quick Start</title><link>https://garenal1v3.github.io/tgs-cli/getting-started/quick-start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/getting-started/quick-start/</guid><description>&lt;h1 id="quick-start"&gt;Quick Start&lt;a class="anchor" href="#quick-start"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;From zero to your first search in five commands. This assumes tgs is already installed — if not, see &lt;a href="https://garenal1v3.github.io/tgs-cli/getting-started/installation/"&gt;Installation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="1-authenticate"&gt;1. Authenticate&lt;a class="anchor" href="#1-authenticate"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The default login imports your existing session from Telegram Desktop — no phone number or code required:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs login&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Other methods (phone + code, QR, a non-interactive flow for AI agents) are covered in &lt;a href="https://garenal1v3.github.io/tgs-cli/getting-started/authentication/"&gt;Authentication&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="2-confirm-who-you-are"&gt;2. Confirm who you are&lt;a class="anchor" href="#2-confirm-who-you-are"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs whoami&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Returns the active account as JSON — your ID, name, and username.&lt;/p&gt;</description></item><item><title>Authentication</title><link>https://garenal1v3.github.io/tgs-cli/getting-started/authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/getting-started/authentication/</guid><description>&lt;h1 id="authentication"&gt;Authentication&lt;a class="anchor" href="#authentication"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;tgs connects to Telegram through your real user account via MTProto. You need to authenticate once per profile — the session is saved locally and reused on subsequent commands.&lt;/p&gt;
&lt;h2 id="quick-start"&gt;Quick Start&lt;a class="anchor" href="#quick-start"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The default method imports your existing session from Telegram Desktop:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs login&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Or choose a different method:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs login --type code &lt;span style="color:#7f848e"&gt;# Phone number + SMS/Telegram code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs login --type qr &lt;span style="color:#7f848e"&gt;# Scan QR code from another device&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="login-methods"&gt;Login Methods&lt;a class="anchor" href="#login-methods"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="desktop-import-default"&gt;Desktop Import (default)&lt;a class="anchor" href="#desktop-import-default"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Imports your existing session from Telegram Desktop. tgs auto-detects the tdata directory on macOS, Linux, and Windows.&lt;/p&gt;</description></item><item><title>tgs login</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/auth/login/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/auth/login/</guid><description>&lt;h1 id="tgs-login"&gt;tgs login&lt;a class="anchor" href="#tgs-login"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Authenticate with Telegram. The session is saved locally and reused by all subsequent commands.&lt;/p&gt;
&lt;h2 id="synopsis"&gt;Synopsis&lt;a class="anchor" href="#synopsis"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs login [flags]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-T&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;desktop&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auth method: &lt;code&gt;desktop&lt;/code&gt;, &lt;code&gt;code&lt;/code&gt;, or &lt;code&gt;qr&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--desktop-dir&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-d&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;(auto-detect)&lt;/td&gt;
 &lt;td&gt;Path to Telegram Desktop tdata directory&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--passcode&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Telegram Desktop local passcode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--phone&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Phone number for &lt;code&gt;code&lt;/code&gt; method&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--code&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Verification code (for non-interactive login)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;2FA cloud password&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;(resolved)&lt;/td&gt;
 &lt;td&gt;Profile name to authenticate into&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env → &lt;code&gt;.tgs.yaml&lt;/code&gt; file → &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>tgs profile</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/account/profile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/account/profile/</guid><description>&lt;h1 id="tgs-profile"&gt;tgs profile&lt;a class="anchor" href="#tgs-profile"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Manage account profiles.&lt;/p&gt;
&lt;h2 id="synopsis"&gt;Synopsis&lt;a class="anchor" href="#synopsis"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs profile &amp;lt;subcommand&amp;gt; [flags]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="subcommands"&gt;Subcommands&lt;a class="anchor" href="#subcommands"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="tgs-profile-list"&gt;tgs profile list&lt;a class="anchor" href="#tgs-profile-list"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;List all profiles with their associated account information.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs profile list [flags]&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-o&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Output format: &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs profile list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs profile list --output text&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;* default (@myuser)
 work (@workuser)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;JSON (default):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#e06c75"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;+79001234567&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;username&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;alice&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;261054642&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;active&amp;#34;&lt;/span&gt;:&lt;span style="color:#e5c07b"&gt;true&lt;/span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {&lt;span style="color:#e06c75"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;work&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;phone&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;+79001230000&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;username&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;alice_work&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;:&lt;span style="color:#d19a66"&gt;342178890&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;active&amp;#34;&lt;/span&gt;:&lt;span style="color:#e5c07b"&gt;false&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Text (&lt;code&gt;--output text&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;* default (@alice)
 work (@alice_work)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The active profile is marked with &lt;code&gt;*&lt;/code&gt; in text mode, and &lt;code&gt;&amp;quot;active&amp;quot;: true&lt;/code&gt; in JSON. If neither username nor phone is cached, the profile name alone is shown.&lt;/p&gt;</description></item><item><title>tgs search messages</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/search/messages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/search/messages/</guid><description>&lt;h1 id="tgs-search-messages"&gt;tgs search messages&lt;a class="anchor" href="#tgs-search-messages"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Search messages within one or more chats, channels, or groups.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs search messages [query] [flags]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;query&lt;/code&gt; argument is required and specifies the text to search for.&lt;/p&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--chat&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string[]&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Chat to search (username, phone, ID; repeatable, comma-separated). Required unless &lt;code&gt;--folder&lt;/code&gt; is set.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search all chats inside this folder (id or name); peers are additive to any &lt;code&gt;--chat&lt;/code&gt; values&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--from&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-f&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Filter by sender (username, phone, or ID)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--filter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Message type filter (see &lt;a href="#filter-values"&gt;filter values&lt;/a&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--after&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Only messages after date (YYYY-MM-DD or unix timestamp)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--before&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Only messages before date (YYYY-MM-DD or unix timestamp)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--topic&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Forum topic ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--limit&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-l&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;50&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max messages to return (1-100)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--cursor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Pagination cursor from previous response&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer resolution cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--include-comments&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Also search the linked discussion group of each channel&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>tgs sources list</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/list/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/list/</guid><description>&lt;h1 id="tgs-sources-list"&gt;tgs sources list&lt;a class="anchor" href="#tgs-sources-list"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Enumerate all Telegram dialogs in your account — channels, supergroups, groups, users, and bots.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs sources list [flags]&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--type&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string[]&lt;/td&gt;
 &lt;td&gt;(all)&lt;/td&gt;
 &lt;td&gt;Filter by type: &lt;code&gt;channel&lt;/code&gt;, &lt;code&gt;supergroup&lt;/code&gt;, &lt;code&gt;group&lt;/code&gt;, &lt;code&gt;user&lt;/code&gt;, &lt;code&gt;bot&lt;/code&gt; (repeatable, comma-separated)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--with-stats&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fetch expensive metrics (total/24h/first messages + full info) for every returned source&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--limit&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-l&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max records to return (1-500, 0=all)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--cursor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Pagination cursor from previous response&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filter to chats inside this folder (id or name), archived chats included; incompatible with &lt;code&gt;--cursor&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--archived&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Include archived dialogs (ignored when &lt;code&gt;--folder&lt;/code&gt; is set — a folder already includes its archived chats)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer and stats caches&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Profiles</title><link>https://garenal1v3.github.io/tgs-cli/guide/profiles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/guide/profiles/</guid><description>&lt;h1 id="profiles"&gt;Profiles&lt;a class="anchor" href="#profiles"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;tgs supports multiple Telegram accounts through profiles — similar to how AWS CLI handles credentials. Each profile has its own independent session stored in a separate database file.&lt;/p&gt;
&lt;h2 id="how-profile-resolution-works"&gt;How Profile Resolution Works&lt;a class="anchor" href="#how-profile-resolution-works"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When you run any tgs command, the active profile is determined by this priority chain (highest wins):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;--profile&lt;/code&gt; flag passed to the command&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TGS_PROFILE&lt;/code&gt; environment variable&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.tgs.yaml&lt;/code&gt; file in the current directory or any parent directory&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt; (fallback)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="per-directory-profiles"&gt;Per-Directory Profiles&lt;a class="anchor" href="#per-directory-profiles"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You can bind a profile to a directory by creating a &lt;code&gt;.tgs.yaml&lt;/code&gt; file. Use &lt;code&gt;tgs profile switch&lt;/code&gt; to do this automatically:&lt;/p&gt;</description></item><item><title>tgs logout</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/auth/logout/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/auth/logout/</guid><description>&lt;h1 id="tgs-logout"&gt;tgs logout&lt;a class="anchor" href="#tgs-logout"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Revoke the current session on Telegram servers and clear local session data.&lt;/p&gt;
&lt;h2 id="synopsis"&gt;Synopsis&lt;a class="anchor" href="#synopsis"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs logout [flags]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;(resolved)&lt;/td&gt;
 &lt;td&gt;Profile to log out from&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env → &lt;code&gt;.tgs.yaml&lt;/code&gt; file → &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Logout the current profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs &lt;span style="color:#e5c07b"&gt;logout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Logout a specific profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs &lt;span style="color:#e5c07b"&gt;logout&lt;/span&gt; --profile work&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="output"&gt;Output&lt;a class="anchor" href="#output"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;JSON (default):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#e06c75"&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;,&lt;span style="color:#e06c75"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;:&lt;span style="color:#98c379"&gt;&amp;#34;logged_out&amp;#34;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Text (&lt;code&gt;--output text&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Logged out (profile: default)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the profile is not logged in, the command exits non-zero with an error message.&lt;/p&gt;</description></item><item><title>tgs search global</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/search/global/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/search/global/</guid><description>&lt;h1 id="tgs-search-global"&gt;tgs search global&lt;a class="anchor" href="#tgs-search-global"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Search messages globally across all chats, channels, and groups.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs search global [query] [flags]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;query&lt;/code&gt; argument is required and specifies the text to search for.&lt;/p&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--channels-only&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search only in channels; incompatible with &lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--groups-only&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search only in groups; incompatible with &lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--users-only&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search only in private chats; incompatible with &lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--archived&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search in the archive folder (folder ID 1); ignored when &lt;code&gt;--folder&lt;/code&gt; is set&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Search only in this folder (id or name), archived chats included; incompatible with &lt;code&gt;--channels-only&lt;/code&gt;, &lt;code&gt;--groups-only&lt;/code&gt;, &lt;code&gt;--users-only&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--filter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Message type filter (see &lt;a href="https://garenal1v3.github.io/tgs-cli/en/reference/commands/search/messages/#filter-values"&gt;filter values&lt;/a&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--after&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Only messages after date (YYYY-MM-DD or unix timestamp)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--before&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Only messages before date (YYYY-MM-DD or unix timestamp)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--limit&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-l&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;50&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max messages to return (1-100)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--cursor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Pagination cursor from previous response&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>tgs sources inspect</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/inspect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/inspect/</guid><description>&lt;h1 id="tgs-sources-inspect"&gt;tgs sources inspect&lt;a class="anchor" href="#tgs-sources-inspect"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Fetch detailed information for a single Telegram source. Works for sources you are subscribed to as well as public channels you are not a member of.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs sources inspect &amp;lt;ref&amp;gt; [flags]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;ref&lt;/code&gt; argument identifies the target source. Supported formats:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Format&lt;/th&gt;
 &lt;th&gt;Example&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;@username&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@durov&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Public username with &lt;code&gt;@&lt;/code&gt; prefix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;username&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;durov&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Public username without prefix&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;id:&amp;lt;n&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;id:-1001234567890&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram peer ID (recommended for negative IDs — pflag eats bare &lt;code&gt;-N&lt;/code&gt; as a flag)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Numeric ID&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;12345&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Positive peer ID. For negative IDs use the &lt;code&gt;id:&lt;/code&gt; form above, or insert &lt;code&gt;--&lt;/code&gt; (e.g. &lt;code&gt;inspect -- -1001234567890&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Phone number&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;+79001234567&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;For contacts and your own account&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;-&lt;/code&gt; or &lt;code&gt;@me&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Saved Messages (your personal chat)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-stats&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Skip expensive stats (total/24h/first messages)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer and stats caches&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>tgs whoami</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/account/whoami/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/account/whoami/</guid><description>&lt;h1 id="tgs-whoami"&gt;tgs whoami&lt;a class="anchor" href="#tgs-whoami"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Show the current profile name and account information. Reads from local storage — no Telegram connection required.&lt;/p&gt;
&lt;h2 id="synopsis"&gt;Synopsis&lt;a class="anchor" href="#synopsis"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs whoami [flags]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;(resolved)&lt;/td&gt;
 &lt;td&gt;Profile to inspect&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-o&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Output format: &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env → &lt;code&gt;.tgs.yaml&lt;/code&gt; file → &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Show current profile (JSON output)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs whoami
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Human-readable output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs whoami --output text
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Inspect a specific profile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs whoami --profile work
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Inspect a profile with text output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs whoami --profile work --output text&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="output"&gt;Output&lt;a class="anchor" href="#output"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Text output (&lt;code&gt;--output text&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Search</title><link>https://garenal1v3.github.io/tgs-cli/guide/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/guide/search/</guid><description>&lt;h1 id="search"&gt;Search&lt;a class="anchor" href="#search"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;tgs provides four search subcommands that map directly to Telegram&amp;rsquo;s MTProto search methods. All output is JSON, making it straightforward to pipe into &lt;code&gt;jq&lt;/code&gt;, feed to an AI agent, or process programmatically.&lt;/p&gt;
&lt;h2 id="searching-in-a-chat"&gt;Searching in a Chat&lt;a class="anchor" href="#searching-in-a-chat"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The most common operation: search for messages within a specific chat.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs search messages &lt;span style="color:#98c379"&gt;&amp;#34;docker compose&amp;#34;&lt;/span&gt; -c @devops_notes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The query argument is required. The &lt;code&gt;-c&lt;/code&gt; / &lt;code&gt;--chat&lt;/code&gt; flag specifies which chat to search. See &lt;a href="#chat-resolution"&gt;Chat Resolution&lt;/a&gt; below for all supported formats.&lt;/p&gt;</description></item><item><title>tgs search counters</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/search/counters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/search/counters/</guid><description>&lt;h1 id="tgs-search-counters"&gt;tgs search counters&lt;a class="anchor" href="#tgs-search-counters"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Get message counts grouped by filter type (photo, video, document, etc.) for one or more chats.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs search counters [flags]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command takes no positional arguments.&lt;/p&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--chat&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Chat to query (username, phone, or ID). Required unless &lt;code&gt;--folder&lt;/code&gt; is set.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Query all chats inside this folder (id or name); results include per-chat breakdowns plus aggregated totals&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--topic&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Forum topic ID&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--filters&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string[]&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Filter types to count (comma-separated; default: all). See &lt;a href="https://garenal1v3.github.io/tgs-cli/en/reference/commands/search/messages/#filter-values"&gt;filter values&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer resolution cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>tgs sources folders</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/folders/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/sources/folders/</guid><description>&lt;h1 id="tgs-sources-folders"&gt;tgs sources folders&lt;a class="anchor" href="#tgs-sources-folders"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Enumerates the user&amp;rsquo;s Telegram &lt;strong&gt;folders&lt;/strong&gt; (dialog filters from the UI) and
resolves each one&amp;rsquo;s contents the way the Telegram client does — applying
pinned/include/exclude peers and auto-flags (contacts, groups, etc.) to the
full dialog list.&lt;/p&gt;
&lt;p&gt;The default &amp;ldquo;All chats&amp;rdquo; folder is excluded; only user-defined folders and
shared chatlists appear in the output.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs sources folders [flags]&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Sources</title><link>https://garenal1v3.github.io/tgs-cli/guide/sources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/guide/sources/</guid><description>&lt;h1 id="sources"&gt;Sources&lt;a class="anchor" href="#sources"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;tgs sources&lt;/code&gt; lets you enumerate and inspect the Telegram dialogs in your account — channels, supergroups, groups, users, and bots. All output is JSON, ready to pipe into &lt;code&gt;jq&lt;/code&gt; or feed to an AI agent.&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;Piping to &lt;code&gt;jq&lt;/code&gt;:&lt;/strong&gt; &lt;code&gt;tgs&lt;/code&gt; writes diagnostic logs (&lt;code&gt;[tgs] retry: …&lt;/code&gt;, &lt;code&gt;[tgs] FLOOD_WAIT: …&lt;/code&gt;) to &lt;strong&gt;stderr&lt;/strong&gt; and JSON to &lt;strong&gt;stdout&lt;/strong&gt;. When piping into &lt;code&gt;jq&lt;/code&gt;, drop stderr to keep the parser happy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tgs sources list --with-stats 2&amp;gt;/dev/null | jq &lt;span style="color:#98c379"&gt;&amp;#39;.sources[].title&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Avoid &lt;code&gt;2&amp;gt;&amp;amp;1 | jq …&lt;/code&gt; — that mixes log lines into stdout and breaks JSON parsing.&lt;/p&gt;</description></item><item><title>tgs search calendar</title><link>https://garenal1v3.github.io/tgs-cli/reference/commands/search/calendar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/commands/search/calendar/</guid><description>&lt;h1 id="tgs-search-calendar"&gt;tgs search calendar&lt;a class="anchor" href="#tgs-search-calendar"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Get message search results grouped by date for one or more chats and a filter type.&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;a class="anchor" href="#usage"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;tgs search calendar [flags]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command takes no positional arguments.&lt;/p&gt;
&lt;h2 id="flags"&gt;Flags&lt;a class="anchor" href="#flags"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Flag&lt;/th&gt;
 &lt;th&gt;Short&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--chat&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Chat to query (username, phone, or ID). Required unless &lt;code&gt;--folder&lt;/code&gt; is set.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--folder&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Query all chats inside this folder (id or name); results include per-chat arrays plus aggregated totals&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--filter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Message type filter (see &lt;a href="https://garenal1v3.github.io/tgs-cli/en/reference/commands/search/messages/#filter-values"&gt;filter values&lt;/a&gt;). &lt;strong&gt;Required.&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--max-wait&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;int&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Max seconds to wait on FLOOD_WAIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--no-cache&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;bool&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable peer resolution cache&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--profile&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;-p&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;string&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Account profile name&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Profile resolution order when &lt;code&gt;--profile&lt;/code&gt; is not set: &lt;code&gt;TGS_PROFILE&lt;/code&gt; env -&amp;gt; &lt;code&gt;.tgs.yaml&lt;/code&gt; file -&amp;gt; &lt;code&gt;&amp;quot;default&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Environment Variables</title><link>https://garenal1v3.github.io/tgs-cli/reference/environment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://garenal1v3.github.io/tgs-cli/reference/environment/</guid><description>&lt;h1 id="environment-variables"&gt;Environment Variables&lt;a class="anchor" href="#environment-variables"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;All tgs environment variables are optional. They override compiled-in defaults or configuration file values.&lt;/p&gt;
&lt;h2 id="variables"&gt;Variables&lt;a class="anchor" href="#variables"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TGS_PROFILE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Active profile name. Overrides &lt;code&gt;.tgs.yaml&lt;/code&gt; but is overridden by &lt;code&gt;--profile&lt;/code&gt; flag.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TGS_API_ID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram API ID. Overrides the value compiled into the binary.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TGS_API_HASH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram API Hash. Overrides the value compiled into the binary.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TGS_CONFIG_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Config directory. Takes precedence over &lt;code&gt;XDG_CONFIG_HOME&lt;/code&gt;. Default: &lt;code&gt;$XDG_CONFIG_HOME/tgs&lt;/code&gt;, falling back to &lt;code&gt;~/.config/tgs&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TGS_DATA_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Data directory for session databases. Takes precedence over &lt;code&gt;XDG_DATA_HOME&lt;/code&gt;. Default: &lt;code&gt;$XDG_DATA_HOME/tgs&lt;/code&gt;, falling back to &lt;code&gt;~/.local/share/tgs&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;XDG_CONFIG_HOME&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base config directory (XDG spec). Used as &lt;code&gt;$XDG_CONFIG_HOME/tgs&lt;/code&gt; when &lt;code&gt;TGS_CONFIG_DIR&lt;/code&gt; is unset.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;XDG_DATA_HOME&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base data directory (XDG spec). Used as &lt;code&gt;$XDG_DATA_HOME/tgs&lt;/code&gt; when &lt;code&gt;TGS_DATA_DIR&lt;/code&gt; is unset.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id="profile-selection"&gt;Profile Selection&lt;a class="anchor" href="#profile-selection"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Use the &amp;#34;work&amp;#34; profile for one command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e06c75"&gt;TGS_PROFILE&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;work tgs whoami
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7f848e"&gt;# Use the &amp;#34;work&amp;#34; profile for the whole shell session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e5c07b"&gt;export&lt;/span&gt; &lt;span style="color:#e06c75"&gt;TGS_PROFILE&lt;/span&gt;&lt;span style="color:#56b6c2"&gt;=&lt;/span&gt;work&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;See &lt;a href="https://garenal1v3.github.io/tgs-cli/guide/profiles/#how-profile-resolution-works"&gt;Profile resolution order&lt;/a&gt; for the full priority chain.&lt;/p&gt;</description></item></channel></rss>