Skip to content

Warm pool on Linode, chat page branding, uptime on /, fresh runtime icons - #62

Merged
mahmudurrahmanlabib merged 2 commits into
developfrom
fix/pool-and-logos
Oct 20, 2026
Merged

mahmudurrahmanlabib merged 2 commits into
developfrom
fix/pool-and-logos

Conversation

@mahmudurrahmanlabib

@mahmudurrahmanlabib mahmudurrahmanlabib commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Warm pool: Linode refuses user-data over 16 KB decoded ("decoded user_data must not exceed 16384 bytes", read on prod). The universal image is 38 KB, so every universal create got a 400 and the breaker paused the pool. Scripts over 16 KB are now sent gzip-compressed (7.4 KB); cloud-init decompresses them. Linode errors now carry Linode's reason, and the scheduler logs create errors it used to swallow.

Chat page (AgentWebUI Lite): BRAND_NAME=AgentWebUI, BRAND_LOGO = the Atlas Agents mark, USER_NAME=Admin (it said "You").

Uptime: monitors probe / (a chat-UI agent answers /health with 401). npm run uptime:resync re-points existing ones.

Icons: ?v=2 on runtime icon URLs; the CDN served the old OpenCode/Pi placeholders.

Verified: tsc, eslint, 741 unit tests. Not verified: a Linode actually booting a gzip bootstrap (the first pool bake after deploy is that test).

🤖 Generated with Claude Code

mahmudurrahmanlabib and others added 2 commits October 20, 2026 19:34
… errors

- AgentWebUI Lite keeps its own name (BRAND_NAME=AgentWebUI, not the agent's
  name), shows the Atlas Agents mark (BRAND_LOGO, the dashboard's white logo
  over https), and calls the signed-in user Admin (USER_NAME; its sidebar said
  "You"). Reaches running boxes on their next reprovision.
- Uptime Kuma probes the agent's root (/): a chat-UI agent answers /health
  with 401, so every one read as down. `npm run uptime:resync` re-points the
  existing monitors (dry run by default).
- Runtime icon URLs carry a version (?v=2): the CDN kept serving the old
  OpenCode and Pi placeholders for hours under the same URL.
- The warm-pool scheduler now logs the create / advance / reap errors it
  collected; a create that threw only fed the breaker, so the logs said
  "3 bake failure(s)" and never why.

Co-Authored-By: Claude <noreply@anthropic.com>
…eason

Every universal pool create on Linode failed with a bare "Request failed with
status code 400", and the breaker paused the pool. Linode's reason, checked on
prod: "metadata.user_data: decoded user_data must not exceed 16384 bytes". The
universal image's bootstrap is 38 KB (it was ~30 KB before Gemini CLI and Grok,
and failed the same way). Single-engine bootstraps are 11-14 KB and fit.

- linodeUserData() sends a script over 16 KB gzip-compressed (the universal
  image: 7.4 KB). cloud-init detects gzip user-data and decompresses it. Smaller
  scripts go uncompressed, as before.
- createVM rethrows with describeLinodeError, so the reason reaches the logs
  and the pool's error report (never the request config, which has the token).

Co-Authored-By: Claude <noreply@anthropic.com>
@mahmudurrahmanlabib mahmudurrahmanlabib changed the title Chat page branding, uptime on /, fresh runtime icons, log pool create errors Warm pool on Linode, chat page branding, uptime on /, fresh runtime icons Oct 20, 2026
@mahmudurrahmanlabib
mahmudurrahmanlabib merged commit 05bca06 into develop Oct 20, 2026
6 checks passed
@mahmudurrahmanlabib
mahmudurrahmanlabib deleted the fix/pool-and-logos branch October 20, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant