Repository navigation
docs: fix four tunnel pages whose examples cannot run, and give two of them task structure - #62
Merged
Mandalorian-Wang merged 1 commit intoOct 21, 2026
Conversation
…f them task structure Started this as the structure half of the user-perspective plan and found a correctness bug first, so that leads. Every tunnel example on the site creates its box with `BoxOptions(image=IMAGE)` — no inbound. Since 0.10.5 that is a private box, and a tunnel against a private box is refused. Running the documented script verbatim: InvalidStateError: invalid state: Box ZSv4BSXipchI is not public; set public: true before opening a tunnel Adding the inbound spec and nothing else makes the same script work: tunnel OK uri=https://18080-d-6d61765338766e6868464856.proxy.boxlite.ai Grepped the rest of the site for the same shape, as the rule requires. Four pages call `tunnel()` and none of them mentioned inbound: serve-http, port-forwarding, raw-streams, tunnels. - The three with runnable scripts now create the box with `network=NetworkSpec(inbound=InboundNetworkSpec(mode="enabled"))`, with the imports, and say so in Prerequisites. - tunnels.mdx builds on an existing box rather than creating one, so it gets the prerequisite and a troubleshooting row carrying the exact error — its table already had a row for "box not started" and this is the other half of that failure. Verified afterwards by extracting the fixed serve-http script and running it as written: the tunnel opens and returns its URL. One run hit `cannot decrypt peer's message` on connect(); a direct comparison on a fresh box had both `connect()` and `forward()` return HTTP 200, so that was transient and is not written up. Structure, from the plan's workstream B: - port-forwarding.mdx had 118 lines and no body headings. Now three tasks — publish the port, choose the listening address, keep it running — and the CLI path it never mentioned: `boxlite network tunnel <BOX> <PORT> --listen <ADDR>` does what the whole script does. - serve-http.mdx likewise, plus a Troubleshooting table; its CLI equivalent is `boxlite network tunnel <BOX> <PORT>`, which prints the URL and exits. raw-streams, data-across-boxes and cost-controls still need the same structure pass. Their correctness is fixed here where it was broken. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Preview approval requiredThis pull request comes from a fork, so Mintlify won't build a preview until someone with write access approves commit |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Started this as the structure half of the user-perspective plan and found a
correctness bug first, so that leads.
Every tunnel example on the site is broken
They all create the box with
BoxOptions(image=IMAGE)— no inbound. Since 0.10.5that is a private box, and a tunnel against a private box is refused. Running the
documented script verbatim:
Adding the inbound spec and changing nothing else makes the same script work:
Grepped the rest of the site for the same shape, as the rule requires. Four pages
call
tunnel()and not one mentioned inbound:serve-http,port-forwarding,raw-streams,tunnels.network=NetworkSpec(inbound=InboundNetworkSpec(mode="enabled")), carry the imports,and say so in Prerequisites.
tunnels.mdxbuilds on an existing box rather than creating one, so it gets theprerequisite plus a troubleshooting row with the exact error — its table already had
a row for "box not started", and this is the other half of that same failure.
Verified after the fix
Extracted the repaired
serve-httpscript and ran it as written: the tunnel opens andreturns its URL.
One run hit
cannot decrypt peer's messageonconnect(). A direct comparison on afresh box had both
connect()andforward()returnHTTP 200, so that wastransient — it is not written up as a defect.
Structure (workstream B)
port-forwarding.mdx— 118 lines, zero body headings. Now three tasks: publishthe port, choose the listening address, keep it running. Plus the surface it
never mentioned:
boxlite network tunnel <BOX> <PORT> --listen <ADDR>does what theentire script does.
serve-http.mdx— same treatment, plus a Troubleshooting table. Its CLIequivalent is
boxlite network tunnel <BOX> <PORT>, which prints the URL and exits.Still to do
raw-streams,data-across-boxesandcost-controlsneed the same structure pass.Their correctness is fixed here where it was broken (
raw-streams); the other twowere never broken, only shapeless.
Checks
Stacked conceptually on #61 (which documents the
boxlite networkCLI these pages now reference), but touches disjoint files.Every box created for this was removed afterwards.
🤖 Generated with Claude Code