mob3
Health Warn
- License — License: AGPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 7 GitHub stars
Code Warn
- fs module — File system access in .github/pages/build.sh
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
MOB³ is a small indie terminal browser with a real rendering engine and built-in MCP automation.
MOB³ is a small indie terminal browser with built-in MCP automation
Written in Go, it combines its own HTML parser, CSS cascade and layout engine, ANSI renderer and pure-Go JavaScript runtime to display real web pages, including inline images, without a GUI toolkit or persistent profile. History, cookies, storage and caches live in memory only: closing MOB³ saves nothing.
Project page: mob3.net.
Documentation
- Documentation index
- Install — releases, Docker and source builds
- Command line — every flag, default and limit
- Keyboard and mouse
- Automation with MCP — headless control for scripts and AI tools
- Security and privacy, site support and
development
Try it with Docker:
docker run --rm -it ghcr.io/mob3net/mob3 -graphics blocks
Download and install
Download the latest MOB³ release
from GitHub Releases.
Release archives cover Linux (386, amd64, armv6, armv7, arm64) and
macOS (amd64, arm64). Choose the archive for your OS and architecture, for
example mob3_vX.Y.Z_linux_amd64.tar.gz. Each archive contains the staticmob3 binary.
Example:
tar -xzf mob3_vX.Y.Z_linux_amd64.tar.gz
sudo install -m 0755 mob3 /usr/local/bin/mob3
mob3 -version
Screenshots
What to expect
MOB³ is a content browser, not a full browser engine. It is happiest with
text-focused pages and gets rough on modern JavaScript-heavy apps.
Works well
- Documentation, blogs, news articles, wikis, forums, changelogs and old or
server-rendered HTML. - Headings, paragraphs, lists, links, tables,
<pre>blocks, images and common
presentational markup. - Text/search inputs, textareas, single-select option popups and multi-select
list boxes, with a visible caret, arrow-key editing, date/time/month/week,
range sliders, color swatches, HTML constraint checks, GET and urlencoded POST
form submission. The start page has justified text and a full-width
search/URL box that resolves input the same way as theoprompt, including
the-searchfallback. - Common CSS: selectors, cascade and inheritance, box model (including
box-sizingand min/max sizes), margins, borders, backgrounds, text styling,
lists, tables, viewport-width@mediaqueries and basic flex rows. - PNG/JPEG/GIF/WebP/BMP/SVG/data-URI images when enabled with
-graphics(auto,kitty,iterm, orblocksfor half-block art). Images are off by default
for speed. - Session-only memory cache for CSS, scripts and decoded images, with a 32 MiB
default budget and-cacheto change or disable it. - Light JavaScript: DOM queries and mutation,
classList/style, click
handlers, timers, alert/confirm/prompt and native<dialog>open/close,
same-originfetch/XMLHttpRequestplus simple CORS cross-origin requests,
and in-memory storage/cookies. Script
errors turn the footerJavaScriptlabel into a redJavaScript:Error;
click it to open the console. - JavaScript console (
!): tabbed view of logs, requests, cookies and
in-memory storage, plus the raw page HTML; evaluate one-line expressions in
the page's runtime, with Up/Down history and results appended to the log. - Reader mode (
R, the footerReader:on/Reader:offlabel, or-readerat
launch): extracts the main article into a narrow, chrome-free text column,
stays enabled across navigation, and restores the normal page and scroll
position when toggled off. - Dark mode (
D, the footerDark:on/Dark:offlabel, or-darkat launch):
asks sites for their dark styles withprefers-color-scheme: dark. Pages that
already render a dark background keep their own palette; otherwise
backgrounds, text, links and borders are remapped to a dark palette. Images
keep their original colors. - Headless MCP automation (
-mcp): navigate, snapshot page text and links,
click, type, press keys, scroll, evaluate JavaScript and inspect history.
Text-only and memory-only; no screenshots or persistent sessions. - Browser-style toolbar with back/forward/reload/home, history/help buttons,
a bookmarks button when-bookmarksis supplied, a config gear and a centered
page title. - Keyboard and mouse navigation, including the kitty keyboard protocol in
kitty, WezTerm, Ghostty and foot,/incremental find (including multi-word
phrases) with highlighted matches
(also in the console HTML tab), a draggable page scrollbar, history (including
a top-right History page
listing the session's links), bookmarks imported with-bookmarksfrom a
Netscape HTML export, scrolling, focus, link hover targets in the footer,
text selection, and a!JavaScript console.
Rough edges
- Modern JavaScript apps (SPAs, dashboards, Google search and similar) may show
a partial page, a blank page or their no-JavaScript fallback. Pages that rely
on ES modules show a status-bar warning that modules are unsupported and
suggest reader mode (R). - Reader mode is heuristic: it can pick too little or too much content on
unusual layouts, shows a snapshot rather than live updates, and removes
images, forms and other interactive controls. Dark mode keeps images in
their original colors and approximates some author color schemes. - Anti-bot and firewall checks (Cloudflare, CAPTCHA, DataDome/PerimeterX,
Imperva/Sucuri, access-denied pages) are generally not usable. A “Site
blocked” page is shown instead. - No video/audio playback, WebGL, WebAssembly, workers, WebSockets, iframes,
Shadow DOM, custom elements, real observers or full History API. - Basic CSS grid rows are supported, along with
position:relative,position:absoluteandposition:fixed; floats,position:sticky,z-index, CSS
variables, animations, transitions, generated content,@importand
background images are unsupported or approximated as block flow. - SVG support is partial: text inside SVG,
<use>/<symbol>, filters, masks and
CSS-in-SVG may be missing. Animated WebP is not supported. - Oversized images are capped at 60% of the viewport width and 24 rows,
preserving their aspect ratio. - No tabs or automatic downloads; download links and non-HTML responses open a
popup with a copyablecurlcommand instead, and multipart/file uploads are
not implemented (clicking a file input shows an unsupported notice). Selected
page text copies withythrough OSC 52 (terminal support required), and the URL can be selected
with the terminal. - Very large pages, stylesheets and images are capped to keep memory and CPU
bounded. Style and layout also run under a time budget, so a pathological
page is shown partially with a truncation notice instead of freezing the
browser. Pages whose timers update the DOM are redrawn a few times per
second rather than continuously, and an idle page with no pending timers does
not repaint at all.
Using command line options
Start reading Wikipedia in dark mode:
mob3 -dark -reader 'https://en.wikipedia.org/wiki/Vim_(text_editor)'
See all available options with -h flag. Every flag and default is listed in the
command-line reference.
Capture a PNG screenshot:
mob3 -png -width 120 bbc.com/news > bbc.png
Automation (MCP)
mob3 -mcp runs a headless browser as a Model Context Protocol server over
stdin/stdout. It accepts an optional starting URL and fixed -width:
{
"mcpServers": {
"mob3": {
"command": "/path/to/mob3",
"args": ["-mcp", "-width", "100", "about:home"]
}
}
}
Tools: navigate, snapshot, screenshot, click (link number, CSS
selector or x/y), type, press, scroll, back, forward, reload,evaluate and history. snapshot returns the current page viewport as text, visible links
as [n] and form controls with coordinates. Results are text only: there is no
pixel screenshot because MOB3 renders to terminal cells.
The server is local and unauthenticated, sessions and storage are memory-only,
and nothing is written to disk. Do not expose it as a network service. See the
full MCP reference for the protocol, snapshot format and
tool details.
Development
Build from source and start browsing:
make
./bin/mob3 https://example.com
Requires Go 1.27 or newer. Interactive mode runs on Linux and macOS terminals;
Windows users can run it under WSL. When stdin/stdout are not a terminal, MOB³
automatically falls back to dump mode.
Press ? inside the app for keys, mouse and forms help. Run mob3 -h for the
full list of command-line flags. mob3 -version prints the embedded version.
Contributing
Contributions are welcome. Every pull request must include the broad
license-grant CLA statement described in
CONTRIBUTING.md; it
keeps MOB³ available under both AGPL-3.0-only and a commercial license. The PR
workflow checks the statement. The CI workflow runs formatting, vet and tests.
License
MOB³ is licensed under the GNU Affero General Public License, version 3 only
(AGPL-3.0-only). Copyright (c) 2026 Milos Stojanovic. See
LICENSE.
A separate commercial license is available on request for use without the
AGPL's source-disclosure requirements.
MOB³ is provided “as is”, without warranty of any kind. See the warning at the
top: this is not a security boundary.
Third-party module licenses are listed in
THIRD_PARTY_NOTICES.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found