Skip to content
On this page

RBite CLI

What is RBite CLI?

Rbite CLI is the CLI app for the RequestBite service.

It allows you to set up both ephemeral (free) and persistent tunnels that can be used to expose HTTP-based services running on localhost to the public Internet (read more here). It also includes a built-in web server that allows you to share share (and receive) files, as well as serving both file based and SPA-based static websites.

Furthermore, it allows you to manage request "views" which allows you to inspect webhooks and incoming HTTP calls - right in the terminal.

Installation

Install the latest release on MacOS or Linux like so:

bash
curl -fsSL https://raw.githubusercontent.com/requestbite/rbite/main/install.sh | bash

The binary will be installed to ~/.local/bin by default.

The installed binary automatically sets up parameter autocompletion for Bash, Zsh and fish. It also installs a comprehensive man page which you can reach by running:

bash
man rbite

Manual Download

Download pre-built binaries from GitHub Releases.

Supported Platforms:

OSArchitectureBinary Name
macOSIntel (x86-64)rbite-*-darwin-amd64.tar.gz
macOSApple Silicon (ARM64)rbite-*-darwin-arm64.tar.gz
Linuxx86-64rbite-*-linux-amd64.tar.gz
Windowsx86-64rbite-*-windows-amd64.zip

After downloading, extract the archive and move the binary to a directory in your PATH:

bash
# macOS/Linux
tar -xzf rbite-*.tar.gz
mv rbite/rbite ~/.local/bin/

# Make sure ~/.local/bin is in your PATH
export PATH="$HOME/.local/bin:$PATH"

Usage

Ephemeral tunnels

rbite supports setting up ephemeral tunnels. Those are time-limited tunnels on a random URL that are restricted to 1 GB of traffic. These tunnels are completely free and do not require any RequestBite account to use.

The following type of data can be transferred through a tunnel:

  • HTTP requests
  • SSE streams
  • WebSocket streams

Create ephemeral tunnel

