feat(stack): selective image rebuild, Claude plugin tip, demo agent model pin#464
Merged
Merged
Conversation
OisinKyne
approved these changes
May 11, 2026
…odel pin Pulls forward three dev-experience improvements from the integration branch behind #452 that did not survive the squash merges. - Selective image rebuild via OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES. The variable now accepts a comma-separated list of image short names (e.g. `x402-verifier,serviceoffer-controller`) in addition to the existing `true`/`all` and `false`/`0`/unset behaviours. The full image set is x402-verifier, serviceoffer-controller, x402-buyer, demo-server, and obol-stack-public-storefront (with `public-storefront` accepted as an alias). Saves a full ~10-minute rebuild when only one image changed. - Claude Code plugin install tip on stack up. After `obol stack up`, if the `claude` CLI is present but the ObolNetwork/skills marketplace or its plugin isn't installed, surface a one-line install hint. Reads ~/.claude/plugins/{known_marketplaces,installed_plugins}.json best-effort; silently no-ops on any error so a malformed Claude config can never block stack up. - Auto-pin a model on the agent-backed demo. `obol sell agent --demo` resolves the first non-`paid/*` model from the cluster's LiteLLM config (the same source `obol model list` reads) and writes it into the rendered Agent's spec.model so the controller doesn't park at ModelUnpinned. Returns a clear "configure a model first" error if the cluster has nothing usable, and removes a stale "depend on step 2d" caveat that no longer applies. Docs updated in CLAUDE.md, .agents/skills/obol-stack-dev/SKILL.md, and .agents/skills/obol-stack-dev/references/dev-environment.md.
fd7d865 to
205639d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three dev-experience improvements that were on the integration branch behind #452 but did not survive the squash merges.
S7 — Selective image rebuild (
internal/stack/stack.go,stack_test.go).OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGESnow accepts a comma-separated list of image short names in addition to the existingtrue/allandfalse/0/unset modes. Example:```bash
OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=x402-verifier obol stack up
OBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=serviceoffer-controller,x402-buyer obol stack up
```
Saves ~10 min per iteration when only one image changed. The full set is
x402-verifier,serviceoffer-controller,x402-buyer,demo-server,obol-stack-public-storefront(withpublic-storefrontaccepted as an alias). Two new unit tests cover both selective rebuild and the alias.S8 — Claude Code plugin install tip (
internal/stack/stack.go).After
obol stack up, if theclaudeCLI is present but theObolNetwork/skillsmarketplace or its plugin is not installed, surface a one-line install hint:```
Tip: let your Claude Code instance manage your Obol Stack for you.
Add the Obol skills marketplace, then install the plugin:
claude plugin marketplace add ObolNetwork/skills
/plugin install obol@obol
```
Reads
~/.claude/plugins/{known_marketplaces,installed_plugins}.jsonbest-effort and silently no-ops on any error so a malformed Claude config can never block stack up. If the marketplace is already registered, the message switches to just the/plugin install …hint. Fully silent for users without theclaudeCLI.S9 — Auto-pin a model on the agent-backed demo (
cmd/obol/sell_agent.go).obol sell agent --demonow resolves the first non-paid/*model from the cluster's LiteLLM config (same sourceobol model listreads) and writes it into the rendered Agent'sspec.modelso the controller does not park atModelUnpinned. Returns a clear"no usable LiteLLM model configured; run obol model setup …"error if the cluster has nothing usable. Also removes a stale "depend on step 2d" caveat that no longer applies now that the controller's in-cluster Hermes provisioning has landed.Docs updated in
CLAUDE.md,.agents/skills/obol-stack-dev/SKILL.md, and.agents/skills/obol-stack-dev/references/dev-environment.md. TheRelease descriptions/Release Notesblocks added in #456 are preserved untouched.Test plan
go build ./...go test ./internal/stack/...— including the two new selective-rebuild testsclaudeCLI: confirmobol stack upfinishes without printing the plugin tipclaudeinstalled but no Obol marketplace: confirm the marketplace + plugin install hint appearsOBOL_FORCE_REBUILD_LOCAL_DEV_IMAGES=x402-verifier obol stack uprebuilds only x402-verifier (verify in the build log)obol sell agent --demoon a cluster with at least one non-paid/*model: confirm the Agent CR is created withspec.modelset