<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Pelican Site</title><link href="https://pelican-5lg.pages.dev/" rel="alternate"/><link href="https://pelican-5lg.pages.dev/feeds/all.atom.xml" rel="self"/><id>https://pelican-5lg.pages.dev/</id><updated>2026-06-05T13:00:00+02:00</updated><subtitle>a beginner's notes</subtitle><entry><title>Sample Photo Album</title><link href="https://pelican-5lg.pages.dev/sample-photo-album.html" rel="alternate"/><published>2026-06-05T13:00:00+02:00</published><updated>2026-06-05T13:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-05:/sample-photo-album.html</id><summary type="html">&lt;p&gt;A demo of the photos plugin — drop images in &lt;code&gt;content/images/samples/&lt;/code&gt; and list them with &lt;code&gt;{photo}samples/&lt;/code&gt;.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A quick demo of the photos plugin. The gallery above is built from frontmatter; glightbox makes each image clickable for fullscreen view.&lt;/p&gt;</content><category term="Photos"/><category term="photos"/><category term="sample"/></entry><entry><title>Hello, World!</title><link href="https://pelican-5lg.pages.dev/hello-world.html" rel="alternate"/><published>2026-06-05T12:00:00+02:00</published><updated>2026-06-05T12:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-05:/hello-world.html</id><summary type="html">&lt;p&gt;First post on the new Pelican site.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello from Pelican. This is a sample post written in Markdown.&lt;/p&gt;</content><category term="General"/><category term="pelican"/><category term="intro"/></entry><entry><title>Welcome to the new site</title><link href="https://pelican-5lg.pages.dev/welcome-to-the-new-site.html" rel="alternate"/><published>2026-06-04T09:00:00+02:00</published><updated>2026-06-04T09:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-04:/welcome-to-the-new-site.html</id><summary type="html">&lt;p&gt;Kicking off the blog with a quick tour of the new theme.&lt;/p&gt;</summary><content type="html">&lt;p&gt;This is the &lt;strong&gt;second&lt;/strong&gt; post, written in Markdown. Pelican converts the body to HTML, then wraps it in the theme's &lt;code&gt;article.html&lt;/code&gt; template.&lt;/p&gt;
&lt;h2 id="whats-here"&gt;What's here&lt;a class="headerlink" href="#whats-here" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Posts index at &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Per-year archives at &lt;code&gt;/archives.html&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tag pages, category pages, author pages&lt;/li&gt;
&lt;li&gt;Atom feed (linked in &lt;code&gt;&lt;head&gt;&lt;/head&gt;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code blocks work too:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;python
def hello():
    print("hi from pelican")&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;inline code&lt;/code&gt; also works.&lt;/p&gt;</content><category term="Meta"/><category term="meta"/><category term="welcome"/></entry><entry><title>Daily Journal — 2026-06-04</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-06-04.html" rel="alternate"/><published>2026-06-04T00:00:00+02:00</published><updated>2026-06-04T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-04:/daily-journal-2026-06-04.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Two threads today: polishing BOL AI adoption content for a townhall or internal campaign, and a deeper dive into developer automation — GitHub Actions with Claude Code, parallel worktree workflows, and Quartz component patterns. The AI content work is converging on a tagline and a before/after table format. The …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Two threads today: polishing BOL AI adoption content for a townhall or internal campaign, and a deeper dive into developer automation — GitHub Actions with Claude Code, parallel worktree workflows, and Quartz component patterns. The AI content work is converging on a tagline and a before/after table format. The dev tooling exploration is moving from concepts to concrete setup steps.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Finalize BOL AI townhall tagline and before/after tables (decide: add A, B, C or all three)&lt;/li&gt;
&lt;li&gt;[ ] Set up claude-code-action: run &lt;code&gt;/install-github-app&lt;/code&gt; inside Claude Code terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-adoption-content-bol-townhall"&gt;AI Adoption Content (BOL Townhall)&lt;a class="headerlink" href="#ai-adoption-content-bol-townhall" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="ai-100"&gt;ความรู้ AI สำหรับพนักงาน 100%&lt;a class="headerlink" href="#ai-100" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick tagline refinement — "ความรู้ AI สำหรับพนักงาน 100%" is grammatically correct but the recommended vision statement is &lt;strong&gt;"Every process, better with AI"&lt;/strong&gt; — short, forward-looking, not aggressive.
→ See [[ai-workshop-presentation]]&lt;/p&gt;
&lt;h4 id="generalizing-software-development-concepts"&gt;Generalizing software development concepts&lt;a class="headerlink" href="#generalizing-software-development-concepts" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Drafted three before/after comparison tables for BOL townhall slides: Product Research, Coding &amp;amp; Quality, and Automated Workflows. Each shows a clear "Before AI" vs "With AI" contrast for internal audience.
→ See [[ai-workshop-presentation]]&lt;/p&gt;
&lt;h4 id="grammar-check-for-ai-process-review"&gt;Grammar check for AI process review&lt;a class="headerlink" href="#grammar-check-for-ai-process-review" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed: "with AI assistance" is the grammatically correct and more professional phrasing over earlier variants.&lt;/p&gt;
&lt;h3 id="developer-tooling"&gt;Developer Tooling&lt;a class="headerlink" href="#developer-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="parallel-claude-sessions-in-single-repository"&gt;Parallel Claude Sessions in Single Repository&lt;a class="headerlink" href="#parallel-claude-sessions-in-single-repository" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Full git worktree workflow for running multiple Claude Code agents concurrently on one repo — each worktree gets its own directory and branch, tmux window per session, shared venv from main repo.
→ See [[git-worktree-parallel-claude]]&lt;/p&gt;
&lt;h4 id="auto-github-action"&gt;Auto - GitHub Action&lt;a class="headerlink" href="#auto-github-action" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Discovered &lt;code&gt;anthropics/claude-code-action&lt;/code&gt; — official Anthropic action for automating coding from GitHub issues. Label-triggered pipeline: &lt;code&gt;status:dev&lt;/code&gt; → Claude codes on self-hosted runner → commits → opens PR → label moves to &lt;code&gt;status:review&lt;/code&gt;. Setup starts with &lt;code&gt;/install-github-app&lt;/code&gt; inside Claude Code.
→ See [[github-action-claude-code]]&lt;/p&gt;
&lt;h3 id="pkm-personal-site"&gt;PKM &amp;amp; Personal Site&lt;a class="headerlink" href="#pkm-personal-site" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="quartz-5-upgrade-custom-components-jsxscss"&gt;Quartz 5 Upgrade — Custom Components (JSX/SCSS)&lt;a class="headerlink" href="#quartz-5-upgrade-custom-components-jsxscss" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quartz 5 uses JSX + TypeScript for components (not raw HTML). Custom CSS goes in &lt;code&gt;custom.scss&lt;/code&gt;. Components export &lt;code&gt;.css&lt;/code&gt; and &lt;code&gt;.afterDOMLoaded&lt;/code&gt; properties. JSX is ~95% identical to HTML — barrier lower than it sounds for the Ghibli theme work.
→ See [[quartz-custom-components]] | [[quartz-personal-site]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Choose which before/after tables to add to BOL townhall (A=Product Research, B=Coding, C=Workflows)&lt;/li&gt;
&lt;li&gt;[ ] Run &lt;code&gt;/install-github-app&lt;/code&gt; in Claude Code terminal to set up claude-code-action&lt;/li&gt;
&lt;li&gt;[ ] Start self-hosted runner: &lt;code&gt;cd ~/actions-runner &amp;amp;&amp;amp; ./run.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Try building a first custom Quartz component (JSX, ~20 lines, use frontmatter field)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[AI tagline as organizational anchor — "Every process, better with AI"]]&lt;/li&gt;
&lt;li&gt;[[Git worktrees as isolation primitive for parallel AI agents]]&lt;/li&gt;
&lt;li&gt;[[Label-driven GitHub pipelines as async task delegation to AI]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-06-03</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-06-03.html" rel="alternate"/><published>2026-06-03T00:00:00+02:00</published><updated>2026-06-03T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-03:/daily-journal-2026-06-03.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A day of converging threads: the personal site project came into focus with a clear aesthetic direction (Studio Ghibli / watercolor / anime), and the tooling stack is now confirmed — Quartz + GitHub + Cloudflare Pages. Also continued pushing on OpenACP's cloudflared tunnel, getting it running but the Discord interface still needs attention …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A day of converging threads: the personal site project came into focus with a clear aesthetic direction (Studio Ghibli / watercolor / anime), and the tooling stack is now confirmed — Quartz + GitHub + Cloudflare Pages. Also continued pushing on OpenACP's cloudflared tunnel, getting it running but the Discord interface still needs attention. A few exploratory conversations about domain names and LLM choices rounded out the day.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Design and build personal Quartz site with Studio Ghibli / watercolor aesthetic via Claude Code&lt;/li&gt;
&lt;li&gt;[ ] Get Discord interface working in OpenACP&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="personal-site-design-hugo-quartz"&gt;Personal Site Design — Hugo &amp;amp; Quartz&lt;a class="headerlink" href="#personal-site-design-hugo-quartz" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Long conversation starting from "what is Hugo?" that ended with a clear creative brief. Decided Quartz is the right tool (Hugo alone won't parse &lt;code&gt;[[wiki-links]]&lt;/code&gt;). The site vision: playful, personal, anime-inspired — specifically Studio Ghibli (Totoro, nature, trees), watercolor with color-fading-by-water effect. Design reference: maggieappleton.com layout, but more modern and personality-forward. Ended with a Claude Code prompt drafted to execute the layout.
→ See [[quartz-personal-site]] | [[quartz-pkm-setup]]&lt;/p&gt;
&lt;h3 id="cloudflare-deploy-quartz-github-actions"&gt;Cloudflare Deploy — Quartz + GitHub Actions&lt;a class="headerlink" href="#cloudflare-deploy-quartz-github-actions" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Confirmed the existing setup: Quartz is synced to GitHub and auto-deploys to Cloudflare Pages via a GitHub Actions workflow. Reviewed the step-by-step of how that pipeline works.
→ See [[cloudflare-workers-pages]]&lt;/p&gt;
&lt;h3 id="cc-openacp-tunnel-discord-progress"&gt;CC-OpenACP — Tunnel &amp;amp; Discord Progress&lt;a class="headerlink" href="#cc-openacp-tunnel-discord-progress" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;OpenACP cloudflared tunnel registered successfully (port 21420), but the session shut down with SIGTERM. The Discord adapter install failed due to npm permission error (&lt;code&gt;EACCES mkdir&lt;/code&gt;). Config file location confirmed at &lt;code&gt;/home/phurix/openacp-workspace/.openacp/&lt;/code&gt;.
→ See [[cc-openacp]]&lt;/p&gt;
&lt;h3 id="domain-name-research"&gt;Domain Name Research&lt;a class="headerlink" href="#domain-name-research" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Explored domain options for the personal site. &lt;code&gt;.top&lt;/code&gt; is cheap but has spam reputation. &lt;code&gt;.ing&lt;/code&gt; is a newer Google TLD with creative potential (e.g. "building", "making"). Brainstormed 20+ invented name ideas for a unique &lt;code&gt;.ing&lt;/code&gt; domain.&lt;/p&gt;
&lt;h3 id="open-source-llms-for-coding-30b70b"&gt;Open Source LLMs for Coding (30B–70B)&lt;a class="headerlink" href="#open-source-llms-for-coding-30b70b" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Brief follow-up to yesterday's research — confirmed parameter range interest (30B–70B). No new models surfaced today.
→ See [[open-source-coding-llms]]&lt;/p&gt;
&lt;h3 id="thai-personal-website-inspiration"&gt;Thai Personal Website Inspiration&lt;a class="headerlink" href="#thai-personal-website-inspiration" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Looked for Thai personal sites in the style of maggieappleton.com. Seeking design and content inspiration for the personal site project.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Run Claude Code prompt to build Studio Ghibli / watercolor Quartz layout&lt;/li&gt;
&lt;li&gt;[ ] Fix npm EACCES error for OpenACP Discord adapter (&lt;code&gt;sudo npm install -g&lt;/code&gt; or use &lt;code&gt;--prefix&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Restart OpenACP tunnel after SIGTERM — check autoStart config&lt;/li&gt;
&lt;li&gt;[ ] Decide on domain name for personal site (consider &lt;code&gt;.ing&lt;/code&gt; options)&lt;/li&gt;
&lt;li&gt;[ ] Review Thai personal site examples for content/structure inspiration&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Digital Garden vs Blog — when a site is both]]&lt;/li&gt;
&lt;li&gt;[[Studio Ghibli aesthetic as design system — nature, soft transitions, hand-drawn feel]]&lt;/li&gt;
&lt;li&gt;[[Domain TLD choice as personal brand signal]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;em&gt;Appended by PKM generator — second run 2026-06-03&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="github-actions-label-pipeline-auto-github-action"&gt;GitHub Actions Label Pipeline (Auto - GitHub Action)&lt;a class="headerlink" href="#github-actions-label-pipeline-auto-github-action" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Built a full label-based issue pipeline in GitHub Actions: status:todo → status:dev → status:test → status:qa → status:review → status:done. Python script reads the current label, prints a stage message, writes &lt;code&gt;next_label.txt&lt;/code&gt;, then a separate GitHub Script step reads that file and auto-moves the issue label. Two manual gates: start (todo→dev) and approval (review→done).
→ See [[github-actions-label-pipeline]]&lt;/p&gt;
&lt;h3 id="gold-price-drop"&gt;Gold Price Drop — ทำไมราคาทองตกในช่วงนี้&lt;a class="headerlink" href="#gold-price-drop" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Quick research: gold hit ATH ~&lt;span class="math"&gt;\(5,589/oz in early 2026, now ~\)&lt;/span&gt;4,460-4,500 (down ~15%). Causes: profit-taking, Fed cutting less than expected (1 cut vs 2), strong dollar (DXY ~99.9), 10-yr yield at 4.2%, seasonal weakness (Jun–Jul jewelry lull). Long-term thesis unchanged — central bank buying continues.&lt;/p&gt;
&lt;h3 id="cloudflare-pages-on-premise-django-api"&gt;Cloudflare Pages + On-Premise Django API&lt;a class="headerlink" href="#cloudflare-pages-on-premise-django-api" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Researched hybrid edge + on-premise architecture for web app: Next.js on Cloudflare Pages (free) + cloudflared tunnel → on-premise Django/Ninja API. No open ports needed, IP hidden, free SSL on both ends, ~20–50ms tunnel latency. CORS config required in Django. This is the decided deployment pattern for the App project.
→ See [[cloudflare-tunnel-onpremise-api]] | [[web-mantine-app]]&lt;/p&gt;
&lt;h3 id="quartz-v5-upgrade-assessment"&gt;Quartz v5 — Upgrade Assessment&lt;a class="headerlink" href="#quartz-v5-upgrade-assessment" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Quartz v5 (released May 2026) adds: YAML config, incremental rebuilds, StackedPages plugin (Andy Matuschak sliding panes), EncryptedPages, UnlistedPages. Decision: stay on v4 for now — custom Ghibli theme migration is significant work and ecosystem is still maturing. Revisit in ~2 months.
→ See [[quartz-personal-site]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced-second-run"&gt;Open Tasks Surfaced (second run)&lt;a class="headerlink" href="#open-tasks-surfaced-second-run" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Test full GitHub Actions label pipeline end-to-end (todo→dev→test→qa→review→done)&lt;/li&gt;
&lt;li&gt;[ ] Set up cloudflared on on-premise server for Django API tunnel&lt;/li&gt;
&lt;li&gt;[ ] Add CORS origins for Cloudflare Pages domain in Django settings&lt;/li&gt;
&lt;li&gt;[ ] Plan Quartz v5 theme migration (revisit Aug 2026)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing-second-run"&gt;Insights Worth Developing (second run)&lt;a class="headerlink" href="#insights-worth-developing-second-run" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[GitHub Actions as lightweight CI orchestrator — labels as state machine]]&lt;/li&gt;
&lt;li&gt;[[Cloudflare Tunnel as zero-trust proxy — no inbound ports needed]]&lt;/li&gt;
&lt;/ul&gt;
&lt;script type="text/javascript"&gt;if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
    var align = "center",
        indent = "0em",
        linebreak = "false";

    if (false) {
        align = (screen.width &lt; 768) ? "left" : align;
        indent = (screen.width &lt; 768) ? "0em" : indent;
        linebreak = (screen.width &lt; 768) ? 'true' : linebreak;
    }

    var mathjaxscript = document.createElement('script');
    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
    mathjaxscript.type = 'text/javascript';
    mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';

    var configscript = document.createElement('script');
    configscript.type = 'text/x-mathjax-config';
    configscript[(window.opera ? "innerHTML" : "text")] =
        "MathJax.Hub.Config({" +
        "    config: ['MMLorHTML.js']," +
        "    TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
        "    displayAlign: '"+ align +"'," +
        "    displayIndent: '"+ indent +"'," +
        "    showMathMenu: true," +
        "    messageStyle: 'normal'," +
        "    tex2jax: { " +
        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
        "        displayMath: [ ['$$','$$'] ]," +
        "        processEscapes: true," +
        "        preview: 'TeX'," +
        "    }, " +
        "    'HTML-CSS': { " +
        "        availableFonts: ['STIX', 'TeX']," +
        "        preferredFont: 'STIX'," +
        "        styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
        "        linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
        "    }, " +
        "}); " +
        "if ('default' !== 'default') {" +
            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
        "}";

    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
&lt;/script&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-06-02</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-06-02.html" rel="alternate"/><published>2026-06-02T00:00:00+02:00</published><updated>2026-06-02T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-02:/daily-journal-2026-06-02.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tuesday morning spent in exploration mode — part infrastructure research (Cloudflare ecosystem, local LLMs), part creative wandering (Thai digital gardens, domain name brainstorming). The CC-OpenACP project continues with small friction around the Discord interface. No big decisions today, but a lot of useful reference material gathered.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Get …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Tuesday morning spent in exploration mode — part infrastructure research (Cloudflare ecosystem, local LLMs), part creative wandering (Thai digital gardens, domain name brainstorming). The CC-OpenACP project continues with small friction around the Discord interface. No big decisions today, but a lot of useful reference material gathered.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Get the Discord interface working for CC-OpenACP&lt;/li&gt;
&lt;li&gt;[ ] Decide on domain name / personal brand direction (after .ing domain brainstorm)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="infrastructure-ai-tooling"&gt;Infrastructure &amp;amp; AI Tooling&lt;a class="headerlink" href="#infrastructure-ai-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cloudflare-workers-vs-github-actions"&gt;Cloudflare Workers vs GitHub Actions&lt;a class="headerlink" href="#cloudflare-workers-vs-github-actions" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored the Cloudflare ecosystem — Pages for static hosting, Workers for serverless functions, and the full backend suite (KV, D1, R2, Queues, Durable Objects). Clarified that Pages + Workers = full-stack alternative to Vercel, and mapped practical BOL use cases: webhook receivers, API proxies, cron triggers.
→ See [[cloudflare-workers-pages]]&lt;/p&gt;
&lt;h4 id="best-open-source-llm-for-coding"&gt;Best Open Source LLM for Coding&lt;a class="headerlink" href="#best-open-source-llm-for-coding" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Researched best 30B–70B coding LLMs for local/agentic workflows. Clear winner for practical use: Qwen2.5-Coder 32B (Apache 2.0, fits 24GB GPU). Kimi-Dev-72B leads on SWE-bench / repo-level tasks. DeepSeek R1 70B distill best for reasoning and debugging.
→ See [[open-source-coding-llms]]&lt;/p&gt;
&lt;h3 id="cc-openacp-project"&gt;CC-OpenACP Project&lt;a class="headerlink" href="#cc-openacp-project" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-openacp"&gt;CC-OpenACP&lt;a class="headerlink" href="#cc-openacp" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick clarification: &lt;code&gt;/clear&lt;/code&gt; and &lt;code&gt;/compact&lt;/code&gt; are Claude Code slash commands, not OpenACP commands. In OpenACP's Discord interface, &lt;code&gt;/clear&lt;/code&gt; resets session history — but Discord integration isn't working yet. Once active, commands can be typed directly in the session thread.
→ See [[cc-openacp]]&lt;/p&gt;
&lt;h3 id="personal-exploration"&gt;Personal / Exploration&lt;a class="headerlink" href="#personal-exploration" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="popular-thai-persons-personal-websites"&gt;Popular Thai Person's Personal Websites&lt;a class="headerlink" href="#popular-thai-persons-personal-websites" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Researched Thai public figures with Maggie Appleton–style digital gardens. Thai internet culture is heavily platform-centric (Facebook, TikTok, LINE) — indie web culture is rare. Found one genuine example: Prabda Yoon (prabdayoon.net), writer/filmmaker/translator.
→ See [[prabda-yoon]]&lt;/p&gt;
&lt;h4 id="why-top-domains-are-cheap-ing-domain-brainstorm"&gt;Why .top Domains Are Cheap / .ing Domain Brainstorm&lt;a class="headerlink" href="#why-top-domains-are-cheap-ing-domain-brainstorm" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Brainstormed 20 invented .ing-style domains for personal branding. Top picks: nuvox.ing, blynx.ing, zwirk.ing, quorv.ing, nymbl.ing. No decision made — exploring personal brand identity.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix Discord interface in CC-OpenACP project&lt;/li&gt;
&lt;li&gt;[ ] Evaluate Qwen2.5-Coder 32B locally (if GPU &amp;gt;= 20GB VRAM)&lt;/li&gt;
&lt;li&gt;[ ] Decide on personal domain direction&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Cloudflare as full-stack backend]] — viable Vercel/AWS alternative with generous free tier&lt;/li&gt;
&lt;li&gt;[[Thai indie web gap]] — nearly no Thai public figures maintain personal digital gardens; platform culture dominates&lt;/li&gt;
&lt;li&gt;[[Local LLM sweet spot]] — 32B quantized models hit the practical balance of quality vs. hardware cost in 2026&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Prabda Yoon</title><link href="https://pelican-5lg.pages.dev/prabda-yoon.html" rel="alternate"/><published>2026-06-02T00:00:00+02:00</published><updated>2026-06-02T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-02:/prabda-yoon.html</id><summary type="html">&lt;h1 id="prabda-yoon"&gt;Prabda Yoon&lt;a class="headerlink" href="#prabda-yoon" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Thai writer, graphic designer, filmmaker, and translator. Maintains a genuine personal website with essays — rare among Thai public figures.&lt;/p&gt;
&lt;p&gt;One-line: The only prominent Thai public figure with a Maggie Appleton–style digital garden / personal site.&lt;/p&gt;
&lt;h2 id="what-i-know"&gt;What I Know&lt;a class="headerlink" href="#what-i-know" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Website: prabdayoon.net — personal essays and creative writing&lt;/li&gt;
&lt;li&gt;Created and …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h1 id="prabda-yoon"&gt;Prabda Yoon&lt;a class="headerlink" href="#prabda-yoon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Thai writer, graphic designer, filmmaker, and translator. Maintains a genuine personal website with essays — rare among Thai public figures.&lt;/p&gt;
&lt;p&gt;One-line: The only prominent Thai public figure with a Maggie Appleton–style digital garden / personal site.&lt;/p&gt;
&lt;h2 id="what-i-know"&gt;What I Know&lt;a class="headerlink" href="#what-i-know" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Website: prabdayoon.net — personal essays and creative writing&lt;/li&gt;
&lt;li&gt;Created and showran the Netflix series &lt;em&gt;Dalah: Death and the Flowers&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Translated &lt;em&gt;The Catcher in the Rye&lt;/em&gt;, &lt;em&gt;Lolita&lt;/em&gt;, and &lt;em&gt;A Clockwork Orange&lt;/em&gt; into Thai&lt;/li&gt;
&lt;li&gt;Writes personal essays (one on a Thai rap song for an Italian magazine)&lt;/li&gt;
&lt;li&gt;Multi-hyphenate: writer / graphic designer / filmmaker / translator / independent publisher&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="meetings"&gt;Meetings&lt;a class="headerlink" href="#meetings" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id="connected-to"&gt;Connected To&lt;a class="headerlink" href="#connected-to" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;[[Thai indie web gap]] | [[Popular Thai person's personal websites]]&lt;/p&gt;</content><category term="people"/><category term="[person]"/></entry><entry><title>Daily Journal — 2026-06-01</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-06-01.html" rel="alternate"/><published>2026-06-01T00:00:00+02:00</published><updated>2026-06-01T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-06-01:/daily-journal-2026-06-01.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy dev day — most energy went into the Mantine Web App project: received the full mock data layer (Todo + Calendar TypeScript types), diagnosed a persistent AppShell layout bug, and set up Playwright testing with a Definition of Done baked into CLAUDE.md. Also did research on Claude Code remote-control …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy dev day — most energy went into the Mantine Web App project: received the full mock data layer (Todo + Calendar TypeScript types), diagnosed a persistent AppShell layout bug, and set up Playwright testing with a Definition of Done baked into CLAUDE.md. Also did research on Claude Code remote-control alternatives, and circled back to Quartz custom component development.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix AppShell blank-column layout bug in web-mantine-app (Cause B or C most likely — run diagnostic prompt)&lt;/li&gt;
&lt;li&gt;[ ] Try OpenACP for CC-Remote Control — self-hosted multi-platform bridge for Claude Code&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="web-application-project"&gt;Web Application Project&lt;a class="headerlink" href="#web-application-project" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="app-todocalendar-appshell-layout-fix"&gt;App-Todo&amp;amp;Calendar — AppShell Layout Fix&lt;a class="headerlink" href="#app-todocalendar-appshell-layout-fix" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Debugging a persistent blank white column on the left of all pages in the Mantine app. Produced a detailed diagnostic prompt for Claude Code covering five possible causes (double AppShell, empty navbar prop, icon rail outside AppShell, hardcoded CSS offset, width mismatch). Next step: run the diagnostic in the actual codebase.
→ See [[web-mantine-app]] | [[mantine-appshell-layout]]&lt;/p&gt;
&lt;h4 id="app-front-mantine-mock-data-files"&gt;App-Front Mantine — Mock Data Files&lt;a class="headerlink" href="#app-front-mantine-mock-data-files" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Received finalized &lt;code&gt;src/mocks/todo.ts&lt;/code&gt; and &lt;code&gt;src/mocks/calendar.ts&lt;/code&gt;. Todo types include &lt;code&gt;Task&lt;/code&gt;, &lt;code&gt;TaskList&lt;/code&gt;, &lt;code&gt;TodoUser&lt;/code&gt;, &lt;code&gt;Priority&lt;/code&gt;, &lt;code&gt;TaskStatus&lt;/code&gt; with full mock data across 5 lists and 17 tasks. Calendar types use &lt;code&gt;@mantine/schedule&lt;/code&gt; &lt;code&gt;ScheduleEventData&lt;calendareventpayload&gt;&lt;/calendareventpayload&gt;&lt;/code&gt; with one-off events, recurring series (rrule), and override events.
→ See [[web-mantine-app]]&lt;/p&gt;
&lt;h4 id="app-testing-playwright-setup"&gt;App-Testing — Playwright Setup&lt;a class="headerlink" href="#app-testing-playwright-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Set up Playwright E2E testing for the Next.js app with a Definition of Done in CLAUDE.md requiring build + Playwright pass before any task can be called complete. Key config: &lt;code&gt;webServer&lt;/code&gt; block in &lt;code&gt;playwright.config.ts&lt;/code&gt; auto-starts dev server before tests.
→ See [[playwright-nextjs-setup]]&lt;/p&gt;
&lt;h3 id="claude-code-remote-control"&gt;Claude Code Remote Control&lt;a class="headerlink" href="#claude-code-remote-control" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-remote-control-third-party-tools-research"&gt;CC-Remote Control — Third-Party Tools Research&lt;a class="headerlink" href="#cc-remote-control-third-party-tools-research" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Surveyed the landscape of Claude Code remote control tools beyond the official feature. Top picks: &lt;strong&gt;OpenACP&lt;/strong&gt; (multi-platform Telegram/Discord/Slack, one-command install), &lt;strong&gt;TeleClaw&lt;/strong&gt; (Telegram, production-grade, session management), &lt;strong&gt;remote-cli&lt;/strong&gt; (Claude Code SDK-based, &lt;code&gt;/plan&lt;/code&gt; mode). For the LiteLLM proxy + Discord setup, OpenACP is the recommended first try.
→ See [[cc-remote-control]] | [[claude-code-remote-control]]&lt;/p&gt;
&lt;h4 id="cc-openacp-reinstall-procedure"&gt;CC-OpenACP — Reinstall Procedure&lt;a class="headerlink" href="#cc-openacp-reinstall-procedure" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick reinstall of &lt;code&gt;@openacp/cli&lt;/code&gt; via nvm-managed npm. Config at &lt;code&gt;~/openacp-workspace/.openacp/config.json&lt;/code&gt; survives reinstall.&lt;/p&gt;
&lt;h3 id="developer-tooling"&gt;Developer Tooling&lt;a class="headerlink" href="#developer-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="extending-backup-function"&gt;Extending Backup Function&lt;a class="headerlink" href="#extending-backup-function" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Extended the shell &lt;code&gt;backup()&lt;/code&gt; function to support individual files (not just directories). Files get &lt;code&gt;cp&lt;/code&gt; with extension preserved; dirs still get &lt;code&gt;zip&lt;/code&gt; with exclusion list. &lt;code&gt;-f&lt;/code&gt; / &lt;code&gt;--force&lt;/code&gt; flag works for both branches.
→ See [[bash-backup-function]]&lt;/p&gt;
&lt;h4 id="note-taking-quartz-custom-components"&gt;Note Taking — Quartz Custom Components&lt;a class="headerlink" href="#note-taking-quartz-custom-components" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored how to write custom Quartz components. Best starting template: copy &lt;code&gt;Footer.tsx&lt;/code&gt;, gut it, write JSX. Registration requires two steps: export from &lt;code&gt;quartz/components/index.ts&lt;/code&gt; + add to layout in &lt;code&gt;quartz.layout.ts&lt;/code&gt;. The dockerized-quartz container is confirmed running.
→ See [[quartz-pkm-setup]] | [[quartz-custom-components]]&lt;/p&gt;
&lt;h4 id="domain-tld-pricing"&gt;Domain TLD Pricing&lt;a class="headerlink" href="#domain-tld-pricing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick lookup on cheap TLDs for 2026. &lt;code&gt;.top&lt;/code&gt;/&lt;code&gt;.xyz&lt;/code&gt;/&lt;code&gt;.online&lt;/code&gt;/&lt;code&gt;.site&lt;/code&gt; under $2/yr first year but renewal trap is real. Best registrars for value: Spaceship, Porkbun, Namecheap (includes free WHOIS privacy). Key rule: always check 5-year total cost, not year-1 price.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Run AppShell diagnostic prompt in web-mantine-app codebase (Cause B/C check)&lt;/li&gt;
&lt;li&gt;[ ] Add sort + filter to Todo DataTable&lt;/li&gt;
&lt;li&gt;[ ] Wire Drawer for task detail view in Todo module&lt;/li&gt;
&lt;li&gt;[ ] Try OpenACP install: &lt;code&gt;one-command wizard&lt;/code&gt; → connect to Discord bot + LiteLLM proxy&lt;/li&gt;
&lt;li&gt;[ ] Write first Quartz custom component (note counter) — start from &lt;code&gt;Footer.tsx&lt;/code&gt; copy&lt;/li&gt;
&lt;li&gt;[ ] Set &lt;code&gt;ALLOWED_USER_ID&lt;/code&gt; and &lt;code&gt;PROJECT_DIR&lt;/code&gt; in Claude Code Discord bot config&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Playwright webServer config]] — eliminates manual dev server management in CI/local testing&lt;/li&gt;
&lt;li&gt;[[Domain renewal trap]] — registrars use loss-leader year-1 pricing; 5-year TCO view is the right frame&lt;/li&gt;
&lt;li&gt;[[OpenACP vs official remote control]] — third-party tools have richer multi-platform support than official Claude remote control&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-31</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-31.html" rel="alternate"/><published>2026-05-31T00:00:00+02:00</published><updated>2026-05-31T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-31:/daily-journal-2026-05-31.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Sunday on frontend development. The day was primarily spent on the Mantine web app — generating mock data structures for the Todo and Calendar modules, and debugging an AppShell layout issue that was causing a blank white column on every page. Also did a landscape survey on tools …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Sunday on frontend development. The day was primarily spent on the Mantine web app — generating mock data structures for the Todo and Calendar modules, and debugging an AppShell layout issue that was causing a blank white column on every page. Also did a landscape survey on tools for remotely controlling Claude Code via messaging bots.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Resolve AppShell blank-column bug in the Web-Mantine app&lt;/li&gt;
&lt;li&gt;[ ] Continue building out Web-Mantine app components (Todo, Calendar) using the new mock data&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="web-app-mantine"&gt;Web App — Mantine&lt;a class="headerlink" href="#web-app-mantine" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Web-Mantine&lt;/strong&gt; and &lt;strong&gt;Web-Todo App&lt;/strong&gt; were both part of the same ongoing Web Application project. Claude generated fully-typed TypeScript mock data files for the Todo (&lt;code&gt;todo.ts&lt;/code&gt;) and Calendar (&lt;code&gt;calendar.ts&lt;/code&gt;) modules, defining domain types (&lt;code&gt;Task&lt;/code&gt;, &lt;code&gt;TaskList&lt;/code&gt;, &lt;code&gt;TaskStatus&lt;/code&gt;, &lt;code&gt;Priority&lt;/code&gt;, &lt;code&gt;AppCalendarEvent&lt;/code&gt;) and seeding realistic data including recurring calendar events via &lt;code&gt;@mantine/schedule&lt;/code&gt;. A separate session dealt with a persistent blank-column layout bug caused by AppShell configuration issues.
→ See [[web-mantine-app]] | [[mantine-appshell-layout]]&lt;/p&gt;
&lt;h3 id="claude-code-remote-control-alternatives"&gt;Claude Code Remote Control Alternatives&lt;a class="headerlink" href="#claude-code-remote-control-alternatives" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Surveyed community and third-party tools for controlling Claude Code remotely via messaging bots. The official Channels feature (Telegram/Discord, March 2026) only works with claude.ai OAuth — not with local proxies. &lt;strong&gt;Claude-Code-Remote&lt;/strong&gt; is the best match for local-proxy setups. &lt;strong&gt;OpenClaw&lt;/strong&gt; (337K+ GitHub stars) is a broader multi-platform AI agent. &lt;strong&gt;NanoClaw&lt;/strong&gt; is a minimal security-focused alternative.
→ See [[claude-code-remote-control]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix AppShell blank-column layout bug (check for double AppShell stacking or navbar width mismatch)&lt;/li&gt;
&lt;li&gt;[ ] Complete Todo page: add sort/filter to DataTable, wire up Drawer, connect mock API service&lt;/li&gt;
&lt;li&gt;[ ] Evaluate Claude-Code-Remote for local proxy compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[AppShell double-stacking is a common Mantine gotcha]] — when a root layout and route group layout both declare &lt;code&gt;&lt;appshell&gt;&lt;/appshell&gt;&lt;/code&gt;, double left offset appears&lt;/li&gt;
&lt;li&gt;[[OpenClaw vs NanoClaw]] — OpenClaw traded security for scale (430K LOC), NanoClaw is the minimal answer (5 files, Docker isolation)&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-30</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-30.html" rel="alternate"/><published>2026-05-30T00:00:00+02:00</published><updated>2026-05-30T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-30:/daily-journal-2026-05-30.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Saturday of AI tooling and stack research. The main thread was evaluating MiniMax M2.7 as the LLM backend for a new admin portal — stack decided as Mantine v9 + Next.js + M2.7 via OpenAI-compatible SDK. Also explored y-router as a cleaner alternative to the LiteLLM proxy …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Saturday of AI tooling and stack research. The main thread was evaluating MiniMax M2.7 as the LLM backend for a new admin portal — stack decided as Mantine v9 + Next.js + M2.7 via OpenAI-compatible SDK. Also explored y-router as a cleaner alternative to the LiteLLM proxy issue for running non-Anthropic models in Claude Code. Quick utility questions filled in the gaps: killing dev server ports and using gstack's post-coding workflow.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Scaffold the Mantine + Next.js + MiniMax M2.7 admin portal starter project&lt;/li&gt;
&lt;li&gt;[ ] Test y-router (&lt;code&gt;https://cc.yovy.app&lt;/code&gt;) as alternative to LiteLLM proxy for CC-Autonomous&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-stack-research"&gt;AI Stack Research&lt;a class="headerlink" href="#ai-stack-research" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="minimax-27-overview-mantine-llm-setup"&gt;Minimax 2.7 overview — Mantine + LLM Setup&lt;a class="headerlink" href="#minimax-27-overview-mantine-llm-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Researched how to give Minimax M2.7 accurate awareness of Mantine v9 (post-training cutoff UI library). Three options: MCP server (&lt;code&gt;@mantine/mcp-server&lt;/code&gt;), llms.txt URL, or prebuilt skills. Recommendation: MCP server + skills combo for full coverage.
→ See [[reference/mantine-llm-setup]]&lt;/p&gt;
&lt;h4 id="mui-vs-tailwindshadcn-comparison-minimax-m27-api"&gt;MUI vs Tailwind/shadcn comparison — MiniMax M2.7 API&lt;a class="headerlink" href="#mui-vs-tailwindshadcn-comparison-minimax-m27-api" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Stack decision conversation: Mantine + Next.js + MiniMax M2.7 is confirmed as the admin portal stack. M2.7 API is OpenAI-compatible — just swap &lt;code&gt;baseURL&lt;/code&gt; to &lt;code&gt;https://api.minimax.io/v1&lt;/code&gt;. Together AI is a managed alternative. Recommended params: temp=1.0, top_p=0.95. Next step: scaffold starter project.
→ See [[reference/minimax-m27-api]] | [[efforts/on/minimax-admin-portal]]&lt;/p&gt;
&lt;h3 id="claude-code-tooling"&gt;Claude Code Tooling&lt;a class="headerlink" href="#claude-code-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-autonomous-y-router-for-openrouter-models"&gt;CC-Autonomous — y-router for OpenRouter models&lt;a class="headerlink" href="#cc-autonomous-y-router-for-openrouter-models" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored running Claude Code with non-Anthropic models via OpenRouter + y-router. y-router bridges Anthropic API format → OpenAI format. Hosted version (&lt;code&gt;https://cc.yovy.app&lt;/code&gt;) enables GitHub Actions with GLM-4.5, Gemini, etc. Key env vars: &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;, &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;, blank &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;. Warning: not reliable for production — tool calls may break with non-Anthropic providers.
→ See [[reference/claude-code-openrouter-y-router]] | [[efforts/on/litellm-local-llm]]&lt;/p&gt;
&lt;h4 id="identifying-the-next-command-after-coding-gstack-workflow"&gt;Identifying the next command after coding — gstack workflow&lt;a class="headerlink" href="#identifying-the-next-command-after-coding-gstack-workflow" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Researched gstack (Garry Tan's 23-tool Claude Code setup) for the post-coding phase. Standard sequence: &lt;code&gt;/review → /qa &lt;url&gt; → /ship → /land-and-deploy → /canary&lt;/url&gt;&lt;/code&gt;. Sprint order: Think → Plan → Build → Review → Test → Ship → Reflect.
→ See [[reference/gstack-post-coding-workflow]]&lt;/p&gt;
&lt;h3 id="dev-utilities"&gt;Dev Utilities&lt;a class="headerlink" href="#dev-utilities" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="kill-process-on-port-3000"&gt;Kill process on port 3000&lt;a class="headerlink" href="#kill-process-on-port-3000" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick reference: &lt;code&gt;lsof -ti:3000 | xargs kill -9&lt;/code&gt;. Also: Next.js 15 moved turbopack from &lt;code&gt;experimental.turbopack&lt;/code&gt; to top-level &lt;code&gt;turbopack: true&lt;/code&gt; in &lt;code&gt;next.config.ts&lt;/code&gt;.
→ See [[reference/kill-process-by-port]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Scaffold Mantine + Next.js + M2.7 admin portal starter project&lt;/li&gt;
&lt;li&gt;[ ] Set up &lt;code&gt;@mantine/mcp-server&lt;/code&gt; in Claude Desktop MCP config&lt;/li&gt;
&lt;li&gt;[ ] Test y-router hosted version for CC-Autonomous GitHub Actions&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;/review → /qa → /ship&lt;/code&gt; gstack workflow to existing project&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[OpenAI SDK as universal LLM client — swap baseURL for any compatible provider]]&lt;/li&gt;
&lt;li&gt;[[y-router pattern — Anthropic↔OpenAI format bridge for Claude Code]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-29</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-29.html" rel="alternate"/><published>2026-05-29T00:00:00+02:00</published><updated>2026-05-29T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-29:/daily-journal-2026-05-29.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A mixed day of tooling and health research. Most of the technical work continued the LiteLLM/local-LLM thread — this time expanding to include MiniMax as a cloud model alongside Ollama. The CC-Remote Control effort moved forward with a full Discord bot implementation using &lt;code&gt;--resume&lt;/code&gt; for persistent Claude Code sessions …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A mixed day of tooling and health research. Most of the technical work continued the LiteLLM/local-LLM thread — this time expanding to include MiniMax as a cloud model alongside Ollama. The CC-Remote Control effort moved forward with a full Discord bot implementation using &lt;code&gt;--resume&lt;/code&gt; for persistent Claude Code sessions. Also did a light exploration of GitHub Projects V2 board automation to complement an existing label-based workflow.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Discord bot for remote Claude Code control is now fully architected — needs deployment and testing&lt;/li&gt;
&lt;li&gt;[ ] LiteLLM config updated to include MiniMax alongside local LLM — verify MiniMax API key works end-to-end&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tooling"&gt;AI Tooling&lt;a class="headerlink" href="#ai-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="configuring-local-llm-and-minimax-on-litellm"&gt;Configuring local LLM and Minimax on LiteLLM&lt;a class="headerlink" href="#configuring-local-llm-and-minimax-on-litellm" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Asked how to add both a local Ollama model and the MiniMax cloud API to LiteLLM &lt;code&gt;config.yaml&lt;/code&gt;. Claude provided working config snippets for both. The Ollama route uses &lt;code&gt;ollama/&lt;model&gt;&lt;/model&gt;&lt;/code&gt; prefix with &lt;code&gt;api_base: http://localhost:11434&lt;/code&gt;; MiniMax uses &lt;code&gt;minimax/&lt;model&gt;&lt;/model&gt;&lt;/code&gt; prefix with key from env. Question left open: which local runtime (Ollama vs LM Studio) is in use.
→ See [[reference/litellm-minimax-config]]&lt;/p&gt;
&lt;h4 id="minimax-quota-monitor-troubleshooting"&gt;Minimax (quota monitor troubleshooting)&lt;a class="headerlink" href="#minimax-quota-monitor-troubleshooting" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Short conversation debugging a &lt;code&gt;rm -f /tmp/minimax-quota-monitor.state&lt;/code&gt; command that was failing. Claude asked for the error message and where the command was being run. Conversation inconclusive — likely a permissions or path issue.&lt;/p&gt;
&lt;h4 id="cc-remote-control"&gt;CC-Remote Control&lt;a class="headerlink" href="#cc-remote-control" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Full Discord bot implementation architected that wraps &lt;code&gt;claude -p&lt;/code&gt; with &lt;code&gt;--resume &lt;session_id&gt;&lt;/session_id&gt;&lt;/code&gt; to maintain persistent Claude Code sessions per Discord channel. Each channel maps to one session ID, stored in a Python dict. Includes &lt;code&gt;!reset&lt;/code&gt; and &lt;code&gt;!session&lt;/code&gt; commands. Bot streams output and splits messages over 2000 chars. Designed to run under tmux for persistence.
→ See [[efforts/on/cc-remote-control]] | [[reference/claude-code-discord-hook]]&lt;/p&gt;
&lt;h3 id="devops-automation"&gt;DevOps / Automation&lt;a class="headerlink" href="#devops-automation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="auto-github-action"&gt;Auto - GitHub Action&lt;a class="headerlink" href="#auto-github-action" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored GitHub Projects V2 board automation as a visual layer on top of an existing label-based workflow (&lt;code&gt;status:dev&lt;/code&gt;, &lt;code&gt;status:qa&lt;/code&gt;). Recommended Option A: keep label triggers, add a Project board that mirrors them via built-in column automation. No code changes needed — just configure column workflows in the board settings.
→ See [[reference/github-projects-v2-automation]]&lt;/p&gt;
&lt;h3 id="health"&gt;Health&lt;a class="headerlink" href="#health" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="whey-protein-qa"&gt;ประโยชน์และข้อควรระวังของเวย์โปรตีน (Whey Protein Q&amp;amp;A)&lt;a class="headerlink" href="#whey-protein-qa" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick Thai-language Q&amp;amp;A on whey protein: benefits (convenient protein source, high BCAA, muscle repair), cautions (unnecessary if diet is already sufficient, lactose intolerance risk with concentrate, calorie accumulation). Recommendation: useful for regular exercisers with insufficient dietary protein; whole food is fine otherwise. No follow-up tasks.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Deploy Discord bot (CC-Remote Control) and test &lt;code&gt;--resume&lt;/code&gt; session persistence&lt;/li&gt;
&lt;li&gt;[ ] Verify MiniMax API key and test &lt;code&gt;minimax/MiniMax-Text-01&lt;/code&gt; via LiteLLM proxy&lt;/li&gt;
&lt;li&gt;[ ] Resolve Minimax quota monitor state file permission issue (&lt;code&gt;rm -f&lt;/code&gt; failing)&lt;/li&gt;
&lt;li&gt;[ ] Set up GitHub Projects V2 board with column automation (Option A workflow)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Claude Code session persistence via --resume opens up remote-control patterns]]&lt;/li&gt;
&lt;li&gt;[[LiteLLM as a unified proxy for local + cloud LLMs]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Weekly Review — 2026-W22</title><link href="https://pelican-5lg.pages.dev/weekly-review-2026-w22.html" rel="alternate"/><published>2026-05-29T00:00:00+02:00</published><updated>2026-05-29T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-29:/weekly-review-2026-w22.html</id><summary type="html">&lt;h2 id="week-of-mon-25-sun-31-may-2026"&gt;Week of Mon 25 – Sun 31 May 2026&lt;a class="headerlink" href="#week-of-mon-25-sun-31-may-2026" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A three-day active week (Tue 26 – Thu 28 May). The main themes were automation, architecture clarity, and Hermes infrastructure. The GitHub issue-to-PR autocode pipeline was wired up end-to-end using Claude Code Action and Z.ai. Two long-running ambiguities were resolved: why …&lt;/p&gt;</summary><content type="html">&lt;h2 id="week-of-mon-25-sun-31-may-2026"&gt;Week of Mon 25 – Sun 31 May 2026&lt;a class="headerlink" href="#week-of-mon-25-sun-31-may-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A three-day active week (Tue 26 – Thu 28 May). The main themes were automation, architecture clarity, and Hermes infrastructure. The GitHub issue-to-PR autocode pipeline was wired up end-to-end using Claude Code Action and Z.ai. Two long-running ambiguities were resolved: why Remote Control doesn't work with local proxies, and whether all-backend-first is the right build order for the Django/Next.js SaaS (it isn't). On Wednesday, GitHub Actions mechanics were deepened (GITHUB_OUTPUT, Python webhooks, Projects V2). On Thursday, focus shifted to Hermes Docker profile migration — a new reference note was created documenting the full copy workflow.&lt;/p&gt;
&lt;h3 id="topics-covered"&gt;Topics Covered&lt;a class="headerlink" href="#topics-covered" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| Topic | Days Active | Note |
|---|---|---|
| GitHub Actions autocode (issue → PR via Claude Code Action + Z.ai) | Tue 26, Wed 27, Thu 28 | [[github-actions-guide]] |
| Claude Code Remote Control — API keys vs OAuth identity layer | Tue 26 | [[claude-code-remote-control]] |
| Vertical slice development — solo dev build order | Tue 26 | [[vertical-slice-solo-dev]] |
| Vuexy Next.js / Django SaaS project — build order confirmed | Tue 26 | [[vuexy-nextjs-frontend]] |
| Hermes Docker profile management | Thu 28 | [[hermes-docker-profile-management]] |&lt;/p&gt;
&lt;h3 id="key-decisions-this-week"&gt;Key Decisions This Week&lt;a class="headerlink" href="#key-decisions-this-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Autocode workflow&lt;/strong&gt;: Use &lt;code&gt;anthropics/claude-code-action@v1&lt;/code&gt; with Z.ai proxy (&lt;code&gt;glm-4.5-air&lt;/code&gt; for haiku, &lt;code&gt;glm-5.1&lt;/code&gt; for sonnet/opus). Label flow: &lt;code&gt;autocode&lt;/code&gt; → &lt;code&gt;in-progress&lt;/code&gt; → &lt;code&gt;in-review&lt;/code&gt;. Secret needed: &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remote Control with proxy&lt;/strong&gt;: Not possible to use Remote Control when inference is routed through a local proxy. Session registration requires &lt;code&gt;claude.ai&lt;/code&gt; OAuth — inference-only API keys are architecturally insufficient.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build order for Django/Next.js SaaS&lt;/strong&gt;: Vertical slices confirmed as correct. All-backend-first fails for solo devs because it removes the parallelism that makes it rational for teams. Existing Jira plan already uses vertical slices — no changes needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes profile migration&lt;/strong&gt;: Copy the entire profile folder (not individual files) from the Docker volume mount — simpler and safer. Full folder captures memories, conversations, and settings together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions data flow&lt;/strong&gt;: Use &lt;code&gt;$GITHUB_OUTPUT&lt;/code&gt; + step &lt;code&gt;id:&lt;/code&gt; for passing values between steps; replace &lt;code&gt;curl&lt;/code&gt; webhooks with Python scripts for any conditional logic before firing.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="open-tasks-carried-into-next-week"&gt;Open Tasks Carried Into Next Week&lt;a class="headerlink" href="#open-tasks-carried-into-next-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Create GitHub labels: &lt;code&gt;autocode&lt;/code&gt;, &lt;code&gt;in-progress&lt;/code&gt;, &lt;code&gt;in-review&lt;/code&gt; — from [[github-actions-guide]]&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt; secret to GitHub repo — from [[github-actions-guide]]&lt;/li&gt;
&lt;li&gt;[ ] Run Phase 1 Vuexy audit in Claude Code (the 12 &lt;code&gt;claude-docs/&lt;/code&gt; prompt) — from [[vuexy-nextjs-frontend]]&lt;/li&gt;
&lt;li&gt;[ ] Paste Lead agent prompt to kick off User Management Phase 4 (T068–T088) — from [[vuexy-nextjs-frontend]]&lt;/li&gt;
&lt;li&gt;[ ] Download Vuexy Next.js into &lt;code&gt;frontend/&lt;/code&gt; — from [[vuexy-nextjs-frontend]]&lt;/li&gt;
&lt;li&gt;[ ] Create &lt;code&gt;CLAUDE.md&lt;/code&gt; at repo root — from [[vuexy-nextjs-frontend]]&lt;/li&gt;
&lt;li&gt;[ ] Run the Hermes profile copy on target Docker host and verify — from [[hermes-agent-orchestration]]&lt;/li&gt;
&lt;li&gt;[ ] Decide on first GitHub Action type for Hermes and continue conversation — from [[hermes-agent-orchestration]]&lt;/li&gt;
&lt;li&gt;[ ] Verify splator@gmail.com sign-in alert (May 25 Google notification)&lt;/li&gt;
&lt;li&gt;[ ] Send W22 weekly Gmail draft (ID: r-3780450707307232022)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="insights-promoted-to-evergreen"&gt;Insights Promoted to Evergreen&lt;a class="headerlink" href="#insights-promoted-to-evergreen" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[[api-keys-vs-oauth-identity-layer]] — API keys are inference-only; OAuth establishes the identity+session layer that Remote Control and Channels require&lt;/li&gt;
&lt;/ul&gt;</content><category term="weekly"/><category term="[weekly]"/></entry><entry><title>Daily Journal — 2026-05-28</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-28.html" rel="alternate"/><published>2026-05-28T00:00:00+02:00</published><updated>2026-05-28T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-28:/daily-journal-2026-05-28.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Thursday working through Hermes infrastructure — specifically how profiles are stored and moved between Docker instances. Also started exploring GitHub Actions automation, though that thread is just getting off the ground. The Hermes Docker work is building towards a more robust multi-instance setup.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Clarify Hermes …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Thursday working through Hermes infrastructure — specifically how profiles are stored and moved between Docker instances. Also started exploring GitHub Actions automation, though that thread is just getting off the ground. The Hermes Docker work is building towards a more robust multi-instance setup.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Clarify Hermes profile migration approach between Docker hosts (follow up with actual copy command run)&lt;/li&gt;
&lt;li&gt;[ ] Continue the GitHub Actions setup conversation — decide what trigger to build first&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="hermes-moving-profiles-between-docker-instances"&gt;Hermes — Moving Profiles Between Docker Instances&lt;a class="headerlink" href="#hermes-moving-profiles-between-docker-instances" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Asked how to move a Hermes profile to another Docker instance. Key insight: copy the whole profile folder from the Docker volume mount — simpler and safer than cherry-picking files. Next step is actually executing the copy on the target host.
→ See [[hermes-docker-profile-management]] | [[hermes-agent-orchestration]]&lt;/p&gt;
&lt;h3 id="auto-github-action"&gt;Auto — GitHub Action&lt;a class="headerlink" href="#auto-github-action" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Just getting started on GitHub Actions automation. Claude asked which type of action to build first (push-triggered Python script, Issue-based trigger, cron schedule, or other). No selection made yet — thread to continue.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Run the Hermes profile copy command on target Docker host and verify profile loads correctly&lt;/li&gt;
&lt;li&gt;[ ] Decide on first GitHub Action type and continue the setup conversation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Hermes multi-instance setup patterns]] — running multiple Hermes Docker instances with profile switching could be a useful workflow pattern worth documenting fully&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-27</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-27.html" rel="alternate"/><published>2026-05-27T00:00:00+02:00</published><updated>2026-05-27T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-27:/daily-journal-2026-05-27.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A quieter Wednesday with no meetings — good conditions for heads-down work. The automated pipelines ran cleanly in the morning and the day's only manual conversation deepened understanding of GitHub Actions mechanics: data flow between steps, Python-powered webhooks, and the built-in Projects kanban. The weekly PKM consolidator also ran today …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A quieter Wednesday with no meetings — good conditions for heads-down work. The automated pipelines ran cleanly in the morning and the day's only manual conversation deepened understanding of GitHub Actions mechanics: data flow between steps, Python-powered webhooks, and the built-in Projects kanban. The weekly PKM consolidator also ran today, closing out W22 with a new evergreen note on API keys vs OAuth identity.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Check Google Account sign-in alert for splator@gmail.com (flagged in morning brief)&lt;/li&gt;
&lt;li&gt;[ ] Create GitHub labels (&lt;code&gt;autocode&lt;/code&gt;, &lt;code&gt;in-progress&lt;/code&gt;, &lt;code&gt;in-review&lt;/code&gt;) and add &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt; secret to target repo&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="auto-github-action"&gt;Auto - GitHub Action&lt;a class="headerlink" href="#auto-github-action" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Follow-up Q&amp;amp;A on GitHub Actions mechanics — answered four specific questions: (1) GitHub Projects V2 is a real built-in kanban with native automation rules, but custom logic still requires Actions on top; (2) workflows run on GitHub-hosted VMs by default, with &lt;code&gt;runs-on: self-hosted&lt;/code&gt; available for local machine access; (3) scripts live in the repo under &lt;code&gt;scripts/&lt;/code&gt; and are checked out automatically, with data flowing between steps via &lt;code&gt;$GITHUB_OUTPUT&lt;/code&gt; and &lt;code&gt;env:&lt;/code&gt;; (4) curl webhooks can be replaced with Python scripts for conditional logic before firing.
→ See [[github-actions-guide]]&lt;/p&gt;
&lt;h2 id="automated-tasks"&gt;Automated Tasks&lt;a class="headerlink" href="#automated-tasks" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Morning Brief&lt;/strong&gt; — Calendar clear. One alert: new sign-in to splator@gmail.com (May 25, recovery email r.phuriwaj@gmail.com notified).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code Analytics&lt;/strong&gt; — 23 members, &lt;strong&gt;344,063 lines&lt;/strong&gt; total this month. Top: kraitheps (47,993), noppawits (39,169), phuriwajr (31,146). CSV saved to Analytics/20260527.csv.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weekly PKM Consolidator (W22)&lt;/strong&gt; — Consolidated 4 topics: GitHub Actions autocode pipeline, Claude Code Remote Control (API keys vs OAuth), vertical slice dev strategy, Vuexy/Django effort. New evergreen: [[api-keys-vs-oauth-identity-layer]].&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatPRD Blog&lt;/strong&gt; — No new posts today (last post May 25).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Verify splator@gmail.com sign-in (May 25 Google alert)&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;autocode&lt;/code&gt;, &lt;code&gt;in-progress&lt;/code&gt;, &lt;code&gt;in-review&lt;/code&gt; labels + &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt; secret to target GitHub repo&lt;/li&gt;
&lt;li&gt;[ ] W22 weekly Gmail draft (ID: r-3780450707307232022) still needs manual sending&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[GitHub Projects V2 vs GitHub Actions — when native kanban is enough vs when you need workflow logic]]&lt;/li&gt;
&lt;li&gt;[[GITHUB_OUTPUT — clean pattern for multi-step data passing in CI]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>API Keys vs OAuth — Inference-Only vs Identity+Session Layer</title><link href="https://pelican-5lg.pages.dev/api-keys-vs-oauth-inference-only-vs-identitysession-layer.html" rel="alternate"/><published>2026-05-26T00:00:00+02:00</published><updated>2026-05-26T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-26:/api-keys-vs-oauth-inference-only-vs-identitysession-layer.html</id><summary type="html">&lt;h1 id="api-keys-vs-oauth-inference-only-vs-identitysession-layer"&gt;API Keys vs OAuth — Inference-Only vs Identity+Session Layer&lt;a class="headerlink" href="#api-keys-vs-oauth-inference-only-vs-identitysession-layer" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An API key and an OAuth token are not interchangeable credentials. They operate at different layers of a system: one authorises a request, the other establishes an identity.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An API key is &lt;strong&gt;inference-only&lt;/strong&gt;: it proves that a request is …&lt;/p&gt;</summary><content type="html">&lt;h1 id="api-keys-vs-oauth-inference-only-vs-identitysession-layer"&gt;API Keys vs OAuth — Inference-Only vs Identity+Session Layer&lt;a class="headerlink" href="#api-keys-vs-oauth-inference-only-vs-identitysession-layer" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;An API key and an OAuth token are not interchangeable credentials. They operate at different layers of a system: one authorises a request, the other establishes an identity.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An API key is &lt;strong&gt;inference-only&lt;/strong&gt;: it proves that a request is billable to a specific account, and nothing more. An OAuth token (from a proper &lt;code&gt;auth login&lt;/code&gt; flow) establishes a &lt;strong&gt;full identity and session&lt;/strong&gt;: it ties a request to a specific human user with a subscription, a registered device, and a persistent session on the provider's servers.&lt;/p&gt;
&lt;p&gt;Features that depend on the identity layer — session registration, device routing, push notifications, subscription verification — cannot be unlocked with an API key because those features are architecturally downstream of the identity layer, not the billing layer.&lt;/p&gt;
&lt;h2 id="key-points"&gt;Key Points&lt;a class="headerlink" href="#key-points" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;API key → proves "this request is billable to account X"; grants model access only&lt;/li&gt;
&lt;li&gt;OAuth → proves "this is human user Y with a subscription, a phone, and a registered session"; grants identity-dependent features&lt;/li&gt;
&lt;li&gt;The two are architecturally distinct: API keys work at the inference layer, OAuth works at the session/identity layer&lt;/li&gt;
&lt;li&gt;Pointing an API key at a local proxy (LiteLLM, DeepSeek) keeps the key in the inference layer; it does not "upgrade" to identity-level access even if the underlying Anthropic key is valid&lt;/li&gt;
&lt;li&gt;To use identity-dependent features (e.g. Claude Code Remote Control, Channels, push notifications) alongside a local proxy: authenticate via OAuth for session registration, and accept that identity-layer traffic routes through the provider's real servers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="practical-corollary-for-claude-code"&gt;Practical Corollary for Claude Code&lt;a class="headerlink" href="#practical-corollary-for-claude-code" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Capability | API key (incl. proxy) | claude.ai OAuth |
|---|---|---|
| Call the model | ✅ | ✅ |
| Register a Remote Control session | ❌ | ✅ |
| Route messages between devices | ❌ | ✅ |
| Push notifications | ❌ | ✅ |
| Subscription/identity verification | ❌ | ✅ |&lt;/p&gt;
&lt;h2 id="week-of-2026-w22"&gt;Week of 2026-W22&lt;a class="headerlink" href="#week-of-2026-w22" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Surfaced while clarifying why Claude Code Remote Control doesn't work with a local LiteLLM/DeepSeek proxy even when the API key is valid. The confusion arose from treating the API key as a general-purpose credential; the real constraint is that session registration is an identity-layer operation that must go through &lt;code&gt;claude.ai&lt;/code&gt;, not the inference endpoint.&lt;/p&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Journal dates: 2026-05-26
Reference note: [[claude-code-remote-control]] (Updates — 2026-05-26)&lt;/p&gt;</content><category term="evergreen"/><category term="[api-keys"/><category term="oauth"/><category term="authentication"/><category term="claude-code"/><category term="remote-control"/><category term="identity]"/></entry><entry><title>Daily Journal — 2026-05-26</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-26.html" rel="alternate"/><published>2026-05-26T00:00:00+02:00</published><updated>2026-05-26T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-26:/daily-journal-2026-05-26.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused day on AI tooling and project architecture. Wired up GitHub Actions to auto-implement issues via Claude Code using the Z.ai proxy, which makes the "write issue → get PR" loop fully automated with no manual coding step. Also clarified a persistent confusion around why Claude Code Remote …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused day on AI tooling and project architecture. Wired up GitHub Actions to auto-implement issues via Claude Code using the Z.ai proxy, which makes the "write issue → get PR" loop fully automated with no manual coding step. Also clarified a persistent confusion around why Claude Code Remote Control doesn't work with local LiteLLM setups — it's an identity/session layer problem, not a model access problem. Capped the day by stress-testing the Django/Next.js project's build order and confirming vertical slices are the right strategy.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] GitHub Actions autocode workflow set up — write issue, add label, PR appears&lt;/li&gt;
&lt;li&gt;[ ] Confirmed vertical slice approach is correct for solo Django/Next.js project — no reordering of Jira plan needed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tooling"&gt;AI Tooling&lt;a class="headerlink" href="#ai-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="github-project-automation-with-claude"&gt;GitHub project automation with Claude&lt;a class="headerlink" href="#github-project-automation-with-claude" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Adapted a GitHub Actions workflow to auto-implement issues using &lt;code&gt;anthropics/claude-code-action@v1&lt;/code&gt; with Z.ai as the proxy backend. The workflow triggers on the &lt;code&gt;autocode&lt;/code&gt; label, runs Claude Code against the issue body, and opens a PR when done. Labels shift: &lt;code&gt;autocode&lt;/code&gt; → &lt;code&gt;in-progress&lt;/code&gt; → &lt;code&gt;in-review&lt;/code&gt;. Z.ai uses &lt;code&gt;glm-4.5-air&lt;/code&gt; for haiku calls and &lt;code&gt;glm-5.1&lt;/code&gt; for sonnet/opus, so cost is naturally optimised.
→ See [[github-actions-guide]]&lt;/p&gt;
&lt;h4 id="cc-remote-control"&gt;CC-Remote Control&lt;a class="headerlink" href="#cc-remote-control" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Clarified why API keys are inference-only and cannot activate Remote Control or Channels. Those features need OAuth login to claude.ai for session registration, identity verification, and push notifications. Local LiteLLM/DeepSeek proxy setups are fundamentally incompatible with Remote Control — the inference path must go through Anthropic's actual API.
→ See [[claude-code-remote-control]]&lt;/p&gt;
&lt;h3 id="project-development"&gt;Project Development&lt;a class="headerlink" href="#project-development" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="django-vs-nextjs-frontend-choice"&gt;Django vs Next.js frontend choice&lt;a class="headerlink" href="#django-vs-nextjs-frontend-choice" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Debated all-backend-first vs all-frontend-first vs vertical slices for the ongoing Django + Next.js SaaS. Verdict: vertical slices (model → endpoint → frontend per feature) are correct for a solo developer on a 21-week plan. The existing Jira structure already uses this approach — no change needed. Phase 0–1 hardens the core data model before any feature work begins, which neutralises the main argument for all-backend-first.
→ See [[vertical-slice-solo-dev]] | [[vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Create GitHub labels: &lt;code&gt;autocode&lt;/code&gt;, &lt;code&gt;in-progress&lt;/code&gt;, &lt;code&gt;in-review&lt;/code&gt; (&lt;code&gt;gh label create&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt; secret to GitHub repo for autocode workflow&lt;/li&gt;
&lt;li&gt;[ ] Run Phase 1 Vuexy audit in Claude Code (paste the 12 &lt;code&gt;claude-docs/&lt;/code&gt; prompt)&lt;/li&gt;
&lt;li&gt;[ ] Paste Lead agent prompt to kick off User Management Phase 4 (T068–T088)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Vertical slice development wins for solo dev because sequential means no parallelism]]&lt;/li&gt;
&lt;li&gt;[[API keys vs OAuth — inference-only vs identity+session layer distinction]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Addy Osmani</title><link href="https://pelican-5lg.pages.dev/addy-osmani.html" rel="alternate"/><published>2026-05-24T00:00:00+02:00</published><updated>2026-05-24T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-24:/addy-osmani.html</id><summary type="html">&lt;h1 id="addy-osmani"&gt;Addy Osmani&lt;a class="headerlink" href="#addy-osmani" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Engineering Lead for Chrome at Google. Creator of &lt;code&gt;agent-skills&lt;/code&gt; (43K GitHub stars).
Known for translating Google-scale engineering culture into open-source tooling for AI coding agents.&lt;/p&gt;
&lt;h2 id="what-i-know"&gt;What I Know&lt;a class="headerlink" href="#what-i-know" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Leads the Chrome browser engineering team at Google&lt;/li&gt;
&lt;li&gt;Created &lt;code&gt;addyosmani/agent-skills&lt;/code&gt; — 23 production-grade skills for AI coding agents covering the …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h1 id="addy-osmani"&gt;Addy Osmani&lt;a class="headerlink" href="#addy-osmani" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Engineering Lead for Chrome at Google. Creator of &lt;code&gt;agent-skills&lt;/code&gt; (43K GitHub stars).
Known for translating Google-scale engineering culture into open-source tooling for AI coding agents.&lt;/p&gt;
&lt;h2 id="what-i-know"&gt;What I Know&lt;a class="headerlink" href="#what-i-know" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Leads the Chrome browser engineering team at Google&lt;/li&gt;
&lt;li&gt;Created &lt;code&gt;addyosmani/agent-skills&lt;/code&gt; — 23 production-grade skills for AI coding agents covering the full dev lifecycle (Define → Plan → Build → Verify → Review → Ship)&lt;/li&gt;
&lt;li&gt;Skills encode Google engineering best practices: Hyrum's Law, the Beyonce Rule, Chesterton's Fence, test pyramid, trunk-based development, Shift Left CI/CD&lt;/li&gt;
&lt;li&gt;Notable unique skills: &lt;code&gt;doubt-driven-development&lt;/code&gt; (adversarial decision review), &lt;code&gt;source-driven-development&lt;/code&gt; (official docs grounding), &lt;code&gt;context-engineering&lt;/code&gt; (context packing for agents)&lt;/li&gt;
&lt;li&gt;Useful reference for: Claude Code workflows, AI agent engineering patterns, production software quality standards&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="meetings"&gt;Meetings&lt;a class="headerlink" href="#meetings" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;None yet — discovered via GitHub repo evaluation.&lt;/p&gt;
&lt;h2 id="connected-to"&gt;Connected To&lt;a class="headerlink" href="#connected-to" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;[[claude-code-autonomous-pipeline]] | [[hermes-agent-orchestration]]&lt;/p&gt;</content><category term="people"/><category term="[person]"/></entry><entry><title>Daily Journal — 2026-05-24</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-24.html" rel="alternate"/><published>2026-05-24T00:00:00+02:00</published><updated>2026-05-24T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-24:/daily-journal-2026-05-24.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A Sunday focused on tooling and developer environment work. The day centred on evaluating new Claude Code ecosystem tools — specifically the agent-skills repo — and tying up loose ends around terminal session management and Rust/Cargo tooling. Feels like a maintenance and stack-refinement day rather than a building day, which …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A Sunday focused on tooling and developer environment work. The day centred on evaluating new Claude Code ecosystem tools — specifically the agent-skills repo — and tying up loose ends around terminal session management and Rust/Cargo tooling. Feels like a maintenance and stack-refinement day rather than a building day, which is appropriate heading into a new week.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Decide whether to install cherry-picked agent-skills (doubt-driven-development, source-driven-development, context-engineering) into the project stack&lt;/li&gt;
&lt;li&gt;[ ] Verify Zellij is working post-Cargo fix and pick a session multiplexer strategy (screen vs Zellij) for the dev workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-dev-stack-tooling"&gt;AI Dev Stack &amp;amp; Tooling&lt;a class="headerlink" href="#ai-dev-stack-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-autonomous-agent-skills-evaluation"&gt;CC-Autonomous — agent-skills evaluation&lt;a class="headerlink" href="#cc-autonomous-agent-skills-evaluation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Evaluated Addy Osmani's &lt;code&gt;agent-skills&lt;/code&gt; repo (43K stars, Google Chrome team lead). The repo has 23 production-grade dev lifecycle skills but most overlap with the existing stack. Three skills identified as genuinely additive: &lt;code&gt;doubt-driven-development&lt;/code&gt; (adversarial decision review for high-stakes/production choices), &lt;code&gt;source-driven-development&lt;/code&gt; (forces grounding in official docs — critical for Next.js 16 and Django 6 where training data may be stale), and &lt;code&gt;context-engineering&lt;/code&gt; (context packing at session start). Recommended approach: install the plugin but activate only these three in CLAUDE.md. Clean stack outcome: Speckit (WHAT) → agent-skills (HOW to think) → Superpowers (HOW to execute) → gstack (HOW to verify/ship).
→ See [[claude-code-autonomous-pipeline]] | [[addy-osmani]] | [[hermes-agent-orchestration]]&lt;/p&gt;
&lt;h3 id="terminal-developer-environment"&gt;Terminal &amp;amp; Developer Environment&lt;a class="headerlink" href="#terminal-developer-environment" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="linux-screen-command-with-claude-code"&gt;Linux screen command with Claude Code&lt;a class="headerlink" href="#linux-screen-command-with-claude-code" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Worked through using &lt;code&gt;screen&lt;/code&gt; as a persistent terminal session manager for Claude Code, particularly useful over SSH or for overnight autonomous runs. Key commands: &lt;code&gt;screen -S claude&lt;/code&gt; to start, &lt;code&gt;Ctrl+A, D&lt;/code&gt; to detach, &lt;code&gt;screen -r claude&lt;/code&gt; to reattach. A multi-window setup lets you run Claude Code in window 0 and watch LiteLLM logs in window 1 simultaneously. Also covered the recommended &lt;code&gt;~/.screenrc&lt;/code&gt; config with &lt;code&gt;defscrollback 10000&lt;/code&gt; for handling Claude Code's heavy output.
→ See [[linux-screen-claude-code]] | [[claude-code-zellij-sessions]]&lt;/p&gt;
&lt;h4 id="finding-the-last-session-id-in-claude"&gt;Finding the last session ID in Claude&lt;a class="headerlink" href="#finding-the-last-session-id-in-claude" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick lookup: &lt;code&gt;jq -r '.sessionId' ~/.claude/history.jsonl | tail -1&lt;/code&gt; retrieves the last session ID. Per-directory variant filters by &lt;code&gt;env.PWD&lt;/code&gt;. Or just use &lt;code&gt;claude --list&lt;/code&gt; for a human-readable view.
→ See [[claude-code-session-files]]&lt;/p&gt;
&lt;h4 id="cargo-command-not-found-in-zsh-installing-zellij"&gt;Cargo command not found in zsh / Installing Zellij&lt;a class="headerlink" href="#cargo-command-not-found-in-zsh-installing-zellij" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Fixed a missing &lt;code&gt;cargo&lt;/code&gt; in zsh PATH, then used it to install Zellij terminal multiplexer (&lt;code&gt;cargo install zellij&lt;/code&gt;). Alternatives: &lt;code&gt;brew install zellij&lt;/code&gt; (faster, requires Homebrew) or the pre-built binary installer script.
→ See [[claude-code-zellij-sessions]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Install agent-skills plugin and activate three cherry-picked skills in CLAUDE.md&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;source-driven-development&lt;/code&gt; rule to CLAUDE.md specifically for Next.js 16 and Django 6 sections&lt;/li&gt;
&lt;li&gt;[ ] Verify Zellij is installed and working after Cargo PATH fix&lt;/li&gt;
&lt;li&gt;[ ] Choose session multiplexer strategy: stick with Zellij or adopt screen for the remote dev server&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Clean job separation in an AI coding stack prevents skill overlap and confusion — each layer should own one phase]]&lt;/li&gt;
&lt;li&gt;[[doubt-driven-development as a named pattern — adversarial review before irreversible decisions]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Agentic Cost Control</title><link href="https://pelican-5lg.pages.dev/agentic-cost-control.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/agentic-cost-control.html</id><summary type="html">&lt;h1 id="agentic-cost-control"&gt;Agentic Cost Control&lt;a class="headerlink" href="#agentic-cost-control" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Token tracking alone is insufficient for cost control in agentic AI systems. Production agent pipelines need per-task spend caps, trajectory scoring, and webhook stop signals built into the AI gateway — not bolted on after the fact.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A single poorly-scoped agentic task can …&lt;/p&gt;</summary><content type="html">&lt;h1 id="agentic-cost-control"&gt;Agentic Cost Control&lt;a class="headerlink" href="#agentic-cost-control" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Token tracking alone is insufficient for cost control in agentic AI systems. Production agent pipelines need per-task spend caps, trajectory scoring, and webhook stop signals built into the AI gateway — not bolted on after the fact.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A single poorly-scoped agentic task can silently consume hundreds of dollars. Devin averages ~800 LLM turns per task. Without hard stops, a runaway agent can exhaust a monthly budget on one bad run. This is infrastructure-level risk, not a prompt problem.&lt;/p&gt;
&lt;h2 id="key-points"&gt;Key Points&lt;a class="headerlink" href="#key-points" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Per-task spend caps&lt;/strong&gt; — set a &lt;code&gt;max_budget_usd&lt;/code&gt; on each agentic call; cut off the session if the cap is hit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trajectory scoring&lt;/strong&gt; — evaluate whether the agent is making progress per turn; abort if stuck in a loop or producing low-value output&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhook stop signals&lt;/strong&gt; — your AI gateway should expose a kill signal that external monitoring can trigger (e.g. a cost alert fires, webhook stops the session)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token tracking is a lagging indicator&lt;/strong&gt; — by the time you see high token counts, the cost is already incurred; you need predictive budget accounting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model selection matters&lt;/strong&gt; — routing cheap/fast tasks to smaller models (MiniMax, Haiku) and reserving Opus/Sonnet for hard reasoning tasks can cut costs 3–5× without quality loss&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="benchmark"&gt;Benchmark&lt;a class="headerlink" href="#benchmark" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Devin: ~800 LLM turns per task, a bug-fix task can cost $180 and return a non-compiling PR&lt;/li&gt;
&lt;li&gt;Claude Code: ~30 turns for equivalent tasks&lt;/li&gt;
&lt;li&gt;Rule of thumb: 1 active agentic Claude Code session = 2–5 concurrent API requests at the gateway level&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[hermes-agent-orchestration]] — Hermes gateway capacity planning uses this model&lt;/li&gt;
&lt;li&gt;[[minimax-litellm-cost]] — LiteLLM proxy is the right layer to implement spend caps&lt;/li&gt;
&lt;li&gt;[[claude-code-2026-capabilities]] — per-task spend cap (&lt;code&gt;max_budget_usd&lt;/code&gt;) is a first-class Claude Agent SDK parameter&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "LLM-powered news search and summarization sites" — 2026-05-23
AI Dev Brief; GSD autonomous-dev pipeline analysis — 2026-05-19/20&lt;/p&gt;</content><category term="evergreen"/><category term="[ai-agents"/><category term="cost"/><category term="infrastructure"/><category term="llm"/><category term="production]"/></entry><entry><title>AI Coding Stack 2026</title><link href="https://pelican-5lg.pages.dev/ai-coding-stack-2026.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/ai-coding-stack-2026.html</id><summary type="html">&lt;h1 id="ai-coding-stack-2026"&gt;AI Coding Stack 2026&lt;a class="headerlink" href="#ai-coding-stack-2026" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Different AI coding tools have distinct sweet spots in 2026. Using the wrong tool for the task wastes money and produces worse results than the right tool used deliberately.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The AI coding tool landscape fragmented fast. Defaulting to one tool for …&lt;/p&gt;</summary><content type="html">&lt;h1 id="ai-coding-stack-2026"&gt;AI Coding Stack 2026&lt;a class="headerlink" href="#ai-coding-stack-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Different AI coding tools have distinct sweet spots in 2026. Using the wrong tool for the task wastes money and produces worse results than the right tool used deliberately.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The AI coding tool landscape fragmented fast. Defaulting to one tool for everything — or treating them as interchangeable — means paying Opus prices for tasks that Haiku could handle, or using an async delegation tool on work that requires exploratory reasoning. The right match matters.&lt;/p&gt;
&lt;h2 id="key-points-which-tool-for-what"&gt;Key Points — Which Tool for What&lt;a class="headerlink" href="#key-points-which-tool-for-what" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Tool | Best For |
|---|---|
| &lt;strong&gt;Claude Code&lt;/strong&gt; | Senior-dev tasks: hard refactors, architectural work, codebase-wide reasoning |
| &lt;strong&gt;Codex (GPT-5.5)&lt;/strong&gt; | Async task delegation — hand off a bounded task and review cold |
| &lt;strong&gt;Cursor&lt;/strong&gt; | Daily-driver IDE: fast completions, inline edits, file-level changes |
| &lt;strong&gt;GitHub Copilot&lt;/strong&gt; | Safest enterprise default; lowest risk profile, broad IDE support |
| &lt;strong&gt;Devin / OpenHands / Jules&lt;/strong&gt; | Bounded, well-described tasks only — bug sweeps, not exploration |&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Devin caveat:&lt;/strong&gt; Averages ~800 LLM turns per task vs Claude Code's ~30. Use cloud-async agents to parallelize work, not for exploratory or architectural tasks.&lt;/p&gt;
&lt;h2 id="mcp-in-2026"&gt;MCP in 2026&lt;a class="headerlink" href="#mcp-in-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;6,400+ MCP servers in the official registry&lt;/li&gt;
&lt;li&gt;LangChain, CrewAI, LangGraph, LlamaIndex have all moved MCP to default&lt;/li&gt;
&lt;li&gt;OpenAI deprecated Assistants API in favour of MCP (sunset mid-2026)&lt;/li&gt;
&lt;li&gt;Think: "USB-C for AI tools"&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="agent-framework-pick-guide"&gt;Agent Framework Pick Guide&lt;a class="headerlink" href="#agent-framework-pick-guide" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Framework | Use When |
|---|---|
| &lt;strong&gt;CrewAI&lt;/strong&gt; | Workflow maps cleanly to distinct roles |
| &lt;strong&gt;LangGraph&lt;/strong&gt; | Complex routing, state management, checkpointing |
| &lt;strong&gt;Claude Agent SDK&lt;/strong&gt; | Tool-use-first agents, extended thinking, MCP |&lt;/p&gt;
&lt;p&gt;Most production systems combine all three.&lt;/p&gt;
&lt;h2 id="personal-stack-bol-hermes-context"&gt;Personal Stack (BOL / Hermes context)&lt;a class="headerlink" href="#personal-stack-bol-hermes-context" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Claude Code → architectural refactors, agentic sub-tasks&lt;/li&gt;
&lt;li&gt;Hermes → orchestration layer, PKM, daily automation&lt;/li&gt;
&lt;li&gt;LiteLLM proxy → model routing, cost control, team usage tracking&lt;/li&gt;
&lt;li&gt;Cursor → daily IDE&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[claude-code-2026-capabilities]] — detailed Claude Code feature reference&lt;/li&gt;
&lt;li&gt;[[hermes-agent-orchestration]] — Hermes as the orchestration layer&lt;/li&gt;
&lt;li&gt;[[litellm-claude-code-setup]] — routing Claude Code through LiteLLM proxy&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "LLM-powered news search and summarization sites" — 2026-05-23
AI Dev Brief; Releasebot, TECHSY, Simon Willison sources&lt;/p&gt;</content><category term="evergreen"/><category term="[ai-agents"/><category term="claude-code"/><category term="developer-tools"/><category term="coding"/><category term="llm]"/></entry><entry><title>BOL 2026 Data Strategy</title><link href="https://pelican-5lg.pages.dev/bol-2026-data-strategy.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/bol-2026-data-strategy.html</id><summary type="html">&lt;h1 id="bol-2026-data-strategy"&gt;BOL 2026 Data Strategy&lt;a class="headerlink" href="#bol-2026-data-strategy" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;BOL (Business Online PCL) 9-month platform modernisation roadmap to transform from a legacy data provider into a deployable Intelligent Data Platform targeting Thai banks and government agencies.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The strategy leverages a 2026 convergence window — FATF mutual evaluation pressure, PDPA enforcement, and reduced AI build …&lt;/p&gt;</summary><content type="html">&lt;h1 id="bol-2026-data-strategy"&gt;BOL 2026 Data Strategy&lt;a class="headerlink" href="#bol-2026-data-strategy" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;BOL (Business Online PCL) 9-month platform modernisation roadmap to transform from a legacy data provider into a deployable Intelligent Data Platform targeting Thai banks and government agencies.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The strategy leverages a 2026 convergence window — FATF mutual evaluation pressure, PDPA enforcement, and reduced AI build costs — to modernise the platform using a Strangler Fig pattern with AI-assisted code migration. Budget 50–70M THB, team of 16–18, target customers are Thai banks and government agencies needing deployable data intelligence infrastructure.&lt;/p&gt;
&lt;h2 id="key-points"&gt;Key Points&lt;a class="headerlink" href="#key-points" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Budget:&lt;/strong&gt; 50–70M THB (needs narrowing to baseline + stretch headcount scenarios before board)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team:&lt;/strong&gt; 16–18 people; 8 new hires including critical ML/NLP roles (2–3 month lead time risk)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pattern:&lt;/strong&gt; Strangler Fig — incrementally replace legacy without a full rewrite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI policy:&lt;/strong&gt; AI-accelerated development but human review mandatory for all code; "ห้าม Trust AI Translation 100%"&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tech stack decision:&lt;/strong&gt; Databricks vs Snowflake vs Iceberg+Trino — frozen by M1 Track B&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compliance drivers:&lt;/strong&gt; FATF mutual evaluation 2026, PDPA enforcement, ISO 27001 extension scope&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Key differentiators:&lt;/strong&gt; Thai NLP (F1 ≥0.80), deployable platform model, legacy data moat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="three-execution-risks"&gt;Three Execution Risks&lt;a class="headerlink" href="#three-execution-risks" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hiring timeline&lt;/strong&gt; — 8 critical hires at 2–3 month lead time; ramp-up gap not reflected in M6 delivery dates. Contractor/Vendor fallback should be a parallel track, not a backup plan.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;M6 scope volume&lt;/strong&gt; — migrated features + new platform + pilot customer + multi-tenancy + governance + NLP in 6 months is aggressive for 16–18 people even with AI acceleration. Needs an explicit "must-have vs nice-to-have" cut line.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pilot customer LOI&lt;/strong&gt; — hard dependency: LOI within 2 weeks of kick-off. No contingency plan documented if no pilot customer commits by week 8.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="decision-gate-m0-blockers"&gt;Decision Gate (M0 Blockers)&lt;a class="headerlink" href="#decision-gate-m0-blockers" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Four blockers must be resolved before the clock starts:
1. Legacy system categorisation (migrate vs. retire)
2. Pilot customer LOI
3. Knowledge holder commitment (legacy system context carriers)
4. Revenue model confirmation&lt;/p&gt;
&lt;h2 id="document-quality-notes"&gt;Document Quality Notes&lt;a class="headerlink" href="#document-quality-notes" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Strengths: Legacy Reuse strategy intellectually honest, "Why Now" argument sharp, AI Strategy unusually calibrated (task-type breakdown, human review workflow), Decision Required framing surfaces blockers early.&lt;/p&gt;
&lt;p&gt;Improvement areas: RACI and approval path should be explicitly linked; budget range (40% variance on personnel) needs narrowing for board; Non-Goals section should include rationale for deferrals.&lt;/p&gt;
&lt;h2 id="week-of-2026-w21"&gt;Week of 2026-W21&lt;a class="headerlink" href="#week-of-2026-w21" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Full strategy document reviewed and commented on. Three execution risks identified above. Assessment: high-quality internal enterprise planning, board-ready after addressing the three risks and narrowing the budget range.&lt;/p&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Journal dates: 2026-W21 (session — "Review BOL 2026 data strategy document")&lt;/p&gt;</content><category term="evergreen"/><category term="[strategy"/><category term="bol"/><category term="platform"/><category term="data"/><category term="ai"/><category term="fatf"/><category term="pdpa]"/></entry><entry><title>Claude Code Analytics Automation</title><link href="https://pelican-5lg.pages.dev/claude-code-analytics-automation.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/claude-code-analytics-automation.html</id><summary type="html">&lt;h1 id="claude-code-analytics-automation"&gt;Claude Code Analytics Automation&lt;a class="headerlink" href="#claude-code-analytics-automation" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Daily automated extraction of Claude Code "Lines this month" per team member from &lt;code&gt;claude.ai/analytics/claude-code&lt;/code&gt;, saved as a dated CSV and delivered as a Gmail draft summary.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Claude admin console tracks lines of code generated per team member (MTD reset). A …&lt;/p&gt;</summary><content type="html">&lt;h1 id="claude-code-analytics-automation"&gt;Claude Code Analytics Automation&lt;a class="headerlink" href="#claude-code-analytics-automation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Daily automated extraction of Claude Code "Lines this month" per team member from &lt;code&gt;claude.ai/analytics/claude-code&lt;/code&gt;, saved as a dated CSV and delivered as a Gmail draft summary.&lt;/p&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Claude admin console tracks lines of code generated per team member (MTD reset). A Cowork scheduled task extracts this daily via browser automation (Export CSV intercept), saves a dated file to the Analytics folder, and creates a Gmail draft for the CTO to review. Provides ongoing visibility into team AI adoption without manual effort.&lt;/p&gt;
&lt;h2 id="key-points"&gt;Key Points&lt;a class="headerlink" href="#key-points" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Schedule:&lt;/strong&gt; Daily at 8:01 AM via Cowork scheduled task &lt;code&gt;claude-code-analytics-daily&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Method:&lt;/strong&gt; Navigate to &lt;code&gt;claude.ai/analytics/claude-code&lt;/code&gt; → click Export → intercept CSV in-browser&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output CSV:&lt;/strong&gt; &lt;code&gt;D:\OneDrive\Work\80.BOL\03. Service Operation\IT Operation\Claude Subscription\Analytics\YYYYMMDD.csv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gmail draft:&lt;/strong&gt; Auto-created with ranked member table (sorted by lines descending)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team size:&lt;/strong&gt; 23 members at BOL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metric:&lt;/strong&gt; "Lines this month" — MTD, resets each calendar month&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="may-2026-baseline-as-of-2026-05-23"&gt;May 2026 Baseline (as of 2026-05-23)&lt;a class="headerlink" href="#may-2026-baseline-as-of-2026-05-23" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Rank | Member | Lines (MTD) |
|------|--------|-------------|
| 1 | kraitheps@bol.co.th | 32,438 |
| 2 | phuriwajr@bol.co.th | 29,776 |
| 3 | noppawits@bol.co.th | 29,665 |
| — | &lt;strong&gt;Team total (23 members)&lt;/strong&gt; | &lt;strong&gt;~259,606&lt;/strong&gt; |
| — | Suggestion accept rate | 97.7% |&lt;/p&gt;
&lt;h2 id="technical-notes"&gt;Technical Notes&lt;a class="headerlink" href="#technical-notes" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Export button CSV intercept is more reliable than pagination-based scraping&lt;/li&gt;
&lt;li&gt;The Cowork sandbox D: drive is inaccessible by default — requires the Analytics folder to be connected as a Cowork workspace folder for direct saves&lt;/li&gt;
&lt;li&gt;If folder access is lost, task falls back to saving in outputs folder with a manual move step&lt;/li&gt;
&lt;li&gt;Claude in Chrome must be connected for the task to run&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="week-of-2026-w21"&gt;Week of 2026-W21&lt;a class="headerlink" href="#week-of-2026-w21" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pipeline set up from scratch: task created, tested, export method simplified (pagination → Export intercept), Analytics folder connected. Daily CSVs now saving automatically. Gmail draft creation confirmed. Historical baseline established for May 2026.&lt;/p&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Journal dates: 2026-W21 (sessions: "Team member code metrics", "Claude code analytics daily" ×3)&lt;/p&gt;</content><category term="evergreen"/><category term="[automation"/><category term="analytics"/><category term="claude-code"/><category term="bol"/><category term="scheduled-task"/><category term="reporting]"/></entry><entry><title>Context Engineering vs Prompt Engineering</title><link href="https://pelican-5lg.pages.dev/context-engineering-vs-prompt-engineering.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/context-engineering-vs-prompt-engineering.html</id><summary type="html">&lt;h1 id="context-engineering-vs-prompt-engineering"&gt;Context Engineering vs Prompt Engineering&lt;a class="headerlink" href="#context-engineering-vs-prompt-engineering" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The dominant failure mode in production AI systems is not a bad prompt — it is bad context assembly. "Context engineering" is the discipline of managing what information enters the model's context window, and it matters more than prompt wording in agentic workflows.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why …&lt;/h2&gt;</summary><content type="html">&lt;h1 id="context-engineering-vs-prompt-engineering"&gt;Context Engineering vs Prompt Engineering&lt;a class="headerlink" href="#context-engineering-vs-prompt-engineering" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The dominant failure mode in production AI systems is not a bad prompt — it is bad context assembly. "Context engineering" is the discipline of managing what information enters the model's context window, and it matters more than prompt wording in agentic workflows.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most teams focus on refining their prompts when things go wrong. In agentic and RAG systems the real failures are upstream: wrong documents retrieved, too much stale history stuffed into the window, missing or poorly described tool definitions. Fixing the prompt doesn't fix these.&lt;/p&gt;
&lt;h2 id="key-points"&gt;Key Points&lt;a class="headerlink" href="#key-points" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The four context strategies&lt;/strong&gt; (LangChain framing): write, select, compress, isolate&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Write&lt;/em&gt; — pre-populate context with the right documents before the model sees the task&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Select&lt;/em&gt; — retrieve only the most relevant chunks, not everything&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Compress&lt;/em&gt; — summarise or truncate history to stay within the window without losing signal&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Isolate&lt;/em&gt; — keep tool definitions, system instructions, and user content in separate logical blocks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool descriptions are context&lt;/strong&gt; — vague tool names and descriptions directly degrade decision quality in tool-use agents; treat them like code&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Give the model permission to express uncertainty&lt;/strong&gt; — explicitly saying "if data is insufficient, say so" in the system prompt reduces hallucinations significantly in production agentic workflows (Anthropic finding)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context window ≠ context quality&lt;/strong&gt; — a 1M token window doesn't help if the wrong 100K tokens are in it&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[claude-code-token-optimization]] — token management is a subset of context engineering&lt;/li&gt;
&lt;li&gt;[[hermes-agent-orchestration]] — AGENTS.md and MEMORY.md are Hermes's context engineering primitives&lt;/li&gt;
&lt;li&gt;[[claude-code-2026-capabilities]] — Anthropic's 2026 guidance on agentic workflow design&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "LLM-powered news search and summarization sites" — 2026-05-23
AI Dev Brief section; LangChain and Anthropic sources&lt;/p&gt;</content><category term="evergreen"/><category term="[ai-agents"/><category term="llm"/><category term="production"/><category term="context"/><category term="prompt-engineering]"/></entry><entry><title>Daily Journal — 2026-05-23</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-23.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/daily-journal-2026-05-23.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A productive Saturday working across AI tooling, design review, and personal knowledge systems. The day started with CTO brief pipeline work and Hermes configuration, then closed with a thorough Figma review of the M-Flow app — analyzing the member user journey, generating a Speckit epic spec, and surfacing design improvement …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A productive Saturday working across AI tooling, design review, and personal knowledge systems. The day started with CTO brief pipeline work and Hermes configuration, then closed with a thorough Figma review of the M-Flow app — analyzing the member user journey, generating a Speckit epic spec, and surfacing design improvement tasks that need to land in Jira. The Figma Starter plan MCP limit was hit mid-review, which is now a known constraint to plan around.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Set up CTO Brief and AI Dev Brief as daily 8am automated emails&lt;/li&gt;
&lt;li&gt;[ ] Finalize Commander AGENTS.md design for Hermes multi-agent setup&lt;/li&gt;
&lt;li&gt;[ ] Provide Jira project key to document M-Flow design improvements as issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tech-cto-brief-pipeline"&gt;AI &amp;amp; Tech — CTO Brief Pipeline&lt;a class="headerlink" href="#ai-tech-cto-brief-pipeline" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Iterated on two daily CTO brief formats: a general tech/AI brief and a focused AI Dev brief covering Claude Code, MCP, agents, and prompt engineering. Both briefs were generated live with fresh web searches. Key insight: the user wants to receive both as daily 8am emails once formats are approved.
→ See [[cto-daily-brief]] | [[cto-brief-ai-sources]]&lt;/p&gt;
&lt;h3 id="hermes-agent-agentsmd-and-memorymd-verification"&gt;Hermes Agent — AGENTS.md and MEMORY.md Verification&lt;a class="headerlink" href="#hermes-agent-agentsmd-and-memorymd-verification" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Discovered that Hermes natively supports both AGENTS.md and MEMORY.md. Verified the full configuration surface: four-file project context hierarchy, MEMORY.md as agent-curated store (capped at 2,200 chars), SOUL.md, FTS5 session DB, skills library, and 8 optional external memory plugins. Session ended with starting to draft a Commander AGENTS.md for multi-agent orchestration.
→ See [[hermes-agent-config]] | [[hermes-commander-setup]]&lt;/p&gt;
&lt;h3 id="m-flow-figma-review-design-analysis-jira-documentation"&gt;M-Flow Figma Review — Design Analysis &amp;amp; Jira Documentation&lt;a class="headerlink" href="#m-flow-figma-review-design-analysis-jira-documentation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Reviewed the M-Flow Figma file (Cover - Website page) covering the full member user journey: Home (Member), Toll History, Account Settings, and mobile screens. Claude analyzed the screens, mapped the user flow, and generated a Speckit epic spec. Design improvement suggestions were surfaced (inconsistent spacing, mobile-desktop padding gaps, etc.). Conversation ended while attempting to create Jira issues — Claude asked for the project key (MFLOW, WEB, DEV etc.) to proceed. Figma Starter plan MCP tool call limit was hit, limiting deeper visual review.
→ See [[mflow-figma-review]]&lt;/p&gt;
&lt;h3 id="sinusitis-treatment"&gt;วิธีรักษาไซนัสอักเสบ (Sinusitis Treatment)&lt;a class="headerlink" href="#sinusitis-treatment" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Quick health lookup on sinusitis treatment in Thai. Covered acute vs chronic cases, self-treatment guidelines, and when to see a doctor. Personal health reference, not a project.
→ See [[sinusitis-treatment]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Set up CTO Brief as daily 8am email (general tech/AI format approved)&lt;/li&gt;
&lt;li&gt;[ ] Set up AI Dev Brief as daily 8am email (format approved)&lt;/li&gt;
&lt;li&gt;[ ] Complete Commander AGENTS.md design for Hermes&lt;/li&gt;
&lt;li&gt;[ ] Design first specialist agent (PKM #notes agent) for Hermes&lt;/li&gt;
&lt;li&gt;[ ] Provide Jira project key to create M-Flow design improvement issues&lt;/li&gt;
&lt;li&gt;[ ] Decide on Figma plan upgrade vs. workaround for MCP tool call limit&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Context Engineering vs Prompt Engineering]] — the real production failure is bad context assembly, not bad prompts&lt;/li&gt;
&lt;li&gt;[[Agentic Cost Control]] — per-task spend caps, trajectory scoring, webhook stop signals are essential infrastructure&lt;/li&gt;
&lt;li&gt;[[AI Coding Stack 2026]] — Claude Code for hard refactors, Codex for async delegation, Cursor for daily IDE&lt;/li&gt;
&lt;li&gt;[[Figma MCP Plan Limits]] — Starter plan has hard tool call caps; plan AI-assisted design reviews around this constraint&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Weekly Review — 2026-W21</title><link href="https://pelican-5lg.pages.dev/weekly-review-2026-w21.html" rel="alternate"/><published>2026-05-23T00:00:00+02:00</published><updated>2026-05-23T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-23:/weekly-review-2026-w21.html</id><summary type="html">&lt;h2 id="week-of-mon-18-sun-24-may-2026"&gt;Week of Mon 18 – Sun 24 May, 2026&lt;a class="headerlink" href="#week-of-mon-18-sun-24-may-2026" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A highly productive week focused on three converging themes: building out automated personal tooling (PKM system reaching full maturity, analytics pipeline automated), strategic planning (BOL 2026 platform strategy review, Sprint 24 kick-off), and systematising team intelligence capture (Claude Code analytics daily …&lt;/p&gt;</summary><content type="html">&lt;h2 id="week-of-mon-18-sun-24-may-2026"&gt;Week of Mon 18 – Sun 24 May, 2026&lt;a class="headerlink" href="#week-of-mon-18-sun-24-may-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A highly productive week focused on three converging themes: building out automated personal tooling (PKM system reaching full maturity, analytics pipeline automated), strategic planning (BOL 2026 platform strategy review, Sprint 24 kick-off), and systematising team intelligence capture (Claude Code analytics daily extraction). The PKM loop closed this week — daily generator running 3×/day and weekly consolidator now scheduled.&lt;/p&gt;
&lt;h3 id="topics-covered"&gt;Topics Covered&lt;a class="headerlink" href="#topics-covered" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| Topic | Days Active | Note |
|---|---|---|
| PKM System Build-out | Mon–Fri (multiple sessions) | [[pkm-daily-summary]] |
| Claude Code Analytics Automation | Mon, Wed, Thu, Fri | [[claude-code-analytics-automation]] |
| BOL 2026 Data Strategy Review | Mid-week | [[bol-2026-data-strategy]] |
| Sprint 24 — Data Platform | Monday (kick-off) | — |
| Hermes Agent / Productivity System | Mid-week | [[hermes-agent-orchestration]] |
| Morning Brief Automation | Early week | — |&lt;/p&gt;
&lt;h3 id="key-decisions-this-week"&gt;Key Decisions This Week&lt;a class="headerlink" href="#key-decisions-this-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PKM runs 3× daily&lt;/strong&gt; — generator scheduled at 12 PM, 6 PM, and 10 PM every day (upgraded from single 5 PM run)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weekly PKM consolidation automated&lt;/strong&gt; — pkm-weekly-consolidator scheduled every Friday at 5 PM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pkm-daily-generator packaged&lt;/strong&gt; as an installable .skill file&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;send-daily-summary.py&lt;/strong&gt; adopted as canonical delivery script (PowerShell version deprecated)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics pipeline simplified&lt;/strong&gt; — Export CSV intercept replaces pagination; saves directly to &lt;code&gt;D:\OneDrive\Work\80.BOL\...\Analytics\YYYYMMDD.csv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BOL 2026 Strategy: three execution risks flagged&lt;/strong&gt; — hiring timeline realism, M6 scope volume vs. team capacity, single-threaded pilot LOI dependency&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Productivity folder&lt;/strong&gt; set to &lt;code&gt;D:\OneDrive\Personal\Tasks&lt;/code&gt; with TASKS.md + CLAUDE.md memory system&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="open-tasks-carried-into-next-week"&gt;Open Tasks Carried Into Next Week&lt;a class="headerlink" href="#open-tasks-carried-into-next-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Run &lt;code&gt;send-daily-summary.py&lt;/code&gt; locally to confirm Discord + email delivery end-to-end&lt;/li&gt;
&lt;li&gt;[ ] Fill in SMTP credentials in send-daily-summary.py (lines 20–21)&lt;/li&gt;
&lt;li&gt;[ ] Regenerate Discord webhook (current one exposed in session transcripts)&lt;/li&gt;
&lt;li&gt;[ ] BOL Strategy: add risk mitigations before board presentation&lt;/li&gt;
&lt;li&gt;[ ] Confirm pilot customer LOI timeline — flagged as W21 dependency&lt;/li&gt;
&lt;li&gt;[ ] Vuexy: run Phase 1 audit with drafted Claude Code prompt — from [[vuexy-nextjs-frontend]]&lt;/li&gt;
&lt;li&gt;[ ] LiteLLM: implement 20s keepalive ping — from [[litellm-local-llm]]&lt;/li&gt;
&lt;li&gt;[ ] Pre-approve tool permissions for new scheduled tasks (claude-code-analytics, PKM generators)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="insights-promoted-to-evergreen"&gt;Insights Promoted to Evergreen&lt;a class="headerlink" href="#insights-promoted-to-evergreen" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[[bol-2026-data-strategy]] — BOL platform modernisation: Strangler Fig, AI-accelerated, FATF/PDPA 2026 window, three execution risks&lt;/li&gt;
&lt;li&gt;[[claude-code-analytics-automation]] — Automated Claude Code usage extraction, team reporting pipeline, May 2026 baseline data&lt;/li&gt;
&lt;/ul&gt;</content><category term="weekly"/><category term="[weekly]"/></entry><entry><title>Cloud VM vs Local Machine for Always-On AI Agents</title><link href="https://pelican-5lg.pages.dev/cloud-vm-vs-local-machine-for-always-on-ai-agents.html" rel="alternate"/><published>2026-05-22T00:00:00+02:00</published><updated>2026-05-22T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-22:/cloud-vm-vs-local-machine-for-always-on-ai-agents.html</id><summary type="html">&lt;h1 id="cloud-vm-vs-local-machine-for-always-on-ai-agents"&gt;Cloud VM vs Local Machine for Always-On AI Agents&lt;a class="headerlink" href="#cloud-vm-vs-local-machine-for-always-on-ai-agents" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Running AI agent scheduled tasks on a local machine is convenient but unreliable — sleep, reboots, and closed apps silently miss runs. A cloud VM at $5–10/month solves this with near-zero maintenance and is the right long-term infrastructure …&lt;/p&gt;</summary><content type="html">&lt;h1 id="cloud-vm-vs-local-machine-for-always-on-ai-agents"&gt;Cloud VM vs Local Machine for Always-On AI Agents&lt;a class="headerlink" href="#cloud-vm-vs-local-machine-for-always-on-ai-agents" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Running AI agent scheduled tasks on a local machine is convenient but unreliable — sleep, reboots, and closed apps silently miss runs. A cloud VM at $5–10/month solves this with near-zero maintenance and is the right long-term infrastructure choice for always-on agent pipelines.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cowork (and most desktop agent tools) only fire scheduled tasks while the app is open and the machine is awake. This means a missed run if you close your laptop, sleep the PC, or lose power. For high-frequency automation (3× daily PKM, 8am analytics), local machine reliability is a real operational risk.&lt;/p&gt;
&lt;h2 id="options-compared"&gt;Options Compared&lt;a class="headerlink" href="#options-compared" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Approach | Reliability | Cost | Effort |
|---|---|---|---|
| Disable sleep | Medium | Free | Low — but drains power, fan noise |
| Windows wake timers | Medium | Free | Medium — fragile, doesn't survive reboots |
| Cloud VM (VPS) | High | ~&lt;span class="math"&gt;\(5–10/month | Low once set up — DigitalOcean, Hetzner |
| Dedicated mini PC | High | One-time ~\)&lt;/span&gt;150+ | Medium |&lt;/p&gt;
&lt;h2 id="recommendation"&gt;Recommendation&lt;a class="headerlink" href="#recommendation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cloud VM is the most reliable long-term approach for always-on agentic tasks. At $5/month (Hetzner CX11 or DigitalOcean Basic) the cost is negligible relative to the value of reliable automation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When local is fine:&lt;/strong&gt; tasks that can tolerate occasional missed runs (weekly consolidation, non-critical reminders).&lt;br/&gt;
&lt;strong&gt;When cloud VM is needed:&lt;/strong&gt; daily analytics extraction, morning briefs, any task where missing a run has downstream consequences.&lt;/p&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[cowork-cloud-vm-scheduling]] — detailed setup reference for Cowork on a cloud VM&lt;/li&gt;
&lt;li&gt;[[pkm-daily-summary]] — the daily PKM generator is the primary motivation for this decision&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "Using Claude desktop on multiple computers" — 2026-05-22&lt;/p&gt;
&lt;script type="text/javascript"&gt;if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
    var align = "center",
        indent = "0em",
        linebreak = "false";

    if (false) {
        align = (screen.width &lt; 768) ? "left" : align;
        indent = (screen.width &lt; 768) ? "0em" : indent;
        linebreak = (screen.width &lt; 768) ? 'true' : linebreak;
    }

    var mathjaxscript = document.createElement('script');
    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
    mathjaxscript.type = 'text/javascript';
    mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';

    var configscript = document.createElement('script');
    configscript.type = 'text/x-mathjax-config';
    configscript[(window.opera ? "innerHTML" : "text")] =
        "MathJax.Hub.Config({" +
        "    config: ['MMLorHTML.js']," +
        "    TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
        "    displayAlign: '"+ align +"'," +
        "    displayIndent: '"+ indent +"'," +
        "    showMathMenu: true," +
        "    messageStyle: 'normal'," +
        "    tex2jax: { " +
        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
        "        displayMath: [ ['$$','$$'] ]," +
        "        processEscapes: true," +
        "        preview: 'TeX'," +
        "    }, " +
        "    'HTML-CSS': { " +
        "        availableFonts: ['STIX', 'TeX']," +
        "        preferredFont: 'STIX'," +
        "        styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
        "        linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
        "    }, " +
        "}); " +
        "if ('default' !== 'default') {" +
            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
        "}";

    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
&lt;/script&gt;</content><category term="evergreen"/><category term="[infrastructure"/><category term="ai-agents"/><category term="cowork"/><category term="automation"/><category term="scheduling]"/></entry><entry><title>Daily Journal — 2026-05-22</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-22.html" rel="alternate"/><published>2026-05-22T00:00:00+02:00</published><updated>2026-05-22T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-22:/daily-journal-2026-05-22.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A planning and tooling day. Most energy went into comparing AI tool costs and thinking about the Hermes agent fleet — two topics that keep coming back. Also resolved a loose end on the daily news brief email by adding source links, and got more clarity on the Composio Microsoft …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A planning and tooling day. Most energy went into comparing AI tool costs and thinking about the Hermes agent fleet — two topics that keep coming back. Also resolved a loose end on the daily news brief email by adding source links, and got more clarity on the Composio Microsoft To Do issue (still blocked on a permissions scope).&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Decide on Claude Code Team Premium vs MiniMax Ultra-Highspeed based on today's comparison — key factor is team size and use case&lt;/li&gt;
&lt;li&gt;[ ] Re-attempt Composio Outlook reconnection with Tasks.ReadWrite scope to fix Microsoft To Do 401 error&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tooling"&gt;AI Tooling&lt;a class="headerlink" href="#ai-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="minimax-claude-code-team-vs-minimax-comparison"&gt;Minimax (Claude Code Team vs MiniMax comparison)&lt;a class="headerlink" href="#minimax-claude-code-team-vs-minimax-comparison" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Detailed cost and quota comparison between Claude Code Team Premium (&lt;span class="math"&gt;\(500/month minimum, 5 seats) and MiniMax Ultra-Highspeed (\)&lt;/span&gt;150/month, no seat minimum). MiniMax wins on cost flexibility for solo/small teams; Claude Code wins on context window (1M vs 204K tokens), admin controls, and overflow usage. Key uncertainty: Claude Code doesn't publish exact token quotas — all numbers are third-party estimates.
→ See [[minimax-litellm-cost]] | [[minimax-token-procurement]]&lt;/p&gt;
&lt;h4 id="composio-ai-agent-integration-platform"&gt;Composio AI agent integration platform&lt;a class="headerlink" href="#composio-ai-agent-integration-platform" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Continued attempt to create tasks in Microsoft To Do via Composio. Still hitting 401 — Outlook connection is missing &lt;code&gt;Tasks.ReadWrite&lt;/code&gt; Microsoft Graph scope. Fix: reconnect at composio.dev with correct scope, or switch to native Microsoft 365 connector in Claude.ai.
→ See [[composio-mcp-connector]]&lt;/p&gt;
&lt;h3 id="productivity-automation"&gt;Productivity &amp;amp; Automation&lt;a class="headerlink" href="#productivity-automation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="llm-powered-news-search-and-summarization-sites"&gt;LLM-powered news search and summarization sites&lt;a class="headerlink" href="#llm-powered-news-search-and-summarization-sites" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Updated the daily news brief email template to include clickable source links on each bullet. Every section now includes direct links to source articles (TechStartups, Analytics Insight, Thailand Business News, etc.). Change applied via Composio email tool.
→ See [[pkm-daily-summary]]&lt;/p&gt;
&lt;h4 id="using-claude-desktop-on-multiple-computers"&gt;Using Claude desktop on multiple computers&lt;a class="headerlink" href="#using-claude-desktop-on-multiple-computers" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Clarified that Cowork desktop app requires the PC to stay on and logged in for scheduled tasks to fire. Three options explored: (1) disable sleep, (2) Windows wake timers, (3) cloud VM ($5/month VPS on DigitalOcean or Hetzner). Cloud VM is the most reliable long-term approach.
→ See [[cowork-cloud-vm-scheduling]]&lt;/p&gt;
&lt;h3 id="agents-architecture"&gt;Agents &amp;amp; Architecture&lt;a class="headerlink" href="#agents-architecture" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="hermes-benefits-and-capabilities-fleet-architecture"&gt;Hermes benefits and capabilities (fleet architecture)&lt;a class="headerlink" href="#hermes-benefits-and-capabilities-fleet-architecture" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Early exploration of running multiple specialized Hermes instances — one per life area (work, personal, health, etc.) vs. Hermes sub-agents under a single orchestrator vs. a hybrid hierarchy. No final design yet; conversation ended at the clarifying-questions stage.
→ See [[hermes-agent-orchestration]]&lt;/p&gt;
&lt;h4 id="hermes-benefits-and-capabilities-agentsmd-memorymd-verification"&gt;Hermes benefits and capabilities (AGENTS.md + MEMORY.md verification)&lt;a class="headerlink" href="#hermes-benefits-and-capabilities-agentsmd-memorymd-verification" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed that Hermes natively supports both AGENTS.md and MEMORY.md. AGENTS.md is one of four interchangeable project-context formats (alongside CLAUDE.md, CONTEXT.md, README.md) and is discovered progressively across subdirectory hierarchy. MEMORY.md is agent-curated persistent memory capped at 2,200 characters — not a hand-authored config. Full configuration surface mapped: SOUL.md → USER.md → AGENTS.md → MEMORY.md → FTS5 sessions → skills library, plus 8 optional external memory plugins.
→ See [[hermes-agent-configuration]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Reconnect Composio Outlook with Tasks.ReadWrite scope&lt;/li&gt;
&lt;li&gt;[ ] Decide: disable PC sleep, configure wake timers, or provision cloud VM for Cowork scheduling&lt;/li&gt;
&lt;li&gt;[ ] Explore Hermes fleet architecture — define life areas and agent roles before committing to structure&lt;/li&gt;
&lt;li&gt;[ ] Consider Claude Code Team vs MiniMax for next procurement decision (team size is the deciding factor)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Cloud VM vs local machine for always-on AI agents — reliability vs convenience tradeoff]]&lt;/li&gt;
&lt;li&gt;[[MiniMax is cost-optimal for solo AI workflow testing; Claude Code Team only makes sense at 5+ seats]]&lt;/li&gt;
&lt;li&gt;[[Hermes fleet as life OS — specialized agents per domain rather than one generalist agent]]&lt;/li&gt;
&lt;li&gt;[[AGENTS.md and MEMORY.md as the two key Hermes customization points — project context vs agent memory]]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="updates-2026-05-22-evening"&gt;Updates — 2026-05-22 (evening)&lt;a class="headerlink" href="#updates-2026-05-22-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="hermes-configuration-surface-verified"&gt;Hermes Configuration Surface Verified&lt;a class="headerlink" href="#hermes-configuration-surface-verified" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Deep dive into Hermes native file support confirmed: AGENTS.md (project context, 4-level hierarchy, interchangeable with CLAUDE.md), MEMORY.md (agent-curated, 2,200-char cap, not hand-authored), plus SOUL.md, USER.md, FTS5 session database, skills library, and 8 optional external memory plugins. Key distinction: MEMORY.md is written by the agent over time — don't treat it like a config file. Reference note created.
→ See [[hermes-agent-configuration]]&lt;/p&gt;
&lt;script type="text/javascript"&gt;if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
    var align = "center",
        indent = "0em",
        linebreak = "false";

    if (false) {
        align = (screen.width &lt; 768) ? "left" : align;
        indent = (screen.width &lt; 768) ? "0em" : indent;
        linebreak = (screen.width &lt; 768) ? 'true' : linebreak;
    }

    var mathjaxscript = document.createElement('script');
    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
    mathjaxscript.type = 'text/javascript';
    mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';

    var configscript = document.createElement('script');
    configscript.type = 'text/x-mathjax-config';
    configscript[(window.opera ? "innerHTML" : "text")] =
        "MathJax.Hub.Config({" +
        "    config: ['MMLorHTML.js']," +
        "    TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
        "    displayAlign: '"+ align +"'," +
        "    displayIndent: '"+ indent +"'," +
        "    showMathMenu: true," +
        "    messageStyle: 'normal'," +
        "    tex2jax: { " +
        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
        "        displayMath: [ ['$$','$$'] ]," +
        "        processEscapes: true," +
        "        preview: 'TeX'," +
        "    }, " +
        "    'HTML-CSS': { " +
        "        availableFonts: ['STIX', 'TeX']," +
        "        preferredFont: 'STIX'," +
        "        styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
        "        linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
        "    }, " +
        "}); " +
        "if ('default' !== 'default') {" +
            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
        "}";

    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
&lt;/script&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Hermes Fleet as Life OS — Specialized Agents Per Domain Rather Than One Generalist</title><link href="https://pelican-5lg.pages.dev/hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist.html" rel="alternate"/><published>2026-05-22T00:00:00+02:00</published><updated>2026-05-22T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-22:/hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist.html</id><summary type="html">&lt;h1 id="hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist"&gt;Hermes Fleet as Life OS — Specialized Agents Per Domain Rather Than One Generalist&lt;a class="headerlink" href="#hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A fleet of specialized Hermes agents — one per life domain — outperforms a single generalist Hermes over time. Each specialist accumulates domain-specific MEMORY.md context without contaminating the others. The fleet is coordinated by a Commander …&lt;/p&gt;</summary><content type="html">&lt;h1 id="hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist"&gt;Hermes Fleet as Life OS — Specialized Agents Per Domain Rather Than One Generalist&lt;a class="headerlink" href="#hermes-fleet-as-life-os-specialized-agents-per-domain-rather-than-one-generalist" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A fleet of specialized Hermes agents — one per life domain — outperforms a single generalist Hermes over time. Each specialist accumulates domain-specific MEMORY.md context without contaminating the others. The fleet is coordinated by a Commander AGENTS.md that routes tasks to the right specialist.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A single generalist Hermes agent accumulates context from all domains (work, personal, health, money, etc.) into one 2,200-character MEMORY.md. This cap fills up with a mix of unrelated facts. A specialist agent's MEMORY.md stays focused — every character is relevant to its domain. Over weeks, the specialist becomes meaningfully smarter in its domain while the generalist plateaus.&lt;/p&gt;
&lt;h2 id="candidate-architecture"&gt;Candidate Architecture&lt;a class="headerlink" href="#candidate-architecture" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Option A — Separate Hermes instances per life area&lt;/strong&gt;
- One process per domain, each with its own SOUL.md, AGENTS.md, MEMORY.md, and session DB
- Most isolation; highest memory quality per domain
- Tradeoff: more config to manage, no cross-domain synthesis&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option B — Hermes sub-agents under a single Commander&lt;/strong&gt;
- Commander Hermes receives all tasks and routes to specialists via Claude Agent SDK
- Specialists are stateless tools called by the Commander
- Tradeoff: simpler orchestration; specialists don't accumulate independent memory&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option C — Hybrid hierarchy&lt;/strong&gt;
- Commander handles routing and cross-domain synthesis
- Specialists run as isolated instances with their own memory
- Most powerful long-term; most setup complexity&lt;/p&gt;
&lt;h2 id="proposed-life-domains"&gt;Proposed Life Domains&lt;a class="headerlink" href="#proposed-life-domains" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Work, Think (learning/ideas), Body, Family, Money — five domains from the PARA + ACE expansion designed in W20.&lt;/p&gt;
&lt;h2 id="key-implication"&gt;Key Implication&lt;a class="headerlink" href="#key-implication" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;AGENTS.md is the right place for per-domain rules in a multi-Hermes fleet. MEMORY.md accumulates automatically per-instance if Hermes instances are isolated per life area. The Commander's AGENTS.md defines routing logic and handoff protocols between specialists.&lt;/p&gt;
&lt;h2 id="status-as-of-2026-05-22"&gt;Status (as of 2026-05-22)&lt;a class="headerlink" href="#status-as-of-2026-05-22" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Architecture being explored; no final design chosen. Conversation ended at the clarifying-questions stage.&lt;/p&gt;
&lt;p&gt;Next step: define the life domains concretely and decide what each specialist agent would do differently from a generalist.&lt;/p&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[hermes-agent-configuration]] — AGENTS.md and MEMORY.md mechanics for the fleet design&lt;/li&gt;
&lt;li&gt;[[hermes-agent-orchestration]] — ongoing effort tracking fleet architecture decisions&lt;/li&gt;
&lt;li&gt;[[hermes-commander-setup]] — Commander AGENTS.md draft in progress&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "Hermes fleet architecture brainstorm" — 2026-05-22&lt;/p&gt;</content><category term="evergreen"/><category term="[hermes"/><category term="ai-agents"/><category term="pkm"/><category term="life-os"/><category term="architecture]"/></entry><entry><title>MiniMax Is Cost-Optimal for Solo AI Workflow Testing — Claude Code Team Only Makes Sense at 5+ Seats</title><link href="https://pelican-5lg.pages.dev/minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats.html" rel="alternate"/><published>2026-05-22T00:00:00+02:00</published><updated>2026-05-22T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-22:/minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats.html</id><summary type="html">&lt;h1 id="minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats"&gt;MiniMax Is Cost-Optimal for Solo AI Workflow Testing — Claude Code Team Only Makes Sense at 5+ Seats&lt;a class="headerlink" href="#minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For solo developers or small teams (1–4 people) testing and building AI workflows, MiniMax Ultra-Highspeed is significantly cheaper and more flexible than Claude Code Team Premium. Claude Code Team only …&lt;/p&gt;</summary><content type="html">&lt;h1 id="minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats"&gt;MiniMax Is Cost-Optimal for Solo AI Workflow Testing — Claude Code Team Only Makes Sense at 5+ Seats&lt;a class="headerlink" href="#minimax-is-cost-optimal-for-solo-ai-workflow-testing-claude-code-team-only-makes-sense-at-5-seats" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="core-idea"&gt;Core Idea&lt;a class="headerlink" href="#core-idea" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For solo developers or small teams (1–4 people) testing and building AI workflows, MiniMax Ultra-Highspeed is significantly cheaper and more flexible than Claude Code Team Premium. Claude Code Team only becomes the better value at 5+ seats where the per-seat economics shift.&lt;/p&gt;
&lt;h2 id="why-this-matters"&gt;Why This Matters&lt;a class="headerlink" href="#why-this-matters" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code Team Premium has a 5-seat minimum at $500/month. For a solo developer or a small team of 2–3, you're paying for unused seats. MiniMax has no seat minimum and charges by token consumption at a fraction of the price.&lt;/p&gt;
&lt;h2 id="key-comparison-as-of-may-2026"&gt;Key Comparison (as of May 2026)&lt;a class="headerlink" href="#key-comparison-as-of-may-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;| Factor | Claude Code Team Premium | MiniMax Ultra-Highspeed |
|---|---|---|
| Minimum cost | &lt;span class="math"&gt;\(500/month (5 seats) | ~\)&lt;/span&gt;150/month (flexible) |
| Seat minimum | 5 | None |
| Context window | 1M tokens | 204K tokens |
| Admin controls | Yes | Limited |
| Overflow usage | Pay-as-you-go | Included |
| Data residency | US/Anthropic | China (Z.ai safer) |
| Won't-train guarantee | Yes | No explicit clause |&lt;/p&gt;
&lt;h2 id="decision-rule"&gt;Decision Rule&lt;a class="headerlink" href="#decision-rule" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solo / 1–4 people testing AI workflows&lt;/strong&gt; → MiniMax via Z.ai proxy; lower cost, no seat minimum&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5+ person team doing production Claude Code work&lt;/strong&gt; → Claude Code Team; context window, admin controls, and overflow handling justify the premium&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sensitive/customer data&lt;/strong&gt; → Always prefer Z.ai or Anthropic; MiniMax data policy allows de-identified commercial use including training&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="connections"&gt;Connections&lt;a class="headerlink" href="#connections" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[minimax-litellm-cost]] — detailed cost breakdown and LiteLLM routing config&lt;/li&gt;
&lt;li&gt;[[minimax-security-privacy]] — MiniMax data policy risks and Z.ai as a safer routing layer&lt;/li&gt;
&lt;li&gt;[[minimax-token-procurement]] — procurement memo and management approval status&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="source"&gt;Source&lt;a class="headerlink" href="#source" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Conversation: "Minimax (Claude Code Team vs MiniMax comparison)" — 2026-05-22&lt;/p&gt;
&lt;script type="text/javascript"&gt;if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
    var align = "center",
        indent = "0em",
        linebreak = "false";

    if (false) {
        align = (screen.width &lt; 768) ? "left" : align;
        indent = (screen.width &lt; 768) ? "0em" : indent;
        linebreak = (screen.width &lt; 768) ? 'true' : linebreak;
    }

    var mathjaxscript = document.createElement('script');
    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
    mathjaxscript.type = 'text/javascript';
    mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';

    var configscript = document.createElement('script');
    configscript.type = 'text/x-mathjax-config';
    configscript[(window.opera ? "innerHTML" : "text")] =
        "MathJax.Hub.Config({" +
        "    config: ['MMLorHTML.js']," +
        "    TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
        "    displayAlign: '"+ align +"'," +
        "    displayIndent: '"+ indent +"'," +
        "    showMathMenu: true," +
        "    messageStyle: 'normal'," +
        "    tex2jax: { " +
        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
        "        displayMath: [ ['$$','$$'] ]," +
        "        processEscapes: true," +
        "        preview: 'TeX'," +
        "    }, " +
        "    'HTML-CSS': { " +
        "        availableFonts: ['STIX', 'TeX']," +
        "        preferredFont: 'STIX'," +
        "        styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
        "        linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
        "    }, " +
        "}); " +
        "if ('default' !== 'default') {" +
            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
        "}";

    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
&lt;/script&gt;</content><category term="evergreen"/><category term="[minimax"/><category term="claude-code"/><category term="procurement"/><category term="ai-tools"/><category term="cost]"/></entry><entry><title>Daily Journal — 2026-05-21</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-21.html" rel="alternate"/><published>2026-05-21T00:00:00+02:00</published><updated>2026-05-21T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-21:/daily-journal-2026-05-21.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technical-leaning day split between infrastructure decisions, product thinking, and integration tooling. Explored the rapidly evolving Claude Code autonomous dev landscape — the stack has moved on significantly from GSD + autonomous-dev toward newer options like Superpowers and oh-my-claudecode. Also revisited the CreditX concept, picked up a quick reference on Keycloak …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technical-leaning day split between infrastructure decisions, product thinking, and integration tooling. Explored the rapidly evolving Claude Code autonomous dev landscape — the stack has moved on significantly from GSD + autonomous-dev toward newer options like Superpowers and oh-my-claudecode. Also revisited the CreditX concept, picked up a quick reference on Keycloak/Kong Gateway commercial licensing, and spent time deeper in Composio: discovered that the Outlook connection lacks the Tasks.ReadWrite scope needed for Microsoft To Do, and that Rovo won't work on personal Atlassian accounts registered under outlook.com/gmail.com.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Evaluate oh-my-claudecode Team mode + GSD as the new autonomous dev stack (replaces GSD + autonomous-dev)&lt;/li&gt;
&lt;li&gt;[ ] Continue CreditX field validation planning&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="cc-autonomous"&gt;CC-Autonomous&lt;a class="headerlink" href="#cc-autonomous" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Claude Code autonomous development landscape has evolved significantly. Superpowers (124K GitHub stars, 7-phase TDD pipeline) and oh-my-claudecode (19 agents, 36 skills, 5 execution modes) are now the dominant frameworks. Updated recommendation: oh-my-claudecode in Team mode + GSD for context isolation. Key insight: Superpowers enforces TDD architecturally — it deletes code written before tests exist.
→ See [[claude-code-autonomous-pipeline]]&lt;/p&gt;
&lt;h3 id="creditx"&gt;CreditX&lt;a class="headerlink" href="#creditx" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Revisited the CreditX product concept: a workflow tool for Corporate Credit Officers built on CorpusX/TradeX infrastructure. Architecture and prototype are complete; the bottleneck is field validation on persona demand and hour-based pricing acceptance. The structural moat (audit trail lock-in) is compelling if the persona bet proves correct.
→ See [[creditx]]&lt;/p&gt;
&lt;h3 id="commercial-use-permissions"&gt;Commercial use permissions&lt;a class="headerlink" href="#commercial-use-permissions" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Quick lookup: both Keycloak and Kong Gateway are Apache 2.0 OSS, production-ready without a commercial license. Commercial tiers (Red Hat build / Kong Enterprise) add SLAs and enterprise features but aren't needed for most teams.
→ See [[keycloak-kong-commercial-licensing]]&lt;/p&gt;
&lt;h3 id="composio-ai-agent-integration-platform"&gt;Composio AI agent integration platform&lt;a class="headerlink" href="#composio-ai-agent-integration-platform" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Went deeper on Composio's task management integrations. Microsoft To Do is connected via Composio (phuriwaj@outlook.com) but creating tasks fails with 401 — the Outlook connection is missing the Tasks.ReadWrite Microsoft Graph scope. Fix: disconnect and reconnect at composio.dev → Connections → Outlook, enabling Tasks/To Do permission. Also confirmed Todoist is natively connected in Claude.ai. Rovo (Atlassian AI) remains blocked on personal accounts with outlook.com email.
→ See [[composio-mcp-connector]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix Composio Outlook connection: reconnect with Tasks.ReadWrite scope to enable Microsoft To Do task creation&lt;/li&gt;
&lt;li&gt;[ ] Try oh-my-claudecode &lt;code&gt;/omc-setup&lt;/code&gt; and test Team mode on a real project&lt;/li&gt;
&lt;li&gt;[ ] Enable GSD on top of oh-my-claudecode for context isolation on longer runs&lt;/li&gt;
&lt;li&gt;[ ] Run 3–5 field interviews with corporate credit officers to validate CreditX persona demand&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Superpowers TDD enforcement]] — architectural TDD gates (delete pre-test code) vs checklist TDD — worth a dedicated evergreen note&lt;/li&gt;
&lt;li&gt;[[oh-my-claudecode execution modes]] — Autopilot vs Ultrapilot vs Team vs Ralph vs Ecomode — each solves a different failure mode&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-20</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-20.html" rel="alternate"/><published>2026-05-20T00:00:00+02:00</published><updated>2026-05-20T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-20:/daily-journal-2026-05-20.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A day of dense AI tooling and integration work. The morning was spent connecting the pieces of the stack — Jira via Composio, Gmail connectors, email automation to Teams — while the afternoon circled back to bigger architectural questions: how to run Claude Code fully autonomously overnight, and whether MiniMax is …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A day of dense AI tooling and integration work. The morning was spent connecting the pieces of the stack — Jira via Composio, Gmail connectors, email automation to Teams — while the afternoon circled back to bigger architectural questions: how to run Claude Code fully autonomously overnight, and whether MiniMax is actually safe to use for API workloads. The privacy analysis was a sobering read. Good to have clarity.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Review and action Composio vs Atlassian MCP decision for Hermes Jira integration&lt;/li&gt;
&lt;li&gt;[ ] Re-calculate Hermes gateway capacity model using 2–5× concurrent multiplier per agentic session&lt;/li&gt;
&lt;li&gt;[ ] Validate CreditX persona demand and hour-based pricing with field conversations&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="product-strategy"&gt;Product Strategy&lt;a class="headerlink" href="#product-strategy" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="creditx"&gt;CreditX&lt;a class="headerlink" href="#creditx" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored CreditX — a new BOL product concept layered on top of CorpusX and TradeX for Corporate Credit Officers. Architecture and prototype are done. The product formalises work credit officers already do manually in spreadsheets. Key structural moat: once a company's credit committee uses CreditX as its decision record, the audit trail becomes load-bearing and hard to migrate. Risks: persona demand unvalidated, hour-based pricing (฿2,250/hr) untested, Concentration Overlay depends on TradeX critical mass, backend decision-record build cost unsized.
→ See [[creditx]]&lt;/p&gt;
&lt;h3 id="ai-tooling-integrations"&gt;AI Tooling &amp;amp; Integrations&lt;a class="headerlink" href="#ai-tooling-integrations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="jira-connection-setup"&gt;Jira Connection Setup&lt;a class="headerlink" href="#jira-connection-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Created Jira task PT-1 successfully via Composio MCP. First live Jira task from Claude. Very short but meaningful milestone.
→ See [[composio-mcp-connector]]&lt;/p&gt;
&lt;h4 id="composio-ai-agent-integration-platform"&gt;Composio AI Agent Integration Platform&lt;a class="headerlink" href="#composio-ai-agent-integration-platform" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Discovered Rovo is blocked on personal Jira (phuriwaj.atlassian.net) because the account is registered with outlook.com — Atlassian restricts Rovo to business domains. Composio is the correct alternative; Atlassian's own MCP with OAuth also bypasses this restriction.
→ See [[composio-mcp-connector]]&lt;/p&gt;
&lt;h4 id="testing-gmail-connector-email-delivery"&gt;Testing Gmail Connector Email Delivery&lt;a class="headerlink" href="#testing-gmail-connector-email-delivery" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored two paths for adding Gmail to Claude: Composio (manual MCP URL config) vs Zapier (one-click, in directory, 50 sends/month free). Zapier is simpler for casual use; Composio for agent-integrated workflows.
→ See [[composio-mcp-connector]]&lt;/p&gt;
&lt;h3 id="automation-scripting"&gt;Automation &amp;amp; Scripting&lt;a class="headerlink" href="#automation-scripting" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="power-automate-workflow-url-explanation"&gt;Power Automate Workflow URL Explanation&lt;a class="headerlink" href="#power-automate-workflow-url-explanation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Built a Python email summary script using the O365 library (the OAuth2 replacement for Basic Auth, deprecated by Microsoft in 2022). Sends a Claude-generated digest to a Teams Adaptive Card on a daily cron. Azure App registration + Microsoft Graph permissions required.
→ See [[o365-email-teams-summary]]&lt;/p&gt;
&lt;h4 id="note-taking-hugo-quartz"&gt;Note Taking — Hugo &amp;amp; Quartz&lt;a class="headerlink" href="#note-taking-hugo-quartz" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Added crontab for &lt;code&gt;sync-pkm.sh&lt;/code&gt; to auto-sync notes to Dockerised Quartz site on weekdays at 18:00. Confirmed Docker volume (&lt;code&gt;dockerized-quartz_quartz-modules&lt;/code&gt;) and container (&lt;code&gt;quartz-notes&lt;/code&gt;) are running correctly.
→ See [[quartz-pkm-setup]]&lt;/p&gt;
&lt;h3 id="claude-code-architecture"&gt;Claude Code Architecture&lt;a class="headerlink" href="#claude-code-architecture" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="messaging-claude-code-on-discord-and-line"&gt;Messaging Claude Code on Discord and LINE&lt;a class="headerlink" href="#messaging-claude-code-on-discord-and-line" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Claude Code Channels (v2.1.80+, &lt;code&gt;--channels&lt;/code&gt; flag) natively supports Discord and Telegram. LINE not officially supported; community tool cc-connect (github.com/chenhg5/cc-connect) bridges to 11 platforms including LINE with no public IP needed.
→ See [[claude-code-channels]]&lt;/p&gt;
&lt;h4 id="evaluating-claude-code-automation-credibility"&gt;Evaluating Claude Code Automation Credibility&lt;a class="headerlink" href="#evaluating-claude-code-automation-credibility" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Reviewed Echofold article (Kevin Collins, Claude Ambassador) on autonomous dev pipelines. Credible technically but aspirational in framing. Most useful sections: Phase 3 (Hooks), Phase 9 (Agent SDK/session-per-ticket pattern), complete settings.json config reference.
→ See [[claude-code-autonomous-pipeline]]&lt;/p&gt;
&lt;h4 id="cc-autonomous"&gt;CC-Autonomous&lt;a class="headerlink" href="#cc-autonomous" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Deep dive into GSD + autonomous-dev harness as the gold-standard autonomous pipeline. Key differentiator: adversarial spec-blind reviewer (separate agent validates output without seeing implementation). Pipeline covers requirements → roadmap → plan → wave-based execution → hard gates (0 failures, no stubs, security scan) → verify → PR. GitHub Actions trigger pattern on &lt;code&gt;requirements.md&lt;/code&gt; push is useful for Hermes.
→ See [[claude-code-autonomous-pipeline]]&lt;/p&gt;
&lt;h3 id="capacity-security"&gt;Capacity &amp;amp; Security&lt;a class="headerlink" href="#capacity-security" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="api-rate-limits-explanation"&gt;API Rate Limits Explanation&lt;a class="headerlink" href="#api-rate-limits-explanation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed: 1 agentic Claude Code session ≈ 2–5 concurrent API requests (parallel tool calls). For Hermes gateway capacity planning with a 10-concurrent Z.ai limit, realistic user concurrency = 2–3 active agentic users, not 10.&lt;/p&gt;
&lt;h4 id="minimax-privacy-policy-data-training-concerns"&gt;Minimax Privacy Policy Data Training Concerns&lt;a class="headerlink" href="#minimax-privacy-policy-data-training-concerns" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Analysed MiniMax Open Platform Privacy Policy (2023). No "won't train" clause. Rights explicitly reserved to use de-identified data commercially. Data stored in China. Compared against Z.ai (DPA embedded, Singapore storage, API data not retained). Decision: Z.ai preferred for any BOL or customer-sensitive workloads.
→ See [[minimax-security-privacy]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Re-calculate Hermes gateway capacity model (1 session = 2–5 concurrent, not 1:1)&lt;/li&gt;
&lt;li&gt;[ ] Evaluate GSD + autonomous-dev harness for Hermes overnight build pipeline&lt;/li&gt;
&lt;li&gt;[ ] Set up Atlassian MCP server with OAuth as alternative to Composio for Jira&lt;/li&gt;
&lt;li&gt;[ ] Test cc-connect if LINE integration for Claude Code becomes needed&lt;/li&gt;
&lt;li&gt;[ ] Confirm approval status of MiniMax token procurement memo (recall was attempted 2026-05-19)&lt;/li&gt;
&lt;li&gt;[ ] Register email MCP in Cowork MCP settings and test daily generator delivery&lt;/li&gt;
&lt;li&gt;[ ] Run 3–5 field conversations with corporate credit officers to validate CreditX persona demand&lt;/li&gt;
&lt;li&gt;[ ] Size backend build cost for CreditX decision-record feature&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Rovo domain restriction reveals a broader pattern — Atlassian enterprise AI gated by domain, not subscription]]&lt;/li&gt;
&lt;li&gt;[[Adversarial spec-blind testing is the missing QA layer in most autonomous pipelines]]&lt;/li&gt;
&lt;li&gt;[[MiniMax privacy policy shows why "enterprise-grade" claims need policy-level verification, not just marketing]]&lt;/li&gt;
&lt;li&gt;[[CreditX audit-trail lock-in mirrors Notion and Figma — the value compounds because switching destroys institutional memory]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-19</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-19.html" rel="alternate"/><published>2026-05-19T00:00:00+02:00</published><updated>2026-05-19T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-19:/daily-journal-2026-05-19.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused AI-infrastructure day — validating Z.ai's privacy posture for enterprise use, preparing the MiniMax procurement memo for formal submission, and building out reference knowledge in GitHub Actions and Apprise notifications. The day also surfaced several active BOL incidents and pending approvals that carried over from yesterday.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things …&lt;/h2&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused AI-infrastructure day — validating Z.ai's privacy posture for enterprise use, preparing the MiniMax procurement memo for formal submission, and building out reference knowledge in GitHub Actions and Apprise notifications. The day also surfaced several active BOL incidents and pending approvals that carried over from yesterday.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Confirm MiniMax procurement memo approval status (recall email sent — check if it landed)&lt;/li&gt;
&lt;li&gt;[ ] Action NCB CLICK/CLICX production connection request (deadline: May 19)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tooling"&gt;AI Tooling&lt;a class="headerlink" href="#ai-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="minimax-zai-privacy-policy-data-training-concerns"&gt;Minimax / Z.ai Privacy Policy Data Training Concerns&lt;a class="headerlink" href="#minimax-zai-privacy-policy-data-training-concerns" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Deep-dive into Z.ai's Terms of Use and Privacy Policy + DPA for API Services. Key finding: API data is not stored and not used for training by default — the DPA is bundled directly in the Privacy Policy. Individual chat.z.ai users are subject to model training. US Entity List risk (Zhipu AI blacklisted by US) flagged for compliance review.
→ See [[minimax-security-privacy]] | [[minimax-token-procurement]]&lt;/p&gt;
&lt;h4 id="minimax-token-plan-ai"&gt;ขออนุมัติซื้อ MINIMAX Token Plan สำหรับพัฒนา AI&lt;a class="headerlink" href="#minimax-token-plan-ai" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Drafted and formatted formal Thai budget memo (บันทึกข้อความ) for MiniMax Ultra-Highspeed $1,500/year plan. Package: M2.7-highspeed, 30,000 calls/5hr. Submitted for management review. Email recall was attempted — need to verify receipt.
→ See [[minimax-token-procurement]]&lt;/p&gt;
&lt;h4 id="api-key-limits-for-minimax-ultra-high-speed-plan"&gt;API Key Limits for MiniMax Ultra High Speed Plan&lt;a class="headerlink" href="#api-key-limits-for-minimax-ultra-high-speed-plan" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed: no documented per-plan limit on number of API keys. Quota (30K req/5hr) is tied to the account/team, not individual keys — creating more keys does not increase quota; useful for environment segregation only.
→ See [[minimax-security-privacy]]&lt;/p&gt;
&lt;h3 id="devops-engineering"&gt;DevOps &amp;amp; Engineering&lt;a class="headerlink" href="#devops-engineering" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="multiple-github-repositories-in-one-workspace-github-actions-guide"&gt;Multiple GitHub Repositories in One Workspace (GitHub Actions Guide)&lt;a class="headerlink" href="#multiple-github-repositories-in-one-workspace-github-actions-guide" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Comprehensive GitHub Actions reference produced — covering CI, multi-job pipelines, secrets, matrix strategy, Docker build/push, cron schedules, conditional steps, reusable workflows, self-hosted runners, and a full real-world pipeline. Self-hosted runner pattern noted as most relevant for local DeepSeek/LiteLLM setup.
→ See [[github-actions-guide]]&lt;/p&gt;
&lt;h3 id="notification-infrastructure"&gt;Notification Infrastructure&lt;a class="headerlink" href="#notification-infrastructure" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="setting-up-line-messaging-api-webhook-apprise-line"&gt;Setting up LINE Messaging API Webhook (Apprise + LINE)&lt;a class="headerlink" href="#setting-up-line-messaging-api-webhook-apprise-line" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Quick lookup on Apprise LINE notification URL format. Requires Channel Access Token + LINE User ID (starts with 'U'). URL: &lt;code&gt;line://&lt;access_token&gt;/&lt;user_id&gt;&lt;/user_id&gt;&lt;/access_token&gt;&lt;/code&gt;. Multiple users: separate with &lt;code&gt;/&lt;/code&gt;.
→ See [[django-apprise-notifications]]&lt;/p&gt;
&lt;h3 id="daily-operations"&gt;Daily Operations&lt;a class="headerlink" href="#daily-operations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="todays-schedule-for-monday-may-18"&gt;Today's Schedule for Monday May 18&lt;a class="headerlink" href="#todays-schedule-for-monday-may-18" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Email triage for May 18 surfaced: Instagram login alert (check if it was you), two active BOL incidents (BOLI-10504 CPX API AR data incomplete, BOLI-10506 MatchLink data not displaying), BAAC-ALM Liquidity Gap report needing review (from Puwadon), CBS Deposit layout update (from Surasak), Timesheet Jan–Mar 2026 (from Kaewchai/Benjamas), NCB CLICK/CLICX production connection request due May 19, and a Neuxnet/Huawei AI presentation invite (from Mina).&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Verify MiniMax memo email recall was successful — resubmit if needed&lt;/li&gt;
&lt;li&gt;[ ] Respond to NCB CLICK/CLICX production connection request (due today)&lt;/li&gt;
&lt;li&gt;[ ] Review BAAC-ALM Liquidity Gap report from Puwadon&lt;/li&gt;
&lt;li&gt;[ ] Review CBS Deposit layout update from Surasak&lt;/li&gt;
&lt;li&gt;[ ] Fill in Timesheet Jan–Feb 2026 (March is fillable)&lt;/li&gt;
&lt;li&gt;[ ] Check Instagram login alert — reset password if unauthorized&lt;/li&gt;
&lt;li&gt;[ ] Review Dell PowerEdge R660 CPU2 VCCFA PG voltage error follow-up&lt;/li&gt;
&lt;li&gt;[ ] Check BOLI-10504 and BOLI-10506 incident status&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Z.ai US Entity List risk — compliance implications for Thai enterprise use]]&lt;/li&gt;
&lt;li&gt;[[GitHub Actions self-hosted runner as local LLM CI trigger]]&lt;/li&gt;
&lt;li&gt;[[Apprise as unified notification layer across all BOL internal tools]]&lt;/li&gt;
&lt;li&gt;[[GSD + autonomous-dev as the gold standard for overnight autonomous coding]]&lt;/li&gt;
&lt;li&gt;[[Agentic sessions multiply API concurrency — Hermes capacity planning must account for this]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="evening-conversations"&gt;Evening Conversations&lt;a class="headerlink" href="#evening-conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="claude-code-automation"&gt;Claude Code Automation&lt;a class="headerlink" href="#claude-code-automation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="evaluating-claude-code-automation-credibility"&gt;Evaluating Claude Code Automation Credibility&lt;a class="headerlink" href="#evaluating-claude-code-automation-credibility" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Evaluated Kevin Collins' (Echofold / Manus Fellow) article on building an autonomous Claude Code pipeline. Verdict: technically accurate — hooks, &lt;code&gt;--auto&lt;/code&gt; mode, &lt;code&gt;settings.json&lt;/code&gt;, MCP server config, and Agent SDK details all check out against official Anthropic docs. Article published April 2026 and links only to real sources. Caveats: promotional framing for a €49 Echofold course; "zero human touch" claim is oversold for production. Most useful sections: Phase 3 (Hooks — PreToolUse/PostToolUse/Stop), Phase 9 (Agent SDK / session-per-ticket pattern).
→ See [[claude-code-autonomous-pipeline]]&lt;/p&gt;
&lt;h4 id="cc-autonomous-best-autonomous-pipeline-pattern"&gt;CC-Autonomous — Best Autonomous Pipeline Pattern&lt;a class="headerlink" href="#cc-autonomous-best-autonomous-pipeline-pattern" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Deep research into the canonical autonomous development pipeline. Conclusion: &lt;strong&gt;GSD + autonomous-dev harness&lt;/strong&gt; is the strongest combination. GSD handles requirements → structured plan with persistent state files (PROJECT.md, REQUIREMENTS.md, ROADMAP.md, STATE.md). The autonomous-dev harness adds adversarial verification: a spec-blind reviewer agent independently tests the implementation without having seen how it was built — closest to a real independent QA reviewer. Four hard failure modes addressed: drift, context rot, missing verification gate, no recovery path. GitHub Actions pattern for triggering on requirements.md push documented.
→ See [[claude-code-autonomous-pipeline]]&lt;/p&gt;
&lt;h3 id="hermes-capacity-planning"&gt;Hermes Capacity Planning&lt;a class="headerlink" href="#hermes-capacity-planning" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="api-rate-limits-agentic-concurrency-per-session"&gt;API Rate Limits — Agentic Concurrency Per Session&lt;a class="headerlink" href="#api-rate-limits-agentic-concurrency-per-session" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Key clarification for Hermes capacity planning: Claude Code agentic sessions are NOT 1:1 with API concurrent requests. A single agentic task (e.g. "refactor my codebase") spawns 2–5 parallel tool calls simultaneously. Implication: if Z.ai limit = 10 concurrent requests, Hermes realistically supports only 2–3 active users running agentic tasks simultaneously, not 10. Must re-calculate Hermes capacity based on 1 active session ≈ 2–5 concurrent API requests.
→ See [[hermes-agent-orchestration]] | [[claude-code-execution-methods]]&lt;/p&gt;
&lt;h3 id="vendor-security"&gt;Vendor Security&lt;a class="headerlink" href="#vendor-security" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="minimax-privacy-policy-deep-dive-minimaxio-own-policy"&gt;MiniMax Privacy Policy Deep-Dive (MiniMax.io — Own Policy)&lt;a class="headerlink" href="#minimax-privacy-policy-deep-dive-minimaxio-own-policy" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Analysed MiniMax's own Open Platform Privacy Policy (2023 version). Critical finding: no clause stating data will not be used for model training. De-identified data may be used for commercial purposes (including training). All conversations sent to cloud servers; only personal information is filtered/deleted — non-personal content retention is ambiguous. Data stored in China (PRC). No public DPA for API customers. Sharply contrasts with Z.ai's explicit API-no-storage guarantee. &lt;strong&gt;Procurement risk flag:&lt;/strong&gt; the security clearance in the procurement effort was based on earlier research; this deeper reading of the actual MiniMax.io policy raises new concerns.
→ See [[minimax-security-privacy]] | [[minimax-token-procurement]]&lt;/p&gt;
&lt;h2 id="additional-open-tasks-surfaced-evening"&gt;Additional Open Tasks Surfaced (Evening)&lt;a class="headerlink" href="#additional-open-tasks-surfaced-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Re-calculate Hermes concurrent user capacity (1 session ≈ 2–5 API requests)&lt;/li&gt;
&lt;li&gt;[ ] Review GSD + autonomous-dev pattern for possible adoption in Hermes overnight builds&lt;/li&gt;
&lt;li&gt;[ ] Reassess MiniMax procurement security clearance — actual policy lacks explicit no-training guarantee&lt;/li&gt;
&lt;li&gt;[ ] Cross-check Kevin Collins article against current code.claude.com/docs before citing&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-18</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-18.html" rel="alternate"/><published>2026-05-18T00:00:00+02:00</published><updated>2026-05-18T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-18:/daily-journal-2026-05-18.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Monday split across three themes: deepening developer tooling knowledge (Claude Code hooks, GitHub access control, codebase analysis tools), advancing the Django/Next.js web project (notifications with Apprise, git workflow), and creative work preparing an AI presentation for a Thai audience. The day shows a healthy mix …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused Monday split across three themes: deepening developer tooling knowledge (Claude Code hooks, GitHub access control, codebase analysis tools), advancing the Django/Next.js web project (notifications with Apprise, git workflow), and creative work preparing an AI presentation for a Thai audience. The day shows a healthy mix of technical depth and communication/workshop prep.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Confirm context for AI workshop (keynote / slides / internal training) and finalise content&lt;/li&gt;
&lt;li&gt;[ ] Try MUI-specific prompting format for the next Vuexy UI task&lt;/li&gt;
&lt;li&gt;[ ] Create one full epic spec in Claude as a template for the Speckit workflow&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="developer-tooling"&gt;Developer Tooling&lt;a class="headerlink" href="#developer-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="integrating-claude-with-slack-notifications"&gt;Integrating Claude with Slack notifications&lt;a class="headerlink" href="#integrating-claude-with-slack-notifications" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Complete setup for a Claude Code Stop hook that sends a Slack ping when any task finishes. Uses Slack Incoming Webhooks + a bash script + &lt;code&gt;settings.json&lt;/code&gt; hook registration. Companion to the existing Discord hook.
→ See [[reference/claude-code-slack-hook]]&lt;/p&gt;
&lt;h4 id="api-documentation-analysis"&gt;API documentation analysis&lt;a class="headerlink" href="#api-documentation-analysis" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored the &lt;code&gt;code-review-graph&lt;/code&gt; MCP tool (pipx v2.3.3) — already active in stream, codeops, and claude-tools projects. It builds a dependency/architecture graph per project and exposes tools like &lt;code&gt;get_architecture_overview_tool&lt;/code&gt; and &lt;code&gt;list_communities_tool&lt;/code&gt;.
→ See [[reference/code-review-graph-mcp]]&lt;/p&gt;
&lt;h4 id="todays-schedule-for-monday-may-18"&gt;Today's schedule for Monday May 18&lt;a class="headerlink" href="#todays-schedule-for-monday-may-18" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Clarified which connectors sync between claude.ai and Claude Code CLI: connectors set up in the web app (Gmail, Outlook, Slack) automatically work in CLI when logged in with the same account. Desktop/local MCP servers do NOT sync.
→ See [[reference/claude-connectors-code-cli-sharing]]&lt;/p&gt;
&lt;h3 id="web-application-django-nextjs"&gt;Web Application (Django / Next.js)&lt;a class="headerlink" href="#web-application-django-nextjs" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="multiple-github-repositories-in-one-workspace"&gt;Multiple GitHub repositories in one workspace&lt;a class="headerlink" href="#multiple-github-repositories-in-one-workspace" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;How to use fine-grained GitHub PATs to give Claude Code read-only access to specific repos. Combine PAT (blocks remote pushes) with &lt;code&gt;chmod -R a-w&lt;/code&gt; (blocks local edits) for full enforcement.
→ See [[reference/github-fine-grained-pat-per-repo]]&lt;/p&gt;
&lt;h4 id="django-integration-with-apprise"&gt;Django integration with Apprise&lt;a class="headerlink" href="#django-integration-with-apprise" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed Apprise is a mature, stable library (since 2018/2019, now v1.9.7). Battle-tested — used by Home Assistant, Uptime Kuma, Fail2Ban. Solid choice for the Django notification layer.
→ See [[reference/django-apprise-notifications]]&lt;/p&gt;
&lt;h4 id="merging-pr-with-complete-test-coverage"&gt;Merging PR with complete test coverage&lt;a class="headerlink" href="#merging-pr-with-complete-test-coverage" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Full walkthrough of resolving a Git merge conflict — from &lt;code&gt;git merge main&lt;/code&gt; triggering the conflict, through editing conflict markers, to verifying and pushing. VS Code simplifies with Accept buttons.
→ See [[reference/git-merge-conflict-resolution]]&lt;/p&gt;
&lt;h3 id="learning-planning"&gt;Learning &amp;amp; Planning&lt;a class="headerlink" href="#learning-planning" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="what-is-notebooklm"&gt;What is NotebookLM&lt;a class="headerlink" href="#what-is-notebooklm" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Wide-ranging session covering: NotebookLM vs Claude Projects comparison, the full learning-to-implementation pipeline (feature idea → research → requirements → Speckit epics → VModel), design system clarity (Vuexy = MUI v5), and Speckit workflow best practices.
→ See [[efforts/on/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h3 id="ai-presentation"&gt;AI Presentation&lt;a class="headerlink" href="#ai-presentation" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="word-extraction"&gt;Word extraction&lt;a class="headerlink" href="#word-extraction" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Crafted Thai-language content for an AI workshop/presentation: positive quotes about AI (6 variants), rhetorical engagement questions (4 variants), and the "5 ways to 2x productivity with AI" framework. Context (keynote/slides/post) still to be confirmed.
→ See [[efforts/on/ai-workshop-presentation]]&lt;/p&gt;
&lt;h3 id="minimax-ai-strategy"&gt;MiniMax AI Strategy&lt;a class="headerlink" href="#minimax-ai-strategy" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="minimax-privacy-policy-data-training-concerns"&gt;Minimax privacy policy data training concerns&lt;a class="headerlink" href="#minimax-privacy-policy-data-training-concerns" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Researched MiniMax's enterprise privacy/security posture: GDPR-compliant, TLS 1.3 + AES-256 encryption, zero-retention mode (data not stored or used for training when enabled), private cloud / VPN deployment option. Solid basis for enterprise adoption without data-leak risk.
→ See [[reference/minimax-security-privacy]]&lt;/p&gt;
&lt;h4 id="minimax-token-plan-ai"&gt;ขออนุมัติซื้อ MINIMAX Token Plan สำหรับพัฒนา AI&lt;a class="headerlink" href="#minimax-token-plan-ai" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Drafted a formal Thai budget memo requesting approval for MiniMax Ultra-Highspeed token plan ($1,500/year ≈ 48,449.85 THB at 32.2999 THB/USD). Plan: M2.7-highspeed, 30,000 calls/5hrs. Use case: AI Workflow dev/testing via Claude Code. Pending management approval.
→ See [[efforts/on/minimax-token-procurement]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Confirm AI workshop context (keynote / slides / internal training)&lt;/li&gt;
&lt;li&gt;[ ] Try MUI-specific prompting for next Vuexy UI task&lt;/li&gt;
&lt;li&gt;[ ] Create full epic spec in Claude as Speckit workflow template&lt;/li&gt;
&lt;li&gt;[ ] Set up fine-grained PAT config for multi-repo Claude Code workspace&lt;/li&gt;
&lt;li&gt;[ ] Set Slack webhook URL in shell env and test the Stop hook&lt;/li&gt;
&lt;li&gt;[ ] Follow up on MiniMax Ultra-Highspeed token plan approval (memo submitted)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Prompt specificity scales output quality]] — the "2x AI" framework is really about prompt clarity, not tool access&lt;/li&gt;
&lt;li&gt;[[MUI-specific prompting for better UI output]] — naming exact MUI components produces better visual results from Claude&lt;/li&gt;
&lt;li&gt;[[Two-layer read-only enforcement for Claude Code]] — PAT + chmod covers both remote and local write paths&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-17</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-17.html" rel="alternate"/><published>2026-05-17T00:00:00+02:00</published><updated>2026-05-17T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-17:/daily-journal-2026-05-17.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A heavy Sunday of Claude Code ecosystem deep-dives — autonomous execution patterns, token optimization, session management, and Discord formatting. The BOL work side was quieter but present: a calendar check revealed Monday May 18 will be the week's busiest day, and email triage produced six actionable todos. The PKM noon …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A heavy Sunday of Claude Code ecosystem deep-dives — autonomous execution patterns, token optimization, session management, and Discord formatting. The BOL work side was quieter but present: a calendar check revealed Monday May 18 will be the week's busiest day, and email triage produced six actionable todos. The PKM noon scheduler fired and processed everything cleanly.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Build &lt;code&gt;/catchup&lt;/code&gt; slash command for Claude Code session resumption after &lt;code&gt;/clear&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Add RTK statusline badge to &lt;code&gt;settings.json&lt;/code&gt; (&lt;code&gt;rtk gain --short&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Monday May 18: C-Level meeting (10:00), SD Weekly (11:00), Data Engineer Weekly (13:30), BAAC ALM team (14:00), AI+KPI meeting (15:00) — prepare&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="claude-code-tooling"&gt;Claude Code Tooling&lt;a class="headerlink" href="#claude-code-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-autonomous"&gt;CC-Autonomous&lt;a class="headerlink" href="#cc-autonomous" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Comprehensive exploration of autonomous Claude Code execution options. Key options: &lt;code&gt;/loop&lt;/code&gt; (session-dependent cron), Ralph bash loop (overnight local, stateless), Subagents+Task tool, GSD (parallel workers, 200K tokens each), Claude Code Routines (cloud, no laptop), GitHub Actions (CI/CD trigger). Recommended stack: Speckit → tasks.md → Ralph loop locally; spec push → GitHub Actions for cloud.
→ See [[claude-code-execution-methods]]&lt;/p&gt;
&lt;h4 id="cc-remote-control"&gt;CC-Remote Control&lt;a class="headerlink" href="#cc-remote-control" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Discovered the built-in &lt;code&gt;/config&lt;/code&gt; toggle for always-on Remote Control (vs aliases). Documented downsides: network dependency, session accumulation, startup overhead. Network reliability is the main risk for local LLM dev setups.
→ See [[claude-code-remote-control]]&lt;/p&gt;
&lt;h4 id="cc-token-optimization"&gt;CC-Token optimization&lt;a class="headerlink" href="#cc-token-optimization" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Reviewed RTK stack saving 18.8M tokens (14.6M from &lt;code&gt;rtk read&lt;/code&gt;). Two open gaps: missing statusline badge and no &lt;code&gt;/catchup&lt;/code&gt; command for post-&lt;code&gt;/clear&lt;/code&gt; context resumption.
→ See [[claude-code-token-optimization]]&lt;/p&gt;
&lt;h4 id="cc-session-screen"&gt;CC-Session screen&lt;a class="headerlink" href="#cc-session-screen" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Zellij detach/attach workflow for persistent remote Claude Code sessions — already documented.
→ See [[claude-code-zellij-sessions]]&lt;/p&gt;
&lt;h4 id="cc-hooks"&gt;CC-Hooks&lt;a class="headerlink" href="#cc-hooks" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Claude Code session JSONL file structure — full transcripts, can grow to 5+ GB. Filter by event type before passing to Claude API for summarization.
→ See [[claude-code-session-files]]&lt;/p&gt;
&lt;h3 id="discord-formatting"&gt;Discord Formatting&lt;a class="headerlink" href="#discord-formatting" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="discord-ansi-color-codes-in-text"&gt;Discord ANSI color codes in text&lt;a class="headerlink" href="#discord-ansi-color-codes-in-text" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;ANSI colors inside &lt;code&gt;```ansi ```&lt;/code&gt; blocks for styled Discord messages. Bold yellow &lt;code&gt;\x1b[1;33m&lt;/code&gt; for labels, reset with &lt;code&gt;\x1b[0m&lt;/code&gt;. Cannot mix ANSI block with regular markdown on same line.
→ See [[discord-ansi-color-codes]]&lt;/p&gt;
&lt;h4 id="text-based-percentage-bars-for-discord"&gt;Text-based percentage bars for Discord&lt;a class="headerlink" href="#text-based-percentage-bars-for-discord" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Unicode block characters &lt;code&gt;█&lt;/code&gt; (U+2588) and &lt;code&gt;░&lt;/code&gt; (U+2591) for text progress bars. Formula: &lt;code&gt;filled = round(pct/100 * width)&lt;/code&gt;. Must use triple-backtick code block for monospace alignment.
→ See [[discord-text-progress-bars]]&lt;/p&gt;
&lt;h3 id="bol-work-project-monitoring"&gt;BOL Work &amp;amp; Project Monitoring&lt;a class="headerlink" href="#bol-work-project-monitoring" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="jira-connection-setup"&gt;Jira connection setup&lt;a class="headerlink" href="#jira-connection-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;STREAM Jira project reviewed — 7 Epics + 24 Stories created yesterday remain current. No new work today.
→ See [[bol-stream-project]]&lt;/p&gt;
&lt;h4 id="checking-claude-api-usage-programmatically"&gt;Checking Claude API usage programmatically&lt;a class="headerlink" href="#checking-claude-api-usage-programmatically" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Admin API key (&lt;code&gt;sk-ant-admin...&lt;/code&gt;) for usage reporting. Endpoints: &lt;code&gt;/v1/organizations/usage_report/messages&lt;/code&gt;, &lt;code&gt;/v1/organizations/cost_report&lt;/code&gt;. Claude.ai subscriptions have no programmatic API.
→ See [[anthropic-api-usage-reporting]]&lt;/p&gt;
&lt;h4 id="office-calendar"&gt;Office-Calendar&lt;a class="headerlink" href="#office-calendar" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Week of May 16–23 reviewed. Monday May 18 is the heaviest day (5 meetings). Key themes: AI-related meetings (AI+KPI on Mon, AI Guideline review on Wed), BAAC ALM team weekly, C-Level meeting.&lt;/p&gt;
&lt;h4 id="office-todo"&gt;Office-Todo&lt;a class="headerlink" href="#office-todo" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Six todos created from yesterday's emails: OT follow-up for GSB-RDM, PUPPIS high CPU, ML API memory issues, DR site firewall, CorpusX incidents, Symantec report.&lt;/p&gt;
&lt;h4 id="office-email"&gt;Office-Email&lt;a class="headerlink" href="#office-email" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Email batch processed (emails #75–124): BAAC-ALM project updates, ENLITE/XIGNAL coordination, Xignal data quality issues (shareholder data mismatches), BOL-ONES incidents, HR/ESS leave requests.&lt;/p&gt;
&lt;h4 id="office-microsoft-teams"&gt;Office-Microsoft Teams&lt;a class="headerlink" href="#office-microsoft-teams" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;M365 search API &lt;code&gt;beforeDateTime&lt;/code&gt; filter unreliable — returns latest messages regardless. Workaround: Teams native search with Ctrl+F for date-range filtering.&lt;/p&gt;
&lt;h4 id="what-is-notebooklm-speckit-workflow"&gt;What is NotebookLM (Speckit workflow)&lt;a class="headerlink" href="#what-is-notebooklm-speckit-workflow" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Conversation clarified the Claude → Speckit workflow: Claude writes the scoped epic with context, Speckit generates detailed user stories from that scope. Speckit needs input boundaries to generate good output — not for Claude to replace, but to pre-process for.&lt;/p&gt;
&lt;h4 id="connecting-claude-and-cowork-to-discord"&gt;Connecting Claude and Cowork to Discord&lt;a class="headerlink" href="#connecting-claude-and-cowork-to-discord" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Claude Code Channels (Mar 2026 research preview) enables native Discord/Telegram integration. Requires CC v2.1.80+, Pro/Max subscription, active session.
→ See [[claude-code-execution-methods]]&lt;/p&gt;
&lt;h4 id="merging-pr-with-complete-test-coverage"&gt;Merging PR with complete test coverage&lt;a class="headerlink" href="#merging-pr-with-complete-test-coverage" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;PR with 13 passing tests was reviewed and confirmed merge-ready. Reinforced the small-focused PR pattern: one task, clear scope, full test coverage. Explored squash vs. merge commit vs. rebase strategies.
→ See [[git-pr-learning]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Build &lt;code&gt;~/.claude/commands/catchup.md&lt;/code&gt; for post-&lt;code&gt;/clear&lt;/code&gt; session context resumption&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;statusLine.command = "rtk gain --short"&lt;/code&gt; to CC &lt;code&gt;settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Prepare for Monday May 18 heavy meeting day (C-Level, AI+KPI)&lt;/li&gt;
&lt;li&gt;[ ] Investigate PUPPIS server high CPU (98% threshold breach)&lt;/li&gt;
&lt;li&gt;[ ] Investigate ML API servers (BREMONT &amp;amp; BELLROSS) low memory&lt;/li&gt;
&lt;li&gt;[ ] Review CorpusX incidents BOLI-10501 (language switch) + BOLI-10500 (Academy 504)&lt;/li&gt;
&lt;li&gt;[ ] Check DR Site Firewall Fortigate 100F multiple SNMP sensor failures&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Ralph loop as default overnight execution pattern for CC]]&lt;/li&gt;
&lt;li&gt;[[Speckit as the spec input layer that feeds all autonomous CC execution options]]&lt;/li&gt;
&lt;li&gt;[[RTK + code-review-graph as structural file navigation vs raw file dumps]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Weekly Review — 2026-W20</title><link href="https://pelican-5lg.pages.dev/weekly-review-2026-w20.html" rel="alternate"/><published>2026-05-17T00:00:00+02:00</published><updated>2026-05-17T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-17:/weekly-review-2026-w20.html</id><summary type="html">&lt;h2 id="week-of-mon-12-sun-17-may-2026"&gt;Week of Mon 12 – Sun 17 May, 2026&lt;a class="headerlink" href="#week-of-mon-12-sun-17-may-2026" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A foundational week — the PKM system came online on May 12 and captured every working session from day one. Three major efforts advanced in parallel: the Vuexy SaaS frontend reached a fully architected state (monorepo, agent team prompts, CLAUDE.md), Hermes …&lt;/p&gt;</summary><content type="html">&lt;h2 id="week-of-mon-12-sun-17-may-2026"&gt;Week of Mon 12 – Sun 17 May, 2026&lt;a class="headerlink" href="#week-of-mon-12-sun-17-may-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="summary"&gt;Summary&lt;a class="headerlink" href="#summary" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A foundational week — the PKM system came online on May 12 and captured every working session from day one. Three major efforts advanced in parallel: the Vuexy SaaS frontend reached a fully architected state (monorepo, agent team prompts, CLAUDE.md), Hermes integration with GitHub/GitLab was designed and partially wired, and CorpusX moved from architecture into Jira with 7 Epics and 24 Stories. Claude Code tooling depth increased significantly across all five days — autoCompact, token optimisation, session files, remote control, and multi-agent execution patterns all explored and documented.&lt;/p&gt;
&lt;h3 id="topics-covered"&gt;Topics Covered&lt;a class="headerlink" href="#topics-covered" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| Topic | Days Active | Note |
|---|---|---|
| Claude Code Tooling | Mon–Sat (all 6 days) | [[claude-code-execution-methods]], [[claude-code-token-optimization]], [[claude-code-remote-control]], [[claude-code-autocompact]] |
| Vuexy / SaaS Frontend | Mon–Thu | [[vuexy-nextjs-frontend]] |
| PKM System Design | Mon–Wed, Sat | [[pkm-daily-summary]], [[pkm-sdlc-templates]], [[pkm-para-ace-moc]] |
| Hermes Agent | Wed–Sat | [[hermes-agent-orchestration]] |
| CorpusX Enterprise Platform | Thu–Sat | [[corpusx]] |
| BOL STREAM Project | Sat–Sun | [[bol-stream-project]] |
| LiteLLM / Local LLM | Mon–Tue | [[litellm-local-llm]] |
| Discord Formatting | Sun | [[discord-ansi-color-codes]], [[discord-text-progress-bars]] |
| Git / PR Learning | Thu–Sun | [[git-pr-learning]] |&lt;/p&gt;
&lt;h3 id="key-decisions-this-week"&gt;Key Decisions This Week&lt;a class="headerlink" href="#key-decisions-this-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monorepo confirmed&lt;/strong&gt; — &lt;code&gt;frontend/&lt;/code&gt; (Vuexy) + &lt;code&gt;backend/&lt;/code&gt; (Django/Ninja) + &lt;code&gt;docker-compose.yml&lt;/code&gt; in one repo; Claude Code traces end-to-end in a single session&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vuexy documentation strategy&lt;/strong&gt; — 12 &lt;code&gt;claude-docs/&lt;/code&gt; files + &lt;code&gt;SKILL.md&lt;/code&gt; as persistent context anchor; Phase 1 audit prompt drafted and ready to run&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent team pattern selected for CorpusX&lt;/strong&gt; — Lead + 3 sub-agents (Backend, Frontend, QA) with &lt;code&gt;progress.md&lt;/code&gt; as shared coordination hub; phase gates enforced by QA agent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes MCP token injection&lt;/strong&gt; — tokens must be explicit in config &lt;code&gt;env:&lt;/code&gt; block, not inherited from shell; verified with &lt;code&gt;hermes mcp list&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discord integration&lt;/strong&gt; — Composio MCP chosen over Claude Code Channels for always-on Hermes Discord integration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PKM expands to 5 domains&lt;/strong&gt; — work, think, body, family, money; six automation schedules designed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SDLC traceability layer designed&lt;/strong&gt; — four new frontmatter fields (&lt;code&gt;level&lt;/code&gt;, &lt;code&gt;verified_by&lt;/code&gt;, &lt;code&gt;verifies&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;); separate &lt;code&gt;update-sdlc&lt;/code&gt; skill planned&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BOL STREAM Jira live&lt;/strong&gt; — 7 Epics (M1–M7) + 24 Stories created at https://phuriwaj.atlassian.net/jira/software/projects/STREAM/boards&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quartz confirmed as PKM publishing layer&lt;/strong&gt; — Hugo-based, wiki-links native, Docker-deployable via &lt;code&gt;shommey/dockerized-quartz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="open-tasks-carried-into-next-week"&gt;Open Tasks Carried Into Next Week&lt;a class="headerlink" href="#open-tasks-carried-into-next-week" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Run Phase 1 Vuexy audit in Claude Code (paste the 12 &lt;code&gt;claude-docs/&lt;/code&gt; prompt)&lt;/li&gt;
&lt;li&gt;[ ] Create CLAUDE.md for CorpusX (Thai data sources, field name conventions, immutable raw layer)&lt;/li&gt;
&lt;li&gt;[ ] Write Phase 1 spawn prompts for CorpusX agent team&lt;/li&gt;
&lt;li&gt;[ ] Install Quartz Docker and mount Notes vault&lt;/li&gt;
&lt;li&gt;[ ] Configure GitHub + GitLab MCP in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt; with PATs&lt;/li&gt;
&lt;li&gt;[ ] Build &lt;code&gt;~/.claude/commands/catchup.md&lt;/code&gt; for post-&lt;code&gt;/clear&lt;/code&gt; session resumption&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;statusLine.command = "rtk gain --short"&lt;/code&gt; to CC &lt;code&gt;settings.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Extend skill-config.yaml with SDLC frontmatter fields&lt;/li&gt;
&lt;li&gt;[ ] Create 4 SDLC document templates (BR, FR, TS, Test Case)&lt;/li&gt;
&lt;li&gt;[ ] Build email MCP server (FastMCP + SMTP) and register in Cowork settings&lt;/li&gt;
&lt;li&gt;[ ] Set up Pordee plugin for Thai Claude Code sessions&lt;/li&gt;
&lt;li&gt;[ ] Investigate PUPPIS server high CPU (98%)&lt;/li&gt;
&lt;li&gt;[ ] Review CorpusX incidents BOLI-10500 + BOLI-10501&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="insights-promoted-to-evergreen"&gt;Insights Promoted to Evergreen&lt;a class="headerlink" href="#insights-promoted-to-evergreen" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[[claude-code-execution-methods]] — Full map of 10 CC execution methods; headless &lt;code&gt;-p&lt;/code&gt; flag as the foundation for all automation&lt;/li&gt;
&lt;li&gt;[[vuexy-nextjs-frontend]] — Monorepo + SKILL.md documentation strategy for Claude Code-driven SaaS development&lt;/li&gt;
&lt;li&gt;[[pkm-para-ace-moc]] — PARA + ACE hybrid system; five domains; six automation schedules&lt;/li&gt;
&lt;/ul&gt;</content><category term="weekly"/><category term="[weekly]"/></entry><entry><title>Daily Journal — 2026-05-16</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-16.html" rel="alternate"/><published>2026-05-16T00:00:00+02:00</published><updated>2026-05-16T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-16:/daily-journal-2026-05-16.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technically dense Saturday — heavy on Claude Code tooling, Hermes agent setup, and BOL IT housekeeping. The morning was spent tuning the Claude Code environment (autoCompact, session files, Remote Control) while the afternoon circled back to Hermes and Discord integration options. The Office plugin saw serious use for the …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technically dense Saturday — heavy on Claude Code tooling, Hermes agent setup, and BOL IT housekeeping. The morning was spent tuning the Claude Code environment (autoCompact, session files, Remote Control) while the afternoon circled back to Hermes and Discord integration options. The Office plugin saw serious use for the first time: email triage, todo creation, calendar review, and a SharePoint doc scope estimate all happened through Claude.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Follow up on BOL infrastructure alerts from yesterday (PUPPIS CPU, ML API memory, DR Fortigate)&lt;/li&gt;
&lt;li&gt;[ ] Review CorpusX incidents BOLI-10500 and BOLI-10501&lt;/li&gt;
&lt;li&gt;[ ] Confirm approach: Discord for Hermes via Composio MCP (not Claude Code Channels)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="claude-code-tooling"&gt;Claude Code Tooling&lt;a class="headerlink" href="#claude-code-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Analyzing GitHub issue resolution&lt;/strong&gt; — Investigated Claude Code autoCompact threshold and the &lt;code&gt;collapse_blank_lines&lt;/code&gt; token-saving technique. Set &lt;code&gt;CLAUDE_AUTOCOMPACT_PCT_OVERRIDE&lt;/code&gt; to 70 for 32K-window models. Full config pattern documented.
→ See [[claude-code-autocompact]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CC-Hooks&lt;/strong&gt; — Clarified Claude Code session JSONL file structure: full machine-readable transcripts at &lt;code&gt;~/.claude/projects/&lt;hash&gt;/sessions/&lt;uuid&gt;.jsonl&lt;/uuid&gt;&lt;/hash&gt;&lt;/code&gt;. Can reach 5+ GB; must filter to user/assistant turns before summarising with API. Python snippet captured.
→ See [[claude-code-session-files]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CC-Remote Control&lt;/strong&gt; — Deep dive on Remote Control feature (v2.1.51+): drive a local session from browser or mobile. Three start modes (server, interactive, &lt;code&gt;/remote-control&lt;/code&gt;). Push notifications available from v2.1.110+. Outbound-only TLS, no inbound ports.
→ See [[claude-code-remote-control]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CC-Skills&lt;/strong&gt; — Clarified the distinction between downloadable Claude products (Claude Code CLI, Claude in Chrome, Claude in Excel), MCP servers on npm, and SKILL.md project-level instruction files.&lt;/p&gt;
&lt;h3 id="hermes-agent-setup"&gt;Hermes Agent Setup&lt;a class="headerlink" href="#hermes-agent-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Hermes benefits and capabilities&lt;/strong&gt; — Reviewed Hermes across four use-case domains: productivity, personal second brain, dev orchestration, and life planning. Reinforced that MEMORY.md persistence is the core value driver.
→ See [[hermes-agent-orchestration]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hermes integration with GitHub and GitLab&lt;/strong&gt; — Revisited the &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt; MCP setup pattern. Confirmed: tokens must be explicit in the config &lt;code&gt;env&lt;/code&gt; block, not inherited from shell. Same content as existing [[hermes-mcp-github-gitlab]] note — no new setup needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Connecting Claude and Cowork to Discord&lt;/strong&gt; — Evaluated three Discord integration paths: Claude Code Channels (official, session-dependent), Composio/MCP (for Cowork and Hermes), and n8n/Albato (no-code). Decision: Composio MCP is the right path for always-on Hermes integration.
→ See [[hermes-agent-orchestration]]&lt;/p&gt;
&lt;h3 id="office-bol-it-operations"&gt;Office / BOL IT Operations&lt;a class="headerlink" href="#office-bol-it-operations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Office-Email&lt;/strong&gt; — Triaged 125+ emails. Key work threads: BAAC-ALM (FIS clarifications on BSM/CPR, FX VaR data mapping), [TCR] ENLITE decommission site visit on May 20, KTB XIGNAL migration, BAY-Xignal dataload success, GSB shareholder data discrepancies. PRTG alert flood: DR site pings down, ML API memory warnings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office-Todo&lt;/strong&gt; — Created 6 actionable reminders from yesterday's emails: GSB-RDM OT follow-up, PUPPIS CPU 98% alert, ML API memory (BREMONT/BELLROSS), DR Fortigate SNMP sensors, CorpusX incidents (BOLI-10500/10501), Symantec AV report.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office-Calendar&lt;/strong&gt; — Week ahead (May 16–23) is heavy. Monday May 18 is the busiest: C-Level meeting (10:00–12:00), SD Weekly, Data Engineer weekly, BAAC ALM internal (14:00–16:00), "Improve job with AI" with Manai. Wednesday May 20: BAAC site visit + VPN maintenance evening (19:00–22:00) + AI Guideline review. Two AI-related meetings this week signal growing internal focus on AI adoption.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office-Microsoft Teams&lt;/strong&gt; — M365 search API &lt;code&gt;beforeDateTime&lt;/code&gt; filter unreliable; doesn't reliably return messages from a specific date range. Workaround: search by keyword or use Teams native search with date filter.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office-Documentation&lt;/strong&gt; — Estimated scope of scanning Talaad Thai project files in SharePoint: 30–100 files, 10–20 min, potentially 100K–500K tokens. Recommended starting with just the 3 tracking files rather than full folder scan.&lt;/p&gt;
&lt;h3 id="product-feature-work"&gt;Product / Feature Work&lt;a class="headerlink" href="#product-feature-work" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;User profile management feature specification&lt;/strong&gt; — Drafted a high-level feature spec for User Profile Management for an enterprise internal tool (spec-kit / v-model). Sections: Identity, Contact, Preferences, Security. Key behaviours: inline editing per section, unsaved-change warnings, read-only field styling, re-auth for security changes.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Confirm Discord integration approach for Hermes: Composio MCP (always-on) vs Claude Code Channels (session-dependent)&lt;/li&gt;
&lt;li&gt;[ ] Investigate PUPPIS server high CPU (98%)&lt;/li&gt;
&lt;li&gt;[ ] Investigate BREMONT &amp;amp; BELLROSS ML API memory (&amp;lt;1% available)&lt;/li&gt;
&lt;li&gt;[ ] Check DR Fortigate 100F SNMP sensors (WAN, VPN, CCTV down)&lt;/li&gt;
&lt;li&gt;[ ] Review CorpusX BOLI-10500 (Academy 504) and BOLI-10501 (language switch broken)&lt;/li&gt;
&lt;li&gt;[ ] Review Symantec AV update report (May 15 r4/r8)&lt;/li&gt;
&lt;li&gt;[ ] Follow up: OT for GSB-RDM-StressTFRS9 (Anirut's OT approved by Thiti)&lt;/li&gt;
&lt;li&gt;[ ] Prep for Monday: C-Level meeting + "Improve job with AI" with Manai&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Claude Code Channels vs Composio MCP — when session-bound vs always-on matters for Discord bots]]&lt;/li&gt;
&lt;li&gt;[[M365 search API date filter limitation — beforeDateTime is unreliable for historical Teams messages]]&lt;/li&gt;
&lt;li&gt;[[Hermes MEMORY.md as compound interest — value increases non-linearly with usage over time]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="noon-update-2026-05-16"&gt;Noon Update — 2026-05-16&lt;a class="headerlink" href="#noon-update-2026-05-16" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="project-stream-jira-setup"&gt;Project STREAM — Jira Setup&lt;a class="headerlink" href="#project-stream-jira-setup" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Jira connection setup&lt;/strong&gt; — Bootstrapped the STREAM Jira project from the BOL Stream Strategy Document. Created 7 Epics (M1–M7) covering Discovery, Entity Resolution, Knowledge Graph, NLP Enhancement, Governance, Pilot Launch, and Enterprise Readiness. Followed immediately by 24 Stories (STREAM-8 to STREAM-31). Project board live at https://phuriwaj.atlassian.net/jira/software/projects/STREAM/boards
→ See [[bol-stream-project]]&lt;/p&gt;
&lt;h3 id="claude-code-tooling-noon"&gt;Claude Code Tooling (Noon)&lt;a class="headerlink" href="#claude-code-tooling-noon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CC-Token optimization&lt;/strong&gt; — Reviewed the full token-saving stack: RTK &lt;code&gt;rtk read&lt;/code&gt; saved 14.6M tokens across 641 calls; code-review-graph (3629 nodes / 32489 edges) updates incrementally on every Edit/Write. Identified two gaps: caveman statusline badge missing from settings.json, and no catchup.md slash command for session resumption after &lt;code&gt;/clear&lt;/code&gt;.
→ See [[claude-code-token-optimization]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CC-Session screen (Zellij)&lt;/strong&gt; — Learned Zellij detach/attach for long-running Claude Code sessions. Key commands: &lt;code&gt;Ctrl+O → D&lt;/code&gt; to detach, &lt;code&gt;zellij attach &lt;name&gt;&lt;/name&gt;&lt;/code&gt; to resume, &lt;code&gt;zellij --session &lt;name&gt;&lt;/name&gt;&lt;/code&gt; to start named.
→ See [[claude-code-zellij-sessions]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Checking Claude API usage programmatically&lt;/strong&gt; — Confirmed two distinct endpoints: &lt;code&gt;/v1/organizations/usage_report/messages&lt;/code&gt; (requires Admin API key &lt;code&gt;sk-ant-admin...&lt;/code&gt;) for API token usage; &lt;code&gt;client.messages.count_tokens()&lt;/code&gt; for pre-send token estimation (free). No programmatic endpoint for Claude.ai subscription plan limits.
→ See [[anthropic-api-usage-reporting]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How many ways to trigger Claude (Speckit detail)&lt;/strong&gt; — Speckit provides spec-driven development layer on top of Claude Code: &lt;code&gt;/speckit.constitution&lt;/code&gt; → &lt;code&gt;/speckit.specify&lt;/code&gt; → &lt;code&gt;/speckit.plan&lt;/code&gt; → &lt;code&gt;/speckit.build&lt;/code&gt;. CLAUDE.md is the bridge. Best combo: Speckit → tasks.md → Ralph loop for overnight local execution.
→ See [[claude-code-execution-methods]]&lt;/p&gt;
&lt;h2 id="open-tasks-added-noon"&gt;Open Tasks Added (Noon)&lt;a class="headerlink" href="#open-tasks-added-noon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix caveman statusline badge in Claude Code settings.json&lt;/li&gt;
&lt;li&gt;[ ] Build catchup.md slash command for post-/clear session resumption&lt;/li&gt;
&lt;li&gt;[ ] Review STREAM board and assign priorities to first stories (M1 Epic)&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-15</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-15.html" rel="alternate"/><published>2026-05-15T00:00:00+02:00</published><updated>2026-05-15T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-15:/daily-journal-2026-05-15.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technically dense day focused on two threads: the Django/NextJS project moving into multi-agent execution, and a parallel learning arc on Git workflows and DevOps tooling. The zai-quota-monitor script also surfaced a couple of environment issues that got cleanly resolved. A lot of foundational work clicking into place …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A technically dense day focused on two threads: the Django/NextJS project moving into multi-agent execution, and a parallel learning arc on Git workflows and DevOps tooling. The zai-quota-monitor script also surfaced a couple of environment issues that got cleanly resolved. A lot of foundational work clicking into place.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Paste Lead agent prompt into Claude Code to kick off User Management Phase 4 (T068–T088)&lt;/li&gt;
&lt;li&gt;[ ] Continue Git/PR learning series — start with PR size best practices&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="claude-code-devops-tooling"&gt;Claude Code &amp;amp; DevOps Tooling&lt;a class="headerlink" href="#claude-code-devops-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="automating-claude-with-github-actions"&gt;Automating Claude with GitHub Actions&lt;a class="headerlink" href="#automating-claude-with-github-actions" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Three-layer CLAUDE.md structure created for the monorepo: root (shared contract: Docker hostnames, API format, JWT flow, git rules), &lt;code&gt;backend/CLAUDE.md&lt;/code&gt; (Django expertise, TDD patterns, pytest), &lt;code&gt;frontend/CLAUDE.md&lt;/code&gt; (TypeScript strict, React Query, httpOnly cookies). Claude reads all three on every job run.
→ See [[efforts/on/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h4 id="creating-an-agent-team-prompt"&gt;Creating an agent team prompt&lt;a class="headerlink" href="#creating-an-agent-team-prompt" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Architected a full Lead + sub-agent spawn prompt for User Management phases 4–6 (T068–T125). Three agents: django-agent (TDD backend), nextjs-agent (frontend, waits on API contract), qa-agent (phase gate enforcer). Coordination via &lt;code&gt;progress.md&lt;/code&gt;. API-First rule strictly enforced.
→ See [[reference/claude-code-multiagent-team]] | [[efforts/on/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h4 id="configuring-settingsjson-within-workspace"&gt;Configuring settings.json within workspace&lt;a class="headerlink" href="#configuring-settingsjson-within-workspace" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Covered Claude Code workspace restriction via &lt;code&gt;permissions.deny&lt;/code&gt; + sandboxing. Reference note already exists from yesterday.
→ See [[reference/claude-code-workspace-restriction]]&lt;/p&gt;
&lt;h4 id="jenkins-alternatives-comparison"&gt;Jenkins alternatives comparison&lt;a class="headerlink" href="#jenkins-alternatives-comparison" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Comprehensive 2026 breakdown: GitHub Actions (best overall), GitLab CI/CD (all-in-one), CircleCI (speed), TeamCity (self-hosted), Harness (enterprise/AI). Reference note already exists.
→ See [[reference/jenkins-cicd-alternatives]]&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="git-github-workflow-learning"&gt;Git &amp;amp; GitHub Workflow Learning&lt;a class="headerlink" href="#git-github-workflow-learning" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="pull-requests-vs-user-stories-in-scrum"&gt;Pull requests vs user stories in scrum&lt;a class="headerlink" href="#pull-requests-vs-user-stories-in-scrum" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Compared GitHub Projects vs Jira for solo developer. Decision: GitHub Projects wins — native GitHub integration, zero context switching, free, fits spec.md + Claude workflow.
→ See [[efforts/on/git-pr-learning]]&lt;/p&gt;
&lt;h4 id="understanding-pull-requests-in-git"&gt;Understanding pull requests in Git&lt;a class="headerlink" href="#understanding-pull-requests-in-git" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Mapped 8 PR topics to learn in sequence: PR size best practices, code review workflow, draft PRs, stacked PRs, feature flags, trunk-based development, CI/CD with PRs, merge strategies.
→ See [[efforts/on/git-pr-learning]]&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="developer-tooling-environment"&gt;Developer Tooling &amp;amp; Environment&lt;a class="headerlink" href="#developer-tooling-environment" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="pordee-thai-language-token-optimization-for-claude"&gt;Pordee: Thai language token optimization for Claude&lt;a class="headerlink" href="#pordee-thai-language-token-optimization-for-claude" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Discovered Pordee plugin for Claude Code — reduces Thai token consumption 60–75%. Two modes: Lite (removes filler) and Full (maximum compression). Install: &lt;code&gt;claude plugin marketplace add kerlos/pordee&lt;/code&gt;.
→ See [[reference/pordee-thai-token-optimization]]&lt;/p&gt;
&lt;h4 id="python-script-for-llm-news-summarization"&gt;Python script for LLM news summarization&lt;a class="headerlink" href="#python-script-for-llm-news-summarization" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Covered rsync alternatives for file sync: resync (Rust, 4–56× faster), restic (backups with dedup+encryption), rclone (70+ cloud backends). rsync still best for raw server-to-server sync.
→ See [[reference/rsync-file-sync-tools]]&lt;/p&gt;
&lt;h4 id="zsh-home-button-not-working"&gt;Zsh home button not working&lt;a class="headerlink" href="#zsh-home-button-not-working" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Resolved Python package not found error: packages installed in &lt;code&gt;uv&lt;/code&gt; venv but script run with system Python. Fix: &lt;code&gt;uv run python script.py&lt;/code&gt;.
→ See [[reference/uv-python-venv]]&lt;/p&gt;
&lt;h4 id="cron-job-scheduling-issue"&gt;Cron job scheduling issue&lt;a class="headerlink" href="#cron-job-scheduling-issue" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Fixed state file owned by root preventing user cron write. Fix: &lt;code&gt;sudo rm /tmp/zai-quota-monitor.state&lt;/code&gt;. Covered in [[reference/uv-python-venv]] under Gotchas.&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="cowork-integrations"&gt;Cowork &amp;amp; Integrations&lt;a class="headerlink" href="#cowork-integrations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cowork-and-microsoft-to-do-desktop-integration"&gt;Cowork and Microsoft To Do desktop integration&lt;a class="headerlink" href="#cowork-and-microsoft-to-do-desktop-integration" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Cowork's official M365 connector covers SharePoint, Outlook, and Teams but not Microsoft To Do. Two paths: self-hosted MCP server via MS Graph API, or Composio remote MCP connector.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Paste Lead agent prompt into Claude Code — kick off User Management Phase 4&lt;/li&gt;
&lt;li&gt;[ ] Confirm &lt;code&gt;progress.md&lt;/code&gt; marks T001–T067 complete before running&lt;/li&gt;
&lt;li&gt;[ ] Continue PR learning series: start with PR size best practices&lt;/li&gt;
&lt;li&gt;[ ] Try Pordee plugin on next heavy Thai Claude Code session&lt;/li&gt;
&lt;li&gt;[ ] Evaluate Composio for Microsoft To Do → Cowork connection&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Multi-agent coordination patterns]] — progress.md as shared memory, phase gates, API-First ordering&lt;/li&gt;
&lt;li&gt;[[GitHub Projects as solo dev tool]] — when lightweight beats full Scrum tooling&lt;/li&gt;
&lt;li&gt;[[uv vs pip in production scripts]] — environment isolation gotchas in cron/systemd contexts&lt;/li&gt;
&lt;li&gt;[[Hermes as compounding second brain]] — persistent memory makes it more useful over time, unlike stateless chatbots&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="evening-update-pkm-run-2"&gt;Evening Update (PKM run 2)&lt;a class="headerlink" href="#evening-update-pkm-run-2" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="hermes-agent-mcp-capabilities-deep-dive"&gt;Hermes Agent — MCP &amp;amp; Capabilities Deep Dive&lt;a class="headerlink" href="#hermes-agent-mcp-capabilities-deep-dive" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="hermes-integration-with-github-and-gitlab"&gt;Hermes integration with GitHub and GitLab&lt;a class="headerlink" href="#hermes-integration-with-github-and-gitlab" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Wired GitHub and GitLab MCP servers into Hermes via &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;. Critical gotcha: Hermes does NOT pass shell environment to MCP subprocesses — API tokens must be declared explicitly in the config &lt;code&gt;env:&lt;/code&gt; block, not just exported in shell. First npx run downloads the package; pre-install to avoid handshake timeouts. Verify with &lt;code&gt;hermes mcp list&lt;/code&gt;.
→ See [[reference/hermes-mcp-github-gitlab]] | [[efforts/on/hermes-agent-orchestration]]&lt;/p&gt;
&lt;h4 id="hermes-benefits-and-capabilities"&gt;Hermes benefits and capabilities&lt;a class="headerlink" href="#hermes-benefits-and-capabilities" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Mapped Hermes's full capability surface: productivity (auto-format notes, tasks, summaries), personal (MEMORY.md grows into second brain over sessions), work/dev (orchestrate Claude Code sub-agents for multi-phase tasks), life (decision support and planning with accumulated context). Core advantage: persistent + customizable — gets smarter with use.
→ See [[efforts/on/hermes-agent-orchestration]]&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="terminal-dev-environment"&gt;Terminal &amp;amp; Dev Environment&lt;a class="headerlink" href="#terminal-dev-environment" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="understanding-zsh-directory-and-main-syntax-starship-prompt"&gt;Understanding zsh directory and main syntax (Starship prompt)&lt;a class="headerlink" href="#understanding-zsh-directory-and-main-syntax-starship-prompt" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Covered Starship prompt: written in Rust (fast, no lag), cross-shell (same &lt;code&gt;starship.toml&lt;/code&gt; works in Zsh/Bash/Fish), single config at &lt;code&gt;~/.config/starship.toml&lt;/code&gt;. Auto-detects Git branch/status, language versions (Python, Node, Go), Kubernetes context, AWS profile. For Git learning: prompt shows branch, dirty state, and ahead/behind at a glance without running &lt;code&gt;git status&lt;/code&gt;.
→ See [[reference/starship-prompt-zsh]]&lt;/p&gt;
&lt;hr/&gt;
&lt;h3 id="claude-tooling-clarification"&gt;Claude Tooling Clarification&lt;a class="headerlink" href="#claude-tooling-clarification" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="claude-skills-for-software-development"&gt;Claude skills for software development&lt;a class="headerlink" href="#claude-skills-for-software-development" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Disambiguated Claude's tool ecosystem: Claude Code (CLI, &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt;), Claude in Chrome (extension), Claude in Excel/PowerPoint (add-ins). MCP servers extend Claude Code via npm packages. Skill &lt;code&gt;.md&lt;/code&gt; files in Claude.ai projects guide behaviour for specific tasks — they are not downloadable standalone tools.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced-evening"&gt;Open Tasks Surfaced (Evening)&lt;a class="headerlink" href="#open-tasks-surfaced-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Configure GitHub MCP in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt; with PAT&lt;/li&gt;
&lt;li&gt;[ ] Configure GitLab MCP in &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt; with PAT&lt;/li&gt;
&lt;li&gt;[ ] Install Starship prompt: &lt;code&gt;curl -sS https://starship.rs/install.sh | sh&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-14</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-14.html" rel="alternate"/><published>2026-05-14T00:00:00+02:00</published><updated>2026-05-14T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-14:/daily-journal-2026-05-14.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy AI infrastructure day — three parallel tracks running at once: designing the CorpusX agent team architecture, deepening the PKM system with SDLC traceability, and refining the Claude Code automation pipeline with GitLab cloud. The work is converging: spec-kit methodology, agent orchestration, and PKM are all part of the same …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy AI infrastructure day — three parallel tracks running at once: designing the CorpusX agent team architecture, deepening the PKM system with SDLC traceability, and refining the Claude Code automation pipeline with GitLab cloud. The work is converging: spec-kit methodology, agent orchestration, and PKM are all part of the same system for building and operating complex software with minimal human overhead.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Create CLAUDE.md and Phase 1 spawn prompts for CorpusX (agent team architecture now designed)&lt;/li&gt;
&lt;li&gt;[ ] Extend skill-config.yaml with SDLC frontmatter fields (level, verified_by, verifies, status)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-tooling-claude-code"&gt;AI Tooling &amp;amp; Claude Code&lt;a class="headerlink" href="#ai-tooling-claude-code" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="creating-an-agent-team-prompt"&gt;Creating an agent team prompt&lt;a class="headerlink" href="#creating-an-agent-team-prompt" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Built the &lt;code&gt;speckit.implement.md&lt;/code&gt; slash command for Claude Code. When run as &lt;code&gt;/speckit.implement 001-user-management&lt;/code&gt;, the Lead auto-reads all spec files, spawns Backend, Frontend, and QA teammates, creates a &lt;code&gt;progress.md&lt;/code&gt; coordination hub, gates each phase on QA sign-off, and commits after each phase. Pre-requisites: CLAUDE.md must exist, tasks.md must use &lt;code&gt;[P]&lt;/code&gt; markers for parallel-safe tasks.
→ See [[corpusx]]&lt;/p&gt;
&lt;h4 id="how-many-ways-to-trigger-claude-code"&gt;How many ways to trigger Claude Code&lt;a class="headerlink" href="#how-many-ways-to-trigger-claude-code" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Mapped all 10 execution methods: interactive REPL, &lt;code&gt;-p&lt;/code&gt; flag, piped stdin, shell scripts, GitHub Actions, Python/TS SDK, Hooks, Routines, CI/CD pipelines, Docker. Core pattern: everything non-interactive is built on &lt;code&gt;-p&lt;/code&gt; or the SDK.
→ See [[claude-code-execution-methods]]&lt;/p&gt;
&lt;h4 id="plan-comparison-and-recommendations-claude-code-agent-teams-with-alt-models"&gt;Plan comparison and recommendations — Claude Code Agent Teams with alt models&lt;a class="headerlink" href="#plan-comparison-and-recommendations-claude-code-agent-teams-with-alt-models" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Claude Code Agent Teams (enabled via &lt;code&gt;CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1&lt;/code&gt;, requires v2.1.32+) is designed for Anthropic models. GLM-5.1 (Zerebro) and MiniMax M2.7 work as solo Claude Code backends but their Agent Teams compatibility is unconfirmed. Decision: keep Claude Pro/Max for Agent Teams orchestration, use alt models for solo deep coding.&lt;/p&gt;
&lt;h3 id="corpusx-enterprise-data-platform"&gt;CorpusX — Enterprise Data Platform&lt;a class="headerlink" href="#corpusx-enterprise-data-platform" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="cc-agent-teams"&gt;CC - Agent Teams&lt;a class="headerlink" href="#cc-agent-teams" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Designed the four-phase agent team architecture for CorpusX (Thai enterprise data intelligence platform — DBD, Revenue Dept, NACC sources):
- Phase 1: Orchestrator-Worker (schema, API, frontend shell, ingestion — independent)
- Phase 2: Pipeline (financial data sequential: Thai GAAP mapping → scoring engine → validation)
- Phase 3: Orchestrator-Worker (monitoring, network graph, procurement, lead gen)
- Phase 4: Peer Review (API rate limits, PDPA compliance, AI features, billing model)
CLAUDE.md must include Thai data sources, field name conventions (Thai vs English), immutable raw layer rule.
→ See [[corpusx]]&lt;/p&gt;
&lt;h4 id="enterprise-data-management-web-app-feature-roadmap"&gt;Enterprise data management web app feature roadmap&lt;a class="headerlink" href="#enterprise-data-management-web-app-feature-roadmap" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Clarified spec-kit methodology: three levels (inline prompt, per-feature spec file, CLAUDE.md global rules). Key practice: always start session with "Read CLAUDE.md and specs/[feature].md. Summarise in 5 bullets. Do not write code yet." — forces Claude Code to surface its interpretation before touching files.
→ See [[corpusx]] | [[claude-code-speckit-methodology]]&lt;/p&gt;
&lt;h3 id="pkm-system"&gt;PKM System&lt;a class="headerlink" href="#pkm-system" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="note-taking-for-ai-native-sd"&gt;Note Taking — For AI Native SD&lt;a class="headerlink" href="#note-taking-for-ai-native-sd" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Designed SDLC traceability system for PKM. Three document categories: Knowledge (evergreen), Process artifacts (relational — V-model/RTM), Time-anchored (requirements versioned). New frontmatter fields needed: &lt;code&gt;level&lt;/code&gt; (br/functional/technical/component), &lt;code&gt;verified_by&lt;/code&gt;, &lt;code&gt;verifies&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;. RTM and V-model are generated on demand via zk queries, not maintained manually. Separate &lt;code&gt;update-sdlc&lt;/code&gt; skill needed.
→ See [[pkm-sdlc-templates]]&lt;/p&gt;
&lt;h4 id="note-taking-general"&gt;Note Taking — General&lt;a class="headerlink" href="#note-taking-general" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Decision: stick with &lt;code&gt;.md&lt;/code&gt; for all notes. Use LaTeX math syntax inside markdown (&lt;code&gt;$$...$$&lt;/code&gt;) only where equations are needed. Pure LaTeX only for formal PDF outputs — keep a summary note in PKM linking to the &lt;code&gt;.tex&lt;/code&gt; file. Full toolchain (zk + Claude Code + Hermes) is optimised for markdown.&lt;/p&gt;
&lt;h4 id="note-taking-hugo-quartz"&gt;Note Taking — Hugo &amp;amp; Quartz&lt;a class="headerlink" href="#note-taking-hugo-quartz" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Confirmed Quartz version: v4.5.2 (from jackyzha0/quartz, v4 branch).&lt;/p&gt;
&lt;h3 id="infrastructure-devops"&gt;Infrastructure &amp;amp; DevOps&lt;a class="headerlink" href="#infrastructure-devops" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="automating-claude-with-github-actions-gitlab-cloud"&gt;Automating Claude with GitHub Actions (GitLab Cloud)&lt;a class="headerlink" href="#automating-claude-with-github-actions-gitlab-cloud" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Explored GitLab.com cloud (vs self-hosted) for Claude CI/CD pipeline. Cloud is easier: zero setup, free 400 min/month (~50 full Claude cycles), GitLab manages runners. Only changes from self-hosted config: remove &lt;code&gt;docker-network-mode: "gitlab-net"&lt;/code&gt;, add secrets in GitLab UI. Data flow: code goes to gitlab.com servers; Claude only sends prompt + relevant snippets to Anthropic API (not full codebase).
→ See [[gitlab-ci-claude-code]]&lt;/p&gt;
&lt;h4 id="docker-compose-volume-file-mounting"&gt;Docker Compose volume file mounting&lt;a class="headerlink" href="#docker-compose-volume-file-mounting" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Three volume types: bind mount (&lt;code&gt;./host:/container&lt;/code&gt;), named volume (managed by Docker, persists restarts), read-only (&lt;code&gt;:ro&lt;/code&gt;). Single file bind mount requires host file to exist first (else Docker creates a directory).
→ See [[docker-compose-volumes]]&lt;/p&gt;
&lt;h4 id="setting-max-output-tokens-deepseek-r1-distill-qwen-32b"&gt;Setting max output tokens — DeepSeek-R1-Distill-Qwen-32B&lt;a class="headerlink" href="#setting-max-output-tokens-deepseek-r1-distill-qwen-32b" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Total context is 32,768 shared between input + output. Recommended: vLLM &lt;code&gt;--max-model-len 32768&lt;/code&gt;, LiteLLM &lt;code&gt;max_tokens: 8192&lt;/code&gt; (leaves ~24k for input), Claude Code settings.json &lt;code&gt;~4000–8000&lt;/code&gt;. Note: DeepSeek recommends no system prompt but Claude Code sends one — contributes to context pressure.&lt;/p&gt;
&lt;h3 id="quick-lookups"&gt;Quick Lookups&lt;a class="headerlink" href="#quick-lookups" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="django-integration-with-apprise"&gt;Django integration with Apprise&lt;a class="headerlink" href="#django-integration-with-apprise" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Apprise notification library integrates cleanly into Django via signals, Celery tasks, management commands. Store URLs in &lt;code&gt;settings.py&lt;/code&gt;. No official Django app needed — pure Python, drops right in.
→ See [[django-apprise-notifications]]&lt;/p&gt;
&lt;h4 id="n8n-resource-consumption-requirements"&gt;n8n resource consumption requirements&lt;a class="headerlink" href="#n8n-resource-consumption-requirements" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;n8n Cloud free plan discontinued. 2026 pricing: Starter €24/mo (2,500 executions), Pro €60/mo (10,000), Business €800/mo (40,000). Community Edition self-hosted remains free — pay only server costs (~$4–10/mo on Hetzner/DigitalOcean).&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Create CLAUDE.md for CorpusX (Thai data sources, field name conventions, immutable raw layer rule)&lt;/li&gt;
&lt;li&gt;[ ] Write Phase 1 spawn prompts for CorpusX agent team&lt;/li&gt;
&lt;li&gt;[ ] Create CorpusX spec files for Phase 1 (Company Search + Company Profile first)&lt;/li&gt;
&lt;li&gt;[ ] Extend skill-config.yaml with SDLC fields: &lt;code&gt;level&lt;/code&gt;, &lt;code&gt;verified_by&lt;/code&gt;, &lt;code&gt;verifies&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Create 4 core SDLC templates: BR, FR, TS, Test Case&lt;/li&gt;
&lt;li&gt;[ ] Build &lt;code&gt;update-sdlc&lt;/code&gt; skill (separate from &lt;code&gt;update-status&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Move to GitLab cloud: push project repo, add ANTHROPIC_API_KEY secret, verify Claude CI pipeline runs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Spec-kit methodology — three levels for directing Claude Code]]&lt;/li&gt;
&lt;li&gt;[[Agent team patterns — Orchestrator-Worker vs Pipeline vs Peer Review]]&lt;/li&gt;
&lt;li&gt;[[PKM as a link graph, not a document store — RTM and V-model as on-demand queries]]&lt;/li&gt;
&lt;li&gt;[[Claude Code headless -p flag as foundation for all automation]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="evening-update-1810-thailand"&gt;Evening Update — 18:10 Thailand&lt;a class="headerlink" href="#evening-update-1810-thailand" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="infrastructure-devops_1"&gt;Infrastructure &amp;amp; DevOps&lt;a class="headerlink" href="#infrastructure-devops_1" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="configuring-settingsjson-within-workspace"&gt;Configuring settings.json within workspace&lt;a class="headerlink" href="#configuring-settingsjson-within-workspace" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Mapped the full approach for restricting Claude Code to workspace-only file access. Two layers: (1) &lt;code&gt;permissions.deny&lt;/code&gt; rules blocking &lt;code&gt;Read(/**)&lt;/code&gt;, &lt;code&gt;Edit(/**)&lt;/code&gt;, &lt;code&gt;Write(/**)&lt;/code&gt; and absolute-path Bash commands, with &lt;code&gt;allow&lt;/code&gt; rules for &lt;code&gt;Read(./**)&lt;/code&gt; etc.; (2) OS-level &lt;code&gt;sandbox.enabled: true&lt;/code&gt; for Bash process enforcement. For teams, use managed-settings.json at the OS-level path — cannot be overridden by user or project settings. Key caveat: deny rules alone are insufficient because Bash inherits the user's full OS permissions; sandboxing is required to close that gap.
→ See [[claude-code-workspace-restriction]]&lt;/p&gt;
&lt;h4 id="jenkins-alternatives-comparison"&gt;Jenkins alternatives comparison&lt;a class="headerlink" href="#jenkins-alternatives-comparison" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Surveyed the CI/CD landscape in 2026. The main driver to leave Jenkins is TCO: upgrades are risky, plugins break, security vulnerabilities accumulate. Quick decision matrix: GitHub Actions for GitHub teams, GitLab CI/CD for all-in-one DevOps, CircleCI for build speed, TeamCity for self-hosted control, Harness for enterprise AI governance, Azure DevOps/Bitbucket Pipelines for ecosystem fit.
→ See [[jenkins-cicd-alternatives]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced-evening"&gt;Open Tasks Surfaced (Evening)&lt;a class="headerlink" href="#open-tasks-surfaced-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Apply workspace restriction settings.json to CorpusX project root&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing-evening"&gt;Insights Worth Developing (Evening)&lt;a class="headerlink" href="#insights-worth-developing-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Claude Code permission model — deny rules vs sandbox vs managed settings]]&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>Daily Journal — 2026-05-13</title><link href="https://pelican-5lg.pages.dev/daily-journal-2026-05-13.html" rel="alternate"/><published>2026-05-13T00:00:00+02:00</published><updated>2026-05-13T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-13:/daily-journal-2026-05-13.html</id><summary type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused day on two parallel tracks: planning the SaaS web app stack and deepening the PKM system. Most of the morning went into understanding the Vuexy Next.js template more deeply — specifically how Claude Code can scan and document the entire codebase, and how to structure the monorepo …&lt;/p&gt;</summary><content type="html">&lt;h2 id="freewrite"&gt;Freewrite&lt;a class="headerlink" href="#freewrite" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A focused day on two parallel tracks: planning the SaaS web app stack and deepening the PKM system. Most of the morning went into understanding the Vuexy Next.js template more deeply — specifically how Claude Code can scan and document the entire codebase, and how to structure the monorepo. The afternoon circled back to PKM design, revisiting PARA and MOC concepts, and refining the daily summary automation that was built yesterday. Productive, architecturally-heavy day with clear next steps on both fronts.&lt;/p&gt;
&lt;h2 id="big-things-today"&gt;Big Things Today&lt;a class="headerlink" href="#big-things-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Finalised codebase documentation strategy for Vuexy — 12 &lt;code&gt;claude-docs/&lt;/code&gt; files + SKILL.md crown jewel&lt;/li&gt;
&lt;li&gt;[ ] Confirmed monorepo structure: &lt;code&gt;frontend/&lt;/code&gt; (Next.js/Vuexy) + &lt;code&gt;backend/&lt;/code&gt; (Django/Ninja) + &lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Designed comprehensive CI/CD + Docker dev environment for the SaaS app&lt;/li&gt;
&lt;li&gt;[ ] Revisited PARA, MOC, ACE hybrid concepts and PKM folder design&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conversations"&gt;Conversations&lt;a class="headerlink" href="#conversations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="nextjs-template-framework-contents"&gt;Next.js template framework contents&lt;a class="headerlink" href="#nextjs-template-framework-contents" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Explored what Vuexy Next.js 15 contains (MUI v5, Tailwind, App Router, 10 pre-built apps, 6 layouts). Then designed the codebase documentation strategy: a comprehensive Claude Code prompt to produce 12 files under &lt;code&gt;claude-docs/&lt;/code&gt;, culminating in a &lt;code&gt;SKILL.md&lt;/code&gt; that serves as the persistent context anchor for every future build session. A second prompt was designed specifically for creating the SKILL.md from those docs.
→ See [[vuexy-nextjs-frontend]] | [[reference/vuexy-codebase-skill]]&lt;/p&gt;
&lt;h3 id="understanding-para"&gt;Understanding PARA&lt;a class="headerlink" href="#understanding-para" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Deep dive into PARA, Second Brain, MOCs, ACE hybrid folder structure, and what a 6-folder AI-maintained note system looks like. Discussed where meeting notes go, what Atlas/Calendar/Efforts mean, and compared Nick Milo's + folder (inbox for fleeting notes) to the current design. Ended with a comprehensive plan to feed to Cowork for producing standardised notes.
→ See [[reference/pkm-para-ace-moc]]&lt;/p&gt;
&lt;h3 id="cicd-setup-for-django-and-nextjs"&gt;CI/CD setup for Django and Next.js&lt;a class="headerlink" href="#cicd-setup-for-django-and-nextjs" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Full CI/CD walkthrough for Django + Next.js: GitHub Actions workflow, auto-deploy to VPS via SSH or self-hosted runner, multi-container Docker deployment (backend + frontend + db + nginx). Covered: zero-downtime blue-green deploy, how dev Docker differs from prod (volume mounts vs baked code), coding on host with live sync into containers, and Claude Code managing everything from the host.
→ See [[reference/cicd-django-nextjs]] | [[reference/docker-dev-environment]]&lt;/p&gt;
&lt;h3 id="vuexy-admin-dashboard-template-overview"&gt;Vuexy admin dashboard template overview&lt;a class="headerlink" href="#vuexy-admin-dashboard-template-overview" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Confirmed Vuexy supports Next.js 15 (App Router). Received a 4-phase Claude Code prompt to transform Vuexy into a custom SaaS app. Made the monorepo vs polyrepo decision — monorepo wins for a single-team SaaS with shared context. Final structure: &lt;code&gt;my-app/frontend/&lt;/code&gt;, &lt;code&gt;my-app/backend/&lt;/code&gt;, &lt;code&gt;docker-compose.yml&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;.
→ See [[vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h3 id="auto-generating-daily-chat-summaries"&gt;Auto-generating daily chat summaries&lt;a class="headerlink" href="#auto-generating-daily-chat-summaries" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Reviewed options for auto-summarising Claude.ai chats (Claude memory, browser extension, n8n + API, Cowork scheduled task). Confirmed Cowork is the right tool. Designed the exact Cowork task prompt: every weekday at 5 PM, scan claude.ai, summarise, save to desktop + send email. This is the workflow this note generator is built on.
→ See [[pkm-daily-summary]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced"&gt;Open Tasks Surfaced&lt;a class="headerlink" href="#open-tasks-surfaced" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Set up monorepo folder locally (&lt;code&gt;frontend/&lt;/code&gt;, &lt;code&gt;backend/&lt;/code&gt;, &lt;code&gt;docker-compose.yml&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Download Vuexy Next.js and place in &lt;code&gt;frontend/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Run Phase 1 codebase scan in Claude Code (paste the prompt)&lt;/li&gt;
&lt;li&gt;[ ] Review &lt;code&gt;SKILL.md&lt;/code&gt; output from Claude Code — verify Golden Rules are accurate&lt;/li&gt;
&lt;li&gt;[ ] Set up self-hosted GitHub Actions runner on local server&lt;/li&gt;
&lt;li&gt;[ ] Create &lt;code&gt;deploy.sh&lt;/code&gt; on local server for multi-container deploy&lt;/li&gt;
&lt;li&gt;[ ] Test blue-green deploy pattern for zero downtime&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Volume mounts let you code on host with Docker as pure runtime — no rebuilds needed]]&lt;/li&gt;
&lt;li&gt;[[Claude Code SKILL.md is a dense, verified context anchor that replaces generic codebase knowledge]]&lt;/li&gt;
&lt;li&gt;[[Monorepo lets Claude Code trace end-to-end across frontend and backend in one session]]&lt;/li&gt;
&lt;li&gt;[[PARA and ACE are complementary — PARA organises by actionability, ACE by type of thinking]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;em&gt;Appended by noon+1 PKM run — 2026-05-13&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="conversations-afternoon-batch"&gt;Conversations (afternoon batch)&lt;a class="headerlink" href="#conversations-afternoon-batch" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="hugo-setup-for-markdown-presentations"&gt;Hugo Setup for Markdown Presentations&lt;a class="headerlink" href="#hugo-setup-for-markdown-presentations" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Explored Hugo as a PKM presentation layer. Key finding: Hugo does not natively support &lt;code&gt;[[wiki-links]]&lt;/code&gt; and the maintainers have officially declared they won't add it. Quartz (Hugo-based, pre-configured for PKM/digital gardens) handles wiki-links natively and supports graph view and backlinks — exactly what the vault needs. Confirmed Quartz can run in Docker via &lt;code&gt;shommey/dockerized-quartz&lt;/code&gt; with auto-rebuild on note change and NGINX serving.
→ See [[quartz-pkm-setup]]&lt;/p&gt;
&lt;h3 id="comprehensive-note-taking-system-for-daily-life"&gt;Comprehensive Note-taking System for Daily Life&lt;a class="headerlink" href="#comprehensive-note-taking-system-for-daily-life" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Major planning session expanding the PKM beyond work. Designed a 5-domain system (work, think, body, family, money) with a full week of automation schedules: Morning Brief (7 AM, read-only Discord digest), Daily Generator (5 PM, existing — expand domains), Weekly Thinking Digest (Sun 8 PM, pattern-finding), Fortnightly Forgetting Detector (catch stale tasks + unmet commitments), Monthly Life Review (1st Monday), and Quarterly Compass Review (manual). Also designed a two-track news pipeline: Knowledge Extraction (technical → reference notes) and Trend Digest (big picture → thinking domain). Key sources: anthropic.com/news, openai.com/blog, GitHub release feeds, AI newsletters (The Rundown, Import AI, TLDR AI).
→ See [[pkm-daily-summary]] | [[pkm-para-ace-moc]]&lt;/p&gt;
&lt;h3 id="minimax-and-litellm-cost-estimation-for-development-team"&gt;Minimax and LiteLLM Cost Estimation for Development Team&lt;a class="headerlink" href="#minimax-and-litellm-cost-estimation-for-development-team" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Built cost estimate for 25 developers at medium daily usage running Minimax via LiteLLM. Minimax-Text-01 on the Yearly Medium plan: ~&lt;span class="math"&gt;\(150–400/month. abab6.5t (cheaper model): ~\)&lt;/span&gt;15–40/month. LiteLLM OSS is free; Enterprise adds SSO/audit logs for ~$50–100/month. Critical caveat: yearly token plans pre-purchase tokens at a discount — burn rate must match committed volume or tokens are wasted.
→ See [[minimax-litellm-cost]]&lt;/p&gt;
&lt;h3 id="hermes-orchestrating-claude-agents-for-development-workflows"&gt;Hermes Orchestrating Claude Agents for Development Workflows&lt;a class="headerlink" href="#hermes-orchestrating-claude-agents-for-development-workflows" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Designed architecture for Hermes as top-level orchestrator of Claude Code sub-agents using the Claude Agent SDK (Python). Hermes calls &lt;code&gt;query()&lt;/code&gt; programmatically and routes through the existing LiteLLM proxy by setting &lt;code&gt;ANTHROPIC_BASE_URL=http://localhost:4000&lt;/code&gt;. Four subagent types: refactor-agent, test-agent, ci-agent, reviewer (each with scoped tool permissions). Sessions preserve context across turns — agent reads in turn 1, edits in turn 2. The SDK locks to Claude model strings but LiteLLM transparently maps them to GLM/OpenRouter behind the scenes.
→ See [[claude-agent-sdk-hermes]]&lt;/p&gt;
&lt;h3 id="pioneering-ai-llm-server-naming"&gt;Pioneering AI LLM Server Naming&lt;a class="headerlink" href="#pioneering-ai-llm-server-naming" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Brainstormed 20 server name candidates for BOL's first AI LLM server. Top picks: SYNAPSE (memorable, neural), EPOCH (marks a new era), AURORA (dawn of a new age), NEXUS-1 (first connection point), FIRSTLIGHT (the first ray of the AI era in the org). No follow-up tasks — decision pending.&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced-afternoon"&gt;Open Tasks Surfaced (afternoon)&lt;a class="headerlink" href="#open-tasks-surfaced-afternoon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Install Quartz Docker (&lt;code&gt;shommey/dockerized-quartz&lt;/code&gt;) and mount &lt;code&gt;D:\OneDrive\Personal\Notes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Add &lt;code&gt;domain:&lt;/code&gt; field to PKM frontmatter and update daily generator to infer it&lt;/li&gt;
&lt;li&gt;[ ] Add "Life Signals Today" section (4 lines) to daily journal template&lt;/li&gt;
&lt;li&gt;[ ] Set up Morning Brief cron (Mon–Fri 7 AM → Discord)&lt;/li&gt;
&lt;li&gt;[ ] Design Fortnightly Forgetting Detector cron prompt&lt;/li&gt;
&lt;li&gt;[ ] Design Weekly Thinking Digest cron prompt&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;pip install claude-agent-sdk&lt;/code&gt; on phuriwajr-dev, set ANTHROPIC_BASE_URL=http://localhost:4000&lt;/li&gt;
&lt;li&gt;[ ] Write Hermes tool wrapper around &lt;code&gt;query()&lt;/code&gt; + define 4 subagent types&lt;/li&gt;
&lt;li&gt;[ ] Decide on AI LLM server name (AURORA / SYNAPSE / EPOCH shortlist)&lt;/li&gt;
&lt;li&gt;[ ] Confirm Minimax yearly plan tier vs. team burn rate before committing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing_1"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing_1" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[Quartz IS Hugo — choosing Quartz is not leaving Hugo, it's getting Hugo with PKM pre-wired]]&lt;/li&gt;
&lt;li&gt;[[PKM without life domains is just a work journal — five domains make it a complete intelligence system]]&lt;/li&gt;
&lt;li&gt;[[Two-track news pipeline: technical details → reference notes; trends → thinking domain]]&lt;/li&gt;
&lt;li&gt;[[Claude Agent SDK routes through LiteLLM by overriding ANTHROPIC_BASE_URL — same pattern as Claude Code]]&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;em&gt;Appended by evening PKM run — 2026-05-13&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="conversations-evening-batch"&gt;Conversations (evening batch)&lt;a class="headerlink" href="#conversations-evening-batch" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="note-taking-general-pkm-sdlc-architecture"&gt;Note Taking — General (PKM + SDLC Architecture)&lt;a class="headerlink" href="#note-taking-general-pkm-sdlc-architecture" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Deep comparison of nb vs zk CLI tools. Key finding: nb is feature-rich (bookmarks, encryption, Git sync) but lacks graph/linking; zk is laser-focused on note linking and graph traversal using SQL-backed queries. Decision: use two separate zk notebooks — &lt;code&gt;~/notes/&lt;/code&gt; for personal PKM and &lt;code&gt;~/projects/&lt;project&gt;/.zk/&lt;/project&gt;&lt;/code&gt; for software docs. Claude Code reads/writes both with separate AGENTS.md per folder. spec-kit manages SDD lifecycle; zk indexes and enables gap-analysis queries for RTM and V-model traceability. Also confirmed: Claude Code with skills can write app spec and V-model documents (BR, FR, TS, Test Case) as linked markdown with backlinks.
→ See [[zk-note-tool]] | [[pkm-sdlc-templates]]&lt;/p&gt;
&lt;h3 id="note-taking-hugoquartz-docker-compose-yaml-fix"&gt;Note Taking — Hugo&amp;amp;Quartz (Docker Compose YAML Fix)&lt;a class="headerlink" href="#note-taking-hugoquartz-docker-compose-yaml-fix" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Hit a Docker Compose YAML error when setting up dockerized-quartz: &lt;code&gt;environment&lt;/code&gt; section was mixing list and mapping formats. Fix: use pure mapping format (&lt;code&gt;KEY: value&lt;/code&gt;) or pure list format (&lt;code&gt;KEY=value&lt;/code&gt;), never mixed. Running &lt;code&gt;docker-compose config&lt;/code&gt; validates the compose file without starting containers. Updated the Quartz Docker compose template accordingly.
→ See [[quartz-pkm-setup]]&lt;/p&gt;
&lt;h3 id="note-taking-for-ai-native-sd-sdlc-templates"&gt;Note Taking — For AI Native SD (SDLC Templates)&lt;a class="headerlink" href="#note-taking-for-ai-native-sd-sdlc-templates" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Effort note templates for Claude Code to use at task completion. Conclusion: effort notes should NOT follow evergreen format — they track lifecycle (current focus, open tasks, progress log). However, &lt;em&gt;software requirements documents&lt;/em&gt; (BR, FR, TS, Test Case) need new frontmatter fields for V-model traceability: &lt;code&gt;level&lt;/code&gt;, &lt;code&gt;verified_by&lt;/code&gt;, &lt;code&gt;verifies&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;. Build plan: (1) extend frontmatter schema in skill-config.yaml, (2) create 4 core document templates, (3) build an &lt;code&gt;update-sdlc&lt;/code&gt; skill (separate from &lt;code&gt;update-status&lt;/code&gt;) that creates notes with correct frontmatter and auto-linking, and generates RTM/V-model maps via zk queries.
→ See [[pkm-sdlc-templates]]&lt;/p&gt;
&lt;h3 id="creating-a-custom-mcp-for-email"&gt;Creating a Custom MCP for Email&lt;a class="headerlink" href="#creating-a-custom-mcp-for-email" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Walked through building a local email MCP server using Python FastMCP + SMTP (Gmail App Password). The MCP exposes a &lt;code&gt;send_email(to, subject, body)&lt;/code&gt; tool that Claude calls directly. Pattern: &lt;code&gt;from mcp.server.fastmcp import FastMCP&lt;/code&gt;, define tools with &lt;code&gt;@mcp.tool()&lt;/code&gt;, run as a stdio server. Register in &lt;code&gt;claude_desktop_config.json&lt;/code&gt; or Cowork MCP settings. Key advantage over skills: Claude can dynamically decide to send email mid-task rather than requiring a scripted trigger.
→ See [[mcp-server-fastmcp]]&lt;/p&gt;
&lt;h3 id="multiple-projects-with-different-claude-models"&gt;Multiple Projects with Different Claude Models&lt;a class="headerlink" href="#multiple-projects-with-different-claude-models" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Per-project &lt;code&gt;.claude/settings.json&lt;/code&gt; lets different projects use completely different backends on the same machine. Priority order: project-local &lt;code&gt;.claude/settings.json&lt;/code&gt; wins over user-global &lt;code&gt;~/.claude/settings.json&lt;/code&gt;. Practical setup: Project A → LiteLLM/GLM proxy (ANTHROPIC_BASE_URL override), Project B → Opus (just model key, no URL override), Project C → claude.ai subscription (&lt;code&gt;claude /login&lt;/code&gt;). Environment variables set in &lt;code&gt;settings.json["env"]&lt;/code&gt; are scoped to that project only.
→ See [[claude-code-per-project-settings]]&lt;/p&gt;
&lt;h2 id="open-tasks-surfaced-evening"&gt;Open Tasks Surfaced (evening)&lt;a class="headerlink" href="#open-tasks-surfaced-evening" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Install zk on phuriwajr-dev and init &lt;code&gt;~/notes/.zk/config.toml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;[ ] Init separate &lt;code&gt;.zk/&lt;/code&gt; notebook inside first software project directory&lt;/li&gt;
&lt;li&gt;[ ] Fix Quartz docker-compose.yml env format (mapping, not list) and re-run&lt;/li&gt;
&lt;li&gt;[ ] Extend skill-config.yaml: add &lt;code&gt;level&lt;/code&gt;, &lt;code&gt;verified_by&lt;/code&gt;, &lt;code&gt;verifies&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt; fields&lt;/li&gt;
&lt;li&gt;[ ] Create 4 SDLC document templates: BR, FR, TS, Test Case&lt;/li&gt;
&lt;li&gt;[ ] Build &lt;code&gt;update-sdlc&lt;/code&gt; skill for Claude Code&lt;/li&gt;
&lt;li&gt;[ ] Build email MCP server (FastMCP + SMTP), register in Cowork MCP settings&lt;/li&gt;
&lt;li&gt;[ ] Test email delivery from Cowork daily generator via the new email MCP&lt;/li&gt;
&lt;li&gt;[ ] Create per-project &lt;code&gt;.claude/settings.json&lt;/code&gt; for phuriwajr-dev projects&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights-worth-developing_2"&gt;Insights Worth Developing&lt;a class="headerlink" href="#insights-worth-developing_2" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[[zk separates PKM and SDLC concerns cleanly — two notebooks, same tool, same Claude Code]]&lt;/li&gt;
&lt;li&gt;[[Effort notes are lifecycle trackers, not evergreen — they should decay intentionally]]&lt;/li&gt;
&lt;li&gt;[[Email MCP lets Claude send mail as a native tool call — no scripted cron workaround needed]]&lt;/li&gt;
&lt;li&gt;[[Per-project Claude settings lets one machine run Opus, GLM, and subscription side-by-side]]&lt;/li&gt;
&lt;/ul&gt;
&lt;script type="text/javascript"&gt;if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
    var align = "center",
        indent = "0em",
        linebreak = "false";

    if (false) {
        align = (screen.width &lt; 768) ? "left" : align;
        indent = (screen.width &lt; 768) ? "0em" : indent;
        linebreak = (screen.width &lt; 768) ? 'true' : linebreak;
    }

    var mathjaxscript = document.createElement('script');
    mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
    mathjaxscript.type = 'text/javascript';
    mathjaxscript.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/latest.js?config=TeX-AMS-MML_HTMLorMML';

    var configscript = document.createElement('script');
    configscript.type = 'text/x-mathjax-config';
    configscript[(window.opera ? "innerHTML" : "text")] =
        "MathJax.Hub.Config({" +
        "    config: ['MMLorHTML.js']," +
        "    TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
        "    jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
        "    extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
        "    displayAlign: '"+ align +"'," +
        "    displayIndent: '"+ indent +"'," +
        "    showMathMenu: true," +
        "    messageStyle: 'normal'," +
        "    tex2jax: { " +
        "        inlineMath: [ ['\\\\(','\\\\)'] ], " +
        "        displayMath: [ ['$$','$$'] ]," +
        "        processEscapes: true," +
        "        preview: 'TeX'," +
        "    }, " +
        "    'HTML-CSS': { " +
        "        availableFonts: ['STIX', 'TeX']," +
        "        preferredFont: 'STIX'," +
        "        styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'inherit ! important'} }," +
        "        linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
        "    }, " +
        "}); " +
        "if ('default' !== 'default') {" +
            "MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
            "MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
                "var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
                "VARIANT['normal'].fonts.unshift('MathJax_default');" +
                "VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
                "VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
                "VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
            "});" +
        "}";

    (document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
    (document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
&lt;/script&gt;</content><category term="notes"/><category term="[daily]"/></entry><entry><title>"Journal — May 12, 2026"</title><link href="https://pelican-5lg.pages.dev/journal-may-12-2026.html" rel="alternate"/><published>2026-05-12T00:00:00+02:00</published><updated>2026-05-12T00:00:00+02:00</updated><author><name>phurix</name></author><id>tag:pelican-5lg.pages.dev,2026-05-12:/journal-may-12-2026.html</id><summary type="html">&lt;ul&gt;
&lt;li&gt;"[[reference/litellm-claude-code-setup]]"&lt;/li&gt;
&lt;li&gt;"[[reference/cicd-django-nextjs]]"&lt;/li&gt;
&lt;li&gt;"[[reference/claude-code-discord-hook]]"&lt;/li&gt;
&lt;li&gt;"[[reference/systemctl-cheatsheet]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/litellm-local-llm]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/tailscale-docker-alpine]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/pkm-daily-summary]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/vuexy-nextjs-frontend]]"&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h1 id="may-12-2026"&gt;May 12, 2026&lt;a class="headerlink" href="#may-12-2026" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-i-worked-on-today"&gt;What I worked on today&lt;a class="headerlink" href="#what-i-worked-on-today" title="Permanent link"&gt;&amp;para;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy day of developer tooling. Three separate threads running in parallel:
connecting Claude Code to local LLMs, building out a CI/CD pipeline,
and continuing to …&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;"[[reference/litellm-claude-code-setup]]"&lt;/li&gt;
&lt;li&gt;"[[reference/cicd-django-nextjs]]"&lt;/li&gt;
&lt;li&gt;"[[reference/claude-code-discord-hook]]"&lt;/li&gt;
&lt;li&gt;"[[reference/systemctl-cheatsheet]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/litellm-local-llm]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/tailscale-docker-alpine]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/pkm-daily-summary]]"&lt;/li&gt;
&lt;li&gt;"[[efforts/vuexy-nextjs-frontend]]"&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h1 id="may-12-2026"&gt;May 12, 2026&lt;a class="headerlink" href="#may-12-2026" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-i-worked-on-today"&gt;What I worked on today&lt;a class="headerlink" href="#what-i-worked-on-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Heavy day of developer tooling. Three separate threads running in parallel:
connecting Claude Code to local LLMs, building out a CI/CD pipeline,
and continuing to fix the Discord notification hook for Claude Code.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="sessions"&gt;Sessions&lt;a class="headerlink" href="#sessions" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-llm-tooling"&gt;🤖 AI &amp;amp; LLM Tooling&lt;a class="headerlink" href="#ai-llm-tooling" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;LiteLLM + Claude Code&lt;/strong&gt; — Got &lt;code&gt;/v1/messages&lt;/code&gt; (Anthropic format) working through
LiteLLM proxy with qwen3_8b and DeepSeek models. Key fix: need model aliases in
&lt;code&gt;config.yaml&lt;/code&gt; matching what Claude Code actually requests (&lt;code&gt;claude-sonnet-4-20250514&lt;/code&gt;,
etc.), plus &lt;code&gt;enable_anthropic_pass_through: true&lt;/code&gt;. Still hitting cold-start timeouts
(5s+ first token). → [[efforts/litellm-local-llm]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Codex CLI&lt;/strong&gt; — Explored as an alternative to Claude Code. Cheaper (~4x fewer tokens)
but weaker for complex multi-file work. Can route through LiteLLM too.
→ [[reference/litellm-claude-code-setup]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MCP server&lt;/strong&gt; — Quick guide on building a FastMCP server in Python.
→ [[reference/mcp-server-fastmcp]]&lt;/p&gt;
&lt;h3 id="devops-infrastructure"&gt;⚙️ DevOps &amp;amp; Infrastructure&lt;a class="headerlink" href="#devops-infrastructure" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;CI/CD (Django + Next.js)&lt;/strong&gt; — Full pipeline designed: GitHub Actions, self-hosted
runner on local server, Docker Compose multi-container deploy, blue-green for
zero-downtime. → [[reference/cicd-django-nextjs]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tailscale&lt;/strong&gt; — Still broken. ISP in Thailand blocking &lt;code&gt;192.200.0.0/24&lt;/code&gt; (TLS
handshake timeout to &lt;code&gt;controlplane.tailscale.com&lt;/code&gt;). Alpine Docker setup is ready,
just needs a working network path. → [[efforts/tailscale-docker-alpine]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu systemctl&lt;/strong&gt; — Quick: &lt;code&gt;sudo systemctl disable --now &lt;service&gt;&lt;/service&gt;&lt;/code&gt; to stop
auto-start. → [[reference/systemctl-cheatsheet]]&lt;/p&gt;
&lt;h3 id="claude-code-discord-hook"&gt;🔧 Claude Code Discord Hook&lt;a class="headerlink" href="#claude-code-discord-hook" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Multiple sessions on this. Got it working, then fixed duration calculation bug
(hook JSON has no &lt;code&gt;start_time&lt;/code&gt; — must use transcript timestamps). New bug: duration
spans full session history instead of just the last message. Still open.
→ [[efforts/pkm-daily-summary]] / [[reference/claude-code-discord-hook]]&lt;/p&gt;
&lt;h3 id="productivity"&gt;📋 Productivity&lt;a class="headerlink" href="#productivity" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Daily summary automation&lt;/strong&gt; — Decided to use Cowork (this system) for automated
end-of-day chat summarization. No code, no API key. This journal entry is the output.
→ [[efforts/pkm-daily-summary]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vuexy&lt;/strong&gt; — Quick research: has Next.js 15 version (App Router + MUI v5 + Tailwind).&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="open-threads"&gt;Open threads&lt;a class="headerlink" href="#open-threads" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Fix Discord hook: measure duration from &lt;em&gt;last user message&lt;/em&gt; to now, not full transcript&lt;/li&gt;
&lt;li&gt;[ ] Add model aliases in LiteLLM config for all Claude model names&lt;/li&gt;
&lt;li&gt;[ ] Keep LLM warm before launching Claude Code (ping every 20s)&lt;/li&gt;
&lt;li&gt;[ ] Test Tailscale on mobile hotspot to confirm ISP blocking&lt;/li&gt;
&lt;li&gt;[ ] Regenerate Discord webhook URL (was exposed in chat)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="mood-reflection"&gt;Mood / reflection&lt;a class="headerlink" href="#mood-reflection" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lots of config debugging today — LiteLLM, Tailscale, Docker. Progress on all fronts
but nothing fully closed. The PKM daily summary workflow is the meta-win: this note
was auto-generated from today's Claude.ai conversations.&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="5-pm-run-check-in-2026-05-12"&gt;5 PM run — check-in (2026-05-12)&lt;a class="headerlink" href="#5-pm-run-check-in-2026-05-12" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Second automated run of the day. 10 conversations checked — no new topics since the
morning run. One conversation not captured in the first pass:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auto-generating daily chat summaries&lt;/strong&gt; (8:06–8:41 AM) — The meta-conversation where
the decision to use Cowork was made. Explored n8n + Claude API, Python + cron + Gmail,
Superpower for Claude browser extension, and Playwright automation before landing on
Cowork as the simplest zero-code path. The scheduled task prompt was drafted in this
conversation. → [[efforts/pkm-daily-summary]]&lt;/p&gt;
&lt;hr/&gt;
&lt;h2 id="evening-run-check-in-2026-05-12"&gt;Evening run — check-in (2026-05-12)&lt;a class="headerlink" href="#evening-run-check-in-2026-05-12" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Third automated run of the day (end-of-day). 10 conversations reviewed. New details surfaced
compared to earlier passes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LiteLLM + DeepSeek debugging&lt;/strong&gt; — Specific issue: Claude Code configured to use
&lt;code&gt;deepseek-r1-distill-qwen-32B&lt;/code&gt; via LiteLLM, with correct &lt;code&gt;settings.json&lt;/code&gt; fields
(&lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;, &lt;code&gt;ANTHROPIC_AUTH_TOKEN&lt;/code&gt;, &lt;code&gt;API_TIMEOUT_MS=3000000&lt;/code&gt;,
&lt;code&gt;CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=TRUE&lt;/code&gt;). curl to LiteLLM works but Claude Code
still timeouts with "Retrying in 0s · attempt 1/10". Root cause: likely the Responses
API vs Chat Completions gap — LiteLLM must support &lt;code&gt;/v1/responses&lt;/code&gt; endpoint for Claude
Code, not just &lt;code&gt;/v1/messages&lt;/code&gt;. Investigation ongoing.
→ [[efforts/litellm-local-llm]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vuexy Next.js frontend project&lt;/strong&gt; — User wants to use Vuexy Next.js 15 (App Router +
MUI v5 + Tailwind) as the base template for their app frontend, with Claude Code doing
the customisation. Conversation started but cut off before specifics. New effort opened.
→ [[efforts/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Created missing files&lt;/strong&gt; — &lt;code&gt;reference/systemctl-cheatsheet.md&lt;/code&gt; (referenced in morning
journal but not yet created), &lt;code&gt;efforts/vuexy-nextjs-frontend.md&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Investigate LiteLLM &lt;code&gt;/v1/responses&lt;/code&gt; endpoint support for Claude Code compatibility&lt;/li&gt;
&lt;li&gt;[ ] Define app requirements for Vuexy customisation (pick up that conversation)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="end-of-day-run-2026-05-12-1700-bangkok"&gt;End-of-day run (2026-05-12 — 17:00 Bangkok)&lt;a class="headerlink" href="#end-of-day-run-2026-05-12-1700-bangkok" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;6 conversations today. New afternoon content captured in this pass:&lt;/p&gt;
&lt;h3 id="docker-dev-environment-cicd-conversation-afternoon"&gt;🐳 Docker Dev Environment (CI/CD conversation — afternoon)&lt;a class="headerlink" href="#docker-dev-environment-cicd-conversation-afternoon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Deep dive into dev vs prod Docker Compose and the "coding on host" mental model.
Key clarity: in dev, you edit files normally on your laptop in VS Code — volume mounts
make the container see them instantly. Docker is just the runtime, not where you write
code. Claude Code can drive all Docker commands (&lt;code&gt;exec&lt;/code&gt;, &lt;code&gt;migrate&lt;/code&gt;, &lt;code&gt;logs&lt;/code&gt;) from the
host while you focus on writing code. → [[reference/cicd-django-nextjs]]&lt;/p&gt;
&lt;h3 id="vuexy-saas-frontend-plan-solidified-afternoon"&gt;🏗 Vuexy SaaS Frontend — Plan solidified (afternoon)&lt;a class="headerlink" href="#vuexy-saas-frontend-plan-solidified-afternoon" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Worked through a 4-phase Claude Code plan to transform Vuexy Next.js into a custom
SaaS app: (1) Audit &amp;amp; Map, (2) Branding/Theme, (3) Clean Demo Content, (4) SaaS
Foundation Pages. Also made the monorepo decision: &lt;code&gt;frontend/&lt;/code&gt; + &lt;code&gt;backend/&lt;/code&gt; (Django
Ninja) + &lt;code&gt;docker-compose.yml&lt;/code&gt; in one repo, SQLite for dev / Postgres for prod.
Good CLAUDE.md primer drafted for the project root. → [[efforts/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h3 id="discord-hook-still-unresolved-1-am-bangkok"&gt;🔔 Discord Hook — Still unresolved (1 AM Bangkok)&lt;a class="headerlink" href="#discord-hook-still-unresolved-1-am-bangkok" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Latest attempt: measuring duration from last &lt;code&gt;"type": "user"&lt;/code&gt; message to now.
New issue: notification never fires at all. Suspected cause: the transcript type field
may be &lt;code&gt;"human"&lt;/code&gt; not &lt;code&gt;"user"&lt;/code&gt;. Needs one more debug pass with the raw jsonl file.
→ [[reference/claude-code-discord-hook]]&lt;/p&gt;
&lt;h3 id="open-threads-added"&gt;Open threads added&lt;a class="headerlink" href="#open-threads-added" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Dev Docker: test &lt;code&gt;docker compose -f docker-compose.dev.yml up&lt;/code&gt; with volume mounts&lt;/li&gt;
&lt;li&gt;[ ] Vuexy: run Phase 1 audit with Claude Code — paste prompt from conversation&lt;/li&gt;
&lt;li&gt;[ ] Discord hook: check transcript jsonl — is &lt;code&gt;type&lt;/code&gt; field "human" or "user"?&lt;/li&gt;
&lt;li&gt;[ ] LiteLLM cold-start: implement 20s keepalive ping before launching &lt;code&gt;claude&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;h2 id="final-run-2026-05-12-end-of-day"&gt;Final run — 2026-05-12 (end of day)&lt;a class="headerlink" href="#final-run-2026-05-12-end-of-day" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;12 conversations reviewed. New material captured in this pass:&lt;/p&gt;
&lt;h3 id="claude-code-auth-switching-new-today"&gt;🔑 Claude Code — Auth Switching (NEW today)&lt;a class="headerlink" href="#claude-code-auth-switching-new-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Learned how to switch Claude Code between API key mode and OAuth login mode cleanly.
Key: &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; in &lt;code&gt;settings.json&lt;/code&gt; env block always wins over the logged-in
session. To use login mode, comment it out. Created shell aliases &lt;code&gt;cc-proxy&lt;/code&gt; / &lt;code&gt;cc-login&lt;/code&gt;
to swap config files in one command. → [[reference/claude-code-auth-switching]]&lt;/p&gt;
&lt;h3 id="pkm-para-ace-moc-deep-dive-new-today"&gt;📚 PKM — PARA + ACE + MOC deep dive (NEW today)&lt;a class="headerlink" href="#pkm-para-ace-moc-deep-dive-new-today" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Long exploration of personal knowledge management systems: PARA (Projects/Areas/Resources/
Archives by Tiago Forte), Second Brain (CODE framework), MOCs (Maps of Content by Nick Milo),
and the ACE (Atlas/Calendar/Efforts) hybrid. Also explored: where meeting notes go, the
&lt;code&gt;+&lt;/code&gt; inbox folder for fleeting notes, and how AI-maintained PKM compares to human-curated
systems. This conversation happened in the "My AI Notebook" project context.
→ [[reference/pkm-para-ace-moc]]&lt;/p&gt;
&lt;h3 id="vuexy-codebase-documentation-strategy-update"&gt;📋 Vuexy — Codebase Documentation Strategy (UPDATE)&lt;a class="headerlink" href="#vuexy-codebase-documentation-strategy-update" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Major update to the Vuexy plan: comprehensive prompt for Claude Code to produce 12
documentation files in a &lt;code&gt;claude-docs/&lt;/code&gt; folder, including &lt;code&gt;SKILL.md&lt;/code&gt; as the core
context anchor. The SKILL.md becomes a permanent reference that Claude loads before
every build task, ensuring it uses Vuexy's patterns rather than generic code.
→ [[efforts/vuexy-nextjs-frontend]]&lt;/p&gt;
&lt;h3 id="open-tasks-added"&gt;Open tasks added&lt;a class="headerlink" href="#open-tasks-added" title="Permanent link"&gt;¶&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[ ] Claude Code auth: create &lt;code&gt;~/.claude/settings.proxy.json&lt;/code&gt; and &lt;code&gt;settings.login.json&lt;/code&gt; — test alias switching&lt;/li&gt;
&lt;li&gt;[ ] Vuexy: run Claude Code with Phase 1 docs prompt (produce 12 claude-docs/ files)&lt;/li&gt;
&lt;li&gt;[ ] PKM: decide on final folder structure — ACE+PARA or pure ACE hybrid&lt;/li&gt;
&lt;li&gt;[ ] PKM: create inbox &lt;code&gt;+&lt;/code&gt; folder for fleeting notes capture&lt;/li&gt;
&lt;/ul&gt;</content><category term="notes"/><category term="[daily"/><category term="llm-tooling"/><category term="devops"/><category term="claude-code]"/></entry></feed>