Create ephemeral tunnel (in this case exposing http://localhost:8080):

bash
rbite -e 8080

This results in output like so:

plaintext
 ______
[______]  RequestBite Tunnel ⚡️
__|  |_________________________

Ephemeral tunnel created. Expires at 16:20:17 (in 60 minutes).
> Internet endpoint: https://958b846f.et.rbite.dev
> Local service: http://localhost:8080
Press Ctrl+C to stop

2026/04/02 15:20:17 Connected to tunnel server, waiting for connections...

You can now click the link after Internet endpoint above to access the local service.

Show URL as QR code

If you want to open the tunnel URL e.g. on your phone, you can easily show a QR code that you can snap a photo of by running:

bash
rbite -e 8080 --show-qr

Resume session

If you have a non-expired session, you can resume the last one like so:

bash
rbite --resume

Session details

As soon as you have a running tunnel, it will display whatever requests are made to your local endpoint like so (example below):

plaintext
2026/04/02 16:02:55 Connected to tunnel server, waiting for connections...
2026/04/02 16:02:59 GET / 200 3ms
2026/04/02 16:02:59 GET /@vite/client 200 94ms
2026/04/02 16:02:59 GET /src/main.jsx 200 52ms
2026/04/02 16:02:59 GET /node_modules/.vite/deps/preact_debug.js?v=206b7cd4 200 1ms
2026/04/02 16:02:59 GET /node_modules/.vite/deps/preact.js?v=206b7cd4 200 1ms
2026/04/02 16:02:59 GET /src/index.css 200 1ms
2026/04/02 16:02:59 GET /src/app.jsx 200 0s

Session summary

When your tunnel session expires or you close it manually by hitting Ctrl-C, you will get a summary of what was transferred like so:

plaintext
--- Session summary ---
Requests served:  101
Data transferred: 2.85 MB

File sharing

Web-based sharing of a local directory.

Share files

The rbite client has a built-in file server which you can use to share local files or receive files from others using an ephemeral tunnel.

To safely share any directory using a tunnel, run:

bash
rbite -f {path}

This will create a public URL with a web-based file browser that you can share with anyone who you want to be able to browse and download any file(s) in the directory you share. Please note that they will be able to see any sub-folder that you have access to on your machine, but they will not be able to reach any parent directory.

Share and receive files

To allow users to upload files, run:

bash
rbite -fw {path}

This will give them full write-access to the directory you share.

Password-protect file sharing

To add a layer of security, you can protect your file browsing with a passphrase, effectively restricting unauthorized access if someone would by accident learn about your public URL. To set a passphrase, run:

bash
rbite -f {path} -p {passphrase}

When the user accesses your public URL in a browser, they will now get a modal asking them to authenticate before they're able to list or download any files.

Web server

How to easily share a static web page or SPA app.

Static web page

The rbite client also has a built-in web server that allows you to host static files that represent a webpage. To do so, run:

bash
rbite -w {path}

SPA web app

If you have a generated single-page application (SPA) that manages its own routing, you can instead run it like so:

bash
rbite -w {path} --spa [{index-file}]

If you ignore the optional {index-file} argument, it will assume your SPA is handled by a file called index.html. If not, you can provide another file here.

Login

Besides managing ephemeral tunnels, functionality through rbite requires logging in. If you don't already have a RequestBite account, you can sign up for one here - it's completely free of charge. To log in to your RequestBite account, run:

bash
rbite --login

This will try to open your default browser and redirect you to the login screen. Once logged in, you will get a second screen where you need to authorize the RBite CLI app and grant it access to your account and the scopes (capabilities) it needs to work.

Once you hit "Authorize", you will get redirected to http://localhost:7332/ which you can close and you should now see something like the following in your terminal:

plaintext
Login successful.

Hello {name}!

RBite now has access to your account: {Account Name}.
  To switch account, use the --switch-account parameter.

Persistent tunnels

Persistent tunnels require a paid account. They really elevates the experience of remote development and remote access to your local computer. There are many reasons for this:

  • Sticky URLs
    Persistent tunnels keep their URL over time.
  • Named
    Even though persistent tunnels have a random component to their name, they still include a user-defined part, making them easily accessible in your browser as they will be easy to find in your browsing history without having to memorize the auto-generated part.
  • More data
    Persistent tunnels offer up to 25 GB of data transfer per month (per account user), making them ideal for daily development sessions.
  • Support for exposing multiple ports per tunnel
    A persistent tunnel supports exposing multiple ports on your local machine through one tunnel - optionally by restricting which ports to expose.
  • Real-time hostname rewrites
    Let's say you build a frontend where the UI includes links to e.g. localhost:8080/my-page which of course only makes sense if you have direct access to localhost. With hostname rewrites, Tunnel can rewrite such URLs to use the public tunnel endpoint so minimize the risk of broken links, etc, in tunnelled services.

Create persistent tunnel

Creating and configuring a persistent tunnel is done through RequestBite HQ by clicking the Tunnel menu item in the top bar. Please note that creating a persistent tunnel requires a paid account.

List persistent tunnels

Run the following command to list your available tunnels:

bash
rbite --tunnels-list

This will show a list like so:

plaintext
  1. my-tunnel
  2. home

Get details about tunnel (1-2):

Type a number to optionally get more details about your tunnel:

plaintext
Name:          home
Default port:  5173
Allowed ports: All
Enabled:       true
Public URL:    https://home-e12345678.t.rbite.dev

Use (enable) persistent tunnel

To start exposing your localhost via a tunnel, run:

bash
rbite -t NAME [--localhost-rewrite]

It's highly recommended to enable localhost rewriting, so in order to enable the tunnel called home in the example above, run:

bash
rbite -t home --localhost-rewrite

Beyond this, all rbite commands that are usable for ephemeral tunnels can also be used for named persistent tunnels (in the examples below we use a tunnel named home).

Only expose one specific port (e.g. 8080):

bash
rbite -t home -e 8080

Share files in current directory via built-in web server:

bash
rbite -t home -f .

Host files in current directory as website via built-in web server:

bash
rbite -t home -w .

Request views

rbite supports managing Inspector views and inspecting incoming requests in real-time.

Create request view

To create a request view to which you can intercept webhooks and HTTP request, run the following command:

bash
rbite --views-add [optional-name]

If you don't provide a name for your view, it will be automatically called "Unnamed view #X". You will now see the following output:

plaintext
View with name "Unnamed view #1" created.
 - Send requests to it at https://api.requestbite.com/req/611b2ed4-8b1f-44ed-adc8-f6d83b933f63
 - Open it in your browser by running "rbite --views-open 611b2ed4-8b1f-44ed-adc8-f6d83b933f63"
 - Tail it in your terminal by running "rbite --views-tail 611b2ed4-8b1f-44ed-adc8-f6d83b933f63"

You can now send any HTTP request to the first URL listed above to inspect HTTP method, headers and body.

Open request view in browser

The easiest way to inspect any HTTP calls to your view is to open it your browser. To do so, run the following command:

bash
rbite --views-open {view-ID}

The app will try to automatically open your browser, but will also print the actual request URL to the terminal so you can manually open it if necessary.

Tail request view in terminal

In case you want to inspect any HTTP request directly in your terminal, you can do so by running:

rbite --views-tail {view-ID}

This will set up an streaming connection to the RequestBite service, awaiting any new webhook. As soon as a webhook or HTTP call is received on the request URL, it will be presented like so:

plaintext
Tailing view 611b2ed4-8b1f-44ed-adc8-f6d83b933f63 (press Ctrl+C to stop)...

--- 12:40:11 ---

Request Details
===============
Host:            172.18.0.2
Method:          POST

Request Headers
===============
Accept-Encoding  gzip
Content-Length   18
Content-Type     application/json
User-Agent       rb-slingshot/0.4.1 (https://requestbite.com/slingshot)

Body Payload
============
{
  "foo": "bar"
}

List request views

To list your available request view, run:

bash
rbite --views-list

It will then list your views like this:

plaintext
  1. Unnamed view #1
  2. Unnamed view #2

Get details about view (1-2):

To get more details about a view, enter its number:

plaintext
Name:        Unnamed view #1
Capture URL: https://api.requestbite.com/req/5c6eb790-a84a-4be2-8c7c-e2b2454b2f73
Browser URL: https://hq.requestbite.com/views/5c6eb790-a84a-4be2-8c7c-e2b2454b2f73/capture
ID:          5c6eb790-a84a-4be2-8c7c-e2b2454b2f73

Development

TIP

While the full documentation for Rbite CLI lives here, you can find the full source-code of the app on GitHub. If you have any questions or issues, please file a GitHub issue.

Released under the MIT License.