Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion cmd/obol/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ func bootstrapCommand(cfg *config.Config) *cli.Command {

// Step 4: Open browser
url := "http://obol.stack"
if resp, err := (&http.Client{Timeout: 2 * time.Second}).Get(url); err != nil {
url = "http://obol.stack:8080"
} else {
resp.Body.Close()
}
u.Infof("Opening browser to %s", url)

if err := openBrowser(url); err != nil {
Expand All @@ -62,7 +67,7 @@ func bootstrapCommand(cfg *config.Config) *cli.Command {
u.Bold("Bootstrap complete! Your Obol Stack is ready.")
u.Blank()
u.Print("Next steps:")
u.Print(" • View the stack interface at http://obol.stack")
u.Printf(" • View the stack interface at %s", url)
u.Print(" • Create an Obol Agent: obol agent init")
u.Print(" • View what's running from the terminal (press '0'): obol k9s")
u.Print(" • Shut down the stack: obol stack down")
Expand Down
28 changes: 5 additions & 23 deletions cmd/obol/sell.go
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ func sellHTTPCommand(cfg *config.Config) *cli.Command {
Name: "http",
Usage: "Sell any local HTTP service with x402 payments",
ArgsUsage: "<name>",
Description: `Publishes a payment gated HTTP API to any service within the stack, along with a SKILL.md detailing how to use it.`
Description: `Publishes a payment gated HTTP API to any service within the stack, along with a SKILL.md detailing how to use it.
Include --register to have the service listed on EIP8004 onchain agent registry.

Example:
Expand Down Expand Up @@ -2091,25 +2091,7 @@ func buildInferenceServiceOfferSpec(d *inference.Deployment, pt schemas.PriceTab
return spec, nil
}

// removePricingRoute removes the x402-verifier pricing route for the given offer.
func removePricingRoute(cfg *config.Config, u *ui.UI, name string) {
urlPath := fmt.Sprintf("/services/%s", name)
pricingCfg, err := x402verifier.GetPricingConfig(cfg)
if err != nil {
return
}
updatedRoutes := make([]x402verifier.RouteRule, 0, len(pricingCfg.Routes))
for _, r := range pricingCfg.Routes {
if !strings.Contains(r.Pattern, urlPath) {
updatedRoutes = append(updatedRoutes, r)
}
}
if len(updatedRoutes) < len(pricingCfg.Routes) {
pricingCfg.Routes = updatedRoutes
if err := x402verifier.WritePricingConfig(cfg, pricingCfg); err != nil {
u.Warnf("failed to remove pricing route: %v", err)
} else {
u.Infof("Removed pricing route for %s", urlPath)
}
}
}
// removePricingRoute is a no-op retained for compatibility.
// The serviceoffer-controller now manages pricing routes via the ServiceOffer
// informer; static ConfigMap routes are no longer used.
func removePricingRoute(_ *config.Config, _ *ui.UI, _ string) {}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ image:

repository: obolnetwork/obol-stack-front-end
pullPolicy: IfNotPresent
tag: "v0.1.14"
tag: "v0.1.15"

service:
type: ClusterIP
Expand Down
9 changes: 8 additions & 1 deletion internal/stack/stack.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@ func Up(cfg *config.Config, u *ui.UI, wildcardDNS bool) error {

u.Infof("Starting stack (id: %s, backend: %s)", stackID, backend.Name())

portsBlocked := checkPortsAvailable([]int{80, 443}) != nil

kubeconfigData, err := backend.Up(cfg, u, stackID)
if err != nil {
return err
Expand Down Expand Up @@ -319,7 +321,12 @@ func Up(cfg *config.Config, u *ui.UI, wildcardDNS bool) error {

u.Blank()
u.Bold("Stack started successfully.")
u.Print("Visit http://obol.stack in your browser to get started.")
if portsBlocked {
u.Warnf("Ports 80/443 are in use by another process — use http://obol.stack:8080 instead")
u.Print("Visit http://obol.stack:8080 in your browser to get started.")
} else {
u.Print("Visit http://obol.stack in your browser to get started.")
}
update.HintIfStale(cfg)

return nil
Expand Down
2 changes: 1 addition & 1 deletion justfile
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ dev-frontend-reset:
set -e
echo "→ Resetting frontend to released image"
obol kubectl set image deployment/obol-frontend-obol-app \
obol-app=obolnetwork/obol-stack-front-end:v0.1.7 -n obol-frontend
obol-app=obolnetwork/obol-stack-front-end:v0.1.15 -n obol-frontend
obol kubectl rollout restart deployment/obol-frontend-obol-app -n obol-frontend
obol kubectl rollout status deployment/obol-frontend-obol-app -n obol-frontend --timeout=120s
echo "✓ Frontend reset to released image"
Loading