<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>VIBE on Pigsty v5.0</title>
    <link>https://pgsty.pro/module/vibe/</link>
    <description>Recent content in VIBE on Pigsty v5.0</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://pgsty.pro/module/vibe/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Module: VIBE</title>
        <link>https://pgsty.pro/docs/vibe/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/</guid>
        <description>&lt;p&gt;The VIBE module provides a &lt;strong&gt;browser-based dev environment&lt;/strong&gt; with Code-Server, JupyterLab, Node.js, Claude Code, and Codex CLI,&#xA;and can work with &lt;a href=&#34;https://pgsty.pro/docs/juice/&#34;&gt;&lt;code&gt;JUICE&lt;/code&gt;&lt;/a&gt; shared storage and &lt;a href=&#34;https://pgsty.pro/docs/pgsql/&#34;&gt;&lt;code&gt;PGSQL&lt;/code&gt;&lt;/a&gt; database capabilities.&lt;/p&gt;&#xA;&lt;p&gt;VIBE depends on &lt;a href=&#34;https://pgsty.pro/docs/node/&#34;&gt;&lt;code&gt;NODE&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/infra/&#34;&gt;&lt;code&gt;INFRA&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;NODE&lt;/code&gt; provides base software and Python &lt;code&gt;uv&lt;/code&gt; environment&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;INFRA&lt;/code&gt; provides Nginx reverse proxy, Grafana and portal entry&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;components&#34;&gt;Components&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Local Port&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Access Path&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code-Server&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;VS Code in browser&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8443&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/code/&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JupyterLab&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Interactive notebooks&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;8888&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/jupyter/&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Node.js&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Runtime and npm&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Claude Code&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI + observability config&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI / Grafana&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Codex CLI&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI installation; configuration is not managed&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;-&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Notes:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration</title>
        <link>https://pgsty.pro/docs/vibe/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/config/</guid>
        <description>&lt;p&gt;VIBE supports enabling components on demand and exposes services via a unified workspace and Nginx portal.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Component&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Enable Param&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code-Server&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;code_enabled&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Enabled&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;VS Code in browser&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JupyterLab&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;jupyter_enabled&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Disabled&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Notebook / terminal / editor&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Node.js&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;nodejs_enabled&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Enabled&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Node.js runtime and npm&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Claude Code&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;claude_enabled&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Enabled&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI installation, config, and observability&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Codex CLI&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;codex_enabled&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;Enabled&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;CLI installation only; configuration is not managed&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Note: module default is &lt;code&gt;jupyter_enabled: false&lt;/code&gt;, while &lt;code&gt;conf/vibe.yml&lt;/code&gt; explicitly sets it to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parameters</title>
        <link>https://pgsty.pro/docs/vibe/param/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/param/</guid>
        <description>&lt;p&gt;VIBE module has &lt;strong&gt;18&lt;/strong&gt; parameters, grouped as:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Common&lt;/li&gt;&#xA;&lt;li&gt;Code-Server&lt;/li&gt;&#xA;&lt;li&gt;JupyterLab&lt;/li&gt;&#xA;&lt;li&gt;Node.js&lt;/li&gt;&#xA;&lt;li&gt;Claude Code&lt;/li&gt;&#xA;&lt;li&gt;Codex CLI&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--full td-table-scroll--static&#34;&gt;&#xA;&lt;table class=&#34;full-width&#34;&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Level&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Default&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: left&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#vibe_data&#34;&gt;&lt;code&gt;vibe_data&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/fs&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Workspace dir&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#code_enabled&#34;&gt;&lt;code&gt;code_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enable Code-Server&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#code_port&#34;&gt;&lt;code&gt;code_port&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;8443&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code-Server port&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#code_data&#34;&gt;&lt;code&gt;code_data&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/data/code&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code-Server data dir&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#code_password&#34;&gt;&lt;code&gt;code_password&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Vibe.Coding&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Code-Server password&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#code_gallery&#34;&gt;&lt;code&gt;code_gallery&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;enum&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;openvsx&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Extension marketplace&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#jupyter_enabled&#34;&gt;&lt;code&gt;jupyter_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enable JupyterLab&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#jupyter_port&#34;&gt;&lt;code&gt;jupyter_port&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;port&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;8888&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JupyterLab port&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#jupyter_data&#34;&gt;&lt;code&gt;jupyter_data&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/data/jupyter&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JupyterLab data dir&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#jupyter_password&#34;&gt;&lt;code&gt;jupyter_password&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Vibe.Coding&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;JupyterLab token&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#jupyter_venv&#34;&gt;&lt;code&gt;jupyter_venv&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;path&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/data/venv&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Python venv path&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#nodejs_enabled&#34;&gt;&lt;code&gt;nodejs_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Enable Node.js&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#nodejs_registry&#34;&gt;&lt;code&gt;nodejs_registry&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;url&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;&#39;&#39;&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;npm registry mirror&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#npm_packages&#34;&gt;&lt;code&gt;npm_packages&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;string[]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Additional global npm packages&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#claude_enabled&#34;&gt;&lt;code&gt;claude_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Install and configure Claude Code&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#claude_package&#34;&gt;&lt;code&gt;claude_package&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;@anthropic-ai/claude-code&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Claude Code npm package&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#claude_env&#34;&gt;&lt;code&gt;claude_env&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;dict&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Claude env vars&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;a href=&#34;https://pgsty.pro/docs/vibe/param/#codex_enabled&#34;&gt;&lt;code&gt;codex_enabled&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;code&gt;C&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: left&#34;&gt;Install Codex CLI&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;default-parameters&#34;&gt;Default Parameters&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Defined in &lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/roles/vibe/defaults/main.yml&#34;&gt;&lt;code&gt;roles/vibe/defaults/main.yml&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Playbook</title>
        <link>https://pgsty.pro/docs/vibe/playbook/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/playbook/</guid>
        <description>&lt;p&gt;VIBE provides the &lt;code&gt;vibe.yml&lt;/code&gt; playbook to deploy Code-Server, JupyterLab, Node.js, Claude Code, and Codex CLI.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;code&gt;vibe.yml&lt;/code&gt; includes only &lt;code&gt;node_id&lt;/code&gt; and &lt;code&gt;vibe&lt;/code&gt; roles, it does not include &lt;code&gt;node/infra&lt;/code&gt;.&#xA;Run &lt;a href=&#34;https://pgsty.pro/docs/deploy/&#34;&gt;&lt;code&gt;deploy.yml&lt;/code&gt;&lt;/a&gt; first, or explicitly run &lt;a href=&#34;https://pgsty.pro/docs/node/playbook/&#34;&gt;&lt;code&gt;node.yml&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsty.pro/docs/infra/playbook/&#34;&gt;&lt;code&gt;infra.yml&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;vibeyml&#34;&gt;&lt;code&gt;vibe.yml&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgsty/pigsty/blob/main/vibe.yml&#34;&gt;&lt;code&gt;vibe.yml&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c3999bd2-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;7&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c3999bd2-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- &lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;VIBE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;become&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;gather_facts&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;no&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;roles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;node_id, tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;id }&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;- {&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;vibe,    tags&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;vibe }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;task-structure&#34;&gt;Task Structure&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c3999bd2-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;21&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c3999bd2-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vibe&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── vibe_dir          &lt;span class=&#34;c1&#34;&gt;# create workspace and context files&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── code              &lt;span class=&#34;c1&#34;&gt;# Code-Server&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── code_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── code_dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── code_config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── code_launch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── jupyter           &lt;span class=&#34;c1&#34;&gt;# JupyterLab&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── jupyter_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── jupyter_dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── jupyter_config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── jupyter_launch&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── nodejs            &lt;span class=&#34;c1&#34;&gt;# Node.js runtime and additional npm packages&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── nodejs_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── nodejs_config&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── nodejs_pkg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── codex             &lt;span class=&#34;c1&#34;&gt;# Codex CLI&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── codex_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── claude            &lt;span class=&#34;c1&#34;&gt;# Claude Code&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ├── claude_install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └── claude_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Notes:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Administration</title>
        <link>https://pgsty.pro/docs/vibe/admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/admin/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;service-management&#34;&gt;Service Management&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e3720d6-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e3720d6-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status code-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart code-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status jupyter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart jupyter&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Logs:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9e3720d6-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9e3720d6-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -u code-server -f&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -u jupyter -f&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;workspace-and-context&#34;&gt;Workspace and Context&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;vibe_dir&lt;/code&gt; creates these under &lt;code&gt;vibe_data&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;: Context file rendered from the role template&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;: Symlink to &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Default locations (adjustable via &lt;code&gt;vibe_data&lt;/code&gt;):&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring</title>
        <link>https://pgsty.pro/docs/vibe/monitor/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/monitor/</guid>
        <description>&lt;p&gt;VIBE monitoring mainly focuses on Claude Code OpenTelemetry data.&#xA;Code-Server and JupyterLab do not expose Prometheus metrics; use systemd and logs for health checks.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;claude-code-observability&#34;&gt;Claude Code Observability&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;VIBE writes default OpenTelemetry env vars into &lt;code&gt;~/.claude/settings.json&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-9297681f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;json&#34; data-td-line-count=&#34;12&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-9297681f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CLAUDE_CODE_ENABLE_TELEMETRY&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_METRICS_EXPORTER&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;otlp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_LOGS_EXPORTER&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;otlp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_EXPORTER_OTLP_METRICS_PROTOCOL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http/protobuf&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_EXPORTER_OTLP_LOGS_PROTOCOL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http/protobuf&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_EXPORTER_OTLP_METRICS_ENDPOINT&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1:8428/opentelemetry/v1/metrics&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_EXPORTER_OTLP_LOGS_ENDPOINT&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;http://127.0.0.1:9428/insert/opentelemetry/v1/logs&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;OTEL_RESOURCE_ATTRIBUTES&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ip=&amp;lt;host&amp;gt;,job=claude&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;claude_env&lt;/code&gt; is merged with the defaults, and can be used for API keys or custom endpoints.&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsty.pro/docs/vibe/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsty.pro/docs/vibe/faq/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;deployment&#34;&gt;Deployment&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;code-server-package-not-found&#34;&gt;code-server package not found&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Ensure &lt;a href=&#34;https://pgsty.pro/docs/node/&#34;&gt;&lt;code&gt;NODE&lt;/code&gt;&lt;/a&gt; and repo config are in place:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-be5674fd-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-be5674fd-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum repolist    &lt;span class=&#34;c1&#34;&gt;# EL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-cache policy   &lt;span class=&#34;c1&#34;&gt;# Debian/Ubuntu, read-only inspection&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./infra.yml -l infra -t repo --check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;jupyterlab-installation-failed&#34;&gt;JupyterLab installation failed&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;jupyter_venv&lt;/code&gt; must exist:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-be5674fd-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-be5674fd-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv venv /data/venv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./vibe.yml -l &amp;lt;host&amp;gt; -t jupyter --check&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./vibe.yml -l &amp;lt;host&amp;gt; -t jupyter&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;access&#34;&gt;Access&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;cannot-access-code-or-jupyter&#34;&gt;Cannot access &lt;code&gt;/code/&lt;/code&gt; or &lt;code&gt;/jupyter/&lt;/code&gt;&#xA;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Check service status&lt;/li&gt;&#xA;&lt;li&gt;Check port listening&lt;/li&gt;&#xA;&lt;li&gt;Check Nginx config&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-be5674fd-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-be5674fd-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status code-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status jupyter&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ss -tlnp &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;m&#34;&gt;8443&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ss -tlnp &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;m&#34;&gt;8888&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nginx -t&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;websocket-connection-fails&#34;&gt;WebSocket connection fails&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Ensure Nginx enables WebSocket (default is enabled).&#xA;If using custom &lt;code&gt;infra_portal&lt;/code&gt;, set &lt;code&gt;websocket: true&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
