The bauta CLI
Every command of the bauta command line, with its flags and their defaults.
bauta is the command line, and the CDP gateway in front of the bauta browser. Run it with no arguments to print its
usage text.
Commands
| command | what it does |
|---|---|
bauta setup | Activates this machine's free session at once, then, on a terminal, offers an account and a star. |
bauta activate | Gets the first license token for this machine. |
bauta browser fetch | Downloads the browser for this machine from the latest release, or the one you name. |
bauta login | Signs up or in with GitHub, in the terminal. |
bauta logout | Takes this machine back to its free session. |
bauta status | Shows the plan, the sessions in use and across machines, and this install's id. |
bauta upgrade | Prints the pricing page's URL. |
bauta serve | Runs the gateway. |
bauta geo update | Updates the database that places a proxy's exit IP. |
bauta persona new | Makes a persona from a built-in persona or a persona file. |
bauta persona set | Gives a persona its settings anew, its profile kept. |
bauta persona ls | Lists the personas. |
bauta persona rm | Removes a persona. |
bauta open | Opens the persona's browser in a window, for a manual login. |
bauta inspect | Prints a DevTools link for each page of a persona the gateway runs. |
bauta stats | Shows the gateway's active and queued personas, against the license. |
bauta version | Prints this bauta's version. |
bauta traffic | Shows what the persona's pages fetched, blocked and found in the cache, by kind. |
bauta widevine fetch | Fetches Google's Widevine CDM, for DRM-protected media. |
Setup and account
bauta setup
bauta setup [--non-interactive]Activates this machine's free session at once, and writes ~/.bauta/license. On a terminal, it then offers a free
account with GitHub, and a star.
| flag | what it does |
|---|---|
--non-interactive | Never prompts: the free session alone. The installer runs setup this way when it cannot prompt: with no terminal, with CI or BAUTA_NO_PROMPT=1 set, or when /.dockerenv exists. |
bauta activate
bauta activate <license key> [--server <url>]Gets the first license token for this machine with your license key, and prints how many active personas it allows here, and until when. Your key is on your dashboard.
| flag | default | what it does |
|---|---|---|
--server <url> | BAUTA_SERVER, else https://api.bauta.dev | The server to activate with. |
bauta login
bauta loginSigns up or in with GitHub, in the terminal. It prints a URL and a code to enter there, on any device, your phone
too, and waits. Signing up accepts the Terms. It needs a terminal; in a script, set BAUTA_LICENSE_KEY
instead.
When this machine has personas, it asks first, since they can get new fingerprints. While BAUTA_LICENSE_KEY is set,
that key still wins over the one bauta login keeps, and it says so. If your GitHub account has no verified email,
add one at https://github.com/settings/emails and run it again.
bauta logout
bauta logoutTakes this machine back to its free session: one session, on this machine. While BAUTA_LICENSE_KEY is set it
refuses; unset it first. When this machine has personas, it asks first, since they get new fingerprints, and without
a terminal it refuses.
bauta status
bauta statusShows the plan, the sessions in use and across machines, and this install's id. Its output is in sessions and the license.
bauta upgrade
bauta upgradePrints the pricing page's URL, https://bauta.dev/pricing?from=cli.
Browser
bauta browser fetch
bauta browser fetch [--version vX.Y.Z]Downloads the browser for this machine from the latest release, checks it against the release's signed
SHA256SUMS, and prints the directory it is in. It downloads from GitHub's releases of BautaBrowser/bauta-browser,
and sends nothing to our server.
| flag | what it does |
|---|---|
--version vX.Y.Z | That release instead of the latest. |
bauta widevine fetch
bauta widevine fetchFetches Google's Widevine CDM, for DRM-protected media, the same way Chrome fetches it, and prints the directory it is in. Without it, the browsers take Google Chrome's, if one is installed on this machine.
bauta version
bauta versionPrints this bauta's version: bauta followed by the version number.
Gateway
bauta serve
bauta serve [--listen 127.0.0.1] [--port 9222] [--idle 30] [--per-browser 8] [--server <url>] [--heartbeat 60]
[--hidden]Runs the gateway. Connect Playwright to http://127.0.0.1:9222/persona/<name> (connect_over_cdp), and Puppeteer
to ws://127.0.0.1:9222/persona/<name>. The flags go in any order.
| flag | default | what it does |
|---|---|---|
--listen | 127.0.0.1 | The IP address to listen on. --listen 0.0.0.0 lets other machines in, and whoever reaches the port drives the personas. |
--port | 9222 | The port to listen on. |
--idle | 30 | A persona's browser closes this many seconds after its last client. |
--per-browser | 8 | How many personas share one browser. 1 gives each persona a browser of its own. |
--server | BAUTA_SERVER, else https://api.bauta.dev | The server that renews the license. |
--heartbeat | 60 | Seconds between license renewals: 60 at least, unless the server is on this machine. |
--hidden | off | Puts the browsers' windows where no one sees them. Linux: a virtual display, whatever DISPLAY says. Windows: a desktop of the gateway's own. macOS: Chrome's headless mode. |
The CDP gateway explains each of them.
bauta stats
bauta stats [--port 9222]Prints, as JSON, the gateway's active and queued personas, against the license. It asks the gateway on this machine;
--port names its port, 9222 by default.
bauta inspect
bauta inspect <name> [--port 9222]Prints a DevTools link for each page of a persona the gateway runs, with the page's URL. --port names the
gateway's port, 9222 by default.
bauta open
bauta open <name>Opens the persona's browser in a window, for a manual login, and waits until you close it. It needs a display.
bauta traffic
bauta traffic <name>Prints, as JSON, what the persona's pages fetched, blocked and found in the cache, by kind. See bandwidth.
Personas
bauta persona new
bauta persona new <name> --from <a built-in persona's name, or a persona file>Makes a persona, and prints its directory.
bauta persona set
bauta persona set <name> --from <the same>Gives the persona its settings anew, from a built-in persona's name or a persona file, and keeps its profile. A browser running it keeps the old ones until it closes: a persona never changes under a page.
bauta persona ls
bauta persona lsPrints the personas' names, one per line.
bauta persona rm
bauta persona rm <name>Removes the persona.
IP database
bauta geo update
bauta geo updateUpdates the database that places a proxy's exit IP, DB-IP's IP to City Lite, and prints where it keeps it, with
DB-IP's attribution. bauta serve uses it to set a persona's timezone and locale from where its proxy exits. IP
geolocation by DB-IP, under CC BY 4.0.
Environment
The usage text ends with the variables bauta reads:
| variable | what it does | default |
|---|---|---|
BAUTA_HOME | Holds personas/, license and fonts/. | ~/.bauta |
BAUTA_CHROME | The browser. | chrome beside bauta |
BAUTA_SERVER | Our server. | https://api.bauta.dev |
BAUTA_LICENSE_KEY | When set, wins over the kept key. | unset |
Environment variables lists every variable.
Exit status
| status | when |
|---|---|
0 | The command succeeded. |
1 | The command failed. bauta prints bauta: and the reason on stderr. |
2 | bauta did not recognize the command, and printed its usage text on stderr. |
Usage text
usage:
bauta setup [--non-interactive] the free session at once, then (on a terminal) an account and a star
bauta activate <license key> [--server <url>]
the first license token for this machine
bauta browser fetch [--version vX.Y.Z]
the browser for this machine from the latest release (or that one), checked
against the release's signed SHA256SUMS
bauta login sign up or in with GitHub, in the terminal (a code to enter on any device)
bauta logout back to this machine's free session
bauta status the plan, the sessions in use and across machines, and this install's id
bauta upgrade prints the pricing page's URL
bauta serve [--listen 127.0.0.1] [--port 9222] [--idle 30] [--per-browser 8] [--server <url>] [--heartbeat 60]
[--hidden]
the gateway: connect Playwright to http://127.0.0.1:9222/persona/<name>
(connect_over_cdp), Puppeteer to ws://127.0.0.1:9222/persona/<name>;
a persona's browser closes <idle> seconds after its last client;
personas share browsers, <per-browser> to one (1: a browser each);
with a server (or BAUTA_SERVER), the license is renewed every <heartbeat> s
(60 at least, unless the server is on this machine); --listen 0.0.0.0
lets other machines in, and whoever reaches the port drives the personas;
--hidden: the browsers' windows where no one sees them (Linux: a virtual
display, whatever DISPLAY says; Windows: a desktop of the gateway's own;
macOS: Chrome's headless)
bauta geo update the database that places a proxy's exit IP (DB-IP's IP to City Lite)
bauta persona new <name> --from <a built-in persona's name, or a persona file>
bauta persona set <name> --from <the same>
its settings anew, its profile kept; a browser running it keeps the old
ones until it closes (a persona never changes under a page)
bauta persona ls
bauta persona rm <name>
bauta open <name> the persona's browser in a window, for a manual login
bauta inspect <name> [--port 9222] a DevTools link for each page of a persona the gateway runs
bauta stats [--port 9222] the gateway's active and queued personas, against the license
bauta version this bauta's version
bauta traffic <name> what the persona's pages fetched, blocked and found in the cache, by kind
bauta widevine fetch Google's Widevine CDM, for DRM-protected media (Chrome fetches it the same way);
without it the browsers take Google Chrome's, if one is installed here
BAUTA_HOME (~/.bauta) holds personas/, license and fonts/; BAUTA_CHROME is the browser (default: chrome
beside bauta). BAUTA_SERVER is our server (default https://api.bauta.dev); BAUTA_LICENSE_KEY, when set, wins
over the kept key.Next
- The CDP gateway: what
bauta servedoes with each persona. - Persona file format: what
--fromtakes. - Environment variables: every variable bauta reads.